Splits (sub-packages) support.
parent
6fc56f3034
commit
255d644b93
|
@ -54,8 +54,6 @@ class Package::Context
|
||||||
|
|
||||||
puts "#{package.fake_root_directory} -> #{packages_directory}/#{package.name}-#{package.version}-r#{package.release}.apk"
|
puts "#{package.fake_root_directory} -> #{packages_directory}/#{package.name}-#{package.version}-r#{package.release}.apk"
|
||||||
|
|
||||||
run package.fake_root_directory, "find", [".."]
|
|
||||||
|
|
||||||
puts pkginfo package
|
puts pkginfo package
|
||||||
File.write "#{package.fake_root_directory}/.PKGINFO", pkginfo package
|
File.write "#{package.fake_root_directory}/.PKGINFO", pkginfo package
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,11 @@ Context.new().tap do |context|
|
||||||
recipe.description = "The GNU Hello program produces a familiar, friendly greeting."
|
recipe.description = "The GNU Hello program produces a familiar, friendly greeting."
|
||||||
recipe.dependencies << "gettext"
|
recipe.dependencies << "gettext"
|
||||||
|
|
||||||
|
recipe.packages << Package::Package.new(recipe).tap do |package|
|
||||||
|
package.name = "#{recipe.name}-man"
|
||||||
|
package.files = ["/package/share/man"]
|
||||||
|
end
|
||||||
|
|
||||||
recipe.download
|
recipe.download
|
||||||
recipe.extract
|
recipe.extract
|
||||||
|
|
||||||
|
|
|
@ -28,8 +28,12 @@ class Package::Package
|
||||||
inherit conflicts : Array(String)
|
inherit conflicts : Array(String)
|
||||||
inherit provides : Array(String)
|
inherit provides : Array(String)
|
||||||
|
|
||||||
# Internals
|
# Reference for splits. Recipe#packages[0] should keep this set to `nil`.
|
||||||
inherit fake_root_directory : String
|
property files : Array(String)?
|
||||||
|
|
||||||
|
def fake_root_directory
|
||||||
|
"#{@recipe.working_directory}/root-#{name}"
|
||||||
|
end
|
||||||
|
|
||||||
def to_s
|
def to_s
|
||||||
"<Package: #{name}-#{version}>"
|
"<Package: #{name}-#{version}>"
|
||||||
|
|
|
@ -68,7 +68,7 @@ class Package::Recipe
|
||||||
end
|
end
|
||||||
|
|
||||||
def fake_root_directory
|
def fake_root_directory
|
||||||
"#{working_directory}/root"
|
@packages[0].fake_root_directory
|
||||||
end
|
end
|
||||||
|
|
||||||
def dirname
|
def dirname
|
||||||
|
@ -120,9 +120,40 @@ class Package::Recipe
|
||||||
|
|
||||||
ENV["PKG"] = nil
|
ENV["PKG"] = nil
|
||||||
|
|
||||||
|
do_splits
|
||||||
|
|
||||||
success
|
success
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private def do_splits
|
||||||
|
@packages.each do |package|
|
||||||
|
next if package == @packages[0]
|
||||||
|
|
||||||
|
files = package.files
|
||||||
|
|
||||||
|
next if files.nil? # Should only happen to @packages[0].
|
||||||
|
# TODO: ↑ add public APIs that ensure it.
|
||||||
|
|
||||||
|
Dir.mkdir_p package.fake_root_directory
|
||||||
|
|
||||||
|
# FIXME: What do we do if those are not on the filesystem?
|
||||||
|
files.each do |file|
|
||||||
|
puts "#{package.fake_root_directory}#{File.dirname file}"
|
||||||
|
Dir.mkdir_p "#{package.fake_root_directory}#{File.dirname file}"
|
||||||
|
|
||||||
|
FileUtils.mv(
|
||||||
|
"#{fake_root_directory}#{file}",
|
||||||
|
"#{package.fake_root_directory}#{file}"
|
||||||
|
)
|
||||||
|
|
||||||
|
puts file
|
||||||
|
@context.run "find", [
|
||||||
|
"#{package.fake_root_directory}/#{file}"
|
||||||
|
]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# TODO:
|
# TODO:
|
||||||
# - Errors management. Stop at first failure?
|
# - Errors management. Stop at first failure?
|
||||||
# - Splits. This should be done between #build and #package.
|
# - Splits. This should be done between #build and #package.
|
||||||
|
|
Reference in New Issue