diff --git a/systemd/0017-meson.build-do-not-create-systemdstatedir.patch b/systemd/0017-meson.build-do-not-create-systemdstatedir.patch new file mode 100644 index 0000000..debcaab --- /dev/null +++ b/systemd/0017-meson.build-do-not-create-systemdstatedir.patch @@ -0,0 +1,21 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: nikstur <nikstur@outlook.com> +Date: Mon, 6 Nov 2023 22:51:38 +0100 +Subject: [PATCH] meson.build: do not create systemdstatedir + +--- + meson.build | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/meson.build b/meson.build +index bffda86845..cb5dcec0f9 100644 +--- a/meson.build ++++ b/meson.build +@@ -2781,7 +2781,6 @@ install_data('LICENSE.GPL2', + install_subdir('LICENSES', + install_dir : docdir) + +-install_emptydir(systemdstatedir) + + ##################################################################### + diff --git a/systemd/default.nix b/systemd/default.nix index ccfea25..653296d 100644 --- a/systemd/default.nix +++ b/systemd/default.nix @@ -3,6 +3,7 @@ lib, pkgs, stdenv, + targetPackages, ... }: let @@ -29,7 +30,12 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-GvRn55grHWR6M+tA86RMzqinuXNpPZzRB4ApuGN/ZvU="; }; + patches = [ + ./0017-meson.build-do-not-create-systemdstatedir.patch + ]; + nativeBuildInputs = with pkgs; [ + bash pkg-config makeBinaryWrapper gperf @@ -61,6 +67,13 @@ stdenv.mkDerivation (finalAttrs: { buildPackages.llvmPackages.libllvm ]; + outputs = [ + "out" + "dev" + ]; + + separateDebugInfo = true; + autoPatchelfFlags = [ "--keep-libc" ]; hardeningDisable = [ @@ -113,7 +126,47 @@ stdenv.mkDerivation (finalAttrs: { mesonBuildType = "release"; + doCheck = false; # fails a bunch of tests + + preConfigure = '' + mesonFlagsArray+=(-Dntp-servers="0.europe.pool.ntp.org 1.europe.pool.ntp.org 2.europe.pool.ntp.org 3.europe.pool.ntp.org") + export LC_ALL="en_US.UTF-8"; + ''; + + postPatch = + '' + substituteInPlace src/basic/path-util.h --replace "@defaultPathNormal@" "${placeholder "out"}/bin/" + '' + + '' + substituteInPlace meson.build \ + --replace "find_program('clang'" "find_program('${stdenv.cc.targetPrefix}clang'" + '' + + '' + substituteInPlace src/ukify/ukify.py \ + --replace \ + "'readelf'" \ + "'${targetPackages.stdenv.cc.bintools.targetPrefix}readelf'" \ + --replace \ + "/usr/lib/systemd/boot/efi" \ + "$out/lib/systemd/boot/efi" + '' + # Finally, patch shebangs in scripts used at build time. This must not patch + # scripts that will end up in the output, to avoid build platform references + # when cross-compiling. + + '' + shopt -s extglob + patchShebangs tools test src/!(rpm|kernel-install|ukify) src/kernel-install/test-kernel-install.sh + ''; + + # trigger the test -n "$DESTDIR" || mutate in upstreams build system + preInstall = '' + export DESTDIR=/ + ''; + mesonFlags = [ + + "--prefix=${placeholder "out"}" + # Options # We bump this attribute on every (major) version change to ensure that we @@ -129,6 +182,17 @@ stdenv.mkDerivation (finalAttrs: { (lib.mesonOption "mode" "release") (lib.mesonOption "tty-gid" "3") # tty in NixOS has gid 3 + (lib.mesonOption "debug-shell" "${pkgs.bashInteractive}/bin/bash") + (lib.mesonOption "pamconfdir" "${placeholder "out"}/etc/pam.d") + (lib.mesonOption "shellprofiledir" "${placeholder "out"}/etc/profile.d") + (lib.mesonOption "kmod-path" "${pkgs.kmod}/bin/kmod") + (lib.mesonOption "dbuspolicydir" "${placeholder "out"}/share/dbus-1/system.d") + (lib.mesonOption "dbussessionservicedir" "${placeholder "out"}/share/dbus-1/services") + (lib.mesonOption "dbussystemservicedir" "${placeholder "out"}/share/dbus-1/system-services") + # pkgconfig + (lib.mesonOption "pkgconfiglibdir" "${placeholder "dev"}/lib/pkgconfig") + (lib.mesonOption "pkgconfigdatadir" "${placeholder "dev"}/share/pkgconfig") + # SBAT (lib.mesonOption "sbat-distro" "patos") (lib.mesonOption "sbat-distro-summary" "PatOS") diff --git a/systemd/result b/systemd/result new file mode 120000 index 0000000..f1d0e21 --- /dev/null +++ b/systemd/result @@ -0,0 +1 @@ +/nix/store/jw8923rfwly76yb8ynp5r65cvg4g9m0f-systemd-257.3 \ No newline at end of file