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:
parent
9afcb337ad
commit
e25a880883
28
meson/packaging/make-deb.sh
Executable file
28
meson/packaging/make-deb.sh
Executable 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
22
meson/packaging/make-pacman.sh
Executable 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
|
11
meson/packaging/meson.build
Normal file
11
meson/packaging/meson.build
Normal 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
8
meson/packaging/meta.in
Normal 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@"
|
Loading…
Reference in New Issue
Block a user