autoproj 1.2.1 → 1.2.2

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/History.txt CHANGED
@@ -1,3 +1,14 @@
1
+ = Version 1.2.2
2
+ * added support for Gentoo
3
+ * added support for Ubuntu 9.10 [Karmic Koala]
4
+ * add the 'fast-build' mode which is equivalent to
5
+ "build --no-update --no-osdeps"
6
+ * add a quick bootstrap method [still experimental]
7
+ If an autoproj installation is already present, one can simply run autoproj
8
+ bootstrap [options]. It speeds up the bootstrapping as the gems are taken
9
+ from the other installation.
10
+ * minor bugfixes and improvements
11
+
1
12
  = Version 1.2.1
2
13
  * accept two layouts for version control description:
3
14
 
data/bin/autoproj CHANGED
@@ -1,5 +1,10 @@
1
1
  #! /usr/bin/env ruby
2
2
 
3
+ if RUBY_VERSION < "1.8.7"
4
+ STDERR.puts "autoproj requires Ruby >= 1.8.7"
5
+ exit 1
6
+ end
7
+
3
8
  require 'autoproj'
4
9
  require 'autoproj/autobuild'
5
10
  require 'open-uri'
@@ -32,6 +37,7 @@ autoproj mode [options]
32
37
  where 'mode' is one of:
33
38
  build: import, build and install all selected packages
34
39
  force-build: triggers all build commands, i.e. don't be lazy like in "build"
40
+ fast-build: builds without updating and installing OS dependencies
35
41
  rebuild: remove all build products, thus triggering a full rebuild
36
42
  doc: generate and install documentation for packages that have some
37
43
  update: only import/update packages, do not build them
@@ -193,8 +199,11 @@ def do_bootstrap(*args)
193
199
  # Check if we are being called from another GEM_HOME. If it is the case,
194
200
  # assume that we are bootstrapping from another installation directory and
195
201
  # start by copying the .gems directory
196
- if ENV['GEM_HOME'] && ENV['GEM_HOME'] != File.join(Dir.pwd, ".gems")
202
+ if ENV['GEM_HOME'] && ENV['GEM_HOME'] =~ /\.gems\/?$/ && ENV['GEM_HOME'] != File.join(Dir.pwd, ".gems")
203
+ STDERR.puts "autoproj: reusing bootstrap from #{File.dirname(ENV['GEM_HOME'])}"
197
204
  FileUtils.cp_r ENV['GEM_HOME'], ".gems"
205
+ ENV['GEM_HOME'] = File.join(Dir.pwd, ".gems")
206
+ exec $0, *ARGV
198
207
  end
199
208
 
200
209
  # If we are not getting the installation setup from a VCS, copy the template
@@ -290,6 +299,9 @@ begin
290
299
  Autobuild.do_forced_build = true
291
300
  when "rebuild"
292
301
  Autobuild.do_rebuild = true
302
+ when "fast-build"
303
+ Autobuild.do_update = false
304
+ no_os_deps = true
293
305
  when "update"
294
306
  Autobuild.do_build = false
295
307
  when "status"
@@ -325,6 +337,7 @@ begin
325
337
  # Set up some important autobuild parameters
326
338
  Autoproj.env_inherit 'PATH', 'PKG_CONFIG_PATH', 'RUBYLIB'
327
339
  Autoproj.env_set 'GEM_HOME', Autoproj.gem_home
340
+ Autoproj.env_set 'RUBYOPT', "-rubygems"
328
341
  Autobuild.prefix = Autoproj.build_dir
329
342
  Autobuild.srcdir = root_dir
330
343
  Autobuild.logdir = File.join(Autobuild.prefix, 'log')
@@ -511,6 +524,7 @@ begin
511
524
  all_enabled_packages = Set.new
512
525
  STDERR.puts
513
526
  if only_do_status
527
+ STDERR.puts color("autoproj: status of packages in #{name}", :bold)
514
528
  do_status(enabled_packages)
515
529
  elsif !enabled_packages.empty?
516
530
  Autobuild::Reporting.report do
@@ -581,7 +595,9 @@ begin
581
595
  begin
582
596
  Autobuild.do_update = false
583
597
  Autobuild::Reporting.report do
584
- prepare_targets = (packages - enabled_packages).map { |pkg_name| "#{pkg_name}-prepare" }
598
+ prepare_targets = (packages - enabled_packages).
599
+ find_all { |pkg_name| File.directory?(Autobuild::Package[pkg_name].srcdir) }.
600
+ map { |pkg_name| "#{pkg_name}-prepare" }
585
601
  task "autoproj-#{name}-prepare" => prepare_targets
586
602
  Rake::Task["autoproj-#{name}-prepare"].invoke
587
603
  end
@@ -589,9 +605,13 @@ begin
589
605
  Autobuild.do_update = old_update_flag
590
606
  end
591
607
 
592
- if mode == "build"
593
- all_env_sh << name
594
- Autoproj.export_env_sh(name)
608
+ if (mode == "build" || mode == "fast-build")
609
+ if packages.all? { |pkg_name| File.directory?(Autobuild::Package[pkg_name].srcdir) }
610
+ all_env_sh << name
611
+ Autoproj.export_env_sh(name)
612
+ else
613
+ STDERR.puts color("WARN: #{name} has not been completely built, #{name}env.sh is not updated", :magenta)
614
+ end
595
615
  end
596
616
  end
597
617
 
@@ -1,5 +1,10 @@
1
1
  #! /usr/bin/ruby
2
2
 
3
+ if RUBY_VERSION < "1.8.7"
4
+ STDERR.puts "autoproj requires Ruby >= 1.8.7"
5
+ exit 1
6
+ end
7
+
3
8
  ENV['GEM_HOME'] = "#{Dir.pwd}/.gems"
4
9
  ENV['PATH'] = "#{ENV['GEM_HOME']}/bin:#{ENV['PATH']}"
5
10
  if $LOADED_FEATURES.find { |str| str =~ /bygems/ }
@@ -29,9 +34,10 @@ module Autobuild
29
34
  end
30
35
  module Subprocess
31
36
  def self.run(name, phase, *cmd)
32
- `#{cmd.join(" ")}`
37
+ output = `#{cmd.join(" ")}`
33
38
  if $?.exitstatus != 0
34
39
  STDERR.puts "ERROR: failed to run #{cmd.join(" ")}"
40
+ STDERR.puts "ERROR: command output is: #{output}"
35
41
  exit 1
36
42
  end
37
43
  end
@@ -82,6 +88,11 @@ module Autoproj
82
88
  if File.exists?('/etc/debian_version')
83
89
  codename = File.read('/etc/debian_version').chomp
84
90
  ['debian', [codename]]
91
+ elsif File.exists?('/etc/gentoo-release')
92
+ release_string = File.read('/etc/gentoo-release').chomp
93
+ release_string =~ /^.*([^\s]+)$/
94
+ version = $1
95
+ ['gentoo', [version]]
85
96
  else
86
97
  raise ConfigError, "Unknown operating system"
87
98
  end
@@ -115,7 +126,8 @@ module Autoproj
115
126
 
116
127
  OS_PACKAGE_INSTALL = {
117
128
  'debian' => 'apt-get install -y %s',
118
- 'ubuntu' => 'apt-get install -y %s'
129
+ 'ubuntu' => 'apt-get install -y %s',
130
+ 'gentoo' => 'emerge --noreplace %s'
119
131
  }
120
132
 
121
133
  def generate_os_script(dependencies)
@@ -144,6 +156,9 @@ module Autoproj
144
156
  end
145
157
 
146
158
  data = os_entry.last
159
+ # This package does not need to be installed on this operating system (example: build tools on Gentoo)
160
+ next if !data
161
+
147
162
  if data.kind_of?(Hash)
148
163
  version_entry = data.find do |version_list, data|
149
164
  version_list.to_s.split(',').
@@ -265,21 +280,22 @@ DEFS = <<EODEFS
265
280
  # The following definitions are needed to bootstrap autoproj
266
281
  ruby:
267
282
  debian,ubuntu:
268
- 9.04,squeeze/sid:
269
- - ruby1.8-dev
270
- - ruby1.8
271
- - libopenssl-ruby1.8
283
+ - ruby1.8-dev
284
+ - ruby1.8
285
+ - libopenssl-ruby1.8
286
+ gentoo:
287
+ - dev-lang/ruby:1.8
272
288
 
273
289
  build-essential:
274
- debian,ubuntu:
275
- 9.04,squeeze/sid: build-essential
290
+ debian,ubuntu: build-essential
291
+ gentoo:
276
292
 
277
293
  libxml2:
278
- debian,ubuntu:
279
- 9.04,squeeze/sid: libxml2-dev
294
+ debian,ubuntu: libxml2-dev
295
+ gentoo: dev-libs/libxml2
280
296
  libxslt:
281
- debian,ubuntu:
282
- 9.04,squeeze/sid: libxslt1-dev
297
+ debian,ubuntu: libxslt1-dev
298
+ gentoo: dev-libs/libxslt
283
299
 
284
300
  autobuild: gem
285
301
  autoproj: gem
@@ -287,19 +303,25 @@ autoproj: gem
287
303
  # The following definitions are for the VCS and build systems
288
304
  git:
289
305
  debian,ubuntu: git-core
306
+ gentoo: dev-util/git
290
307
 
291
308
  svn:
292
309
  debian,ubuntu: svn
310
+ gentoo: dev-util/subversion
293
311
 
294
312
  cmake:
295
313
  debian,ubuntu: cmake
314
+ gentoo: dev-util/cmake
296
315
 
297
316
  autotools:
298
317
  debian,ubuntu: [automake1.9, autoconf]
318
+ gentoo: [sys-devel/automake:1.9, sys-devel/autoconf]
299
319
 
300
320
  lsb_release:
301
321
  debian,ubuntu: lsb-release
322
+ gentoo: sys-apps/lsb-release
302
323
 
324
+ # vim: expandtab
303
325
 
304
326
 
305
327
  EODEFS
@@ -1,21 +1,22 @@
1
1
  # The following definitions are needed to bootstrap autoproj
2
2
  ruby:
3
3
  debian,ubuntu:
4
- 9.04,squeeze/sid:
5
- - ruby1.8-dev
6
- - ruby1.8
7
- - libopenssl-ruby1.8
4
+ - ruby1.8-dev
5
+ - ruby1.8
6
+ - libopenssl-ruby1.8
7
+ gentoo:
8
+ - dev-lang/ruby:1.8
8
9
 
9
10
  build-essential:
10
- debian,ubuntu:
11
- 9.04,squeeze/sid: build-essential
11
+ debian,ubuntu: build-essential
12
+ gentoo:
12
13
 
13
14
  libxml2:
14
- debian,ubuntu:
15
- 9.04,squeeze/sid: libxml2-dev
15
+ debian,ubuntu: libxml2-dev
16
+ gentoo: dev-libs/libxml2
16
17
  libxslt:
17
- debian,ubuntu:
18
- 9.04,squeeze/sid: libxslt1-dev
18
+ debian,ubuntu: libxslt1-dev
19
+ gentoo: dev-libs/libxslt
19
20
 
20
21
  autobuild: gem
21
22
  autoproj: gem
@@ -23,17 +24,23 @@ autoproj: gem
23
24
  # The following definitions are for the VCS and build systems
24
25
  git:
25
26
  debian,ubuntu: git-core
27
+ gentoo: dev-util/git
26
28
 
27
29
  svn:
28
30
  debian,ubuntu: svn
31
+ gentoo: dev-util/subversion
29
32
 
30
33
  cmake:
31
34
  debian,ubuntu: cmake
35
+ gentoo: dev-util/cmake
32
36
 
33
37
  autotools:
34
38
  debian,ubuntu: [automake1.9, autoconf]
39
+ gentoo: [sys-devel/automake:1.9, sys-devel/autoconf]
35
40
 
36
41
  lsb_release:
37
42
  debian,ubuntu: lsb-release
43
+ gentoo: sys-apps/lsb-release
38
44
 
45
+ # vim: expandtab
39
46
 
@@ -313,12 +313,28 @@ module Autoproj
313
313
  # type: git
314
314
  # url: blah
315
315
  #
316
+ # or as
317
+ # - package_name
318
+ # type: git
319
+ # url: blah
320
+ #
316
321
  # In that case, we should have the package name as
317
322
  # "name => nil". Check that.
318
323
  name, _ = spec.find { |n, v| v.nil? }
319
- spec.delete(name)
324
+ if name
325
+ spec.delete(name)
326
+ else
327
+ name, _ = spec.find { |n, v| n =~ / \w+$/ }
328
+ name =~ / (\w+)$/
329
+ spec[$1] = spec.delete(name)
330
+ name = name.gsub(/ \w+$/, '')
331
+ end
320
332
  else
321
333
  name, spec = spec.to_a.first
334
+ if name =~ / (\w+)/
335
+ spec = { $1 => spec }
336
+ name = name.gsub(/ \w+$/, '')
337
+ end
322
338
  end
323
339
 
324
340
  if Regexp.new(name) =~ package_name
@@ -42,6 +42,11 @@ module Autoproj
42
42
  if File.exists?('/etc/debian_version')
43
43
  codename = File.read('/etc/debian_version').chomp
44
44
  ['debian', [codename]]
45
+ elsif File.exists?('/etc/gentoo-release')
46
+ release_string = File.read('/etc/gentoo-release').chomp
47
+ release_string =~ /^.*([^\s]+)$/
48
+ version = $1
49
+ ['gentoo', [version]]
45
50
  else
46
51
  raise ConfigError, "Unknown operating system"
47
52
  end
@@ -75,7 +80,8 @@ module Autoproj
75
80
 
76
81
  OS_PACKAGE_INSTALL = {
77
82
  'debian' => 'apt-get install -y %s',
78
- 'ubuntu' => 'apt-get install -y %s'
83
+ 'ubuntu' => 'apt-get install -y %s',
84
+ 'gentoo' => 'emerge --noreplace %s'
79
85
  }
80
86
 
81
87
  def generate_os_script(dependencies)
@@ -104,6 +110,9 @@ module Autoproj
104
110
  end
105
111
 
106
112
  data = os_entry.last
113
+ # This package does not need to be installed on this operating system (example: build tools on Gentoo)
114
+ next if !data
115
+
107
116
  if data.kind_of?(Hash)
108
117
  version_entry = data.find do |version_list, data|
109
118
  version_list.to_s.split(',').
@@ -1,3 +1,3 @@
1
1
  module Autoproj
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.2"
3
3
  end
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.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sylvain Joyeux
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-26 00:00:00 +01:00
12
+ date: 2009-11-09 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency