From f8d61d957d4a2d086f4b97f2e3d7d19d0bb35f13 Mon Sep 17 00:00:00 2001 From: Vika Date: Sun, 1 Sep 2024 18:10:26 +0300 Subject: Mesonify build This took a while and had me scratching my head often. But I managed to combine the best parts of Crane and Meson together, allowing me to have blazing fast Nix builds. This also adds initial scaffolding for gettext and other cool things. --- build-aux/dist-vendor.sh | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 build-aux/dist-vendor.sh (limited to 'build-aux') diff --git a/build-aux/dist-vendor.sh b/build-aux/dist-vendor.sh new file mode 100644 index 0000000..c1430dc --- /dev/null +++ b/build-aux/dist-vendor.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# Since Meson invokes this script as +# "/bin/sh .../dist-vendor.sh DIST SOURCE_ROOT" we can't rely on bash features +set -eu +export DIST="$1" +export SOURCE_ROOT="$2" + +cd "$SOURCE_ROOT" +mkdir "$DIST"/.cargo + +# cargo-vendor-filterer can be found at https://github.com/coreos/cargo-vendor-filterer +# It is also part of the Rust SDK extension. +# +# nixpkgs doesn't have it packaged though. +if command -v cargo-vendor-filterer &>/dev/null; then + cargo vendor-filterer \ + --platform=x86_64-unknown-linux-gnu \ + --platform=aarch64-unknown-linux-gnu \ + > "$DIST"/.cargo/config +else + echo "WARNING: using normal cargo vendor" + cargo vendor > "$DIST"/.cargo/config +fi + +# Remove vendored gettext sources, we'll be using system gettext. +rm -f vendor/gettext-sys/gettext-*.tar.* + +# Don't combine the previous and this line with a pipe because we can't catch +# errors with "set -o pipefail" +sed -i 's/^directory = ".*"/directory = "vendor"/g' "$DIST/.cargo/config" + +# Move vendor into dist tarball directory +mv vendor "$DIST" + +rm -r "$DIST"/*.nix "$DIST/pkgs" -- cgit 1.4.1