From c49c75122f1b6805828252b831d7fbd61b76c098 Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Thu, 17 Jun 2021 16:20:30 +0000 Subject: [PATCH 1/3] build-styles: add zig-build We call this "zig-build" instead of just "zig" as this build-style relies on usage of the zig build system. In the future, other build systems such as meson may support zig code. Furthermore, the zig build system may be used to build C/C++ code as well, not just zig. This commit also backports one bug fix from the zig master branch which is critical for our use-case of building software for binary distribution. --- Manual.md | 4 ++ common/build-profiles/README | 2 + common/build-profiles/aarch64-musl.sh | 2 + common/build-profiles/aarch64.sh | 2 + common/build-profiles/armv6l-musl.sh | 2 + common/build-profiles/armv6l.sh | 2 + common/build-profiles/armv7l-musl.sh | 2 + common/build-profiles/armv7l.sh | 2 + common/build-profiles/i686-musl.sh | 2 + common/build-profiles/i686.sh | 2 + common/build-profiles/ppc-musl.sh | 2 + common/build-profiles/ppc.sh | 2 + common/build-profiles/ppc64-musl.sh | 2 + common/build-profiles/ppc64.sh | 2 + common/build-profiles/ppc64le-musl.sh | 2 + common/build-profiles/ppc64le.sh | 2 + common/build-profiles/ppcle-musl.sh | 2 + common/build-profiles/ppcle.sh | 2 + common/build-profiles/x86_64-musl.sh | 2 + common/build-profiles/x86_64.sh | 2 + common/build-style/zig-build.sh | 41 ++++++++++++++++ common/cross-profiles/README | 2 + common/cross-profiles/aarch64-musl.sh | 2 + common/cross-profiles/aarch64.sh | 2 + common/cross-profiles/armv5tel-musl.sh | 2 + common/cross-profiles/armv5tel.sh | 2 + common/cross-profiles/armv6l-musl.sh | 2 + common/cross-profiles/armv6l.sh | 2 + common/cross-profiles/armv7l-musl.sh | 2 + common/cross-profiles/armv7l.sh | 2 + common/cross-profiles/i686-musl.sh | 2 + common/cross-profiles/i686.sh | 2 + common/cross-profiles/mips-musl.sh | 2 + common/cross-profiles/mipsel-musl.sh | 2 + common/cross-profiles/mipselhf-musl.sh | 2 + common/cross-profiles/mipshf-musl.sh | 2 + common/cross-profiles/ppc-musl.sh | 2 + common/cross-profiles/ppc.sh | 2 + common/cross-profiles/ppc64-musl.sh | 2 + common/cross-profiles/ppc64.sh | 2 + common/cross-profiles/ppc64le-musl.sh | 2 + common/cross-profiles/ppc64le.sh | 2 + common/cross-profiles/ppcle-musl.sh | 2 + common/cross-profiles/ppcle.sh | 2 + common/cross-profiles/x86_64-musl.sh | 2 + common/cross-profiles/x86_64.sh | 2 + .../0001-std.build-fix-handling-of-Dcpu.patch | 48 +++++++++++++++++++ 47 files changed, 181 insertions(+) create mode 100644 common/build-style/zig-build.sh create mode 100644 srcpkgs/zig/patches/0001-std.build-fix-handling-of-Dcpu.patch diff --git a/Manual.md b/Manual.md index 5996e1502887..b0afd6db1596 100644 --- a/Manual.md +++ b/Manual.md @@ -998,6 +998,10 @@ configure arguments can be specified via `cross_*_configure_args` where `*` is ` additionally passed to both early and final `gcc`. You can also specify custom `CFLAGS` and `LDFLAGS` for the libc as `cross_(glibc|musl)_(cflags|ldflags)`. +- `zig-build` For packages using [Zig](https://ziglang.org)'s build +system. Additional arguments may be passed to the `zig build` invocation using +`configure_args`. + For packages that use the Python module build method (`setup.py` or [PEP 517](https://www.python.org/dev/peps/pep-0517/)), you can choose one of the following: diff --git a/common/build-profiles/README b/common/build-profiles/README index e4457c16f22c..41b18fc1174e 100644 --- a/common/build-profiles/README +++ b/common/build-profiles/README @@ -9,6 +9,8 @@ for a specific architecture: - XBPS_CXXFLAGS (C++ compiler flags for the host compiler) - XBPS_FFLAGS (Fortran compiler flags for the host compiler) - XBPS_RUST_TARGET (the compiler triplet for usage by cargo) + - XBPS_ZIG_TARGET (the arch-os-abi target triplet for zig) + - XBPS_ZIG_CPU (the cpu/feature set for zig) These properties are also set in a cross environment, but the compiler flags are not added into the global flags. XBPS_RUST_TARGET is also diff --git a/common/build-profiles/aarch64-musl.sh b/common/build-profiles/aarch64-musl.sh index 76249d0b75c8..8427d0478a9a 100644 --- a/common/build-profiles/aarch64-musl.sh +++ b/common/build-profiles/aarch64-musl.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="aarch64-unknown-linux-musl" XBPS_RUST_TARGET="$XBPS_TRIPLET" +XBPS_ZIG_TARGET="aarch64-linux-musl" +XBPS_ZIG_CPU="baseline" diff --git a/common/build-profiles/aarch64.sh b/common/build-profiles/aarch64.sh index ccf7d5af3d54..59855dfc0c82 100644 --- a/common/build-profiles/aarch64.sh +++ b/common/build-profiles/aarch64.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="aarch64-unknown-linux-gnu" XBPS_RUST_TARGET="$XBPS_TRIPLET" +XBPS_ZIG_TARGET="aarch64-linux-gnu" +XBPS_ZIG_CPU="baseline" diff --git a/common/build-profiles/armv6l-musl.sh b/common/build-profiles/armv6l-musl.sh index 172e56e81a82..b46941a39976 100644 --- a/common/build-profiles/armv6l-musl.sh +++ b/common/build-profiles/armv6l-musl.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="armv6l-linux-musleabihf" XBPS_RUST_TARGET="arm-unknown-linux-musleabihf" +XBPS_ZIG_TARGET="arm-linux-musleabihf" +XBPS_ZIG_CPU="generic+v6" diff --git a/common/build-profiles/armv6l.sh b/common/build-profiles/armv6l.sh index d84b6bdb2cc2..3b182234cb6d 100644 --- a/common/build-profiles/armv6l.sh +++ b/common/build-profiles/armv6l.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="armv6l-unknown-linux-gnueabihf" XBPS_RUST_TARGET="arm-unknown-linux-gnueabihf" +XBPS_ZIG_TARGET="arm-linux-gnueabihf" +XBPS_ZIG_CPU="generic+v6" diff --git a/common/build-profiles/armv7l-musl.sh b/common/build-profiles/armv7l-musl.sh index f81ad699e07a..dbf3eb0d5b92 100644 --- a/common/build-profiles/armv7l-musl.sh +++ b/common/build-profiles/armv7l-musl.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_CXXFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="armv7l-linux-musleabihf" XBPS_RUST_TARGET="armv7-unknown-linux-musleabihf" +XBPS_ZIG_TARGET="arm-linux-musleabihf" +XBPS_ZIG_CPU="generic+v7a+vfp3" diff --git a/common/build-profiles/armv7l.sh b/common/build-profiles/armv7l.sh index a100e410f9a9..141639b132b0 100644 --- a/common/build-profiles/armv7l.sh +++ b/common/build-profiles/armv7l.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="armv7l-unknown-linux-gnueabihf" XBPS_RUST_TARGET="armv7-unknown-linux-gnueabihf" +XBPS_CROSS_ZIG_TARGET="arm-linux-gnueabihf" +XBPS_CROSS_ZIG_CPU="generic+v7a+vfp3" diff --git a/common/build-profiles/i686-musl.sh b/common/build-profiles/i686-musl.sh index e76ab89d6ae3..a607ef619e79 100644 --- a/common/build-profiles/i686-musl.sh +++ b/common/build-profiles/i686-musl.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="i686-linux-musl" XBPS_RUST_TARGET="i686-unknown-linux-musl" +XBPS_ZIG_TARGET="i686-linux-musl" +XBPS_ZIG_CPU="baseline" diff --git a/common/build-profiles/i686.sh b/common/build-profiles/i686.sh index 036a91b2b92b..ff872ed9d4b2 100644 --- a/common/build-profiles/i686.sh +++ b/common/build-profiles/i686.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="i686-pc-linux-gnu" XBPS_RUST_TARGET="i686-unknown-linux-gnu" +XBPS_ZIG_TARGET="i686-linux-gnu" +XBPS_ZIG_CPU="baseline" diff --git a/common/build-profiles/ppc-musl.sh b/common/build-profiles/ppc-musl.sh index 17296432e97b..60b2e700270a 100644 --- a/common/build-profiles/ppc-musl.sh +++ b/common/build-profiles/ppc-musl.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="powerpc-linux-musl" XBPS_RUST_TARGET="powerpc-unknown-linux-musl" +XBPS_ZIG_TARGET="powerpc-linux-musl" +XBPS_ZIG_CPU="baseline" diff --git a/common/build-profiles/ppc.sh b/common/build-profiles/ppc.sh index f7ec35b69a64..b7a113139792 100644 --- a/common/build-profiles/ppc.sh +++ b/common/build-profiles/ppc.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="powerpc-linux-gnu" XBPS_RUST_TARGET="powerpc-unknown-linux-gnu" +XBPS_ZIG_TARGET="powerpc-linux-gnu" +XBPS_ZIG_CPU="baseline" diff --git a/common/build-profiles/ppc64-musl.sh b/common/build-profiles/ppc64-musl.sh index 53c5ea6fb3f8..4ec7430b39a9 100644 --- a/common/build-profiles/ppc64-musl.sh +++ b/common/build-profiles/ppc64-musl.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="powerpc64-unknown-linux-musl" XBPS_RUST_TARGET="$XBPS_TRIPLET" +XBPS_ZIG_TARGET="powerpc64-linux-musl" +XBPS_ZIG_CPU="970" diff --git a/common/build-profiles/ppc64.sh b/common/build-profiles/ppc64.sh index aa9af966ea78..1d0c04ae3747 100644 --- a/common/build-profiles/ppc64.sh +++ b/common/build-profiles/ppc64.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="powerpc64-unknown-linux-gnu" XBPS_RUST_TARGET="$XBPS_TRIPLET" +XBPS_ZIG_TARGET="powerpc64-linux-gnu" +XBPS_ZIG_CPU="970" diff --git a/common/build-profiles/ppc64le-musl.sh b/common/build-profiles/ppc64le-musl.sh index cb9423f99748..8d2db1b2b518 100644 --- a/common/build-profiles/ppc64le-musl.sh +++ b/common/build-profiles/ppc64le-musl.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="powerpc64le-unknown-linux-musl" XBPS_RUST_TARGET="$XBPS_TRIPLET" +XBPS_ZIG_TARGET="powerpc64le-linux-musl" +XBPS_ZIG_CPU="baseline" diff --git a/common/build-profiles/ppc64le.sh b/common/build-profiles/ppc64le.sh index c91ea054789e..8f0e735f873e 100644 --- a/common/build-profiles/ppc64le.sh +++ b/common/build-profiles/ppc64le.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="powerpc64le-unknown-linux-gnu" XBPS_RUST_TARGET="$XBPS_TRIPLET" +XBPS_ZIG_TARGET="powerpc64le-linux-gnu" +XBPS_ZIG_CPU="baseline" diff --git a/common/build-profiles/ppcle-musl.sh b/common/build-profiles/ppcle-musl.sh index 7585c4f6919d..c8d7e28e4834 100644 --- a/common/build-profiles/ppcle-musl.sh +++ b/common/build-profiles/ppcle-musl.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="powerpcle-linux-musl" XBPS_RUST_TARGET="powerpcle-unknown-linux-musl" +XBPS_ZIG_TARGET="powerpcle-linux-musl" +XBPS_ZIG_CPU="pwr8" diff --git a/common/build-profiles/ppcle.sh b/common/build-profiles/ppcle.sh index 0cdc6cc853c9..7eccadf4ed26 100644 --- a/common/build-profiles/ppcle.sh +++ b/common/build-profiles/ppcle.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="powerpcle-linux-gnu" XBPS_RUST_TARGET="powerpcle-unknown-linux-gnu" +XBPS_ZIG_TARGET="powerpcle-linux-gnu" +XBPS_ZIG_CPU="pwr8" diff --git a/common/build-profiles/x86_64-musl.sh b/common/build-profiles/x86_64-musl.sh index b0bbb30bd160..538baea0b613 100644 --- a/common/build-profiles/x86_64-musl.sh +++ b/common/build-profiles/x86_64-musl.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="x86_64-unknown-linux-musl" XBPS_RUST_TARGET="${XBPS_TRIPLET}" +XBPS_ZIG_TARGET="x86_64-linux-musl" +XBPS_ZIG_CPU="baseline" diff --git a/common/build-profiles/x86_64.sh b/common/build-profiles/x86_64.sh index a53f4aafdacd..388b5561a6d2 100644 --- a/common/build-profiles/x86_64.sh +++ b/common/build-profiles/x86_64.sh @@ -3,3 +3,5 @@ XBPS_TARGET_CXXFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TARGET_FFLAGS="$XBPS_TARGET_CFLAGS" XBPS_TRIPLET="x86_64-unknown-linux-gnu" XBPS_RUST_TARGET="${XBPS_TRIPLET}" +XBPS_ZIG_TARGET="x86_64-linux-gnu" +XBPS_ZIG_CPU="baseline" diff --git a/common/build-style/zig-build.sh b/common/build-style/zig-build.sh new file mode 100644 index 000000000000..205c4cadf53f --- /dev/null +++ b/common/build-style/zig-build.sh @@ -0,0 +1,41 @@ +do_build() { + local zig_target zig_cpu + + # TODO: This duplication between build-profiles and cross-profiles + # is totally unnecessary. It would be nice if there was some way to + # avoid it. + if [ "$CROSS_BUILD" ]; then + zig_target="${XBPS_CROSS_ZIG_TARGET}" + zig_cpu="${XBPS_CROSS_ZIG_CPU}" + else + zig_target="${XBPS_ZIG_TARGET}" + zig_cpu="${XBPS_ZIG_CPU}" + fi + + # Inform zig of the required libc include paths. + cat > xbps_zig_libc.txt <<-EOF + include_dir=${XBPS_CROSS_BASE}/usr/include + sys_include_dir=${XBPS_CROSS_BASE}/usr/include + crt_dir=${XBPS_CROSS_BASE}/usr/lib + msvc_lib_dir= + kernel32_lib_dir= + gcc_dir= + EOF + + # The Zig build system only has a single install step, there is no + # way to build artifacts for a given prefix and then install those artifacts + # to that prefix at some later time. Therefore, we build and install to the zig-out + # directory and later copy the artifacts to the destdir in do_install(). + # We use zig-out to avoid path conflicts as it is the default install + # prefix used by the zig build system. + DESTDIR="zig-out" zig build \ + --sysroot "${XBPS_CROSS_BASE}" \ + --libc xbps_zig_libc.txt \ + -Dtarget="${zig_target}" -Dcpu="${zig_cpu}" \ + -Drelease-safe --prefix /usr install \ + ${configure_args} +} + +do_install() { + cp -r zig-out/* "${DESTDIR}" +} diff --git a/common/cross-profiles/README b/common/cross-profiles/README index 2a2a1d4b423a..f2300b5d5a94 100644 --- a/common/cross-profiles/README +++ b/common/cross-profiles/README @@ -13,5 +13,7 @@ A cross profile file must provide the following variables: - XBPS_CROSS_LDFLAGS (Linker flags for the cross compiler) - XBPS_CROSS_RUST_TARGET (the rust triplet for the rust cross compiler) - XBPS_CROSS_RUSTFLAGS (rust compiler flags for the cross compiler) + - XBPS_CROSS_ZIG_TARGET (the arch-os-abi target triplet for zig) + - XBPS_CROSS_ZIG_CPU (the cpu/feature set for zig) A source package matching `cross-${XBPS_CROSS_TRIPLET}' must also exist. diff --git a/common/cross-profiles/aarch64-musl.sh b/common/cross-profiles/aarch64-musl.sh index 56ce2d32964a..892abba9ef3c 100644 --- a/common/cross-profiles/aarch64-musl.sh +++ b/common/cross-profiles/aarch64-musl.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="aarch64-unknown-linux-musl" +XBPS_CROSS_ZIG_TARGET="aarch64-linux-musl" +XBPS_CROSS_ZIG_CPU="baseline" diff --git a/common/cross-profiles/aarch64.sh b/common/cross-profiles/aarch64.sh index 068870a31588..7a99e6fc72c6 100644 --- a/common/cross-profiles/aarch64.sh +++ b/common/cross-profiles/aarch64.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="aarch64-unknown-linux-gnu" +XBPS_CROSS_ZIG_TARGET="aarch64-linux-gnu" +XBPS_CROSS_ZIG_CPU="baseline" diff --git a/common/cross-profiles/armv5tel-musl.sh b/common/cross-profiles/armv5tel-musl.sh index 3894f0c87313..0eb813a54d64 100644 --- a/common/cross-profiles/armv5tel-musl.sh +++ b/common/cross-profiles/armv5tel-musl.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="arm-unknown-linux-musleabi" +XBPS_CROSS_ZIG_TARGET="arm-linux-musleabi" +XBPS_CROSS_ZIG_CPU="generic+v5te+soft_float" diff --git a/common/cross-profiles/armv5tel.sh b/common/cross-profiles/armv5tel.sh index d56c50a80063..f5828360f112 100644 --- a/common/cross-profiles/armv5tel.sh +++ b/common/cross-profiles/armv5tel.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="arm-unknown-linux-gnueabi" +XBPS_CROSS_ZIG_TARGET="arm-linux-gnueabi" +XBPS_CROSS_ZIG_CPU="generic+v5te+soft_float" diff --git a/common/cross-profiles/armv6l-musl.sh b/common/cross-profiles/armv6l-musl.sh index 58b67f85a97e..5f32f9ba0aec 100644 --- a/common/cross-profiles/armv6l-musl.sh +++ b/common/cross-profiles/armv6l-musl.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="arm-unknown-linux-musleabihf" +XBPS_CROSS_ZIG_TARGET="arm-linux-musleabihf" +XBPS_CROSS_ZIG_CPU="generic+v6" diff --git a/common/cross-profiles/armv6l.sh b/common/cross-profiles/armv6l.sh index b146eb87219b..7040996ea1c1 100644 --- a/common/cross-profiles/armv6l.sh +++ b/common/cross-profiles/armv6l.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="arm-unknown-linux-gnueabihf" +XBPS_CROSS_ZIG_TARGET="arm-linux-gnueabihf" +XBPS_CROSS_ZIG_CPU="generic+v6" diff --git a/common/cross-profiles/armv7l-musl.sh b/common/cross-profiles/armv7l-musl.sh index 93e3cc5b3d72..9a38832e0d7d 100644 --- a/common/cross-profiles/armv7l-musl.sh +++ b/common/cross-profiles/armv7l-musl.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="armv7-unknown-linux-musleabihf" +XBPS_CROSS_ZIG_TARGET="arm-linux-musleabihf" +XBPS_CROSS_ZIG_CPU="generic+v7a+vfp3" diff --git a/common/cross-profiles/armv7l.sh b/common/cross-profiles/armv7l.sh index 674165e238a1..b8c9c41d35a5 100644 --- a/common/cross-profiles/armv7l.sh +++ b/common/cross-profiles/armv7l.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="armv7-unknown-linux-gnueabihf" +XBPS_CROSS_ZIG_TARGET="arm-linux-gnueabihf" +XBPS_CROSS_ZIG_CPU="generic+v7a+vfp3" diff --git a/common/cross-profiles/i686-musl.sh b/common/cross-profiles/i686-musl.sh index fcb3d8ec4b49..c1cdf60f5ebb 100644 --- a/common/cross-profiles/i686-musl.sh +++ b/common/cross-profiles/i686-musl.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="i686-unknown-linux-musl" +XBPS_CROSS_ZIG_TARGET="i686-linux-musl" +XBPS_CROSS_ZIG_CPU="baseline" diff --git a/common/cross-profiles/i686.sh b/common/cross-profiles/i686.sh index 07ee8883707a..452db8eaf386 100644 --- a/common/cross-profiles/i686.sh +++ b/common/cross-profiles/i686.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="i686-unknown-linux-gnu" +XBPS_CROSS_ZIG_TARGET="i686-linux-gnu" +XBPS_CROSS_ZIG_CPU="baseline" diff --git a/common/cross-profiles/mips-musl.sh b/common/cross-profiles/mips-musl.sh index f1d9fe2fd1a3..7c44de7577e2 100644 --- a/common/cross-profiles/mips-musl.sh +++ b/common/cross-profiles/mips-musl.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="mips-unknown-linux-musl" +XBPS_CROSS_ZIG_TARGET="mips-linux-musl" +XBPS_CROSS_ZIG_CPU="generic+soft_float" diff --git a/common/cross-profiles/mipsel-musl.sh b/common/cross-profiles/mipsel-musl.sh index 0d1117deb06c..fa4390c98dcd 100644 --- a/common/cross-profiles/mipsel-musl.sh +++ b/common/cross-profiles/mipsel-musl.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="mipsel-unknown-linux-musl" +XBPS_CROSS_ZIG_TARGET="mipsel-linux-musl" +XBPS_CROSS_ZIG_CPU="generic+soft_float" diff --git a/common/cross-profiles/mipselhf-musl.sh b/common/cross-profiles/mipselhf-musl.sh index 8587a88e6ca5..49f4558ca2fa 100644 --- a/common/cross-profiles/mipselhf-musl.sh +++ b/common/cross-profiles/mipselhf-musl.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="mipsel-unknown-linux-musl" +XBPS_CROSS_ZIG_TARGET="mipsel-linux-musl" +XBPS_CROSS_ZIG_CPU="generic" diff --git a/common/cross-profiles/mipshf-musl.sh b/common/cross-profiles/mipshf-musl.sh index 2914eaf19f85..513391b6284e 100644 --- a/common/cross-profiles/mipshf-musl.sh +++ b/common/cross-profiles/mipshf-musl.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="mips-unknown-linux-musl" +XBPS_CROSS_ZIG_TARGET="mips-linux-musl" +XBPS_CROSS_ZIG_CPU="generic" diff --git a/common/cross-profiles/ppc-musl.sh b/common/cross-profiles/ppc-musl.sh index 631b1fb427e9..327ae2341b99 100644 --- a/common/cross-profiles/ppc-musl.sh +++ b/common/cross-profiles/ppc-musl.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="powerpc-unknown-linux-musl" +XBPS_ZIG_TARGET="powerpc-linux-musl" +XBPS_ZIG_CPU="baseline" diff --git a/common/cross-profiles/ppc.sh b/common/cross-profiles/ppc.sh index 4647c62de2dd..787f6bb2943b 100644 --- a/common/cross-profiles/ppc.sh +++ b/common/cross-profiles/ppc.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="powerpc-unknown-linux-gnu" +XBPS_ZIG_TARGET="powerpc-linux-gnu" +XBPS_ZIG_CPU="baseline" diff --git a/common/cross-profiles/ppc64-musl.sh b/common/cross-profiles/ppc64-musl.sh index 2cc74b352a13..c4b0f35e094b 100644 --- a/common/cross-profiles/ppc64-musl.sh +++ b/common/cross-profiles/ppc64-musl.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="powerpc64-unknown-linux-musl" +XBPS_CROSS_ZIG_TARGET="powerpc64-linux-musl" +XBPS_CROSS_ZIG_CPU="970" diff --git a/common/cross-profiles/ppc64.sh b/common/cross-profiles/ppc64.sh index 4fedf210000d..7ed5bc0d5f1f 100644 --- a/common/cross-profiles/ppc64.sh +++ b/common/cross-profiles/ppc64.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="powerpc64-unknown-linux-gnu" +XBPS_CROSS_ZIG_TARGET="powerpc64-linux-gnu" +XBPS_CROSS_ZIG_CPU="970" diff --git a/common/cross-profiles/ppc64le-musl.sh b/common/cross-profiles/ppc64le-musl.sh index b08f78c91f33..df18c300ddb0 100644 --- a/common/cross-profiles/ppc64le-musl.sh +++ b/common/cross-profiles/ppc64le-musl.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="powerpc64le-unknown-linux-musl" +XBPS_CROSS_ZIG_TARGET="powerpc64le-linux-musl" +XBPS_CROSS_ZIG_CPU="baseline" diff --git a/common/cross-profiles/ppc64le.sh b/common/cross-profiles/ppc64le.sh index 88e8649a7658..3fe7b2da47b6 100644 --- a/common/cross-profiles/ppc64le.sh +++ b/common/cross-profiles/ppc64le.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="powerpc64le-unknown-linux-gnu" +XBPS_CROSS_ZIG_TARGET="powerpc64le-linux-gnu" +XBPS_CROSS_ZIG_CPU="baseline" diff --git a/common/cross-profiles/ppcle-musl.sh b/common/cross-profiles/ppcle-musl.sh index 2ba308f224d5..48e27c04b90f 100644 --- a/common/cross-profiles/ppcle-musl.sh +++ b/common/cross-profiles/ppcle-musl.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="powerpcle-unknown-linux-musl" +XBPS_CROSS_ZIG_TARGET="powerpcle-linux-musl" +XBPS_CROSS_ZIG_CPU="pwr8" diff --git a/common/cross-profiles/ppcle.sh b/common/cross-profiles/ppcle.sh index 3e5230b194ef..a59158233660 100644 --- a/common/cross-profiles/ppcle.sh +++ b/common/cross-profiles/ppcle.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="powerpcle-unknown-linux-gnu" +XBPS_CROSS_ZIG_TARGET="powerpcle-linux-gnu" +XBPS_CROSS_ZIG_CPU="pwr8" diff --git a/common/cross-profiles/x86_64-musl.sh b/common/cross-profiles/x86_64-musl.sh index a1c27c6f7933..38642a07f8a9 100644 --- a/common/cross-profiles/x86_64-musl.sh +++ b/common/cross-profiles/x86_64-musl.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="x86_64-unknown-linux-musl" +XBPS_CROSS_ZIG_TARGET="x86_64-linux-musl" +XBPS_CROSS_ZIG_CPU="baseline" diff --git a/common/cross-profiles/x86_64.sh b/common/cross-profiles/x86_64.sh index 360dd2068fc2..bd966d0e01df 100644 --- a/common/cross-profiles/x86_64.sh +++ b/common/cross-profiles/x86_64.sh @@ -8,3 +8,5 @@ XBPS_CROSS_CXXFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_FFLAGS="$XBPS_CROSS_CFLAGS" XBPS_CROSS_RUSTFLAGS="--sysroot=${XBPS_CROSS_BASE}/usr" XBPS_CROSS_RUST_TARGET="x86_64-unknown-linux-gnu" +XBPS_CROSS_ZIG_TARGET="x86_64-linux-gnu" +XBPS_CROSS_ZIG_CPU="baseline" diff --git a/srcpkgs/zig/patches/0001-std.build-fix-handling-of-Dcpu.patch b/srcpkgs/zig/patches/0001-std.build-fix-handling-of-Dcpu.patch new file mode 100644 index 000000000000..4101f24459bb --- /dev/null +++ b/srcpkgs/zig/patches/0001-std.build-fix-handling-of-Dcpu.patch @@ -0,0 +1,48 @@ +From 1e8cdace7ad324a42228aeb5cd6eb8dd15429413 Mon Sep 17 00:00:00 2001 +From: Isaac Freund +Date: Tue, 21 Sep 2021 21:06:10 +0200 +Subject: [PATCH] std.build: fix handling of -Dcpu + +Currently -Dcpu is completely ignored if -Dtarget isn't passed as well. +Further, -Dcpu=baseline is ignored even if -Dtarget=native is passed. + +This patch fixes these 2 issues, always respecting the -Dcpu option if +present. +--- + lib/std/build.zig | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/lib/std/build.zig b/lib/std/build.zig +index 9b7ebb1f4..e398529f9 100644 +--- a/lib/std/build.zig ++++ b/lib/std/build.zig +@@ -685,7 +685,11 @@ pub const Builder = struct { + ); + const mcpu = self.option([]const u8, "cpu", "Target CPU"); + +- const triple = maybe_triple orelse return args.default_target; ++ if (maybe_triple == null and mcpu == null) { ++ return args.default_target; ++ } ++ ++ const triple = maybe_triple orelse "native"; + + var diags: CrossTarget.ParseOptions.Diagnostics = .{}; + const selected_target = CrossTarget.parse(.{ +@@ -2451,11 +2455,8 @@ pub const LibExeObjStep = struct { + + if (populated_cpu_features.eql(cross.cpu.features)) { + // The CPU name alone is sufficient. +- // If it is the baseline CPU, no command line args are required. +- if (cross.cpu.model != std.Target.Cpu.baseline(cross.cpu.arch).model) { +- try zig_args.append("-mcpu"); +- try zig_args.append(cross.cpu.model.name); +- } ++ try zig_args.append("-mcpu"); ++ try zig_args.append(cross.cpu.model.name); + } else { + var mcpu_buffer = std.ArrayList(u8).init(builder.allocator); + +-- +2.33.1 + From 8895cceb8d9647bae8c87b33ddba1b9098c55b5f Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Thu, 17 Jun 2021 01:40:15 +0000 Subject: [PATCH 2/3] New package: rundird-0.2.0 --- srcpkgs/rundird/files/rundird/run | 2 ++ srcpkgs/rundird/template | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 srcpkgs/rundird/files/rundird/run create mode 100644 srcpkgs/rundird/template diff --git a/srcpkgs/rundird/files/rundird/run b/srcpkgs/rundird/files/rundird/run new file mode 100644 index 000000000000..e4aae8c83b4b --- /dev/null +++ b/srcpkgs/rundird/files/rundird/run @@ -0,0 +1,2 @@ +#!/bin/sh +exec rundird diff --git a/srcpkgs/rundird/template b/srcpkgs/rundird/template new file mode 100644 index 000000000000..5488292ee390 --- /dev/null +++ b/srcpkgs/rundird/template @@ -0,0 +1,17 @@ +# Template file for 'rundird' +pkgname=rundird +version=0.2.0 +revision=1 +build_style=zig-build +hostmakedepends="zig" +makedepends="pam-devel" +short_desc="Simple daemon + PAM module providing an XDG_RUNTIME_DIR" +maintainer="Isaac Freund " +license="GPL-3.0-or-later" +homepage="https://github.com/ifreund/rundird" +distfiles="${homepage}/archive/v${version}.tar.gz" +checksum=1dea207f39388e8c2c275b8a9aada0166d1f587a806f2e5e4486d98259e23e4c + +post_install() { + vsv rundird +} From ab555a47508f6cb7fe30d796ace6373fbe6dfc78 Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Wed, 3 Nov 2021 14:48:05 +0100 Subject: [PATCH 3/3] New package: river-0.1.0 --- ...ble-PIE-for-river-riverctl-rivertile.patch | 42 +++++++++++++++++++ srcpkgs/river/template | 19 +++++++++ 2 files changed, 61 insertions(+) create mode 100644 srcpkgs/river/patches/0001-Enable-PIE-for-river-riverctl-rivertile.patch create mode 100644 srcpkgs/river/template diff --git a/srcpkgs/river/patches/0001-Enable-PIE-for-river-riverctl-rivertile.patch b/srcpkgs/river/patches/0001-Enable-PIE-for-river-riverctl-rivertile.patch new file mode 100644 index 000000000000..ecc68302db09 --- /dev/null +++ b/srcpkgs/river/patches/0001-Enable-PIE-for-river-riverctl-rivertile.patch @@ -0,0 +1,42 @@ +From 759c1c7a915083f3da46960ff82fa2a3566a7065 Mon Sep 17 00:00:00 2001 +From: Isaac Freund +Date: Wed, 3 Nov 2021 14:21:35 +0100 +Subject: [PATCH] Enable PIE for river, riverctl, rivertile + +There is sadly not yet a standard way to do this exposed by the zig +build system. See: https://github.com/ziglang/zig/issues/7201 +--- + build.zig | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/build.zig b/build.zig +index d561f49..8ac9a4e 100644 +--- a/build.zig ++++ b/build.zig +@@ -85,6 +85,7 @@ pub fn build(b: *zbs.Builder) !void { + const river = b.addExecutable("river", "river/main.zig"); + river.setTarget(target); + river.setBuildMode(mode); ++ river.pie = true; + river.addBuildOption(bool, "xwayland", xwayland); + river.addBuildOption([:0]const u8, "version", full_version); + +@@ -97,6 +98,7 @@ pub fn build(b: *zbs.Builder) !void { + const riverctl = b.addExecutable("riverctl", "riverctl/main.zig"); + riverctl.setTarget(target); + riverctl.setBuildMode(mode); ++ riverctl.pie = true; + riverctl.addBuildOption([:0]const u8, "version", full_version); + + riverctl.step.dependOn(&scanner.step); +@@ -114,6 +116,7 @@ pub fn build(b: *zbs.Builder) !void { + const rivertile = b.addExecutable("rivertile", "rivertile/main.zig"); + rivertile.setTarget(target); + rivertile.setBuildMode(mode); ++ rivertile.pie = true; + rivertile.addBuildOption([:0]const u8, "version", full_version); + + rivertile.step.dependOn(&scanner.step); +-- +2.33.1 + diff --git a/srcpkgs/river/template b/srcpkgs/river/template new file mode 100644 index 000000000000..0708262d2f67 --- /dev/null +++ b/srcpkgs/river/template @@ -0,0 +1,19 @@ +# Template file for 'river' +pkgname=river +version=0.1.0 +revision=1 +build_style=zig-build +configure_args="$(vopt_if xwayland -Dxwayland)" +hostmakedepends="zig pkg-config wayland-devel scdoc git" +makedepends="wlroots-devel" +depends="$(vopt_if xwayland xorg-server-xwayland)" +short_desc="Dynamic tiling Wayland compositor" +maintainer="Isaac Freund " +license="GPL-3.0-or-later" +homepage="https://github.com/riverwm/river" +distfiles="${homepage}/releases/download/v${version}/river-${version}.tar.gz" +checksum=4153a5511a1008e87a2251fc4510a43d6f6085f41b040222506355ff6d4bd10f + +build_options="xwayland" +build_options_default="xwayland" +desc_option_xwayland="Enable Xwayland support"