aboutsummaryrefslogtreecommitdiff
path: root/meson
diff options
context:
space:
mode:
Diffstat (limited to 'meson')
-rwxr-xr-xmeson/packaging/make-deb.sh28
-rwxr-xr-xmeson/packaging/make-pacman.sh22
-rw-r--r--meson/packaging/meson.build11
-rw-r--r--meson/packaging/meta.in8
4 files changed, 69 insertions, 0 deletions
diff --git a/meson/packaging/make-deb.sh b/meson/packaging/make-deb.sh
new file mode 100755
index 0000000..3d2a292
--- /dev/null
+++ b/meson/packaging/make-deb.sh
@@ -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
diff --git a/meson/packaging/make-pacman.sh b/meson/packaging/make-pacman.sh
new file mode 100755
index 0000000..375cff8
--- /dev/null
+++ b/meson/packaging/make-pacman.sh
@@ -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
diff --git a/meson/packaging/meson.build b/meson/packaging/meson.build
new file mode 100644
index 0000000..d0b9cb2
--- /dev/null
+++ b/meson/packaging/meson.build
@@ -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')])
diff --git a/meson/packaging/meta.in b/meson/packaging/meta.in
new file mode 100644
index 0000000..a3f5d65
--- /dev/null
+++ b/meson/packaging/meta.in
@@ -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@"