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