packo 0.0.1.alpha.1 → 0.0.1.alpha.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/bin/packo +13 -2
- data/lib/packo.rb +16 -52
- data/lib/packo/cli.rb +9 -3
- data/lib/packo/cli/base.rb +65 -66
- data/lib/packo/cli/build.rb +124 -128
- data/lib/packo/cli/files.rb +7 -7
- data/lib/packo/cli/repository.rb +40 -26
- data/lib/packo/do.rb +106 -73
- data/lib/packo/environment.rb +2 -2
- data/lib/packo/extensions.rb +20 -6
- data/lib/packo/host.rb +10 -0
- data/lib/packo/models.rb +8 -2
- data/lib/packo/models/repository.rb +17 -14
- data/lib/packo/package.rb +9 -3
- data/lib/packo/profile.rb +2 -2
- data/lib/packo/rbuild.rb +0 -2
- data/lib/packo/rbuild/behaviors/default.rb +3 -2
- data/lib/packo/rbuild/{modules/misc/fetching.rb → behaviors/python.rb} +8 -3
- data/lib/packo/rbuild/modules.rb +2 -3
- data/lib/packo/rbuild/modules/building.rb +5 -2
- data/lib/packo/rbuild/modules/building/autotools.rb +11 -11
- data/lib/packo/rbuild/modules/building/rake.rb +71 -7
- data/lib/packo/rbuild/modules/building/scons.rb +128 -0
- data/lib/packo/rbuild/modules/{misc/fetcher.rb → fetcher.rb} +5 -5
- data/lib/packo/rbuild/modules/fetching.rb +29 -0
- data/lib/packo/rbuild/modules/{misc/fetching → fetching}/git.rb +15 -9
- data/lib/packo/rbuild/modules/{misc/fetching → fetching}/github.rb +1 -1
- data/lib/packo/rbuild/modules/{misc/fetching → fetching}/gnu.rb +1 -1
- data/lib/packo/rbuild/modules/{misc/fetching → fetching}/mercurial.rb +11 -7
- data/lib/packo/rbuild/modules/{misc/fetching → fetching}/sourceforge.rb +1 -1
- data/lib/packo/rbuild/modules/{misc/fetching → fetching}/subversion.rb +23 -5
- data/lib/packo/rbuild/modules/misc.rb +0 -8
- data/lib/packo/rbuild/modules/packager.rb +63 -0
- data/lib/packo/rbuild/modules/packaging.rb +2 -0
- data/lib/packo/rbuild/modules/packaging/pko.rb +24 -44
- data/lib/packo/rbuild/modules/{misc/unpacker.rb → unpacker.rb} +2 -2
- data/lib/packo/rbuild/modules/{misc/unpacking.rb → unpacking.rb} +6 -4
- data/lib/packo/rbuild/modules/{misc/unpacking → unpacking}/lzma.rb +1 -1
- data/lib/packo/rbuild/modules/{misc/unpacking → unpacking}/tar.rb +1 -1
- data/lib/packo/rbuild/modules/{misc/unpacking → unpacking}/xz.rb +1 -1
- data/lib/packo/rbuild/modules/{misc/unpacking → unpacking}/zip.rb +1 -1
- data/lib/packo/rbuild/package.rb +17 -8
- data/lib/packo/repository.rb +1 -1
- data/lib/packo/repository/virtual.rb +16 -0
- data/lib/packo/utils.rb +106 -0
- data/lib/packo/version.rb +1 -1
- metadata +39 -25
- data/lib/packo/rbuild/modules/misc/fetching/wget.rb +0 -57
data/lib/packo/environment.rb
CHANGED
@@ -238,7 +238,7 @@ class Environment < Hash
|
|
238
238
|
if key.to_s.end_with?('FLAGS')
|
239
239
|
self[key] = Flags.parse(value.to_s)
|
240
240
|
elsif key.to_s.end_with?('PATH')
|
241
|
-
self[key] =
|
241
|
+
self[key] = Path.new(value.to_s)
|
242
242
|
end
|
243
243
|
}
|
244
244
|
end
|
@@ -253,7 +253,7 @@ class Environment < Hash
|
|
253
253
|
if name.to_s.end_with?('FLAGS')
|
254
254
|
value = Flags.parse(value.to_s)
|
255
255
|
elsif name.to_s.end_with?('PATH')
|
256
|
-
value =
|
256
|
+
value = Path.new(value.to_s)
|
257
257
|
end
|
258
258
|
|
259
259
|
super(name.to_sym, value)
|
data/lib/packo/extensions.rb
CHANGED
@@ -18,11 +18,31 @@
|
|
18
18
|
#++
|
19
19
|
|
20
20
|
require 'ostruct'
|
21
|
+
require 'memoized'
|
22
|
+
require 'pathname'
|
23
|
+
|
24
|
+
Path = Pathname
|
25
|
+
|
26
|
+
class Pathname
|
27
|
+
def self.clean (path)
|
28
|
+
Pathname.new(path).cleanpath.to_s
|
29
|
+
end
|
30
|
+
end
|
21
31
|
|
22
32
|
class Object
|
23
33
|
def numeric?
|
24
34
|
true if Float(self) rescue false
|
25
35
|
end
|
36
|
+
|
37
|
+
def refine_method (meth, &block)
|
38
|
+
return unless block_given?
|
39
|
+
|
40
|
+
old = self.instance_method(meth) rescue Proc.new {}
|
41
|
+
|
42
|
+
define_method(meth) {|*args|
|
43
|
+
self.instance_exec((old.is_a?(Proc) ? old : old.bind(self)), *args, &block)
|
44
|
+
}
|
45
|
+
end
|
26
46
|
end
|
27
47
|
|
28
48
|
module Kernel
|
@@ -57,12 +77,6 @@ class String
|
|
57
77
|
def interpolate (on)
|
58
78
|
on.instance_eval("%{#{self}}") rescue self
|
59
79
|
end
|
60
|
-
|
61
|
-
def === (value)
|
62
|
-
value.is_a?(Packo::Host) ?
|
63
|
-
value == self :
|
64
|
-
super(value)
|
65
|
-
end
|
66
80
|
end
|
67
81
|
|
68
82
|
class OpenStruct
|
data/lib/packo/host.rb
CHANGED
@@ -119,3 +119,13 @@ class Host
|
|
119
119
|
end
|
120
120
|
|
121
121
|
end
|
122
|
+
|
123
|
+
class String
|
124
|
+
refine_method(:==) do |old, value|
|
125
|
+
value.is_a?(Packo::Host) ? value == self : old.call(value)
|
126
|
+
end
|
127
|
+
|
128
|
+
refine_method(:===) do |old, value|
|
129
|
+
value.is_a?(Packo::Host) ? value === self : old.call(value)
|
130
|
+
end
|
131
|
+
end
|
data/lib/packo/models.rb
CHANGED
@@ -78,11 +78,17 @@ class Property
|
|
78
78
|
end
|
79
79
|
|
80
80
|
def load (value)
|
81
|
-
|
81
|
+
return if value.to_s.empty?
|
82
|
+
|
83
|
+
whole, version, format = value.to_s.match(/^(.+?):([^:]+)$/).to_a
|
84
|
+
|
85
|
+
Versionomy.parse(version, format)
|
82
86
|
end
|
83
87
|
|
84
88
|
def dump (value)
|
85
|
-
|
89
|
+
return unless value
|
90
|
+
|
91
|
+
"#{value}:#{Versionomy::Format.canonical_name_for(value.format)}"
|
86
92
|
end
|
87
93
|
|
88
94
|
def typecast_to_primitive (value)
|
@@ -97,16 +97,9 @@ class Repository
|
|
97
97
|
}
|
98
98
|
end
|
99
99
|
else
|
100
|
-
|
101
|
-
validity = ((matches[1] && !matches[1].empty?) ? matches[1] : nil)
|
102
|
-
expression = expression.sub(/^([<>]?=?)/, '')
|
100
|
+
whole, validity, package, expression = expression.match(/^([<>]?=?)?(.+?)\s*(?:\[(.*)\])?$/).to_a
|
103
101
|
|
104
|
-
|
105
|
-
else
|
106
|
-
validity = nil
|
107
|
-
end
|
108
|
-
|
109
|
-
package = Packo::Package.parse(expression)
|
102
|
+
package = Packo::Package.parse(package || '')
|
110
103
|
|
111
104
|
conditions = { order: [:name.asc] }
|
112
105
|
|
@@ -128,16 +121,26 @@ class Repository
|
|
128
121
|
}
|
129
122
|
end
|
130
123
|
|
131
|
-
if validity
|
124
|
+
if validity && !validity.empty?
|
132
125
|
result = result.select {|pkg|
|
133
126
|
case validity
|
134
|
-
when '
|
135
|
-
when '
|
136
|
-
when '
|
137
|
-
when '
|
127
|
+
when '~', '~=' then true
|
128
|
+
when '>' then pkg.version > package.version
|
129
|
+
when '>=' then pkg.version >= package.version
|
130
|
+
when '<' then pkg.version < package.version
|
131
|
+
when '<=' then pkg.version <= package.version
|
132
|
+
else pkg.version == package.version
|
138
133
|
end
|
139
134
|
}
|
140
135
|
end
|
136
|
+
|
137
|
+
if expression && !expression.empty?
|
138
|
+
expression = Packo::Package::Tags::Expression.parse(expression)
|
139
|
+
|
140
|
+
result = result.select {|pkg|
|
141
|
+
expression.evaluate(Packo::Package.wrap(pkg))
|
142
|
+
}
|
143
|
+
end
|
141
144
|
end
|
142
145
|
|
143
146
|
return result
|
data/lib/packo/package.rb
CHANGED
@@ -27,6 +27,8 @@ module Packo
|
|
27
27
|
|
28
28
|
class Package
|
29
29
|
def self.parse (text, type=:standard)
|
30
|
+
return text if text.is_a?(Package)
|
31
|
+
|
30
32
|
data = {}
|
31
33
|
|
32
34
|
case type
|
@@ -36,7 +38,7 @@ class Package
|
|
36
38
|
data[:features] = matches[3]
|
37
39
|
data[:flavor] = matches[5]
|
38
40
|
|
39
|
-
matches = matches[1].match(/^(.*?)(
|
41
|
+
matches = matches[1].match(/^(.*?)(?:-(\d.*?))?(?:%(.*?))?(?:@(.*?))?$/)
|
40
42
|
|
41
43
|
data[:tags] = matches[1].split('/')
|
42
44
|
|
@@ -44,8 +46,12 @@ class Package
|
|
44
46
|
data[:name] = data[:tags].pop
|
45
47
|
end
|
46
48
|
|
47
|
-
data[:version] = matches[
|
48
|
-
data[:slot] = matches[
|
49
|
+
data[:version] = matches[2]
|
50
|
+
data[:slot] = matches[3]
|
51
|
+
|
52
|
+
if matches[4]
|
53
|
+
data[:repository] = Repository.parse(matches[4])
|
54
|
+
end
|
49
55
|
end
|
50
56
|
|
51
57
|
Package.new(data)
|
data/lib/packo/profile.rb
CHANGED
@@ -47,7 +47,7 @@ class Profile
|
|
47
47
|
}
|
48
48
|
|
49
49
|
@paths.dup.each {|name, path|
|
50
|
-
@paths[name] =
|
50
|
+
@paths[name] = Path.new(path)
|
51
51
|
}
|
52
52
|
end
|
53
53
|
|
@@ -60,7 +60,7 @@ class Profile
|
|
60
60
|
if respond_to? "#{id}="
|
61
61
|
send "#{id}=", *args
|
62
62
|
else
|
63
|
-
@paths[id] =
|
63
|
+
@paths[id] = Path.new(args.first)
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|
data/lib/packo/rbuild.rb
CHANGED
@@ -20,8 +20,9 @@
|
|
20
20
|
module Packo; module RBuild; module Behaviors
|
21
21
|
|
22
22
|
Default = [
|
23
|
-
Modules::
|
24
|
-
Modules::Building::
|
23
|
+
Modules::Building::Patch,
|
24
|
+
Modules::Building::Autotools,
|
25
|
+
Modules::Building::Strip
|
25
26
|
]
|
26
27
|
|
27
28
|
end; end; end
|
@@ -17,6 +17,11 @@
|
|
17
17
|
# along with packo. If not, see <http://www.gnu.org/licenses/>.
|
18
18
|
#++
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
module Packo; module RBuild; module Behaviors
|
21
|
+
|
22
|
+
Python = [
|
23
|
+
Modules::Building::Patch,
|
24
|
+
Modules::Building::PythonSetup
|
25
|
+
]
|
26
|
+
|
27
|
+
end; end; end
|
data/lib/packo/rbuild/modules.rb
CHANGED
@@ -19,9 +19,8 @@
|
|
19
19
|
|
20
20
|
require 'packo/rbuild/module'
|
21
21
|
|
22
|
+
require 'packo/rbuild/modules/fetching'
|
23
|
+
require 'packo/rbuild/modules/unpacking'
|
22
24
|
require 'packo/rbuild/modules/building'
|
23
25
|
require 'packo/rbuild/modules/packaging'
|
24
26
|
require 'packo/rbuild/modules/misc'
|
25
|
-
|
26
|
-
require 'packo/rbuild/modules/misc/fetching'
|
27
|
-
require 'packo/rbuild/modules/misc/unpacking'
|
@@ -17,8 +17,11 @@
|
|
17
17
|
# along with packo. If not, see <http://www.gnu.org/licenses/>.
|
18
18
|
#++
|
19
19
|
|
20
|
-
require 'packo/rbuild/modules/building/
|
20
|
+
require 'packo/rbuild/modules/building/patch'
|
21
21
|
require 'packo/rbuild/modules/building/cmake'
|
22
|
+
|
23
|
+
require 'packo/rbuild/modules/building/autotools'
|
22
24
|
require 'packo/rbuild/modules/building/rake'
|
23
|
-
require 'packo/rbuild/modules/building/
|
25
|
+
require 'packo/rbuild/modules/building/scons'
|
26
|
+
|
24
27
|
require 'packo/rbuild/modules/building/strip'
|
@@ -104,22 +104,22 @@ class Autotools < Module
|
|
104
104
|
|
105
105
|
@enable.each {|name, value|
|
106
106
|
case value
|
107
|
-
when true; result += "--enable-#{name} "
|
108
|
-
when false; result += "--disable-#{name} "
|
109
|
-
else; result += "--enable-#{name}
|
107
|
+
when true; result += "--enable-#{name.shellescape} "
|
108
|
+
when false; result += "--disable-#{name.shellescape} "
|
109
|
+
else; result += "--enable-#{name.shellescape}=#{value.shellescape} "
|
110
110
|
end
|
111
111
|
}
|
112
112
|
|
113
113
|
@with.each {|name, value|
|
114
114
|
case value
|
115
|
-
when true; result += "--with-#{name} "
|
116
|
-
when false; result += "--without-#{name} "
|
117
|
-
else; result += "--with-#{name}
|
115
|
+
when true; result += "--with-#{name.shellescape} "
|
116
|
+
when false; result += "--without-#{name.shellescape} "
|
117
|
+
else; result += "--with-#{name.shellescape}=#{value.shellescape} "
|
118
118
|
end
|
119
119
|
}
|
120
120
|
|
121
121
|
@other.each {|name, value|
|
122
|
-
result += "--#{name}
|
122
|
+
result += "--#{name.shellescape}=#{value.shellescape} "
|
123
123
|
}
|
124
124
|
|
125
125
|
return result
|
@@ -268,10 +268,10 @@ class Autotools < Module
|
|
268
268
|
def configure
|
269
269
|
@configuration = Configuration.new(self)
|
270
270
|
|
271
|
-
@configuration.set 'prefix', (System.env[:INSTALL_PATH] + '/usr')
|
272
|
-
@configuration.set 'sysconfdir', (System.env[:INSTALL_PATH] + '/etc')
|
273
|
-
@configuration.set 'sharedstatedir', (System.env[:INSTALL_PATH] + '/com')
|
274
|
-
@configuration.set 'localstatedir', (System.env[:INSTALL_PATH] + '/var')
|
271
|
+
@configuration.set 'prefix', Path.clean(System.env[:INSTALL_PATH] + '/usr')
|
272
|
+
@configuration.set 'sysconfdir', Path.clean(System.env[:INSTALL_PATH] + '/etc')
|
273
|
+
@configuration.set 'sharedstatedir', Path.clean(System.env[:INSTALL_PATH] + '/com')
|
274
|
+
@configuration.set 'localstatedir', Path.clean(System.env[:INSTALL_PATH] + '/var')
|
275
275
|
|
276
276
|
@configuration.set 'host', package.host
|
277
277
|
@configuration.set 'build', package.host
|
@@ -20,14 +20,71 @@
|
|
20
20
|
module Packo; module RBuild; module Modules; module Building
|
21
21
|
|
22
22
|
class Rake < Module
|
23
|
+
class Configuration
|
24
|
+
attr_reader :module
|
25
|
+
|
26
|
+
def initialize (mod=nil)
|
27
|
+
@module = mod
|
28
|
+
|
29
|
+
@options = {}
|
30
|
+
end
|
31
|
+
|
32
|
+
def clear
|
33
|
+
@options.clear
|
34
|
+
end
|
35
|
+
|
36
|
+
def enable (*names)
|
37
|
+
names.flatten.compact.each {|name|
|
38
|
+
@options[name] = true
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
def disable (*names)
|
43
|
+
names.flatten.compact.each {|name|
|
44
|
+
@options[name] = false
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
def set (name, value)
|
49
|
+
@options[name.to_s] = value.to_s
|
50
|
+
end
|
51
|
+
|
52
|
+
def get (name)
|
53
|
+
@options[name.to_s]
|
54
|
+
end
|
55
|
+
|
56
|
+
def delete (*names)
|
57
|
+
names.flatten.each {|name|
|
58
|
+
@options.delete(name.to_s)
|
59
|
+
}
|
60
|
+
end
|
61
|
+
|
62
|
+
def to_s
|
63
|
+
result = ''
|
64
|
+
|
65
|
+
@options.each {|name, value|
|
66
|
+
case value
|
67
|
+
when true; result += "#{name.shellescape}=on "
|
68
|
+
when false; result += "#{name.shellescape}=off "
|
69
|
+
else; result += "#{name.shellescape}=#{value.shellescape} "
|
70
|
+
end
|
71
|
+
}
|
72
|
+
|
73
|
+
return result
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
23
77
|
def initialize (package)
|
24
78
|
super(package)
|
25
79
|
|
26
|
-
package.stages.add :
|
27
|
-
package.stages.add :
|
80
|
+
package.stages.add :configure, self.method(:configure), after: :fetch
|
81
|
+
package.stages.add :compile, self.method(:compile), after: :configure
|
82
|
+
package.stages.add :install, self.method(:install), after: :compile
|
28
83
|
|
29
|
-
package.
|
84
|
+
package.after :initialize do
|
30
85
|
package.environment[:RUBYOPT] = ''
|
86
|
+
|
87
|
+
package.dependencies << 'interpreter/ruby!'
|
31
88
|
end
|
32
89
|
|
33
90
|
package.rake = Class.new(Module::Helper) {
|
@@ -54,19 +111,26 @@ class Rake < Module
|
|
54
111
|
end
|
55
112
|
|
56
113
|
def finalize
|
57
|
-
package.stages.delete :
|
58
|
-
package.stages.delete :
|
114
|
+
package.stages.delete :configure, self.method(:configure)
|
115
|
+
package.stages.delete :compile, self.method(:compile)
|
116
|
+
package.stages.delete :install, self.method(:install)
|
117
|
+
end
|
118
|
+
|
119
|
+
def configure
|
120
|
+
@configuration = Configuration.new(self)
|
121
|
+
|
122
|
+
package.stages.callbacks(:configure).do(@configuration)
|
59
123
|
end
|
60
124
|
|
61
125
|
def compile
|
62
126
|
package.stages.callbacks(:compile).do(@configuration) {
|
63
|
-
package.rake.do
|
127
|
+
package.rake.do @configuration.to_s.shellsplit
|
64
128
|
}
|
65
129
|
end
|
66
130
|
|
67
131
|
def install
|
68
132
|
package.stages.callbacks(:install).do(@configuration) {
|
69
|
-
package.rake.install
|
133
|
+
package.rake.install @configuration.to_s.shellsplit
|
70
134
|
}
|
71
135
|
end
|
72
136
|
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
#--
|
2
|
+
# Copyleft meh. [http://meh.doesntexist.org | meh@paranoici.org]
|
3
|
+
#
|
4
|
+
# This file is part of packo.
|
5
|
+
#
|
6
|
+
# packo is free software: you can redistribute it and/or modify
|
7
|
+
# it under the terms of the GNU Affero General Public License as published
|
8
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
9
|
+
# (at your option) any later version.
|
10
|
+
#
|
11
|
+
# packo is distributed in the hope that it will be useful,
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
14
|
+
# GNU Affero General Public License for more details.
|
15
|
+
#
|
16
|
+
# You should have received a copy of the GNU Affero General Public License
|
17
|
+
# along with packo. If not, see <http://www.gnu.org/licenses/>.
|
18
|
+
#++
|
19
|
+
|
20
|
+
module Packo; module RBuild; module Modules; module Building
|
21
|
+
|
22
|
+
class Scons < Module
|
23
|
+
class Configuration
|
24
|
+
attr_reader :module
|
25
|
+
|
26
|
+
def initialize (mod=nil)
|
27
|
+
@module = mod
|
28
|
+
|
29
|
+
@options = {}
|
30
|
+
end
|
31
|
+
|
32
|
+
def clear
|
33
|
+
@options.clear
|
34
|
+
end
|
35
|
+
|
36
|
+
def enable (*names)
|
37
|
+
names.flatten.compact.each {|name|
|
38
|
+
@options[name] = true
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
def disable (*names)
|
43
|
+
names.flatten.compact.each {|name|
|
44
|
+
@options[name] = false
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
def set (name, value)
|
49
|
+
@options[name.to_s] = value.to_s
|
50
|
+
end
|
51
|
+
|
52
|
+
def get (name)
|
53
|
+
@options[name.to_s]
|
54
|
+
end
|
55
|
+
|
56
|
+
def delete (*names)
|
57
|
+
names.flatten.each {|name|
|
58
|
+
@options.delete(name.to_s)
|
59
|
+
}
|
60
|
+
end
|
61
|
+
|
62
|
+
def to_s
|
63
|
+
result = ''
|
64
|
+
|
65
|
+
@options.each {|name, value|
|
66
|
+
case value
|
67
|
+
when true; result += "#{name.shellescape}=on "
|
68
|
+
when false; result += "#{name.shellescape}=off "
|
69
|
+
else; result += "#{name.shellescape}=#{value.shellescape} "
|
70
|
+
end
|
71
|
+
}
|
72
|
+
|
73
|
+
return result
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def initialize (package)
|
78
|
+
super(package)
|
79
|
+
|
80
|
+
package.stages.add :configure, self.method(:configure), after: :fetch
|
81
|
+
package.stages.add :compile, self.method(:compile), after: :configure
|
82
|
+
package.stages.add :install, self.method(:install), after: :compile
|
83
|
+
|
84
|
+
package.before :initialize do
|
85
|
+
package.dependencies << 'development/utility/scons!'
|
86
|
+
end
|
87
|
+
|
88
|
+
package.scons = Class.new(Module::Helper) {
|
89
|
+
def initialize (package)
|
90
|
+
super(package)
|
91
|
+
end
|
92
|
+
|
93
|
+
def do (*args)
|
94
|
+
package.environment.sandbox {
|
95
|
+
Packo.sh 'scons', *args
|
96
|
+
}
|
97
|
+
end
|
98
|
+
|
99
|
+
def version (name, slot=nil)
|
100
|
+
slot ? @versions[name.to_sym] = slot : @versions[name.to_sym]
|
101
|
+
end
|
102
|
+
}.new(package)
|
103
|
+
end
|
104
|
+
|
105
|
+
def finalize
|
106
|
+
package.stages.delete :configure, self.method(:configure)
|
107
|
+
package.stages.delete :compile, self.method(:compile)
|
108
|
+
package.stages.delete :install, self.method(:install)
|
109
|
+
end
|
110
|
+
|
111
|
+
def configure
|
112
|
+
@configuration = Configuration.new(self)
|
113
|
+
|
114
|
+
package.stages.callbacks(:configure).do(@configuration)
|
115
|
+
end
|
116
|
+
|
117
|
+
def compile
|
118
|
+
package.stages.callbacks(:compile).do(@configuration) {
|
119
|
+
package.scons.do @configuration.to_s.shellsplit
|
120
|
+
}
|
121
|
+
end
|
122
|
+
|
123
|
+
def install
|
124
|
+
package.stages.callbacks(:install).do(@configuration)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
end; end; end; end
|