rscons 1.4.3 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rscons.rb +75 -5
- data/lib/rscons/build_target.rb +36 -0
- data/lib/rscons/builder.rb +41 -3
- data/lib/rscons/builders/cfile.rb +15 -0
- data/lib/rscons/builders/disassemble.rb +15 -0
- data/lib/rscons/builders/library.rb +17 -2
- data/lib/rscons/builders/object.rb +37 -5
- data/lib/rscons/builders/preprocess.rb +15 -0
- data/lib/rscons/builders/program.rb +42 -2
- data/lib/rscons/cache.rb +26 -6
- data/lib/rscons/environment.rb +259 -19
- data/lib/rscons/varset.rb +33 -10
- data/lib/rscons/version.rb +1 -1
- data/rscons.gemspec +8 -10
- metadata +38 -103
- checksums.yaml +0 -15
- data/.gitignore +0 -18
- data/.rspec +0 -2
- data/Gemfile +0 -4
- data/README.md +0 -384
- data/Rakefile.rb +0 -26
- data/build_tests/build_dir/src/one/one.c +0 -6
- data/build_tests/build_dir/src/two/two.c +0 -7
- data/build_tests/build_dir/src/two/two.h +0 -6
- data/build_tests/clone_env/src/program.c +0 -6
- data/build_tests/custom_builder/program.c +0 -7
- data/build_tests/d/main.d +0 -6
- data/build_tests/header/header.c +0 -7
- data/build_tests/header/header.h +0 -6
- data/build_tests/library/one.c +0 -8
- data/build_tests/library/three.c +0 -0
- data/build_tests/library/two.c +0 -0
- data/build_tests/simple/simple.c +0 -6
- data/build_tests/simple_cc/simple.cc +0 -8
- data/build_tests/two_sources/one.c +0 -8
- data/build_tests/two_sources/two.c +0 -3
- data/spec/build_tests_spec.rb +0 -527
- data/spec/rscons/builders/cfile_spec.rb +0 -28
- data/spec/rscons/builders/disassemble_spec.rb +0 -17
- data/spec/rscons/builders/library_spec.rb +0 -18
- data/spec/rscons/builders/object_spec.rb +0 -23
- data/spec/rscons/builders/preprocess_spec.rb +0 -18
- data/spec/rscons/builders/program_spec.rb +0 -18
- data/spec/rscons/cache_spec.rb +0 -271
- data/spec/rscons/environment_spec.rb +0 -361
- data/spec/rscons/varset_spec.rb +0 -163
- data/spec/rscons_spec.rb +0 -26
- data/spec/spec_helper.rb +0 -7
data/lib/rscons/varset.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
module Rscons
|
2
|
-
# This class represents a collection of variables which
|
3
|
-
#
|
4
|
-
# Only nil, strings, arrays, and hashes should be stored in a VarSet.
|
2
|
+
# This class represents a collection of variables which supports efficient
|
3
|
+
# deep cloning.
|
5
4
|
class VarSet
|
6
5
|
# Create a VarSet.
|
6
|
+
#
|
7
7
|
# @param vars [Hash] Optional initial variables.
|
8
8
|
def initialize(vars = {})
|
9
9
|
@my_vars = {}
|
@@ -11,8 +11,10 @@ module Rscons
|
|
11
11
|
append(vars)
|
12
12
|
end
|
13
13
|
|
14
|
-
# Access the value of variable
|
14
|
+
# Access the value of variable.
|
15
|
+
#
|
15
16
|
# @param key [String, Symbol] The variable name.
|
17
|
+
#
|
16
18
|
# @return [Object] The variable's value.
|
17
19
|
def [](key)
|
18
20
|
if @my_vars.include?(key)
|
@@ -29,15 +31,19 @@ module Rscons
|
|
29
31
|
end
|
30
32
|
|
31
33
|
# Assign a value to a variable.
|
34
|
+
#
|
32
35
|
# @param key [String, Symbol] The variable name.
|
36
|
+
#
|
33
37
|
# @param val [Object] The value to set.
|
34
38
|
def []=(key, val)
|
35
39
|
@my_vars[key] = val
|
36
40
|
end
|
37
41
|
|
38
42
|
# Check if the VarSet contains a variable.
|
43
|
+
#
|
39
44
|
# @param key [String, Symbol] The variable name.
|
40
|
-
#
|
45
|
+
#
|
46
|
+
# @return [Boolean] Whether the VarSet contains the variable.
|
41
47
|
def include?(key)
|
42
48
|
if @my_vars.include?(key)
|
43
49
|
true
|
@@ -48,8 +54,11 @@ module Rscons
|
|
48
54
|
end
|
49
55
|
end
|
50
56
|
|
51
|
-
# Add or overwrite a set of variables
|
57
|
+
# Add or overwrite a set of variables.
|
58
|
+
#
|
52
59
|
# @param values [VarSet, Hash] New set of variables.
|
60
|
+
#
|
61
|
+
# @return [self]
|
53
62
|
def append(values)
|
54
63
|
coa!
|
55
64
|
if values.is_a?(VarSet)
|
@@ -62,7 +71,10 @@ module Rscons
|
|
62
71
|
end
|
63
72
|
|
64
73
|
# Create a new VarSet object based on the first merged with other.
|
74
|
+
#
|
65
75
|
# @param other [VarSet, Hash] Other variables to add or overwrite.
|
76
|
+
#
|
77
|
+
# @return [VarSet] The newly created VarSet.
|
66
78
|
def merge(other = {})
|
67
79
|
coa!
|
68
80
|
varset = self.class.new
|
@@ -71,9 +83,13 @@ module Rscons
|
|
71
83
|
end
|
72
84
|
alias_method :clone, :merge
|
73
85
|
|
74
|
-
# Replace "
|
75
|
-
# recursively.
|
86
|
+
# Replace "$\{var}" variable references in varref with the expanded
|
87
|
+
# variables' values, recursively.
|
88
|
+
#
|
76
89
|
# @param varref [String, Array] Value containing references to variables.
|
90
|
+
#
|
91
|
+
# @return [String, Array]
|
92
|
+
# Expanded value with "$\{var}" variable references replaced.
|
77
93
|
def expand_varref(varref)
|
78
94
|
if varref.is_a?(Array)
|
79
95
|
varref.map do |ent|
|
@@ -99,6 +115,8 @@ module Rscons
|
|
99
115
|
private
|
100
116
|
|
101
117
|
# Move all VarSet variables into the copy-on-access list.
|
118
|
+
#
|
119
|
+
# @return [void]
|
102
120
|
def coa!
|
103
121
|
unless @my_vars.empty?
|
104
122
|
@coa_vars.unshift(@my_vars)
|
@@ -107,8 +125,13 @@ module Rscons
|
|
107
125
|
end
|
108
126
|
|
109
127
|
# Create a deep copy of an object.
|
110
|
-
#
|
111
|
-
#
|
128
|
+
#
|
129
|
+
# Only objects which are of type String, Array, or Hash are deep copied.
|
130
|
+
# Any other object just has its referenced copied.
|
131
|
+
#
|
132
|
+
# @param obj [Object] Object to deep copy.
|
133
|
+
#
|
134
|
+
# @return [Object] Deep copied value.
|
112
135
|
def deep_dup(obj)
|
113
136
|
obj_class = obj.class
|
114
137
|
if obj_class == Hash
|
data/lib/rscons/version.rb
CHANGED
data/rscons.gemspec
CHANGED
@@ -1,30 +1,28 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
lib = File.expand_path(
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
4
|
+
require "rscons/version"
|
5
5
|
|
6
6
|
Gem::Specification.new do |gem|
|
7
7
|
gem.name = "rscons"
|
8
8
|
gem.version = Rscons::VERSION
|
9
9
|
gem.authors = ["Josh Holtrop"]
|
10
10
|
gem.email = ["jholtrop@gmail.com"]
|
11
|
-
gem.description = %q{Software construction library inspired by SCons and implemented in Ruby}
|
11
|
+
gem.description = %q{Software construction library inspired by SCons and implemented in Ruby.}
|
12
12
|
gem.summary = %q{Software construction library inspired by SCons and implemented in Ruby}
|
13
13
|
gem.homepage = "https://github.com/holtrop/rscons"
|
14
|
-
gem.license =
|
14
|
+
gem.license = "MIT"
|
15
15
|
|
16
|
-
gem.files =
|
16
|
+
gem.files = Dir["{bin,assets,lib}/**/*", "*.gemspec", "LICENSE.txt"]
|
17
17
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
18
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
19
|
gem.require_paths = ["lib"]
|
20
20
|
|
21
|
-
gem.
|
22
|
-
|
23
|
-
gem.add_development_dependency "rspec-expectations"
|
21
|
+
gem.add_dependency "json", "~> 1.0"
|
22
|
+
|
24
23
|
gem.add_development_dependency "rspec"
|
25
24
|
gem.add_development_dependency "rake"
|
26
25
|
gem.add_development_dependency "simplecov"
|
27
|
-
gem.add_development_dependency "json"
|
28
|
-
gem.add_development_dependency 'rdoc'
|
29
26
|
gem.add_development_dependency "yard"
|
27
|
+
gem.add_development_dependency "redcarpet"
|
30
28
|
end
|
metadata
CHANGED
@@ -1,60 +1,36 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rscons
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Josh Holtrop
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2014-
|
12
|
+
date: 2014-06-17 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ! '>='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ! '>='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rspec-mocks
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ! '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ! '>='
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec-expectations
|
15
|
+
name: json
|
43
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
44
18
|
requirements:
|
45
|
-
- -
|
19
|
+
- - ~>
|
46
20
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :
|
21
|
+
version: '1.0'
|
22
|
+
type: :runtime
|
49
23
|
prerelease: false
|
50
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
51
26
|
requirements:
|
52
|
-
- -
|
27
|
+
- - ~>
|
53
28
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
29
|
+
version: '1.0'
|
55
30
|
- !ruby/object:Gem::Dependency
|
56
31
|
name: rspec
|
57
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
58
34
|
requirements:
|
59
35
|
- - ! '>='
|
60
36
|
- !ruby/object:Gem::Version
|
@@ -62,6 +38,7 @@ dependencies:
|
|
62
38
|
type: :development
|
63
39
|
prerelease: false
|
64
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
65
42
|
requirements:
|
66
43
|
- - ! '>='
|
67
44
|
- !ruby/object:Gem::Version
|
@@ -69,6 +46,7 @@ dependencies:
|
|
69
46
|
- !ruby/object:Gem::Dependency
|
70
47
|
name: rake
|
71
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
72
50
|
requirements:
|
73
51
|
- - ! '>='
|
74
52
|
- !ruby/object:Gem::Version
|
@@ -76,6 +54,7 @@ dependencies:
|
|
76
54
|
type: :development
|
77
55
|
prerelease: false
|
78
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
79
58
|
requirements:
|
80
59
|
- - ! '>='
|
81
60
|
- !ruby/object:Gem::Version
|
@@ -83,6 +62,7 @@ dependencies:
|
|
83
62
|
- !ruby/object:Gem::Dependency
|
84
63
|
name: simplecov
|
85
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
86
66
|
requirements:
|
87
67
|
- - ! '>='
|
88
68
|
- !ruby/object:Gem::Version
|
@@ -90,27 +70,15 @@ dependencies:
|
|
90
70
|
type: :development
|
91
71
|
prerelease: false
|
92
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
93
74
|
requirements:
|
94
75
|
- - ! '>='
|
95
76
|
- !ruby/object:Gem::Version
|
96
77
|
version: '0'
|
97
78
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ! '>='
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ! '>='
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rdoc
|
79
|
+
name: yard
|
113
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
114
82
|
requirements:
|
115
83
|
- - ! '>='
|
116
84
|
- !ruby/object:Gem::Version
|
@@ -118,13 +86,15 @@ dependencies:
|
|
118
86
|
type: :development
|
119
87
|
prerelease: false
|
120
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
121
90
|
requirements:
|
122
91
|
- - ! '>='
|
123
92
|
- !ruby/object:Gem::Version
|
124
93
|
version: '0'
|
125
94
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
95
|
+
name: redcarpet
|
127
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
128
98
|
requirements:
|
129
99
|
- - ! '>='
|
130
100
|
- !ruby/object:Gem::Version
|
@@ -132,39 +102,18 @@ dependencies:
|
|
132
102
|
type: :development
|
133
103
|
prerelease: false
|
134
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
135
106
|
requirements:
|
136
107
|
- - ! '>='
|
137
108
|
- !ruby/object:Gem::Version
|
138
109
|
version: '0'
|
139
|
-
description: Software construction library inspired by SCons and implemented in Ruby
|
110
|
+
description: Software construction library inspired by SCons and implemented in Ruby.
|
140
111
|
email:
|
141
112
|
- jholtrop@gmail.com
|
142
113
|
executables: []
|
143
114
|
extensions: []
|
144
115
|
extra_rdoc_files: []
|
145
116
|
files:
|
146
|
-
- .gitignore
|
147
|
-
- .rspec
|
148
|
-
- Gemfile
|
149
|
-
- LICENSE.txt
|
150
|
-
- README.md
|
151
|
-
- Rakefile.rb
|
152
|
-
- build_tests/build_dir/src/one/one.c
|
153
|
-
- build_tests/build_dir/src/two/two.c
|
154
|
-
- build_tests/build_dir/src/two/two.h
|
155
|
-
- build_tests/clone_env/src/program.c
|
156
|
-
- build_tests/custom_builder/program.c
|
157
|
-
- build_tests/d/main.d
|
158
|
-
- build_tests/header/header.c
|
159
|
-
- build_tests/header/header.h
|
160
|
-
- build_tests/library/one.c
|
161
|
-
- build_tests/library/three.c
|
162
|
-
- build_tests/library/two.c
|
163
|
-
- build_tests/simple/simple.c
|
164
|
-
- build_tests/simple_cc/simple.cc
|
165
|
-
- build_tests/two_sources/one.c
|
166
|
-
- build_tests/two_sources/two.c
|
167
|
-
- lib/rscons.rb
|
168
117
|
- lib/rscons/builder.rb
|
169
118
|
- lib/rscons/builders/cfile.rb
|
170
119
|
- lib/rscons/builders/disassemble.rb
|
@@ -172,58 +121,44 @@ files:
|
|
172
121
|
- lib/rscons/builders/object.rb
|
173
122
|
- lib/rscons/builders/preprocess.rb
|
174
123
|
- lib/rscons/builders/program.rb
|
124
|
+
- lib/rscons/build_target.rb
|
175
125
|
- lib/rscons/cache.rb
|
176
126
|
- lib/rscons/environment.rb
|
177
127
|
- lib/rscons/varset.rb
|
178
128
|
- lib/rscons/version.rb
|
129
|
+
- lib/rscons.rb
|
179
130
|
- rscons.gemspec
|
180
|
-
-
|
181
|
-
- spec/rscons/builders/cfile_spec.rb
|
182
|
-
- spec/rscons/builders/disassemble_spec.rb
|
183
|
-
- spec/rscons/builders/library_spec.rb
|
184
|
-
- spec/rscons/builders/object_spec.rb
|
185
|
-
- spec/rscons/builders/preprocess_spec.rb
|
186
|
-
- spec/rscons/builders/program_spec.rb
|
187
|
-
- spec/rscons/cache_spec.rb
|
188
|
-
- spec/rscons/environment_spec.rb
|
189
|
-
- spec/rscons/varset_spec.rb
|
190
|
-
- spec/rscons_spec.rb
|
191
|
-
- spec/spec_helper.rb
|
131
|
+
- LICENSE.txt
|
192
132
|
homepage: https://github.com/holtrop/rscons
|
193
133
|
licenses:
|
194
134
|
- MIT
|
195
|
-
metadata: {}
|
196
135
|
post_install_message:
|
197
136
|
rdoc_options: []
|
198
137
|
require_paths:
|
199
138
|
- lib
|
200
139
|
required_ruby_version: !ruby/object:Gem::Requirement
|
140
|
+
none: false
|
201
141
|
requirements:
|
202
142
|
- - ! '>='
|
203
143
|
- !ruby/object:Gem::Version
|
204
144
|
version: '0'
|
145
|
+
segments:
|
146
|
+
- 0
|
147
|
+
hash: -456926221
|
205
148
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
206
150
|
requirements:
|
207
151
|
- - ! '>='
|
208
152
|
- !ruby/object:Gem::Version
|
209
153
|
version: '0'
|
154
|
+
segments:
|
155
|
+
- 0
|
156
|
+
hash: -456926221
|
210
157
|
requirements: []
|
211
158
|
rubyforge_project:
|
212
|
-
rubygems_version:
|
159
|
+
rubygems_version: 1.8.23.2
|
213
160
|
signing_key:
|
214
|
-
specification_version:
|
161
|
+
specification_version: 3
|
215
162
|
summary: Software construction library inspired by SCons and implemented in Ruby
|
216
|
-
test_files:
|
217
|
-
- spec/build_tests_spec.rb
|
218
|
-
- spec/rscons/builders/cfile_spec.rb
|
219
|
-
- spec/rscons/builders/disassemble_spec.rb
|
220
|
-
- spec/rscons/builders/library_spec.rb
|
221
|
-
- spec/rscons/builders/object_spec.rb
|
222
|
-
- spec/rscons/builders/preprocess_spec.rb
|
223
|
-
- spec/rscons/builders/program_spec.rb
|
224
|
-
- spec/rscons/cache_spec.rb
|
225
|
-
- spec/rscons/environment_spec.rb
|
226
|
-
- spec/rscons/varset_spec.rb
|
227
|
-
- spec/rscons_spec.rb
|
228
|
-
- spec/spec_helper.rb
|
163
|
+
test_files: []
|
229
164
|
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
NTNkMDYxN2I0NGJlMTJlOTQxYjYwMzA3MDI4ZGYxZTdjNzM3NjM4OA==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MTY0ZTBlY2QxMTQwNDE5ZTQ2OWJhYmEwZDZlZjAyYTYzZDliY2Q3MQ==
|
7
|
-
SHA512:
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
MjU3M2FlNzE3M2YyZmFmMjJlMThmYWQzNjVjM2M0MGU1MjM0ZTc0ZTU0YjZh
|
10
|
-
NjM1ODM2ZDBhYjhmYzdkZTM0MTNiMDNiNzU2Mzc2ODdiOWJiM2Q3NjZiNzBl
|
11
|
-
YzE4YmQ5ODdmM2RlNTg4YjNmOGJlMTc1YWQ5M2EyNTUxY2I4OGM=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MTI1MTgxZmQ5M2I3YTMxYzVmZTM5ZWUzNDRjMmFjMGZkNzZmMGRmMDlmMzA3
|
14
|
-
ODJlZGQ0YzNlNzIxOGUxNTdlNGY2NmQ0MzVlMmRkZmU5Y2U3MDE0NjQ0Mjg0
|
15
|
-
NzY3ZjA4ZjdmN2QzZWY4N2ZmY2RjYTQ2YWYwNzkzMzcxM2I2MzU=
|