bake-toolkit 2.54.2 → 2.54.3
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 +4 -4
- data/bin/bakeqac +7 -7
- data/lib/bake/cache.rb +3 -1
- data/lib/bake/model/loader.rb +4 -0
- data/lib/bake/options/usage.rb +1 -1
- data/lib/bake/subst.rb +8 -4
- data/lib/bake/toolchain/colorizing_formatter.rb +1 -1
- data/lib/bake/toolchain/errorparser/tasking_compiler_error_parser.rb +11 -2
- data/lib/bakery/options/options.rb +1 -1
- data/lib/blocks/blockBase.rb +4 -3
- data/lib/blocks/compile.rb +5 -4
- data/lib/blocks/executable.rb +11 -2
- data/lib/blocks/library.rb +1 -1
- data/lib/common/root.rb +1 -0
- data/lib/common/utils.rb +8 -0
- data/lib/common/version.rb +1 -1
- data/lib/tocxx.rb +10 -7
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b660cd9c40c8aac3678294bc00bf7f797b2c4fdd024bcf329db5ea640da69223
|
|
4
|
+
data.tar.gz: 45c476b4b32fa4990f2502f6e5f4dedc0386a3177f870fee6b25ef72cff4a437
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 36a9dbdae13d2985641b0d16a213c5daaa42279e41232dc6830aa3e07eac3df51ba8050c92a6f0febf2923f47f5e79dff3ccff748b2fd90b8e3a46501cc3db71
|
|
7
|
+
data.tar.gz: 368185045fe98fa0801f45fd268410adcf86651ac300f26015e51060196b7f7d784c17cb119219e7e6a3354ab870f36d82d66e0dfc8f5b2d8321686d030d255e
|
data/bin/bakeqac
CHANGED
|
@@ -66,8 +66,8 @@ def self.executeQacli(cmd, adminStepAndImmediateOutput = false)
|
|
|
66
66
|
processTimeout = false
|
|
67
67
|
|
|
68
68
|
loop do
|
|
69
|
-
FileUtils.rm_rf
|
|
70
|
-
|
|
69
|
+
FileUtils.rm_rf(@options.qacdata) if adminStepAndImmediateOutput
|
|
70
|
+
Utils.gitIgnore(@options.qacdata)
|
|
71
71
|
|
|
72
72
|
cmdDupped = cmd.dup
|
|
73
73
|
cmdDupped << @options.qacdata
|
|
@@ -226,7 +226,7 @@ $cmdRemoveLocks = qaExe + ["admin", "--qaf-project", @options.qacdata, "--remove
|
|
|
226
226
|
###### STEP 2: BUILD ######
|
|
227
227
|
|
|
228
228
|
if success and (@options.qacstep.nil? or @options.qacstep.include?"analyze")
|
|
229
|
-
|
|
229
|
+
Utils.gitIgnore(@options.qacdata)
|
|
230
230
|
|
|
231
231
|
cmd = qaExe + ["analyze", "-b"]
|
|
232
232
|
|
|
@@ -287,7 +287,7 @@ $cmdRemoveLocks = qaExe + ["admin", "--qaf-project", @options.qacdata, "--remove
|
|
|
287
287
|
###### STEP 3: RESULT ######
|
|
288
288
|
|
|
289
289
|
if success and (@options.qacstep.nil? or @options.qacstep.include?"view")
|
|
290
|
-
|
|
290
|
+
Utils.gitIgnore(@options.qacdata)
|
|
291
291
|
|
|
292
292
|
puts "bakeqac: printing results..."
|
|
293
293
|
|
|
@@ -453,7 +453,7 @@ $cmdRemoveLocks = qaExe + ["admin", "--qaf-project", @options.qacdata, "--remove
|
|
|
453
453
|
###### STEP 4b: REPORT SUR (OPTIONAL) ######
|
|
454
454
|
|
|
455
455
|
if success and !@options.qacstep.nil? and @options.qacstep.include?("report")
|
|
456
|
-
|
|
456
|
+
Utils.gitIgnore(@options.qacdata)
|
|
457
457
|
|
|
458
458
|
puts "bakeqac: generating SUR report..."
|
|
459
459
|
|
|
@@ -467,7 +467,7 @@ $cmdRemoveLocks = qaExe + ["admin", "--qaf-project", @options.qacdata, "--remove
|
|
|
467
467
|
###### STEP 4c: REPORT RCR (OPTIONAL) ######
|
|
468
468
|
|
|
469
469
|
if success and !@options.qacstep.nil? and @options.qacstep.include?("report")
|
|
470
|
-
|
|
470
|
+
Utils.gitIgnore(@options.qacdata)
|
|
471
471
|
|
|
472
472
|
puts "bakeqac: generating RCR report..."
|
|
473
473
|
|
|
@@ -481,7 +481,7 @@ $cmdRemoveLocks = qaExe + ["admin", "--qaf-project", @options.qacdata, "--remove
|
|
|
481
481
|
###### STEP 5: REPORT MDR (OPTIONAL) ######
|
|
482
482
|
|
|
483
483
|
if success and !@options.qacstep.nil? and @options.qacstep.include?("mdr")
|
|
484
|
-
|
|
484
|
+
Utils.gitIgnore(@options.qacdata)
|
|
485
485
|
|
|
486
486
|
puts "bakeqac: generating MDR report..."
|
|
487
487
|
|
data/lib/bake/cache.rb
CHANGED
|
@@ -30,7 +30,9 @@ module Bake
|
|
|
30
30
|
else
|
|
31
31
|
@cacheFilename = Bake.options.main_dir+"/.bake/Project.meta." + sanitize_filename(Bake.options.build_config) + qacStr + ".cache"
|
|
32
32
|
end
|
|
33
|
-
|
|
33
|
+
if !Bake.options.dry
|
|
34
|
+
Utils.gitIgnore(File.dirname(@cacheFilename))
|
|
35
|
+
end
|
|
34
36
|
end
|
|
35
37
|
|
|
36
38
|
def load_cache
|
data/lib/bake/model/loader.rb
CHANGED
data/lib/bake/options/usage.rb
CHANGED
|
@@ -18,7 +18,7 @@ module Bake
|
|
|
18
18
|
puts " -p <dir> Project to build/clean (default is main project)"
|
|
19
19
|
puts " -f <name> Build/Clean this file only."
|
|
20
20
|
puts " -c Clean the file/project."
|
|
21
|
-
puts " -a <scheme> Use ansi color sequences (console must
|
|
21
|
+
puts " -a <scheme> Use ansi color sequences (console must support it). Possible values are 'white', 'black' and 'none' (default)."
|
|
22
22
|
puts " -v<level> Verbose level from 0 to 3, whereas -v0 is less, -v1 is normal (default) and -v2 and -v3 are more verbose."
|
|
23
23
|
puts " -r Stop on first error."
|
|
24
24
|
puts " -w <root>[,<depth>] Add a workspace root (can be used multiple times). Additionally the search depth can be specified (>=0)."
|
data/lib/bake/subst.rb
CHANGED
|
@@ -41,7 +41,7 @@ module Bake
|
|
|
41
41
|
|
|
42
42
|
def self.resolveOutputDir()
|
|
43
43
|
@@outputDirUnresolved.each do |elem|
|
|
44
|
-
subst(elem)
|
|
44
|
+
subst(elem) if elem
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
|
|
@@ -156,7 +156,7 @@ module Bake
|
|
|
156
156
|
|
|
157
157
|
end
|
|
158
158
|
|
|
159
|
-
def self.substString(str, elem=nil)
|
|
159
|
+
def self.substString(str, elem=nil, attrName=nil)
|
|
160
160
|
substStr = ""
|
|
161
161
|
posSubst = 0
|
|
162
162
|
while (true)
|
|
@@ -256,7 +256,7 @@ module Bake
|
|
|
256
256
|
configs = @@referencedConfigs[out_proj_name]
|
|
257
257
|
config = configs.select {|c| c.name == out_conf_name }.first
|
|
258
258
|
if config
|
|
259
|
-
|
|
259
|
+
out_dir = nil
|
|
260
260
|
if (config.toolchain and config.toolchain.outputDir and config.toolchain.outputDir != "")
|
|
261
261
|
out_dir = config.toolchain.outputDir
|
|
262
262
|
else
|
|
@@ -272,6 +272,10 @@ module Bake
|
|
|
272
272
|
end
|
|
273
273
|
|
|
274
274
|
if (out_dir.include?"$(")
|
|
275
|
+
if !elem
|
|
276
|
+
Bake.formatter.printError("Variable OutputDir not used correctly in this config", @@config)
|
|
277
|
+
ExitHelper.exit(1)
|
|
278
|
+
end
|
|
275
279
|
substStr << str[posStart..posEnd]
|
|
276
280
|
@@outputDirUnresolved << elem
|
|
277
281
|
else
|
|
@@ -368,7 +372,7 @@ module Bake
|
|
|
368
372
|
return if Metamodel::DefaultToolchain === elem
|
|
369
373
|
return if Metamodel::Toolchain === elem.class
|
|
370
374
|
next if a.eType.name != "EString"
|
|
371
|
-
substStr = substString(elem.getGeneric(a.name), elem)
|
|
375
|
+
substStr = substString(elem.getGeneric(a.name), elem, a.name)
|
|
372
376
|
elem.setGeneric(a.name, substStr)
|
|
373
377
|
end
|
|
374
378
|
|
|
@@ -12,7 +12,7 @@ module Bake
|
|
|
12
12
|
def setColorScheme(scheme)
|
|
13
13
|
|
|
14
14
|
if (scheme != :black and scheme != :white and scheme != :none)
|
|
15
|
-
Bake.formatter.printError("Error: color scheme must be 'black' or '
|
|
15
|
+
Bake.formatter.printError("Error: color scheme must be 'black', 'white' or 'none'")
|
|
16
16
|
ExitHelper.exit(1)
|
|
17
17
|
end
|
|
18
18
|
@scheme = scheme
|
|
@@ -4,7 +4,8 @@ module Bake
|
|
|
4
4
|
class TaskingCompilerErrorParser < ErrorParser
|
|
5
5
|
|
|
6
6
|
def initialize()
|
|
7
|
-
@error_expression
|
|
7
|
+
@error_expression = /.* (.+): \[\"(.+)\" ([0-9]+)\/*[0-9]*\] (.*)/
|
|
8
|
+
@error_expression2 = /.* (.+): (.+) “(.*)”/
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
def scan_lines(consoleOutput, proj_dir)
|
|
@@ -19,7 +20,15 @@ module Bake
|
|
|
19
20
|
d.line_number = scan_res[0][2].to_i
|
|
20
21
|
d.message = scan_res[0][3]
|
|
21
22
|
d.severity = get_tasking_severity(scan_res[0][0])
|
|
22
|
-
l.gsub!(scan_res[0][
|
|
23
|
+
l.gsub!(scan_res[0][1],d.file_name)
|
|
24
|
+
end
|
|
25
|
+
scan_res = lstripped.scan(@error_expression2)
|
|
26
|
+
if scan_res.length > 0
|
|
27
|
+
d.file_name = File.expand_path(scan_res[0][2], proj_dir)
|
|
28
|
+
d.line_number = 0
|
|
29
|
+
d.message = scan_res[0][1]
|
|
30
|
+
d.severity = get_tasking_severity(scan_res[0][0])
|
|
31
|
+
l.gsub!(scan_res[0][2],d.file_name)
|
|
23
32
|
end
|
|
24
33
|
res << d
|
|
25
34
|
consoleOutputFullnames << l
|
|
@@ -35,7 +35,7 @@ module Bake
|
|
|
35
35
|
puts " [-b] <name> Name of the collection to build."
|
|
36
36
|
puts " -m <dir> Directory containing the collection file (default is current directory)."
|
|
37
37
|
puts " -r Stop on first error."
|
|
38
|
-
puts " -a <scheme> Use ansi color sequences (console must support it). Possible values are 'white' and '
|
|
38
|
+
puts " -a <scheme> Use ansi color sequences (console must support it). Possible values are 'white', 'black' and 'none' (default)."
|
|
39
39
|
puts " -h, --help Print this help."
|
|
40
40
|
puts " -w <root>[,<depth>] Add a workspace root (can be used multiple times). Additionally the search depth can be specified (>=0)."
|
|
41
41
|
puts " If no root is specified, the parent directory of Collection.meta is added automatically."
|
data/lib/blocks/blockBase.rb
CHANGED
|
@@ -26,15 +26,16 @@ module Bake
|
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
def self.prepareOutput(filename)
|
|
29
|
+
def self.prepareOutput(filename, block = nil)
|
|
30
30
|
return if Bake.options.dry
|
|
31
31
|
filename = File.expand_path(filename, @projectDir)
|
|
32
32
|
begin
|
|
33
33
|
if File.exists?(filename)
|
|
34
34
|
FileUtils.rm(filename)
|
|
35
35
|
else
|
|
36
|
-
FileUtils
|
|
36
|
+
FileUtils::mkdir_p(File.dirname(filename))
|
|
37
37
|
end
|
|
38
|
+
Utils.gitIgnore(File.expand_path(block.output_dir, @projectDir)) if block
|
|
38
39
|
rescue Exception => e
|
|
39
40
|
if Bake.options.debug
|
|
40
41
|
puts e.message
|
|
@@ -217,7 +218,7 @@ module Bake
|
|
|
217
218
|
|
|
218
219
|
cmdFile = orgOut + ".file" + postfix
|
|
219
220
|
cmdFileLong = File.expand_path(cmdFile, @projectDir)
|
|
220
|
-
|
|
221
|
+
Utils.gitIgnore(File.dirname(cmdFileLong))
|
|
221
222
|
File.open(cmdFileLong, "w") { |f| f.puts argsFlat }
|
|
222
223
|
return onlyCmd + ["#{tcs[:FILE_COMMAND]}#{cmdFile}"]
|
|
223
224
|
end
|
data/lib/blocks/compile.rb
CHANGED
|
@@ -419,6 +419,9 @@ module Bake
|
|
|
419
419
|
puts "Profiling #{Time.now - $timeStart}: prepareIncludes (#{@projectName+","+@config.name}) stop..." if Bake.options.profiling
|
|
420
420
|
end
|
|
421
421
|
|
|
422
|
+
odir = File.expand_path(@block.output_dir, @projectDir)
|
|
423
|
+
Utils.gitIgnore(odir) if !Bake.options.dry
|
|
424
|
+
|
|
422
425
|
fileListBlock = Set.new if Bake.options.filelist
|
|
423
426
|
compileJobs = Multithread::Jobs.new(@source_files) do |jobs|
|
|
424
427
|
while source = jobs.get_next_or_nil do
|
|
@@ -460,8 +463,6 @@ module Bake
|
|
|
460
463
|
if Bake.options.filelist && !Bake.options.dry
|
|
461
464
|
Bake.options.filelist.merge(fileListBlock.merge(fileListBlock))
|
|
462
465
|
|
|
463
|
-
odir = File.expand_path(@block.output_dir, @projectDir)
|
|
464
|
-
FileUtils.mkdir_p(odir)
|
|
465
466
|
File.open(odir + "/" + "file-list.txt", 'wb') do |f|
|
|
466
467
|
fileListBlock.sort.each do |entry|
|
|
467
468
|
f.puts(entry)
|
|
@@ -676,7 +677,7 @@ module Bake
|
|
|
676
677
|
mergeCounter += 1
|
|
677
678
|
mdir = File.expand_path(@block.output_dir+"/mergedIncludes#{mergeCounter}", @projectDir)
|
|
678
679
|
FileUtils.rm_rf(mdir)
|
|
679
|
-
|
|
680
|
+
Utils.gitIgnore(mdir)
|
|
680
681
|
inmerge = true
|
|
681
682
|
end
|
|
682
683
|
if !merging
|
|
@@ -712,7 +713,7 @@ module Bake
|
|
|
712
713
|
sum + si
|
|
713
714
|
end
|
|
714
715
|
puts "Profiling #{Time.now - $timeStart}: copy #{sum} byte in #{filesToCopy.length} files..." if Bake.options.profiling
|
|
715
|
-
destDirs.each {|d|
|
|
716
|
+
destDirs.each {|d| Utils.gitIgnore(d) }
|
|
716
717
|
filesToCopy.each do |t, dest|
|
|
717
718
|
dest.each do |d|
|
|
718
719
|
FileUtils.cp_r(t, d, :preserve => true)
|
data/lib/blocks/executable.rb
CHANGED
|
@@ -17,7 +17,11 @@ module Bake
|
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def calcLinkerScript
|
|
20
|
-
|
|
20
|
+
if Metamodel::LibraryConfig === @config
|
|
21
|
+
@linker_script = nil
|
|
22
|
+
else
|
|
23
|
+
@linker_script = @config.linkerScript.nil? ? nil : @block.convPath(@config.linkerScript)
|
|
24
|
+
end
|
|
21
25
|
end
|
|
22
26
|
|
|
23
27
|
def calcArtifactName
|
|
@@ -43,6 +47,11 @@ module Bake
|
|
|
43
47
|
|
|
44
48
|
def calcMapFile
|
|
45
49
|
@mapfile = nil
|
|
50
|
+
if Metamodel::LibraryConfig === @config
|
|
51
|
+
def @config.mapFile
|
|
52
|
+
Metamodel::MapFile.new
|
|
53
|
+
end
|
|
54
|
+
end
|
|
46
55
|
if (not Bake.options.docu) and (not @config.mapFile.nil?)
|
|
47
56
|
if @config.mapFile.name == ""
|
|
48
57
|
@mapfile = @exe_name.chomp(File.extname(@exe_name)) + ".map"
|
|
@@ -171,7 +180,7 @@ module Bake
|
|
|
171
180
|
else
|
|
172
181
|
ToCxx.linkBlock
|
|
173
182
|
|
|
174
|
-
BlockBase.prepareOutput(@exe_name)
|
|
183
|
+
BlockBase.prepareOutput(@exe_name, @block)
|
|
175
184
|
|
|
176
185
|
printCmd(cmdLinePrint, "Linking #{@projectName} (#{@config.name}): #{@exe_name}", reason, false)
|
|
177
186
|
BlockBase.writeCmdLineFile(cmd, cmdLineFile)
|
data/lib/blocks/library.rb
CHANGED
|
@@ -121,7 +121,7 @@ module Bake
|
|
|
121
121
|
|
|
122
122
|
begin
|
|
123
123
|
success = true
|
|
124
|
-
BlockBase.prepareOutput(File.expand_path(@archive_name, @projectDir))
|
|
124
|
+
BlockBase.prepareOutput(File.expand_path(@archive_name, @projectDir), @block)
|
|
125
125
|
BlockBase.writeCmdLineFile(cmd, cmdLineFile)
|
|
126
126
|
consoleOutput = ""
|
|
127
127
|
|
data/lib/common/root.rb
CHANGED
|
@@ -64,6 +64,7 @@ module Bake
|
|
|
64
64
|
line = line.split("#")[0].strip.gsub(/[\\]/,'/')
|
|
65
65
|
if line != ""
|
|
66
66
|
root = Root.extract_depth(line)
|
|
67
|
+
root.dir = root.dir[0..-2] if root.dir.end_with?("/")
|
|
67
68
|
if !File.is_absolute?(root.dir)
|
|
68
69
|
root.dir = File.expand_path(File.dirname(rootsFile) + "/" + root.dir)
|
|
69
70
|
end
|
data/lib/common/utils.rb
CHANGED
|
@@ -3,6 +3,14 @@ require 'rbconfig'
|
|
|
3
3
|
module Bake
|
|
4
4
|
|
|
5
5
|
module Utils
|
|
6
|
+
|
|
7
|
+
def self.gitIgnore(folder)
|
|
8
|
+
FileUtils::mkdir_p(folder)
|
|
9
|
+
gitignore = folder + "/.gitignore"
|
|
10
|
+
if !File.exist?(gitignore)
|
|
11
|
+
File.write(gitignore, ".\n")
|
|
12
|
+
end
|
|
13
|
+
end
|
|
6
14
|
|
|
7
15
|
def self.flagSplit(str, removeQuotes)
|
|
8
16
|
return [] if str == ""
|
data/lib/common/version.rb
CHANGED
data/lib/tocxx.rb
CHANGED
|
@@ -505,16 +505,14 @@ module Bake
|
|
|
505
505
|
block.mainSteps << compile
|
|
506
506
|
end
|
|
507
507
|
if not Bake.options.filename and not Bake.options.analyze
|
|
508
|
-
if Metamodel::
|
|
509
|
-
block.mainSteps << Blocks::Library.new(block, config, @referencedConfigs, compile)
|
|
510
|
-
else
|
|
508
|
+
if Metamodel::ExecutableConfig === config || (Bake.options.dev_features.include?("enforce-executable-config") && config == @mainConfig)
|
|
511
509
|
block.mainSteps << Blocks::Executable.new(block, config, @referencedConfigs, compile) unless block.prebuild
|
|
510
|
+
else
|
|
511
|
+
block.mainSteps << Blocks::Library.new(block, config, @referencedConfigs, compile)
|
|
512
512
|
end
|
|
513
513
|
end
|
|
514
514
|
end
|
|
515
515
|
|
|
516
|
-
|
|
517
|
-
|
|
518
516
|
end
|
|
519
517
|
end
|
|
520
518
|
end
|
|
@@ -716,7 +714,12 @@ module Bake
|
|
|
716
714
|
f.puts " \"module_path\": \"#{mainBlock.projectDir}\","
|
|
717
715
|
f.puts " \"config_name\": \"#{@mainConfig.name}\","
|
|
718
716
|
Dir.chdir(mainBlock.projectDir) do
|
|
719
|
-
|
|
717
|
+
if Blocks::Library === mainBlock.mainSteps.last || Blocks::Executable === mainBlock.mainSteps.last
|
|
718
|
+
aName = File.expand_path(mainBlock.mainSteps.last.calcArtifactName)
|
|
719
|
+
else
|
|
720
|
+
aName = ""
|
|
721
|
+
end
|
|
722
|
+
f.puts " \"artifact\": \"#{aName}\","
|
|
720
723
|
end
|
|
721
724
|
f.puts " \"compiler_c\": \"#{@defaultToolchain[:COMPILER][:C][:COMMAND]}\","
|
|
722
725
|
f.puts " \"compiler_cxx\": \"#{@defaultToolchain[:COMPILER][:CPP][:COMMAND]}\","
|
|
@@ -789,7 +792,7 @@ module Bake
|
|
|
789
792
|
if Bake.options.filelist && !Bake.options.dry
|
|
790
793
|
mainBlock = Blocks::ALL_BLOCKS[Bake.options.main_project_name+","+Bake.options.build_config]
|
|
791
794
|
Dir.chdir(mainBlock.projectDir) do
|
|
792
|
-
|
|
795
|
+
Utils.gitIgnore(mainBlock.output_dir)
|
|
793
796
|
File.open(mainBlock.output_dir + "/" + "global-file-list.txt", 'wb') do |f|
|
|
794
797
|
Bake.options.filelist.sort.each do |entry|
|
|
795
798
|
f.puts(entry)
|
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.54.
|
|
4
|
+
version: 2.54.3
|
|
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-
|
|
11
|
+
date: 2019-11-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rtext
|
|
@@ -267,7 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
267
267
|
version: '0'
|
|
268
268
|
requirements: []
|
|
269
269
|
rubyforge_project:
|
|
270
|
-
rubygems_version: 2.7.
|
|
270
|
+
rubygems_version: 2.7.6
|
|
271
271
|
signing_key:
|
|
272
272
|
specification_version: 4
|
|
273
273
|
summary: Build tool to compile C/C++ projects fast and easy.
|