%{prefix} macro added.
- It is used in automated building instructions. - It is used in auto-splits. - It is preset before reading the recipe to the first of the default prefixes defined in this context, and can be reset to force the recipe to build somewhere else.master
parent
aac0eff75f
commit
4c66f13cae
|
@ -71,6 +71,8 @@ class Package::Context
|
|||
# but it’ll be kind of enough for now.
|
||||
property architecture = "x86_64"
|
||||
|
||||
property prefixes = ["/usr", "/", "/usr/weirdos"]
|
||||
|
||||
def initialize
|
||||
@packaging_backends << Backend::Packaging.new "pkgutils" do |context, package|
|
||||
puts "#{package.fake_root_directory} -> #{packages_directory}/#{package.name}##{package.version}-#{package.release}.pkg.tar.xz"
|
||||
|
@ -111,7 +113,7 @@ class Package::Context
|
|||
next BuildStatus::Pass
|
||||
end
|
||||
|
||||
child = context.sh "./configure --prefix=/usr #{recipe.options["configure"]? || ""}"
|
||||
child = context.sh "./configure --prefix=#{recipe.prefix} #{recipe.options["configure"]? || ""}"
|
||||
|
||||
if child.exit_status == 0
|
||||
BuildStatus::Success
|
||||
|
@ -154,19 +156,24 @@ class Package::Context
|
|||
|
||||
@splitter_backends << Backend::Splitter.new do |recipe|
|
||||
Package.new(recipe, true).tap do |split|
|
||||
prefixes = (@prefixes + [recipe.prefix]).uniq
|
||||
|
||||
split.name = "#{recipe.name}-man"
|
||||
split.files = ["/usr/share/man"]
|
||||
split.files = prefixes.map do |prefix|
|
||||
"#{prefix}/share/man"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@splitter_backends << Backend::Splitter.new do |recipe|
|
||||
Package.new(recipe, true).tap do |split|
|
||||
prefixes = (@prefixes + [recipe.prefix]).uniq
|
||||
|
||||
split.name = "#{recipe.name}-dev"
|
||||
split.files = ["/usr/include"]
|
||||
split.file_patterns = [
|
||||
Regex.new("^/lib/.*\\.a$"),
|
||||
Regex.new("^/usr/lib/.*\\.a$")
|
||||
]
|
||||
split.files = prefixes.map { |x| "#{x}/include" }
|
||||
split.file_patterns = prefixes.map do |prefix|
|
||||
Regex.new("^" + prefix + ".*\\.a$")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -57,6 +57,8 @@ class Package::Recipe
|
|||
getter sources = Sources.new
|
||||
getter packages = Array(Package).new
|
||||
|
||||
@prefix : String?
|
||||
|
||||
property recipe_directory = "."
|
||||
|
||||
@working_uuid : UUID = UUID.random
|
||||
|
@ -74,7 +76,8 @@ class Package::Recipe
|
|||
|
||||
def initialize(@context, filename : String)
|
||||
specs = SpecFileParser.parse filename, {
|
||||
"pkg" => fake_root_directory
|
||||
"pkg" => fake_root_directory,
|
||||
"prefix" => prefix
|
||||
}
|
||||
|
||||
name : String? = nil
|
||||
|
@ -112,6 +115,8 @@ class Package::Recipe
|
|||
@instructions.install << value.as_s_or_ls
|
||||
when "dirname"
|
||||
@dirname = value.as_s
|
||||
when "prefix"
|
||||
@prefix = value.as_s
|
||||
when "dependencies"
|
||||
value.as_a_or_s.each do |atom|
|
||||
@run_dependencies << atom
|
||||
|
@ -182,6 +187,10 @@ class Package::Recipe
|
|||
@dirname || "#{name}-#{version}"
|
||||
end
|
||||
|
||||
def prefix : String
|
||||
@prefix || @context.prefixes[0]? || "/usr"
|
||||
end
|
||||
|
||||
def download
|
||||
sources.each do |url|
|
||||
next if url.scheme == "file"
|
||||
|
|
Reference in New Issue