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