#!/bin/sh set -eu # A hacky script to generate .pkg.tar.?z files using satellites. # It's a fairly simple wrapper to astronaut, that generates pacman packages. # This may also serve as an example on how you can wrap astronaut to package in any format. # Sure, no dependency resolution, and the packages won't make it in any official repositories, # but it isn't meant for that anyway. # Find astronaut _astronaut="$(dirname "$0")/astronaut" [ ! -f "$_astronaut" ] && _astronaut="astronaut" # Configuration dir_wrapper_pacman="$PWD" # Where the packages should be stored # Wrapper functions _astronaut_wrapper_pre() { # Make sure to remove the contents of the install directory before building _astronaut_nuke_install=true } _astronaut_wrapper_post() { # Create the package info file cat > "$dir_install/.PKGINFO" << EOF pkgname = $name_sat pkgver = $version-astro pkgdesc = Generated with pacman-astronaut url = $update_url builddate = $(date -u '+%s') size = $(du -sb --apparent-size "$dir_install" | awk '{print $1}') arch = $(uname -m) EOF mkdir -p "$dir_wrapper_pacman" cd "$dir_wrapper_pacman" # Create the package bsdtar --strip-components 1 -C "$dir_install" -czf .MTREE --format=mtree --options='!all,use-set,type,uid,gid,mode,time,size,md5,sha256,link' . mv .MTREE "$dir_install/.MTREE" # bsdtar doesn't like the file being in the same directory. fakeroot -- bsdtar --strip-components 1 -C "$dir_install" -cf - . > "$name_sat-$version-astro-$(uname -m).pkg.tar" repo-add astronaut.db.tar.gz "$name_sat-$version-astro-$(uname -m).pkg.tar" } . "$_astronaut"