autobuild 0.6.5 → 0.6.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|