diff --git a/src/backends/weird.cr b/src/backends/baguette.cr similarity index 65% rename from src/backends/weird.cr rename to src/backends/baguette.cr index 5807a40..e98ef11 100644 --- a/src/backends/weird.cr +++ b/src/backends/baguette.cr @@ -3,31 +3,41 @@ require "openssl" require "../backends.cr" -class WeirdBackend < Package::Backend::Packaging +class BaguetteBackend < Package::Backend::Packaging def initialize - @name = "weird" + @name = "baguette" end def package(context : Package::Context, package : Package::Package) : Bool - destination_package_file = "#{context.packages_directory}/#{package.name}-#{package.version}-#{package.release}.weird" tmpdir = package.recipe.working_directory fake_root = package.fake_root_directory + data_archive_path = "#{tmpdir}/data.tar" + compressed_data_archive_path = "#{tmpdir}/data.tar.zst" + control_spec_file_path = "#{tmpdir}/control.spec" + manifest_file_path = "#{tmpdir}/manifest" + + package_filename = "#{context.packages_directory}/#{package.name}-#{package.version}-#{package.release}.baguette" + context.detail "Archiving package content" - context.run fake_root, "tar", ["cJf", "#{tmpdir}/data.tar.xz", "."] + context.run fake_root, "tar", ["cvf", data_archive_path, "."] + + context.detail "Compressing the archive" + # produces data.tar.zst + context.run fake_root, "zstd", ["--ultra", data_archive_path] context.detail "Generating control.spec" - generate_spec package, "#{tmpdir}/control.spec" + generate_spec package, control_spec_file_path context.detail "Generating manifest" - generate_manifest context, package, "#{tmpdir}/manifest" - - context.detail "Assembling '#{destination_package_file}'" + generate_manifest context, package, manifest_file_path + context.detail "Assembling '#{package_filename}'" r = context.run tmpdir, "tar", [ - "cf", destination_package_file, - "control.spec", "manifest", "data.tar.xz" + "cf", package_filename, + # WARNING: relative paths are necessary. + "control.spec", "manifest", "data.tar.zst" ] r.exit_status == 0 @@ -72,7 +82,7 @@ class WeirdBackend < Package::Backend::Packaging elsif File.directory? path manifest.puts [file, "directory"].join ':' elsif File.info?(path).try &.file? - digest = OpenSSL::Digest.new("sha256").file(path).hexdigest + digest = OpenSSL::Digest.new("sha256").file(path).final.hexstring manifest.puts [file, "file", digest].join ':' else manifest.puts [file, "other"].join ':' diff --git a/src/context.cr b/src/context.cr index 838faa5..776e585 100644 --- a/src/context.cr +++ b/src/context.cr @@ -6,7 +6,7 @@ require "./exception.cr" require "./config.cr" -require "./backends/weird.cr" +require "./backends/baguette.cr" require "./backends/apk.cr" require "./backends/pkgutils.cr" require "./backends.cr" @@ -58,14 +58,14 @@ class Package::Context # but it’ll be kind of enough for now. property architecture = "x86_64" - property prefixes = ["/usr", "/", "/usr/weirdos"] + property prefixes = ["/usr", "/", "/usr/baguetteos"] property environment = {} of String => String property verbosity = 0 def initialize @packaging_backends << ApkBackend.new - @packaging_backends << WeirdBackend.new + @packaging_backends << BaguetteBackend.new @packaging_backends << PkgutilsBackend.new @selected_packaging_backend = @packaging_backends[0]