This repository has been archived on 2022-01-17. You can view files and clone it, but cannot push or open issues/pull-requests.
packaging/src/backends/splitter.cr

80 lines
2.1 KiB
Crystal

class Package::Backend::Splitter
# Man-pages and documentation
def self.man(prefixes : Array(String)) : Splitter
Backend::Splitter.new do |recipe|
Package.new(recipe, true).tap do |split|
prefixes = (prefixes + [recipe.prefix]).uniq
split.name = "#{recipe.name}-man"
split.files = prefixes.map do |prefix|
"#{prefix}/share/man"
end
split.recipe.require_stripping = false
end
end
end
# Developer's files: headers, pkgconfig files, *.a.
def self.dev(prefixes : Array(String)) : Splitter
Backend::Splitter.new do |recipe|
Package.new(recipe, true).tap do |split|
prefixes = (prefixes + [recipe.prefix]).uniq
split.name = "#{recipe.name}-dev"
split.files = prefixes.map do |prefix|
[
"#{prefix}/include",
"#{prefix}/lib/pkgconfig"
]
end.flatten
split.file_patterns = prefixes.map do |prefix|
Regex.new("^" + prefix + ".*\\.a$")
end
# Any prefix containing "/include/"
split.file_patterns.not_nil! << Regex.new(".*/include/.*.h(pp)?")
end
end
end
# Documentation files: /share/doc/, *.html
def self.doc(prefixes : Array(String)) : Splitter
Backend::Splitter.new do |recipe|
Package.new(recipe, true).tap do |split|
prefixes = (prefixes + [recipe.prefix]).uniq
split.name = "#{recipe.name}-doc"
split.files = prefixes.map do |prefix|
[
"#{prefix}/share/doc",
]
end.flatten
split.file_patterns = prefixes.map do |prefix|
Regex.new("^" + prefix + ".*\\.html$")
end
end
end
end
# NOTE: src is not a regular split, _all_ files should be included,
# as well as the patches used for the build.
# Files are copied before build.
def self.src(prefixes : Array(String)) : Splitter
Backend::Splitter.new do |recipe|
Package.new(recipe, true).tap do |split|
prefixes = (prefixes + [recipe.prefix]).uniq
split.name = "#{recipe.name}-src"
# No need, files are already in the package fake root.
# split.files = prefixes.map do |prefix|
# [ "#{prefix}/src" ]
# end.flatten
split.recipe.require_stripping = false
end
end
end
end