bake-toolkit 2.53.0 → 2.54.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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