autoproj 1.9.7.rc2 → 1.9.7.rc3
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.
- data/Rakefile +5 -2
- data/bin/autoproj_bootstrap +80 -18
- data/bin/autoproj_bootstrap.in +9 -15
- data/lib/autoproj/cmdline.rb +1 -4
- data/lib/autoproj/osdeps.rb +9 -3
- data/lib/autoproj/version.rb +1 -1
- metadata +2 -2
data/Rakefile
CHANGED
|
@@ -30,6 +30,8 @@ namespace 'dist' do
|
|
|
30
30
|
options_code = File.read(File.join(Dir.pwd, 'lib', 'autoproj', 'options.rb'))
|
|
31
31
|
system_code = File.read(File.join(Dir.pwd, 'lib', 'autoproj', 'system.rb'))
|
|
32
32
|
osdeps_defaults = File.read(File.join(Dir.pwd, 'lib', 'autoproj', 'default.osdeps'))
|
|
33
|
+
require 'autobuild'
|
|
34
|
+
tools_code = File.read(File.join(Autobuild::LIB_DIR, 'autobuild', 'tools.rb'))
|
|
33
35
|
# Filter rubygems dependencies from the OSdeps default. They will be
|
|
34
36
|
# installed at first build
|
|
35
37
|
osdeps = YAML.load(osdeps_defaults)
|
|
@@ -44,7 +46,7 @@ namespace 'dist' do
|
|
|
44
46
|
osdeps_defaults = YAML.dump(osdeps)
|
|
45
47
|
# Since we are using gsub to replace the content in the bootstrap file,
|
|
46
48
|
# we have to quote all \
|
|
47
|
-
[osdeps_code, options_code, system_code, osdeps_defaults].each do |text|
|
|
49
|
+
[osdeps_code, options_code, system_code, osdeps_defaults, tools_code].each do |text|
|
|
48
50
|
text.gsub! /\\/, '\\\\\\\\'
|
|
49
51
|
end
|
|
50
52
|
|
|
@@ -52,7 +54,8 @@ namespace 'dist' do
|
|
|
52
54
|
gsub('OSDEPS_CODE', osdeps_code).
|
|
53
55
|
gsub('OPTIONS_CODE', options_code).
|
|
54
56
|
gsub('SYSTEM_CODE', system_code).
|
|
55
|
-
gsub('OSDEPS_DEFAULTS', osdeps_defaults)
|
|
57
|
+
gsub('OSDEPS_DEFAULTS', osdeps_defaults).
|
|
58
|
+
gsub('TOOLS_CODE', tools_code)
|
|
56
59
|
File.open(File.join(Dir.pwd, 'bin', 'autoproj_bootstrap'), 'w') do |io|
|
|
57
60
|
io.write bootstrap_code
|
|
58
61
|
end
|
data/bin/autoproj_bootstrap
CHANGED
|
@@ -53,20 +53,12 @@ end
|
|
|
53
53
|
# Environment is clean, so just mark it as so unconditionally
|
|
54
54
|
ENV['AUTOPROJ_BOOTSTRAP_IGNORE_NONEMPTY_DIR'] = '1'
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
require 'rbconfig'
|
|
60
|
-
RUBY = RbConfig::CONFIG['RUBY_INSTALL_NAME']
|
|
61
|
-
|
|
62
|
-
ENV['GEM_HOME'] = needed_gem_home
|
|
63
|
-
ENV['GEM_PATH'] = nil
|
|
64
|
-
exec RUBY, __FILE__, *ARGV
|
|
65
|
-
end
|
|
66
|
-
end
|
|
56
|
+
gem_home = ENV['AUTOPROJ_GEM_HOME'] || File.join(Dir.pwd, '.gems')
|
|
57
|
+
gem_path = ([gem_home] + Gem.default_path).join(":")
|
|
58
|
+
Gem.paths = Hash['GEM_HOME' => gem_home, 'GEM_PATH' => gem_path]
|
|
67
59
|
|
|
68
|
-
|
|
69
|
-
ENV['
|
|
60
|
+
ENV['GEM_HOME'] = gem_home
|
|
61
|
+
ENV['GEM_PATH'] = gem_path
|
|
70
62
|
ENV['PATH'] = "#{ENV['GEM_HOME']}/bin:#{ENV['PATH']}"
|
|
71
63
|
|
|
72
64
|
require 'yaml'
|
|
@@ -479,9 +471,7 @@ fi
|
|
|
479
471
|
Autobuild.env_add_path 'PATH', "#{gem_home}/bin"
|
|
480
472
|
|
|
481
473
|
# Now, reset the directories in our own RubyGems instance
|
|
482
|
-
|
|
483
|
-
Gem::Specification.dirs = ENV['GEM_PATH'].split(':')
|
|
484
|
-
end
|
|
474
|
+
Gem.paths = ENV
|
|
485
475
|
end
|
|
486
476
|
|
|
487
477
|
# Return the directory in which RubyGems package should be installed
|
|
@@ -808,6 +798,14 @@ fi
|
|
|
808
798
|
"ruby#{RUBY_VERSION.split('.')[0, 2].join("")}"
|
|
809
799
|
end
|
|
810
800
|
|
|
801
|
+
def self.autodetect_ruby_program
|
|
802
|
+
ruby = RbConfig::CONFIG['RUBY_INSTALL_NAME']
|
|
803
|
+
ruby_bindir = RbConfig::CONFIG['bindir']
|
|
804
|
+
ruby_executable = File.join(ruby_bindir, ruby)
|
|
805
|
+
Autobuild.programs['ruby'] = ruby_executable
|
|
806
|
+
ruby_executable
|
|
807
|
+
end
|
|
808
|
+
|
|
811
809
|
def self.autodetect_ruby
|
|
812
810
|
self.alias(ruby_version_keyword, "ruby")
|
|
813
811
|
end
|
|
@@ -1702,6 +1700,69 @@ So, what do you want ? (all, none or a comma-separated list of: os gem pip)
|
|
|
1702
1700
|
end
|
|
1703
1701
|
|
|
1704
1702
|
|
|
1703
|
+
module Autobuild
|
|
1704
|
+
class << self
|
|
1705
|
+
# Configure the programs used by different packages
|
|
1706
|
+
attr_reader :programs
|
|
1707
|
+
# A cache of entries in programs to their resolved full path
|
|
1708
|
+
#
|
|
1709
|
+
# @return [{String=>[String,String,String]}] the triplet (full path,
|
|
1710
|
+
# tool name, value of ENV['PATH']). The last two values are used to
|
|
1711
|
+
# invalidate the cache when needed
|
|
1712
|
+
#
|
|
1713
|
+
# @see tool_in_path
|
|
1714
|
+
attr_reader :programs_in_path
|
|
1715
|
+
|
|
1716
|
+
# Get a given program, using its name as default value. For
|
|
1717
|
+
# instance
|
|
1718
|
+
# tool('automake')
|
|
1719
|
+
# will return 'automake' unless the autobuild script defined
|
|
1720
|
+
# another automake program in Autobuild.programs by doing
|
|
1721
|
+
# Autobuild.programs['automake'] = 'automake1.9'
|
|
1722
|
+
def tool(name)
|
|
1723
|
+
programs[name.to_sym] || programs[name.to_s] || name.to_s
|
|
1724
|
+
end
|
|
1725
|
+
|
|
1726
|
+
# Resolves the absolute path to a given tool
|
|
1727
|
+
def tool_in_path(name)
|
|
1728
|
+
path, path_name, path_env = programs_in_path[name]
|
|
1729
|
+
current = tool(name)
|
|
1730
|
+
if path_env != ENV['PATH'] || path_name != current
|
|
1731
|
+
# Delete the current entry given that it is invalid
|
|
1732
|
+
programs_in_path.delete(name)
|
|
1733
|
+
if current[0, 1] == "/"
|
|
1734
|
+
# This is already a full path
|
|
1735
|
+
path = current
|
|
1736
|
+
else
|
|
1737
|
+
path = ENV['PATH'].split(':').
|
|
1738
|
+
find { |dir| File.exists?(File.join(dir, current)) }
|
|
1739
|
+
if path
|
|
1740
|
+
path = File.join(path, current)
|
|
1741
|
+
end
|
|
1742
|
+
end
|
|
1743
|
+
|
|
1744
|
+
if !path
|
|
1745
|
+
raise ArgumentError, "tool #{name}, set to #{current}, can not be found in PATH=#{path_env}"
|
|
1746
|
+
end
|
|
1747
|
+
|
|
1748
|
+
# Verify that the new value is a file and is executable
|
|
1749
|
+
if !File.file?(path)
|
|
1750
|
+
raise ArgumentError, "tool #{name} is set to #{current}, but this resolves to #{path} which is not a file"
|
|
1751
|
+
elsif !File.executable?(path)
|
|
1752
|
+
raise ArgumentError, "tool #{name} is set to #{current}, but this resolves to #{path} which is not executable"
|
|
1753
|
+
end
|
|
1754
|
+
programs_in_path[name] = [path, current, ENV['PATH']]
|
|
1755
|
+
end
|
|
1756
|
+
|
|
1757
|
+
return path
|
|
1758
|
+
end
|
|
1759
|
+
end
|
|
1760
|
+
|
|
1761
|
+
@programs = Hash.new
|
|
1762
|
+
@programs_in_path = Hash.new
|
|
1763
|
+
end
|
|
1764
|
+
|
|
1765
|
+
|
|
1705
1766
|
module Autoproj
|
|
1706
1767
|
class InputError < RuntimeError; end
|
|
1707
1768
|
|
|
@@ -2340,6 +2401,7 @@ ENV['AUTOPROJ_OSDEPS_MODE'] = osdeps_mode
|
|
|
2340
2401
|
# binary) by setting Autobuild.programs['gem'] to nil
|
|
2341
2402
|
Autobuild.programs['gem'] = nil
|
|
2342
2403
|
Autoproj::OSDependencies.autodetect_ruby
|
|
2404
|
+
Autoproj::OSDependencies.autodetect_ruby_program
|
|
2343
2405
|
|
|
2344
2406
|
osdeps_management =
|
|
2345
2407
|
if ENV['AUTOPROJ_DEFAULT_OSDEPS']
|
|
@@ -2376,8 +2438,8 @@ end
|
|
|
2376
2438
|
File.open('env.sh', 'w') do |io|
|
|
2377
2439
|
io.write <<-EOSHELL
|
|
2378
2440
|
export RUBYOPT=-rubygems
|
|
2379
|
-
export GEM_PATH=#{
|
|
2380
|
-
export GEM_HOME=#{
|
|
2441
|
+
export GEM_PATH=#{gem_path.join(":")}
|
|
2442
|
+
export GEM_HOME=#{gem_home}
|
|
2381
2443
|
export PATH=$GEM_HOME/bin:$PATH
|
|
2382
2444
|
EOSHELL
|
|
2383
2445
|
end
|
data/bin/autoproj_bootstrap.in
CHANGED
|
@@ -53,20 +53,12 @@ end
|
|
|
53
53
|
# Environment is clean, so just mark it as so unconditionally
|
|
54
54
|
ENV['AUTOPROJ_BOOTSTRAP_IGNORE_NONEMPTY_DIR'] = '1'
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
require 'rbconfig'
|
|
60
|
-
RUBY = RbConfig::CONFIG['RUBY_INSTALL_NAME']
|
|
56
|
+
gem_home = ENV['AUTOPROJ_GEM_HOME'] || File.join(Dir.pwd, '.gems')
|
|
57
|
+
gem_path = ([gem_home] + Gem.default_path).join(":")
|
|
58
|
+
Gem.paths = Hash['GEM_HOME' => gem_home, 'GEM_PATH' => gem_path]
|
|
61
59
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
exec RUBY, __FILE__, *ARGV
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
ENV['GEM_HOME'] = needed_gem_home
|
|
60
|
+
ENV['GEM_HOME'] = gem_home
|
|
61
|
+
ENV['GEM_PATH'] = gem_path
|
|
70
62
|
ENV['PATH'] = "#{ENV['GEM_HOME']}/bin:#{ENV['PATH']}"
|
|
71
63
|
|
|
72
64
|
require 'yaml'
|
|
@@ -123,6 +115,7 @@ module Autobuild
|
|
|
123
115
|
end
|
|
124
116
|
|
|
125
117
|
OSDEPS_CODE
|
|
118
|
+
TOOLS_CODE
|
|
126
119
|
OPTIONS_CODE
|
|
127
120
|
SYSTEM_CODE
|
|
128
121
|
|
|
@@ -147,6 +140,7 @@ ENV['AUTOPROJ_OSDEPS_MODE'] = osdeps_mode
|
|
|
147
140
|
# binary) by setting Autobuild.programs['gem'] to nil
|
|
148
141
|
Autobuild.programs['gem'] = nil
|
|
149
142
|
Autoproj::OSDependencies.autodetect_ruby
|
|
143
|
+
Autoproj::OSDependencies.autodetect_ruby_program
|
|
150
144
|
|
|
151
145
|
osdeps_management =
|
|
152
146
|
if ENV['AUTOPROJ_DEFAULT_OSDEPS']
|
|
@@ -183,8 +177,8 @@ end
|
|
|
183
177
|
File.open('env.sh', 'w') do |io|
|
|
184
178
|
io.write <<-EOSHELL
|
|
185
179
|
export RUBYOPT=-rubygems
|
|
186
|
-
export GEM_PATH=#{
|
|
187
|
-
export GEM_HOME=#{
|
|
180
|
+
export GEM_PATH=#{gem_path.join(":")}
|
|
181
|
+
export GEM_HOME=#{gem_home}
|
|
188
182
|
export PATH=$GEM_HOME/bin:$PATH
|
|
189
183
|
EOSHELL
|
|
190
184
|
end
|
data/lib/autoproj/cmdline.rb
CHANGED
|
@@ -47,10 +47,8 @@ module Autoproj
|
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def self.handle_ruby_version
|
|
50
|
-
|
|
51
|
-
ruby_bindir = RbConfig::CONFIG['bindir']
|
|
50
|
+
@ruby_executable = Autoproj::OSDependencies.autodetect_ruby_program
|
|
52
51
|
|
|
53
|
-
@ruby_executable = File.join(ruby_bindir, ruby)
|
|
54
52
|
if Autoproj.has_config_key?('ruby_executable')
|
|
55
53
|
expected = Autoproj.user_config('ruby_executable')
|
|
56
54
|
if expected != ruby_executable
|
|
@@ -58,7 +56,6 @@ module Autoproj
|
|
|
58
56
|
end
|
|
59
57
|
end
|
|
60
58
|
Autoproj.change_option('ruby_executable', ruby_executable, true)
|
|
61
|
-
Autobuild.programs['ruby'] = ruby_executable
|
|
62
59
|
|
|
63
60
|
install_suffix = ""
|
|
64
61
|
if match = /ruby(.*)$/.match(ruby)
|
data/lib/autoproj/osdeps.rb
CHANGED
|
@@ -355,9 +355,7 @@ fi
|
|
|
355
355
|
Autobuild.env_add_path 'PATH', "#{gem_home}/bin"
|
|
356
356
|
|
|
357
357
|
# Now, reset the directories in our own RubyGems instance
|
|
358
|
-
|
|
359
|
-
Gem::Specification.dirs = ENV['GEM_PATH'].split(':')
|
|
360
|
-
end
|
|
358
|
+
Gem.paths = ENV
|
|
361
359
|
end
|
|
362
360
|
|
|
363
361
|
# Return the directory in which RubyGems package should be installed
|
|
@@ -684,6 +682,14 @@ fi
|
|
|
684
682
|
"ruby#{RUBY_VERSION.split('.')[0, 2].join("")}"
|
|
685
683
|
end
|
|
686
684
|
|
|
685
|
+
def self.autodetect_ruby_program
|
|
686
|
+
ruby = RbConfig::CONFIG['RUBY_INSTALL_NAME']
|
|
687
|
+
ruby_bindir = RbConfig::CONFIG['bindir']
|
|
688
|
+
ruby_executable = File.join(ruby_bindir, ruby)
|
|
689
|
+
Autobuild.programs['ruby'] = ruby_executable
|
|
690
|
+
ruby_executable
|
|
691
|
+
end
|
|
692
|
+
|
|
687
693
|
def self.autodetect_ruby
|
|
688
694
|
self.alias(ruby_version_keyword, "ruby")
|
|
689
695
|
end
|
data/lib/autoproj/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: autoproj
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.9.7.
|
|
4
|
+
version: 1.9.7.rc3
|
|
5
5
|
prerelease: 6
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2014-05-
|
|
12
|
+
date: 2014-05-21 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: autobuild
|