Add packaging scripts for Meson

It probably doesn't belong here but I don't feel like creating another
repository for this either yet.
This commit is contained in:
Přemysl Eric Janouch 2017-04-30 10:45:23 +02:00
parent 9afcb337ad
commit e25a880883
Signed by: p
GPG Key ID: B715679E3A361BE6
4 changed files with 69 additions and 0 deletions

28
meson/packaging/make-deb.sh Executable file
View File

@ -0,0 +1,28 @@
#!/bin/sh -e
cd "$MESON_BUILD_ROOT"
. "$MESON_SUBDIR/meta"
wd="`pwd`/`mktemp -d deb.XXXXXX`"
trap "rm -rf '$wd'" INT QUIT TERM EXIT
[ "$arch" = x86 ] && arch=i386
[ "$arch" = x86_64 ] && arch=amd64
target="$name-$version-$system-$arch.deb"
echo 2.0 > "$wd/debian-binary"
cat > "$wd/control" <<-EOF
Package: $name
Version: $version
Section: misc
Priority: optional
Architecture: $arch
Maintainer: $author
Description: $summary
EOF
fakeroot sh -e <<-EOF
DESTDIR="$wd/pkg" ninja install
cd "$wd/pkg" && tar cJf ../data.tar.xz .
EOF
(cd "$wd" && tar czf control.tar.gz ./control)
ar rc "$target" "$wd/debian-binary" "$wd/control.tar.gz" "$wd/data.tar.xz"
echo Written $target

22
meson/packaging/make-pacman.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/sh -e
cd "$MESON_BUILD_ROOT"
. "$MESON_SUBDIR/meta"
wd="`pwd`/`mktemp -d pacman.XXXXXX`"
trap "rm -rf '$wd'" INT QUIT TERM EXIT
target="$name-$version-$arch.tar.xz"
fakeroot sh -e <<-EOF
DESTDIR="$wd" ninja install
cat > "$wd/.PKGINFO" <<END
pkgname = $name
pkgver = $version-1
pkgdesc = $summary
url = $url
builddate = \`date -u +%s\`
packager = $author
size = \`du -sb --apparent-size | cut -f1\`
arch = $arch
END
cd "$wd" && tar cJf "../$target" .PKGINFO *
echo Written $target
EOF

View File

@ -0,0 +1,11 @@
# You need to prepare a configuration object with the required metadata
packaging.set ('arch', target_machine.cpu_family ())
packaging.set ('system', target_machine.system ())
configure_file (input: 'meta.in', output: 'meta', configuration: packaging)
# RPM is awful and I've given up on both manual generation (we'd have to either
# include rpmrc data or generate fake noarch packages) and rpmbuild (just no)
run_target ('deb',
command: [join_paths (meson.current_source_dir (), 'make-deb.sh')])
run_target ('pacman',
command: [join_paths (meson.current_source_dir (), 'make-pacman.sh')])

8
meson/packaging/meta.in Normal file
View File

@ -0,0 +1,8 @@
define() { [ -z "$2" ] && { echo $1 is undefined; exit 1; } || eval "$1='$2'"; }
define name "@name@"
define version "@version@"
define summary "@summary@"
define author "@author@"
define arch "@arch@"
define system "@system@"