autoproj 1.5.1 → 1.5.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +3 -0
- data/bin/autoproj +4 -0
- data/doc/guide/src/quick_start.page +18 -0
- data/lib/autoproj/autobuild.rb +33 -0
- data/lib/autoproj/cmdline.rb +50 -0
- data/lib/autoproj/manifest.rb +9 -5
- data/lib/autoproj/version.rb +1 -1
- metadata +3 -3
data/History.txt
CHANGED
data/bin/autoproj
CHANGED
@@ -110,6 +110,10 @@ report(Autobuild.debug) do
|
|
110
110
|
all_enabled_packages = Autoproj::CmdLine.import_packages(selected_packages)
|
111
111
|
Autoproj::CmdLine.manifest_update(all_enabled_packages)
|
112
112
|
exit(0)
|
113
|
+
elsif Autoproj::CmdLine.snapshot?
|
114
|
+
all_enabled_packages = Autoproj::CmdLine.import_packages(selected_packages)
|
115
|
+
Autoproj::CmdLine.snapshot(Autoproj::CmdLine.snapshot_dir, all_enabled_packages)
|
116
|
+
exit(0)
|
113
117
|
end
|
114
118
|
|
115
119
|
STDERR.puts
|
@@ -44,6 +44,24 @@ Additional options can be given for the version control system. For instance,
|
|
44
44
|
ruby autoproj\_bootstrap git git://github.com/doudou/rubim.all.git branch=stable
|
45
45
|
{: .cmdline}
|
46
46
|
|
47
|
+
Switching configuration after bootstrapping
|
48
|
+
-------------------------------------------
|
49
|
+
Let's assume that you want to switch what configuration autoproj is tracking,
|
50
|
+
but without having to redo a complete bootstrap -- i.e. avoiding to rebuild
|
51
|
+
stuff that is common between the configurations.
|
52
|
+
|
53
|
+
autoproj provides the switch-config command for that. This command takes the
|
54
|
+
same arguments than the bootstrap script, that is:
|
55
|
+
|
56
|
+
autoproj switch-config \[vcs_type] \[vcs_url] \[vcs_options]
|
57
|
+
{: .cmdline}
|
58
|
+
|
59
|
+
As a shortcut, one can omit vcs_type and vcs_url if they don't change.
|
60
|
+
This is especially useful when switching between branches:
|
61
|
+
|
62
|
+
autoproj switch-config branch=experimental
|
63
|
+
{: .cmdline}
|
64
|
+
|
47
65
|
Management
|
48
66
|
----------
|
49
67
|
|
data/lib/autoproj/autobuild.rb
CHANGED
@@ -324,3 +324,36 @@ def user_config(key)
|
|
324
324
|
Autoproj.user_config(key)
|
325
325
|
end
|
326
326
|
|
327
|
+
class Autobuild::Git
|
328
|
+
def snapshot(package, target_dir)
|
329
|
+
Dir.chdir(package.srcdir) do
|
330
|
+
head_commit = `git rev-parse #{branch}`.chomp
|
331
|
+
{
|
332
|
+
'type' => 'git',
|
333
|
+
'url' => repository,
|
334
|
+
'commit' => head_commit,
|
335
|
+
'patches' => patches
|
336
|
+
}
|
337
|
+
end
|
338
|
+
end
|
339
|
+
end
|
340
|
+
|
341
|
+
class Autobuild::ArchiveImporter
|
342
|
+
def snapshot(package, target_dir)
|
343
|
+
archive_dir = File.join(target_dir, 'archives')
|
344
|
+
FileUtils.mkdir_p archive_dir
|
345
|
+
FileUtils.cp @cachefile, archive_dir
|
346
|
+
|
347
|
+
{
|
348
|
+
'type' => 'archive',
|
349
|
+
'url' => File.join('$AUTOPROJ_SOURCE_DIR', File.basename(@cachefile)),
|
350
|
+
'mode' => @mode,
|
351
|
+
'update_cached_file' => false,
|
352
|
+
'patches' => patches,
|
353
|
+
'no_subdirectory' => @options[:no_subdirectory],
|
354
|
+
'archive_dir' => archive_dir
|
355
|
+
|
356
|
+
}
|
357
|
+
end
|
358
|
+
end
|
359
|
+
|
data/lib/autoproj/cmdline.rb
CHANGED
@@ -358,6 +358,7 @@ module Autoproj
|
|
358
358
|
def self.update_os_dependencies?; !!@update_os_dependencies end
|
359
359
|
class << self
|
360
360
|
attr_accessor :update_os_dependencies
|
361
|
+
attr_accessor :snapshot_dir
|
361
362
|
end
|
362
363
|
def self.display_configuration?; !!@display_configuration end
|
363
364
|
def self.force_re_build_with_depends?; !!@force_re_build_with_depends end
|
@@ -366,6 +367,7 @@ module Autoproj
|
|
366
367
|
def self.update_packages?; @mode == "update" || @mode == "envsh" || build? end
|
367
368
|
def self.build?; @mode =~ /build/ end
|
368
369
|
def self.doc?; @mode == "doc" end
|
370
|
+
def self.snapshot?; @mode == "snapshot" end
|
369
371
|
def self.parse_arguments(args)
|
370
372
|
@only_status = false
|
371
373
|
@check = false
|
@@ -530,6 +532,11 @@ where 'mode' is one of:
|
|
530
532
|
when "fast-build"
|
531
533
|
Autobuild.do_update = false
|
532
534
|
@update_os_dependencies = false
|
535
|
+
when "snapshot"
|
536
|
+
@snapshot_dir = remaining_args.shift
|
537
|
+
Autobuild.do_update = false
|
538
|
+
Autobuild.do_build = false
|
539
|
+
@update_os_dependencies = false
|
533
540
|
when "full-build"
|
534
541
|
Autobuild.do_update = true
|
535
542
|
@update_os_dependencies = true
|
@@ -910,6 +917,49 @@ EOTEXT
|
|
910
917
|
end
|
911
918
|
end
|
912
919
|
|
920
|
+
def self.snapshot(target_dir, packages)
|
921
|
+
# First, copy the configuration directory to create target_dir
|
922
|
+
if File.exists?(target_dir)
|
923
|
+
raise ArgumentError, "#{target_dir} already exists"
|
924
|
+
end
|
925
|
+
FileUtils.cp_r Autoproj.config_dir, target_dir
|
926
|
+
|
927
|
+
# Now, create snapshot information for each of the packages
|
928
|
+
version_control = []
|
929
|
+
packages.each do |package_name|
|
930
|
+
package = Autobuild::Package[package_name]
|
931
|
+
importer = package.importer
|
932
|
+
if !importer
|
933
|
+
STDERR.puts "cannot snapshot #{package_name} as it has no importer"
|
934
|
+
next
|
935
|
+
elsif !importer.respond_to?(:snapshot)
|
936
|
+
STDERR.puts "cannot snapshot #{package_name} as the #{importer.class} importer does not support it"
|
937
|
+
next
|
938
|
+
end
|
939
|
+
|
940
|
+
vcs_info = importer.snapshot(package, target_dir)
|
941
|
+
if vcs_info
|
942
|
+
version_control << Hash[package_name, vcs_info]
|
943
|
+
end
|
944
|
+
end
|
945
|
+
|
946
|
+
overrides_path = File.join(target_dir, 'overrides.yml')
|
947
|
+
overrides =
|
948
|
+
if File.exists?(overrides_path)
|
949
|
+
YAML.load(File.read(overrides_path))
|
950
|
+
else Hash.new
|
951
|
+
end
|
952
|
+
|
953
|
+
if overrides['version_control']
|
954
|
+
overrides['version_control'].concat(version_control)
|
955
|
+
else
|
956
|
+
overrides['version_control'] = version_control
|
957
|
+
end
|
958
|
+
|
959
|
+
File.open(overrides_path, 'w') do |io|
|
960
|
+
io.write YAML.dump(overrides)
|
961
|
+
end
|
962
|
+
end
|
913
963
|
end
|
914
964
|
end
|
915
965
|
|
data/lib/autoproj/manifest.rb
CHANGED
@@ -555,8 +555,8 @@ module Autoproj
|
|
555
555
|
#
|
556
556
|
# This is useful if the packages are already installed on this system.
|
557
557
|
def ignored?(package_name)
|
558
|
-
if data['
|
559
|
-
data['
|
558
|
+
if data['ignore_packages']
|
559
|
+
data['ignore_packages'].any? { |l| Regexp.new(l) =~ package_name }
|
560
560
|
else
|
561
561
|
false
|
562
562
|
end
|
@@ -567,8 +567,8 @@ module Autoproj
|
|
567
567
|
# This is useful to avoid building packages that are of no use for the
|
568
568
|
# user.
|
569
569
|
def excluded?(package_name)
|
570
|
-
if data['
|
571
|
-
data['
|
570
|
+
if data['exclude_packages']
|
571
|
+
data['exclude_packages'].any? { |l| Regexp.new(l) =~ package_name }
|
572
572
|
else
|
573
573
|
false
|
574
574
|
end
|
@@ -944,7 +944,7 @@ module Autoproj
|
|
944
944
|
packages.values.
|
945
945
|
map { |pkg| pkg.autobuild.name }
|
946
946
|
end
|
947
|
-
names
|
947
|
+
names.delete_if { |pkg_name| excluded?(pkg_name) || ignored?(pkg_name) }
|
948
948
|
names.to_set
|
949
949
|
end
|
950
950
|
|
@@ -1067,6 +1067,10 @@ module Autoproj
|
|
1067
1067
|
end
|
1068
1068
|
end
|
1069
1069
|
end
|
1070
|
+
|
1071
|
+
# Finally, remove packages that are explicitely excluded and/or
|
1072
|
+
# ignored
|
1073
|
+
expanded_packages.delete_if { |pkg_name| excluded?(pkg_name) || ignored?(pkg_name) }
|
1070
1074
|
expanded_packages.to_set
|
1071
1075
|
end
|
1072
1076
|
end
|
data/lib/autoproj/version.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 5
|
8
|
-
-
|
9
|
-
version: 1.5.
|
8
|
+
- 2
|
9
|
+
version: 1.5.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Sylvain Joyeux
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-05-
|
17
|
+
date: 2010-05-28 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|