autobuild 0.6.5 → 0.6.6
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/Changes.txt +11 -0
- data/Manifest.txt +0 -1
- data/TODO +5 -0
- data/lib/autobuild.rb +1 -1
- data/lib/autobuild/import/cvs.rb +5 -0
- data/lib/autobuild/importer.rb +6 -2
- data/lib/autobuild/package.rb +32 -5
- data/lib/autobuild/packages/autotools.rb +3 -1
- data/lib/autobuild/packages/genom.rb +5 -1
- data/lib/autobuild/packages/pkgconfig.rb +10 -5
- metadata +3 -4
- data/lib/autobuild/packages/ruby.rb +0 -53
data/Changes.txt
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
== Version 0.6.6
|
2
|
+
|
3
|
+
* add Package#post_install: executes either a block or an external
|
4
|
+
command after the package has been installed
|
5
|
+
* allow to reference pkg-config packages not built by autobuild.
|
6
|
+
The .pc file is then used as installation stamp file
|
7
|
+
* the configure.ac.user file generated by Genom may not be present
|
8
|
+
in the RCS. Do not expect it to be there after import.
|
9
|
+
* removed the Ruby package. If there are extensions to build, better
|
10
|
+
have a post_install script to do that
|
11
|
+
|
1
12
|
== Version 0.6.5
|
2
13
|
|
3
14
|
* add Autobuild.default_packages
|
data/Manifest.txt
CHANGED
@@ -18,7 +18,6 @@ lib/autobuild/packages/autotools.rb
|
|
18
18
|
lib/autobuild/packages/genom.rb
|
19
19
|
lib/autobuild/packages/import.rb
|
20
20
|
lib/autobuild/packages/pkgconfig.rb
|
21
|
-
lib/autobuild/packages/ruby.rb
|
22
21
|
lib/autobuild/pkgconfig.rb
|
23
22
|
lib/autobuild/reporting.rb
|
24
23
|
lib/autobuild/subcommand.rb
|
data/TODO
CHANGED
@@ -2,4 +2,9 @@ TODO list for Autobuild
|
|
2
2
|
* create HTML log pages
|
3
3
|
* use Logger to be able to remove all non-error output
|
4
4
|
* test patch support (which has not been used for long) and document it in the README
|
5
|
+
* add a disable_packages attribute to Autobuild to disable the build of specific
|
6
|
+
packages. This would allow to use autobuild in scripts where the list of packages
|
7
|
+
is asked to the user
|
8
|
+
* add an --interactive option, which could ask to disable/enable packages before doing
|
9
|
+
the build
|
5
10
|
|
data/lib/autobuild.rb
CHANGED
data/lib/autobuild/import/cvs.rb
CHANGED
@@ -23,6 +23,11 @@ module Autobuild
|
|
23
23
|
@options_co = Array[*@options_co]
|
24
24
|
super(options)
|
25
25
|
end
|
26
|
+
|
27
|
+
# Array of options to give to 'cvs checkout'
|
28
|
+
attr_reader :options_co
|
29
|
+
# Array of options to give to 'cvs update'
|
30
|
+
attr_reader :options_up
|
26
31
|
|
27
32
|
# Returns the module to get
|
28
33
|
def modulename; @module end
|
data/lib/autobuild/importer.rb
CHANGED
@@ -11,6 +11,10 @@ class Autobuild::Importer
|
|
11
11
|
# More options are specific to each importer type.
|
12
12
|
def initialize(options); @options = options end
|
13
13
|
|
14
|
+
def patches
|
15
|
+
@options[:patches] ||= []
|
16
|
+
end
|
17
|
+
|
14
18
|
# Performs the import of +package+
|
15
19
|
def import(package)
|
16
20
|
srcdir = package.srcdir
|
@@ -71,10 +75,10 @@ class Autobuild::Importer
|
|
71
75
|
unapply(package, p)
|
72
76
|
end
|
73
77
|
|
74
|
-
|
78
|
+
patches.to_a.each do |p|
|
75
79
|
apply(package, p)
|
76
80
|
cur_patches << p
|
77
|
-
|
81
|
+
end
|
78
82
|
ensure
|
79
83
|
File.open(patchlist(package), 'w+') do |f|
|
80
84
|
f.write(cur_patches.join("\n"))
|
data/lib/autobuild/package.rb
CHANGED
@@ -25,8 +25,13 @@ class Autobuild::Package
|
|
25
25
|
# it is relative to Autobuild.prefix. Defaults to ''
|
26
26
|
attr_writer :prefix
|
27
27
|
|
28
|
-
#
|
29
|
-
|
28
|
+
# Sets importer object for this package. Defined for backwards compatibility.
|
29
|
+
# Use the #importer attribute instead
|
30
|
+
def import=(value)
|
31
|
+
@importer = value
|
32
|
+
end
|
33
|
+
# Sets an importer object for this package
|
34
|
+
attr_accessor :importer
|
30
35
|
|
31
36
|
# The list of packages this one depends upon
|
32
37
|
attr_reader :dependencies
|
@@ -61,7 +66,19 @@ class Autobuild::Package
|
|
61
66
|
yield(self) if block_given?
|
62
67
|
|
63
68
|
# Declare the installation stampfile
|
64
|
-
file installstamp
|
69
|
+
file installstamp do
|
70
|
+
Dir.chdir(srcdir) do
|
71
|
+
case @post_install
|
72
|
+
when Array
|
73
|
+
args = @post_install.dup
|
74
|
+
tool = Autobuild.tool(args.shift)
|
75
|
+
|
76
|
+
Autobuild::Subprocess.run name, 'post-install', tool, *args
|
77
|
+
when Proc
|
78
|
+
@post_install.call
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
65
82
|
task "#{name}-build" => installstamp
|
66
83
|
task :build => "#{name}-build"
|
67
84
|
|
@@ -84,9 +101,19 @@ class Autobuild::Package
|
|
84
101
|
task :default => name
|
85
102
|
end
|
86
103
|
|
87
|
-
def import; @
|
104
|
+
def import; @importer.import(self) if @importer end
|
88
105
|
def prepare; end
|
89
106
|
|
107
|
+
def post_install(*args, &block)
|
108
|
+
if args.empty?
|
109
|
+
@post_install = block
|
110
|
+
elsif !block
|
111
|
+
@post_install = args
|
112
|
+
else
|
113
|
+
raise ArgumentError, "cannot set both arguments and block"
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
90
117
|
# This package depends on +packages+
|
91
118
|
def depends_on(*packages)
|
92
119
|
packages.each do |p|
|
@@ -96,7 +123,7 @@ class Autobuild::Package
|
|
96
123
|
raise ConfigException.new(name), "package #{p} not defined"
|
97
124
|
end
|
98
125
|
file installstamp => Package[p].installstamp
|
99
|
-
task "#{name}-import"
|
126
|
+
task "#{name}-import" => "#{p}-import"
|
100
127
|
task "#{name}-prepare" => "#{p}-prepare"
|
101
128
|
@dependencies << p
|
102
129
|
end
|
@@ -90,6 +90,8 @@ module Autobuild
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def prepare
|
93
|
+
configureflags.flatten!
|
94
|
+
|
93
95
|
# Check if config.status has been generated with the
|
94
96
|
# same options than the ones in configureflags
|
95
97
|
config_status = "#{builddir}/config.status"
|
@@ -102,7 +104,7 @@ module Autobuild
|
|
102
104
|
|
103
105
|
# Add the --prefix option to the configureflags array
|
104
106
|
testflags = ["--prefix=#{prefix}"] + Array[*configureflags]
|
105
|
-
old_opt = options.find
|
107
|
+
old_opt = options.find { |o| !testflags.include?(o) }
|
106
108
|
new_opt = testflags.find { |o| !options.include?(o) }
|
107
109
|
if old_opt || new_opt
|
108
110
|
File.rm_f config_status # to force reconfiguration
|
@@ -25,6 +25,8 @@ module Autobuild
|
|
25
25
|
# Called before running the rake tasks and
|
26
26
|
# after all imports have been made
|
27
27
|
def prepare
|
28
|
+
genomflags.flatten!
|
29
|
+
|
28
30
|
super
|
29
31
|
get_requires
|
30
32
|
end
|
@@ -59,7 +61,9 @@ module Autobuild
|
|
59
61
|
# Alias this package to the ones defined in the EXTRA_PKGCONFIG
|
60
62
|
# flag in configure.ac.user
|
61
63
|
def get_provides
|
62
|
-
|
64
|
+
configure_ac_user = File.join(srcdir, 'configure.ac.user')
|
65
|
+
return unless File.readable?(configure_ac_user)
|
66
|
+
File.open(configure_ac_user) do |f|
|
63
67
|
f.each_line { |line|
|
64
68
|
if line =~ /^\s*EXTRA_PKGCONFIG\s*=\s*"?([\w\-]+(?:\s+[\w\-]+)*)"?/
|
65
69
|
$1.split(/\s+/).each { |pkg| provides pkg }
|
@@ -2,19 +2,24 @@ require 'autobuild/pkgconfig'
|
|
2
2
|
|
3
3
|
module Autobuild
|
4
4
|
class InstalledPkgConfig < Package
|
5
|
+
attr_reader :pkgconfig
|
6
|
+
attr_reader :prefix
|
7
|
+
|
5
8
|
def initialize(name)
|
6
9
|
@pkgconfig = PkgConfig.new(name)
|
7
|
-
@prefix
|
10
|
+
@prefix = @pkgconfig.prefix
|
8
11
|
super
|
9
12
|
end
|
10
13
|
|
11
14
|
def installstamp
|
12
15
|
std_stamp = super
|
13
|
-
if File.file?(std_stamp)
|
14
|
-
|
15
|
-
|
16
|
-
|
16
|
+
return std_stamp if File.file?(std_stamp)
|
17
|
+
|
18
|
+
pcfile = File.join(pkgconfig.prefix, "lib", "pkgconfig", "opencv.pc")
|
19
|
+
if !File.file?(pcfile)
|
20
|
+
raise "cannot find the .pc file for #{name}, tried #{pcfile}"
|
17
21
|
end
|
22
|
+
pcfile
|
18
23
|
end
|
19
24
|
end
|
20
25
|
def installed_pkgconfig(name, &block)
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: autobuild
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.6.
|
7
|
-
date: 2007-
|
6
|
+
version: 0.6.6
|
7
|
+
date: 2007-04-24 00:00:00 +02:00
|
8
8
|
summary: Rake-based utility to build and install multiple packages with dependencies
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -49,7 +49,6 @@ files:
|
|
49
49
|
- lib/autobuild/packages/genom.rb
|
50
50
|
- lib/autobuild/packages/import.rb
|
51
51
|
- lib/autobuild/packages/pkgconfig.rb
|
52
|
-
- lib/autobuild/packages/ruby.rb
|
53
52
|
- lib/autobuild/pkgconfig.rb
|
54
53
|
- lib/autobuild/reporting.rb
|
55
54
|
- lib/autobuild/subcommand.rb
|
@@ -113,5 +112,5 @@ dependencies:
|
|
113
112
|
requirements:
|
114
113
|
- - ">="
|
115
114
|
- !ruby/object:Gem::Version
|
116
|
-
version: 1.
|
115
|
+
version: 1.2.0
|
117
116
|
version:
|
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'autobuild/timestamps'
|
2
|
-
require 'autobuild/package'
|
3
|
-
require 'enumerator'
|
4
|
-
|
5
|
-
module Autobuild
|
6
|
-
def self.ruby(spec, &proc)
|
7
|
-
RubyPackage.new(spec, &proc)
|
8
|
-
end
|
9
|
-
|
10
|
-
class RubyPackage < Package
|
11
|
-
# The list of all extension directories
|
12
|
-
attr_reader :extdir
|
13
|
-
|
14
|
-
def installstamp
|
15
|
-
"#{srcdir}/#{STAMPFILE}"
|
16
|
-
end
|
17
|
-
def initialize(target)
|
18
|
-
super
|
19
|
-
source_tree srcdir, [/Makefile$/, /\.(?:so|o)$/]
|
20
|
-
file installstamp => srcdir do
|
21
|
-
touch_stamp installstamp
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def prepare
|
26
|
-
@extdir = Find.enum_for(:find, srcdir).
|
27
|
-
grep(/extconf.rb$/).
|
28
|
-
map { |f| File.dirname(f) }
|
29
|
-
|
30
|
-
extdir.each do |dir|
|
31
|
-
file "#{dir}/Makefile" => "#{dir}/extconf.rb" do
|
32
|
-
Dir.chdir(dir) do
|
33
|
-
Subprocess.run(name, 'ext', Autobuild.tool('ruby'), 'extconf.rb')
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def extstamp(dir); "#{dir}/ext-#{STAMPFILE}" end
|
40
|
-
def build
|
41
|
-
extdir.each do |dir|
|
42
|
-
source_tree dir, [/Makefile$/, /\.(?:so|o)$/]
|
43
|
-
file extstamp(dir) => dir do
|
44
|
-
Dir.chdir(dir) do
|
45
|
-
Subprocess.run(name, 'ext', Autobuild.tool('make'))
|
46
|
-
touch_stamp extstamp(dir)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|