bake-toolkit 2.53.0 → 2.54.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c30b262873a0ace0c66d50fd465eadc5831efab3aec86c1581449326894f53b8
4
- data.tar.gz: bde9aa588f9735d37088bc3954ac6bec2c605665d6a472fcf9c1859898db5cb0
3
+ metadata.gz: 13e4226c82faa0439951dd701951b5af74bceabbf73c185791fa46d70afc6835
4
+ data.tar.gz: 54c74b7f0daf417c1581340ffdfdea95d72a1e516b4df6d622639be4d06480ae
5
5
  SHA512:
6
- metadata.gz: 6ff3239869804870c5d108cd5f43ca476749b0effc7fa4eccb909c0307f35f0fee6ba43b74c27590f0f764f1346ab9ce781601d46055c2c3bc48f71ec30512e8
7
- data.tar.gz: 8df0c9092ce5073e0fe3d431edf8431c2e30ec958a9c5170650a62426db764749cd85119d1c1b6bd48c08a1e15f2e1d7d44380034981575befa9d56301885555
6
+ metadata.gz: 6b2241a42ca4b0430c6e408a3ed03fdcbd2aad0d378046e48486dd7256f49dc59007dca65c32dbd7aa9374a8da019293cf21de5632d519d18475849b6c700445
7
+ data.tar.gz: e6d9bbd765ac4767a78106a18465d648dc85300444f407971971ebe8b6c0f5692b9d554f13c1faa76bb3858636596fb2fea59ba554664869a8e1ae070bec9250
@@ -268,6 +268,10 @@ module Bake
268
268
  has_attr 'name', String, :defaultValueLiteral => ""
269
269
  end
270
270
 
271
+ class ArtifactExtension < ModelElement
272
+ has_attr 'name', String, :defaultValueLiteral => "default"
273
+ end
274
+
271
275
  class Set < ModelElement
272
276
  has_attr 'name', String, :defaultValueLiteral => ""
273
277
  has_attr 'value', String, :defaultValueLiteral => ""
@@ -309,6 +313,7 @@ module Bake
309
313
  contains_many 'files', Files, 'parent'
310
314
  contains_many 'excludeFiles', ExcludeFiles, 'parent'
311
315
  contains_one 'artifactName', ArtifactName, 'parent'
316
+ contains_one 'artifactExtension', ArtifactExtension, 'parent'
312
317
  end
313
318
 
314
319
  class ExecutableConfig < BuildConfig_INTERNAL
@@ -20,7 +20,7 @@ module Bake
20
20
 
21
21
  class Options < Parser
22
22
  attr_accessor :build_config, :nocache, :analyze, :eclipseOrder, :envToolchain, :showConfigs
23
- attr_reader :main_dir, :project, :filename, :main_project_name, :buildDirDelimiter, :dot, :cc2j_filename # String
23
+ attr_reader :main_dir, :project, :filename, :main_project_name, :buildDirDelimiter, :dot, :dotFilename, :cc2j_filename # String
24
24
  attr_reader :include_filter, :exclude_filter, :adapt # String List
25
25
  attr_reader :conversion_info, :stopOnFirstError, :clean, :rebuild, :show_includes, :show_includes_and_defines, :projectPaths, :qac, :dry, :syncedOutput, :debug_threads, :skipBuildingLine # Boolean
26
26
  attr_reader :linkOnly, :compileOnly, :no_autodir, :clobber, :docu, :debug, :prepro, :prebuild, :printTime, :json, :wparse, :caseSensitivityCheck, :fileCmd, :profiling # Boolean
@@ -33,6 +33,8 @@ module Bake
33
33
  attr_reader :roots # Root array
34
34
  attr_reader :diabCaseCheck
35
35
  attr_reader :defines
36
+ attr_reader :dev_features
37
+ attr_reader :dotShowProjOnly
36
38
 
37
39
 
38
40
  def initialize(argv)
@@ -46,7 +48,8 @@ module Bake
46
48
  @qac = false
47
49
  @projectPaths = false
48
50
  @wparse = false
49
- @dot = nil
51
+ @dot = false
52
+ @dotFilename = nil
50
53
  @prebuild = false
51
54
  @printTime = false
52
55
  @buildDirDelimiter = "/"
@@ -92,6 +95,8 @@ module Bake
92
95
  @fileCmd = false
93
96
  @dotAndCompile = false
94
97
  @show_roots = false
98
+ @dev_features = []
99
+ @dotShowProjOnly = false
95
100
 
96
101
  add_option(["-b", "" ], lambda { |x| set_build_config(x) })
97
102
  add_option(["-m" ], lambda { |x| @main_dir = x })
@@ -114,6 +119,7 @@ module Bake
114
119
  add_option(["--file-list", "--file_list" ], lambda { @filelist = Set.new })
115
120
  add_option(["--filter-paths" ], lambda { @projectPaths = true })
116
121
  add_option(["--qac" ], lambda { @qac = true })
122
+ add_option(["-Z" ], lambda { |x| @dev_features << x })
117
123
 
118
124
  add_option(["--generate-doc", "--docu" ], lambda { @docu = true })
119
125
 
@@ -133,8 +139,9 @@ module Bake
133
139
  add_option(["--socket" ], lambda { |x| @socket = String === x ? x.to_i : x })
134
140
  add_option(["--toolchain-info", "--toolchain_info" ], lambda { |x| ToolchainInfo.showToolchain(x) })
135
141
  add_option(["--toolchain-names", "--toolchain_names" ], lambda { ToolchainInfo.showToolchainList })
136
- add_option(["--dot", ], lambda { |x| @dot = x; @dotAndCompile = false })
137
- add_option(["--dotc", ], lambda { |x| @dot = x; @dotAndCompile = true })
142
+ add_option(["--dot", ], lambda { |x,dummy| @dot = true; @dotFilename = x; @dotAndCompile = false })
143
+ add_option(["--dotc", ], lambda { |x,dummy| @dot = true; @dotFilename = x; @dotAndCompile = true })
144
+ add_option(["--dot-project-level", ], lambda { @dot = true; @dotShowProjOnly = true })
138
145
  add_option(["--do", "--include_filter" ], lambda { |x| set_filter(x) })
139
146
  add_option(["--omit", "--exclude_filter" ], lambda { |x| @exclude_filter << x })
140
147
  add_option(["--abs-paths", "--show_abs_paths" ], lambda { @consoleOutput_fullnames = true })
@@ -39,8 +39,10 @@ module Bake
39
39
  puts " --socket <num> Set SOCKET for sending errors, receiving commands, etc. - used by e.g. Eclipse."
40
40
  puts " --toolchain-info <name> Prints default values of a toolchain."
41
41
  puts " --toolchain-names Prints available toolchains."
42
- puts " --dot <filename> Creates a .dot file of the config dependencies, compilation does not take place."
43
- puts " --dotc <filename> Same as --dot, but with compilation."
42
+ puts " --dot [<filename>] Creates a .dot file of the config dependencies, compilation does not take place."
43
+ puts " If filename is omitted, a file <main config name>.dot in main project dir is created."
44
+ puts " --dotc [<filename>] Same as --dot, but with compilation."
45
+ puts " --dot-project-level Dependencies for dot on project level, not on config level."
44
46
  puts " --do <name>[=<arg>] Includes elements with this filter name (can be used multiple times)."
45
47
  puts " Optional arguments which can be accessed in Project.meta via $(FilterArguments, <name>)."
46
48
  puts " 'PRE', 'POST', 'STARTUP', 'EXIT' or 'CLEAN' includes all according steps."
@@ -72,6 +74,7 @@ module Bake
72
74
  puts " --dry No changes to the file system, no external processes like the compiler are called."
73
75
  puts " Exceptions: some special command line options like --create or --dot and 'cmd's of 'Set's."
74
76
  puts " --install-doc If installed, --doc opens the offline docu, otherwise it's online. You may need super user rights to enhance the bake-toolkit installation."
77
+ puts " -Z <dev feature> Used internally for development purposes. Can be changed without prior notice."
75
78
  puts " -h, --help Print this help."
76
79
  puts " --license Print the license."
77
80
  puts " --debug Print out backtraces in some cases - used only for debugging bake."
@@ -31,7 +31,7 @@ def adjustFlags(orgStr, flags)
31
31
 
32
32
  if f.add != ""
33
33
  Bake::Utils::flagSplit(f.add, false).each do |a|
34
- orgSplitted << a unless orgSplitted.any? { |o| o==a }
34
+ orgSplitted << a # allow duplicate flags # unless orgSplitted.any? { |o| o==a }
35
35
  end
36
36
  end
37
37
 
@@ -549,6 +549,13 @@ module Bake
549
549
  pr = pr[2..-1] if pr.start_with?"./"
550
550
 
551
551
  res = Dir.glob_dir(pr, @projectDir).sort
552
+ regExSearch = pr.gsub("*",".*").gsub("?",".")
553
+ if !res.all?{|r| r.match(/#{regExSearch}/)}
554
+ if res.all?{|r| r.match(/#{regExSearch}/i)}
555
+ Bake.formatter.printError("Case sensitivity error for source file '#{pr}'", sources)
556
+ raise SystemCommandFailed.new
557
+ end
558
+ end
552
559
  if res.length == 0 and cleaning == false
553
560
  if not pr.include?"*" and not pr.include?"?"
554
561
  Bake.formatter.printError("Source file '#{pr}' not found", sources)
@@ -24,7 +24,15 @@ module Bake
24
24
  if not @config.artifactName.nil? and @config.artifactName.name != ""
25
25
  baseFilename = @config.artifactName.name
26
26
  else
27
- baseFilename = "#{@projectName}#{Bake::Toolchain.outputEnding(@block.tcs)}"
27
+ if !@config.artifactExtension.nil? && @config.artifactExtension.name != "default"
28
+ extension = ".#{@config.artifactExtension.name}"
29
+ else
30
+ extension = Bake::Toolchain.outputEnding(@block.tcs)
31
+ end
32
+ baseFilename = "#{@projectName}#{extension}"
33
+ end
34
+ if !baseFilename.include?(".")
35
+ baseFilename += Bake::Toolchain.outputEnding(@block.tcs)
28
36
  end
29
37
  @exe_name ||= File.join([@block.output_dir, baseFilename])
30
38
  end
@@ -1,36 +1,36 @@
1
- module Bake
2
-
3
- module Blocks
4
-
5
- module HasExecuteCommand
6
- attr_reader :config
7
-
8
- def executeCommand(commandLine, ignoreStr=nil, exitCodeArray = [0], echo = "on")
9
- if Bake.options.dry
10
- puts commandLine
11
- return true
12
- end
13
-
14
- puts commandLine if (Bake.options.verbose >= 1 && echo != "off") || Bake.options.verbose >= 3
15
- puts "(executed in '#{@projectDir}')" if Bake.options.verbose >= 3
16
- cmd_result = false
17
- output = ""
18
- begin
19
- cmd_result, output = ProcessHelper.run([commandLine], true, true, nil, exitCodeArray, @projectDir)
20
- rescue Exception=>e
21
- puts e.message
22
- puts e.backtrace if Bake.options.debug
23
- end
24
-
25
- if (cmd_result == false and (not ignoreStr or not output.include?ignoreStr))
26
- Bake.formatter.printError("Command \"#{commandLine}\" failed", @config)
27
- puts "(executed in '#{@projectDir}')" if Bake.options.verbose >= 3
28
- raise SystemCommandFailed.new
29
- end
30
- return cmd_result
31
- end
32
-
33
- end
34
-
35
- end
1
+ module Bake
2
+
3
+ module Blocks
4
+
5
+ module HasExecuteCommand
6
+ attr_reader :config
7
+
8
+ def executeCommand(commandLine, ignoreStr=nil, exitCodeArray = [0], echo = "on")
9
+ if Bake.options.dry
10
+ puts commandLine
11
+ return true
12
+ end
13
+
14
+ puts commandLine if (Bake.options.verbose >= 1 && echo != "off") || Bake.options.verbose >= 3
15
+ puts "(executed in '#{@projectDir}')" if Bake.options.verbose >= 3
16
+ cmd_result = false
17
+ output = ""
18
+ begin
19
+ cmd_result, output = ProcessHelper.run([commandLine], true, true, nil, exitCodeArray, @projectDir)
20
+ rescue Exception=>e
21
+ puts e.message
22
+ puts e.backtrace if Bake.options.debug
23
+ end
24
+
25
+ if (cmd_result == false and (not ignoreStr or not output.include?ignoreStr))
26
+ Bake.formatter.printError("Command \"#{commandLine}\" failed", @config)
27
+ puts "(executed in '#{@projectDir}')" if Bake.options.verbose >= 3
28
+ raise SystemCommandFailed.new
29
+ end
30
+ return cmd_result
31
+ end
32
+
33
+ end
34
+
35
+ end
36
36
  end
@@ -21,7 +21,12 @@ module Bake
21
21
  if not @config.artifactName.nil? and @config.artifactName.name != ""
22
22
  baseFilename = @config.artifactName.name
23
23
  else
24
- baseFilename = "lib#{@projectName}.a"
24
+ if !@config.artifactExtension.nil? && @config.artifactExtension.name != "default"
25
+ extension = ".#{@config.artifactExtension.name}"
26
+ else
27
+ extension =".a"
28
+ end
29
+ baseFilename = "lib#{@projectName}#{extension}"
25
30
  end
26
31
  @archive_name ||= File.join([@block.output_dir, baseFilename])
27
32
  end
@@ -39,11 +39,11 @@ module Bake
39
39
  return [block, arg]
40
40
  end
41
41
 
42
- def has_parameter?(argument)
42
+ def num_parameter?(argument)
43
43
  b, inPlaceArg = get_block(argument)
44
- return false unless b
45
- return false if inPlaceArg
46
- b.parameters.length >= 1
44
+ return 0 unless b
45
+ return 0 if inPlaceArg
46
+ return b.parameters.length
47
47
  end
48
48
 
49
49
  def parse_internal(ignore_invalid, subOptions = nil)
@@ -55,11 +55,14 @@ module Bake
55
55
 
56
56
  # used in bake config, must be passed from bakery to bake
57
57
  if subOptions and subOptions.valid?arg
58
- if subOptions.has_parameter?(arg)
58
+ num = subOptions.num_parameter?(arg)
59
+ if num > 0
59
60
  if pos+1 < @argv.length and @argv[pos+1][0] != "-"
60
61
  pos = pos + 1
61
62
  else
62
- raise "Argument for option #{arg} missing"
63
+ if num != 2 # default
64
+ raise "Argument for option #{arg} missing"
65
+ end
63
66
  end
64
67
  end
65
68
  end
@@ -1,7 +1,7 @@
1
1
  module Bake
2
2
  class Version
3
3
  def self.number
4
- "2.53.0"
4
+ "2.54.0"
5
5
  end
6
6
 
7
7
  def self.printBakeVersion(ry = "")
@@ -358,16 +358,13 @@ module Bake
358
358
  end
359
359
 
360
360
  def makeDot
361
- File.open(Bake.options.dot, 'w') do |file|
362
- puts "Creating #{Bake.options.dot}"
363
-
364
- file.write "# Generated by bake\n"
365
- file.write "# Example to show the graph: dot #{Bake.options.dot} -Tpng -o out.png\n"
366
- file.write "# Example to reduce the graph: tred #{Bake.options.dot} | dot -Tpng -o out.png\n\n"
367
-
368
- file.write "digraph \"#{Bake.options.main_project_name}_#{Bake.options.build_config}\" {\n\n"
369
-
370
- file.write " concentrate = true\n\n"
361
+ if Bake.options.dotFilename
362
+ filename = Bake.options.dotFilename
363
+ else
364
+ filename = Bake.options.main_dir + "/" + Bake.options.build_config + ".dot"
365
+ end
366
+ File.open(filename, 'w') do |file|
367
+ puts "Creating #{filename}"
371
368
 
372
369
  onlyProjectName = nil
373
370
  onlyConfigName = nil
@@ -377,6 +374,25 @@ module Bake
377
374
  onlyConfigName = splitted[1] if splitted.length == 2
378
375
  end
379
376
 
377
+ file.write "# Generated by bake\n"
378
+ file.write "# Example to show the graph: dot #{File.basename(filename)} -Tpng -o out.png\n"
379
+ file.write "# Example to reduce the graph: tred #{File.basename(filename)} | dot -Tpng -o out.png\n\n"
380
+
381
+ if onlyProjectName
382
+ starting = onlyProjectName
383
+ if onlyConfigName
384
+ ending = Bake.options.dotShowProjOnly ? "" : "_"+onlyConfigName
385
+ else
386
+ ending = ""
387
+ end
388
+ else
389
+ starting = Bake.options.main_project_name
390
+ ending = Bake.options.dotShowProjOnly ? "" : "_"+Bake.options.build_config
391
+ end
392
+ file.write "digraph \"#{starting}#{ending}\" {\n\n"
393
+
394
+ file.write " concentrate = true\n\n"
395
+
380
396
  if onlyProjectName
381
397
  if not @referencedConfigs.include? onlyProjectName
382
398
  Bake.formatter.printError("Error: project #{onlyProjectName} not found")
@@ -392,6 +408,7 @@ module Bake
392
408
 
393
409
  foundProjs = {}
394
410
  @referencedConfigs.each do |projName, configs|
411
+ depsToProj = []
395
412
  configs.each do |config|
396
413
  config.dependency.each do |d|
397
414
  if onlyProjectName
@@ -402,26 +419,45 @@ module Bake
402
419
  next if not leftSide and not rightSide
403
420
  end
404
421
  end
405
- file.write " \"#{config.qname}\" -> \"#{d.name},#{d.config}\"\n"
422
+ if Bake.options.dotShowProjOnly
423
+ next if depsToProj.include?d.name
424
+ next if d.name == projName
425
+ c1 = ""
426
+ c2 = ""
427
+ else
428
+ c1 = ",#{config.name}"
429
+ c2 = ",#{d.config}"
430
+ end
431
+ file.write " \"#{Blocks::ALL_BLOCKS[config.qname].projectDir}#{c1}\" -> "+
432
+ "\"#{Blocks::ALL_BLOCKS[d.name+','+d.config].projectDir}#{c2}\"\n"
433
+ depsToProj << d.name
406
434
 
407
435
  foundProjs[config.parent.name] = [] if not foundProjs.include? config.parent.name
408
436
  foundProjs[config.parent.name] << config.name if not foundProjs[config.parent.name].include? config.name
409
437
  foundProjs[d.name] = [] if not foundProjs.include? d.name
410
- foundProjs[d.name] << d.config if not foundProjs[config.parent.name].include? d.config
438
+ foundProjs[d.name] << d.config if not foundProjs[d.name].include? d.config
411
439
  end
412
440
  end
413
441
  end
414
442
  file.write "\n"
415
443
 
416
- @referencedConfigs.each do |projName, configs|
417
- next if Bake.options.project and not foundProjs.include?projName
418
- file.write " subgraph \"cluster_#{projName}\" {\n"
419
- file.write " label =\"#{projName}\"\n"
420
- configs.each do |config|
421
- next if Bake.options.project and not foundProjs[projName].include? config.name
422
- file.write " \"#{projName},#{config.name}\" [label = \"#{config.name}\", style = filled, fillcolor = #{config.color}]\n"
444
+ if Bake.options.dotShowProjOnly
445
+ @referencedConfigs.each do |projName, configs|
446
+ next if Bake.options.project and not foundProjs.include?projName
447
+ file.write " \"#{Blocks::ALL_BLOCKS[configs[0].qname].projectDir}\" [label = \"#{projName}\"]\n"
448
+ end
449
+ else
450
+ @referencedConfigs.each do |projName, configs|
451
+ next if Bake.options.project and not foundProjs.include?projName
452
+ dirName = Blocks::ALL_BLOCKS[configs[0].qname].projectDir
453
+ file.write " subgraph \"cluster_#{dirName}\" {\n"
454
+ file.write " label =\"#{projName}\"\n"
455
+ configs.each do |config|
456
+ next if Bake.options.project and not foundProjs[projName].include? config.name
457
+ file.write " \"#{dirName},#{config.name}\" [label = \"#{config.name}\", style = filled, fillcolor = #{config.color}]\n"
458
+ end
459
+ file.write " }\n\n"
423
460
  end
424
- file.write " }\n\n"
425
461
  end
426
462
 
427
463
  file.write "}\n"
@@ -661,12 +697,39 @@ module Bake
661
697
  makeIncs
662
698
  puts "Profiling #{Time.now - $timeStart}: make uniq..." if Bake.options.profiling
663
699
  makeUniq
700
+ puts "Profiling #{Time.now - $timeStart}: convert to building blocks..." if Bake.options.profiling
701
+ convert2bb
664
702
  if Bake.options.dot
665
703
  puts "Profiling #{Time.now - $timeStart}: make dot..." if Bake.options.profiling
666
704
  makeDot
667
705
  end
668
- puts "Profiling #{Time.now - $timeStart}: convert to building blocks..." if Bake.options.profiling
669
- convert2bb
706
+
707
+
708
+ metadata_json = Bake.options.dev_features.first { |x| x.start_with?("metadata=") }
709
+ if metadata_json
710
+ metadata_file = metadata_json[9..-1]
711
+ mainBlock = Blocks::ALL_BLOCKS[@mainConfig.parent.name + "," + @mainConfig.name]
712
+ if Metamodel::ExecutableConfig === mainBlock.config || Metamodel::LibraryConfig === mainBlock.config
713
+ File.open(metadata_file, "w") do |f|
714
+ f.puts "{"
715
+ f.puts " \"module_path\": \"#{mainBlock.projectDir}\","
716
+ f.puts " \"config_name\": \"#{@mainConfig.name}\","
717
+ Dir.chdir(mainBlock.projectDir) do
718
+ f.puts " \"artifact\": \"#{File.expand_path(mainBlock.mainSteps.last.calcArtifactName)}\","
719
+ end
720
+ f.puts " \"compiler_c\": \"#{@defaultToolchain[:COMPILER][:C][:COMMAND]}\","
721
+ f.puts " \"compiler_cxx\": \"#{@defaultToolchain[:COMPILER][:CPP][:COMMAND]}\","
722
+ f.puts " \"flags_c\": \"#{@defaultToolchain[:COMPILER][:C][:FLAGS]}\","
723
+ f.puts " \"flags_cxx\": \"#{@defaultToolchain[:COMPILER][:CPP][:FLAGS]}\""
724
+ f.puts "}"
725
+ end
726
+ puts "File #{metadata_file} written."
727
+ ExitHelper.exit(0)
728
+ else
729
+ Bake.formatter.printError("Error: dev-feature metadata is only for LibraryConfig for ExecutableConfig.")
730
+ ExitHelper.exit(1)
731
+ end
732
+ end
670
733
 
671
734
  ensure
672
735
  if Bake.options.show_includes || Bake.options.show_includes_and_defines
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bake-toolkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.53.0
4
+ version: 2.54.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Schaal
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-25 00:00:00.000000000 Z
11
+ date: 2019-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rtext