systemd: Reident the expression file

The indenting is a bit weird to follow, especially at the end of the
file (right brace without indent, but the opening brace is indented by
two spaces).

No functional change and I've verified this by building it with this
change and without and both lead to the same store paths.

Signed-off-by: aszlig <aszlig@nix.build>
Cc: @fpletz, @edolstra
This commit is contained in:
aszlig 2018-03-03 00:31:30 +01:00
parent 618ac29687
commit ae7efee4fa
No known key found for this signature in database
GPG Key ID: 684089CE67EBB691

View File

@ -16,211 +16,207 @@ assert stdenv.isLinux;
let let
pythonLxmlEnv = python3Packages.python.withPackages ( ps: with ps; [ python3Packages.lxml ]); pythonLxmlEnv = python3Packages.python.withPackages ( ps: with ps; [ python3Packages.lxml ]);
in in stdenv.mkDerivation rec {
version = "237";
name = "systemd-${version}";
stdenv.mkDerivation rec { src = fetchFromGitHub {
version = "237"; owner = "NixOS";
name = "systemd-${version}"; repo = "systemd";
rev = "1e8830dfa77a7dc6976509f4a6edb7e012c50792";
sha256 = "1cw1k0i68azmzpqzi3r8jm6mbi2wqlql78fhcg0vvnv1ly8bf7vq";
};
src = fetchFromGitHub { outputs = [ "out" "lib" "man" "dev" ];
owner = "NixOS";
repo = "systemd";
rev = "1e8830dfa77a7dc6976509f4a6edb7e012c50792";
sha256 = "1cw1k0i68azmzpqzi3r8jm6mbi2wqlql78fhcg0vvnv1ly8bf7vq";
};
outputs = [ "out" "lib" "man" "dev" ]; nativeBuildInputs =
[ pkgconfig intltool gperf libxslt gettext docbook_xsl docbook_xml_dtd_42 docbook_xml_dtd_45
ninja meson
coreutils # meson calls date, stat etc.
pythonLxmlEnv glibcLocales
patchelf getent
];
buildInputs =
[ linuxHeaders libcap kmod xz pam acl
/* cryptsetup */ libuuid m4 glib libgcrypt libgpgerror libidn2
libmicrohttpd kexectools libseccomp libffi audit lz4 bzip2 libapparmor
iptables gnu-efi
];
nativeBuildInputs = #dontAddPrefix = true;
[ pkgconfig intltool gperf libxslt gettext docbook_xsl docbook_xml_dtd_42 docbook_xml_dtd_45
ninja meson
coreutils # meson calls date, stat etc.
pythonLxmlEnv glibcLocales
patchelf getent
];
buildInputs =
[ linuxHeaders libcap kmod xz pam acl
/* cryptsetup */ libuuid m4 glib libgcrypt libgpgerror libidn2
libmicrohttpd kexectools libseccomp libffi audit lz4 bzip2 libapparmor
iptables gnu-efi
];
#dontAddPrefix = true; mesonFlags = [
"-Dloadkeys-path=${kbd}/bin/loadkeys"
"-Dsetfont-path=${kbd}/bin/setfont"
"-Dtty-gid=3" # tty in NixOS has gid 3
# "-Dtests=" # TODO
"-Dlz4=true"
"-Dhostnamed=true"
"-Dnetworkd=true"
"-Dsysusers=false"
"-Dtimedated=true"
"-Dtimesyncd=true"
"-Dfirstboot=false"
"-Dlocaled=true"
"-Dresolve=true"
"-Dsplit-usr=false"
"-Dlibcurl=false"
"-Dlibidn=false"
"-Dlibidn2=true"
"-Dquotacheck=false"
"-Dldconfig=false"
"-Dsmack=true"
"-Dsystem-uid-max=499" #TODO: debug why awking around in /etc/login.defs doesn't work
"-Dsystem-gid-max=499"
# "-Dtime-epoch=1"
mesonFlags = [ (if stdenv.isArm || !hostPlatform.isEfi then "-Dgnu-efi=false" else "-Dgnu-efi=true")
"-Dloadkeys-path=${kbd}/bin/loadkeys" "-Defi-libdir=${toString gnu-efi}/lib"
"-Dsetfont-path=${kbd}/bin/setfont" "-Defi-includedir=${toString gnu-efi}/include/efi"
"-Dtty-gid=3" # tty in NixOS has gid 3 "-Defi-ldsdir=${toString gnu-efi}/lib"
# "-Dtests=" # TODO
"-Dlz4=true"
"-Dhostnamed=true"
"-Dnetworkd=true"
"-Dsysusers=false"
"-Dtimedated=true"
"-Dtimesyncd=true"
"-Dfirstboot=false"
"-Dlocaled=true"
"-Dresolve=true"
"-Dsplit-usr=false"
"-Dlibcurl=false"
"-Dlibidn=false"
"-Dlibidn2=true"
"-Dquotacheck=false"
"-Dldconfig=false"
"-Dsmack=true"
"-Dsystem-uid-max=499" #TODO: debug why awking around in /etc/login.defs doesn't work
"-Dsystem-gid-max=499"
# "-Dtime-epoch=1"
(if stdenv.isArm || !hostPlatform.isEfi then "-Dgnu-efi=false" else "-Dgnu-efi=true") "-Dsysvinit-path="
"-Defi-libdir=${toString gnu-efi}/lib" "-Dsysvrcnd-path="
"-Defi-includedir=${toString gnu-efi}/include/efi" ];
"-Defi-ldsdir=${toString gnu-efi}/lib"
"-Dsysvinit-path=" preConfigure = ''
"-Dsysvrcnd-path=" mesonFlagsArray+=(-Dntp-servers="0.nixos.pool.ntp.org 1.nixos.pool.ntp.org 2.nixos.pool.ntp.org 3.nixos.pool.ntp.org")
]; mesonFlagsArray+=(-Ddbuspolicydir=$out/etc/dbus-1/system.d)
mesonFlagsArray+=(-Ddbussessionservicedir=$out/share/dbus-1/services)
mesonFlagsArray+=(-Ddbussystemservicedir=$out/share/dbus-1/system-services)
mesonFlagsArray+=(-Dpamconfdir=$out/etc/pam.d)
mesonFlagsArray+=(-Dsysconfdir=$out/etc)
mesonFlagsArray+=(-Drootprefix=$out)
mesonFlagsArray+=(-Dlibdir=$lib/lib)
mesonFlagsArray+=(-Drootlibdir=$lib/lib)
mesonFlagsArray+=(-Dmandir=$man/lib)
mesonFlagsArray+=(-Dincludedir=$dev/include)
mesonFlagsArray+=(-Dpkgconfiglibdir=$dev/lib/pkgconfig)
mesonFlagsArray+=(-Dpkgconfigdatadir=$dev/share/pkgconfig)
preConfigure = # FIXME: Why aren't includedir and libdir picked up from mesonFlags while other options are?
'' substituteInPlace meson.build \
mesonFlagsArray+=(-Dntp-servers="0.nixos.pool.ntp.org 1.nixos.pool.ntp.org 2.nixos.pool.ntp.org 3.nixos.pool.ntp.org") --replace "includedir = join_paths(prefixdir, get_option('includedir'))" \
mesonFlagsArray+=(-Ddbuspolicydir=$out/etc/dbus-1/system.d) "includedir = '$dev/include'" \
mesonFlagsArray+=(-Ddbussessionservicedir=$out/share/dbus-1/services) --replace "libdir = join_paths(prefixdir, get_option('libdir'))" \
mesonFlagsArray+=(-Ddbussystemservicedir=$out/share/dbus-1/system-services) "libdir = '$lib/lib'"
mesonFlagsArray+=(-Dpamconfdir=$out/etc/pam.d)
mesonFlagsArray+=(-Dsysconfdir=$out/etc)
mesonFlagsArray+=(-Drootprefix=$out)
mesonFlagsArray+=(-Dlibdir=$lib/lib)
mesonFlagsArray+=(-Drootlibdir=$lib/lib)
mesonFlagsArray+=(-Dmandir=$man/lib)
mesonFlagsArray+=(-Dincludedir=$dev/include)
mesonFlagsArray+=(-Dpkgconfiglibdir=$dev/lib/pkgconfig)
mesonFlagsArray+=(-Dpkgconfigdatadir=$dev/share/pkgconfig)
# FIXME: Why aren't includedir and libdir picked up from mesonFlags while other options are? export LC_ALL="en_US.UTF-8";
substituteInPlace meson.build \ # FIXME: patch this in systemd properly (and send upstream).
--replace "includedir = join_paths(prefixdir, get_option('includedir'))" \ # already fixed in f00929ad622c978f8ad83590a15a765b4beecac9: (u)mount
"includedir = '$dev/include'" \ for i in src/remount-fs/remount-fs.c src/core/mount.c src/core/swap.c src/fsck/fsck.c units/emergency.service.in units/rescue.service.in src/journal/cat.c src/core/shutdown.c src/nspawn/nspawn.c src/shared/generator.c; do
--replace "libdir = join_paths(prefixdir, get_option('libdir'))" \ test -e $i
"libdir = '$lib/lib'" substituteInPlace $i \
--replace /usr/bin/getent ${getent}/bin/getent \
--replace /sbin/swapon ${utillinux.bin}/sbin/swapon \
--replace /sbin/swapoff ${utillinux.bin}/sbin/swapoff \
--replace /sbin/fsck ${utillinux.bin}/sbin/fsck \
--replace /bin/echo ${coreutils}/bin/echo \
--replace /bin/cat ${coreutils}/bin/cat \
--replace /sbin/sulogin ${utillinux.bin}/sbin/sulogin \
--replace /usr/lib/systemd/systemd-fsck $out/lib/systemd/systemd-fsck \
--replace /bin/plymouth /run/current-system/sw/bin/plymouth # To avoid dependency
done
export LC_ALL="en_US.UTF-8"; for i in tools/xml_helper.py tools/make-directive-index.py tools/make-man-index.py test/sys-script.py; do
# FIXME: patch this in systemd properly (and send upstream). substituteInPlace $i \
# already fixed in f00929ad622c978f8ad83590a15a765b4beecac9: (u)mount --replace "#!/usr/bin/env python" "#!${pythonLxmlEnv}/bin/python"
for i in src/remount-fs/remount-fs.c src/core/mount.c src/core/swap.c src/fsck/fsck.c units/emergency.service.in units/rescue.service.in src/journal/cat.c src/core/shutdown.c src/nspawn/nspawn.c src/shared/generator.c; do done
test -e $i
substituteInPlace $i \
--replace /usr/bin/getent ${getent}/bin/getent \
--replace /sbin/swapon ${utillinux.bin}/sbin/swapon \
--replace /sbin/swapoff ${utillinux.bin}/sbin/swapoff \
--replace /sbin/fsck ${utillinux.bin}/sbin/fsck \
--replace /bin/echo ${coreutils}/bin/echo \
--replace /bin/cat ${coreutils}/bin/cat \
--replace /sbin/sulogin ${utillinux.bin}/sbin/sulogin \
--replace /usr/lib/systemd/systemd-fsck $out/lib/systemd/systemd-fsck \
--replace /bin/plymouth /run/current-system/sw/bin/plymouth # To avoid dependency
done
for i in tools/xml_helper.py tools/make-directive-index.py tools/make-man-index.py test/sys-script.py; do for i in src/basic/generate-gperfs.py src/resolve/generate-dns_type-gperf.py src/test/generate-sym-test.py ; do
substituteInPlace $i \ substituteInPlace $i \
--replace "#!/usr/bin/env python" "#!${pythonLxmlEnv}/bin/python" --replace "#!/usr/bin/env python" "#!${python3Packages.python}/bin/python"
done done
for i in src/basic/generate-gperfs.py src/resolve/generate-dns_type-gperf.py src/test/generate-sym-test.py ; do substituteInPlace src/journal/catalog.c \
substituteInPlace $i \ --replace /usr/lib/systemd/catalog/ $out/lib/systemd/catalog/
--replace "#!/usr/bin/env python" "#!${python3Packages.python}/bin/python" '';
done
substituteInPlace src/journal/catalog.c \ # These defines are overridden by CFLAGS and would trigger annoying
--replace /usr/lib/systemd/catalog/ $out/lib/systemd/catalog/ # warning messages
''; postConfigure = ''
substituteInPlace config.h \
--replace "POLKIT_AGENT_BINARY_PATH" "_POLKIT_AGENT_BINARY_PATH" \
--replace "SYSTEMD_BINARY_PATH" "_SYSTEMD_BINARY_PATH" \
--replace "SYSTEMD_CGROUP_AGENT_PATH" "_SYSTEMD_CGROUP_AGENT_PATH"
'';
# These defines are overridden by CFLAGS and would trigger annoying hardeningDisable = [ "stackprotector" ];
# warning messages
postConfigure = ''
substituteInPlace config.h \
--replace "POLKIT_AGENT_BINARY_PATH" "_POLKIT_AGENT_BINARY_PATH" \
--replace "SYSTEMD_BINARY_PATH" "_SYSTEMD_BINARY_PATH" \
--replace "SYSTEMD_CGROUP_AGENT_PATH" "_SYSTEMD_CGROUP_AGENT_PATH"
'';
hardeningDisable = [ "stackprotector" ]; NIX_CFLAGS_COMPILE =
[ # Can't say ${polkit.bin}/bin/pkttyagent here because that would
# lead to a cyclic dependency.
"-UPOLKIT_AGENT_BINARY_PATH" "-DPOLKIT_AGENT_BINARY_PATH=\"/run/current-system/sw/bin/pkttyagent\""
NIX_CFLAGS_COMPILE = # Set the release_agent on /sys/fs/cgroup/systemd to the
[ # Can't say ${polkit.bin}/bin/pkttyagent here because that would # currently running systemd (/run/current-system/systemd) so
# lead to a cyclic dependency. # that we don't use an obsolete/garbage-collected release agent.
"-UPOLKIT_AGENT_BINARY_PATH" "-DPOLKIT_AGENT_BINARY_PATH=\"/run/current-system/sw/bin/pkttyagent\"" "-USYSTEMD_CGROUP_AGENT_PATH" "-DSYSTEMD_CGROUP_AGENT_PATH=\"/run/current-system/systemd/lib/systemd/systemd-cgroups-agent\""
# Set the release_agent on /sys/fs/cgroup/systemd to the "-USYSTEMD_BINARY_PATH" "-DSYSTEMD_BINARY_PATH=\"/run/current-system/systemd/lib/systemd/systemd\""
# currently running systemd (/run/current-system/systemd) so ];
# that we don't use an obsolete/garbage-collected release agent.
"-USYSTEMD_CGROUP_AGENT_PATH" "-DSYSTEMD_CGROUP_AGENT_PATH=\"/run/current-system/systemd/lib/systemd/systemd-cgroups-agent\""
"-USYSTEMD_BINARY_PATH" "-DSYSTEMD_BINARY_PATH=\"/run/current-system/systemd/lib/systemd/systemd\"" postInstall = ''
]; # sysinit.target: Don't depend on
# systemd-tmpfiles-setup.service. This interferes with NixOps's
# send-keys feature (since sshd.service depends indirectly on
# sysinit.target).
mv $out/lib/systemd/system/sysinit.target.wants/systemd-tmpfiles-setup-dev.service $out/lib/systemd/system/multi-user.target.wants/
postInstall = mkdir -p $out/example/systemd
'' mv $out/lib/{modules-load.d,binfmt.d,sysctl.d,tmpfiles.d} $out/example
# sysinit.target: Don't depend on mv $out/lib/systemd/{system,user} $out/example/systemd
# systemd-tmpfiles-setup.service. This interferes with NixOps's
# send-keys feature (since sshd.service depends indirectly on
# sysinit.target).
mv $out/lib/systemd/system/sysinit.target.wants/systemd-tmpfiles-setup-dev.service $out/lib/systemd/system/multi-user.target.wants/
mkdir -p $out/example/systemd rm -rf $out/etc/systemd/system
mv $out/lib/{modules-load.d,binfmt.d,sysctl.d,tmpfiles.d} $out/example
mv $out/lib/systemd/{system,user} $out/example/systemd
rm -rf $out/etc/systemd/system # Install SysV compatibility commands.
mkdir -p $out/sbin
ln -s $out/lib/systemd/systemd $out/sbin/telinit
for i in init halt poweroff runlevel reboot shutdown; do
ln -s $out/bin/systemctl $out/sbin/$i
done
# Install SysV compatibility commands. # Fix reference to /bin/false in the D-Bus services.
mkdir -p $out/sbin for i in $out/share/dbus-1/system-services/*.service; do
ln -s $out/lib/systemd/systemd $out/sbin/telinit substituteInPlace $i --replace /bin/false ${coreutils}/bin/false
for i in init halt poweroff runlevel reboot shutdown; do done
ln -s $out/bin/systemctl $out/sbin/$i
done
# Fix reference to /bin/false in the D-Bus services. rm -rf $out/etc/rpm
for i in $out/share/dbus-1/system-services/*.service; do
substituteInPlace $i --replace /bin/false ${coreutils}/bin/false
done
rm -rf $out/etc/rpm # "kernel-install" shouldn't be used on NixOS.
find $out -name "*kernel-install*" -exec rm {} \;
# "kernel-install" shouldn't be used on NixOS. # Keep only libudev and libsystemd in the lib output.
find $out -name "*kernel-install*" -exec rm {} \; mkdir -p $out/lib
mv $lib/lib/security $lib/lib/libnss* $out/lib/
''; # */
# Keep only libudev and libsystemd in the lib output. enableParallelBuilding = true;
mkdir -p $out/lib
mv $lib/lib/security $lib/lib/libnss* $out/lib/
''; # */
enableParallelBuilding = true; # The rpath to the shared systemd library is not added by meson. The
# functionality was removed by a nixpkgs patch because it would overwrite
# the existing rpath.
postFixup = ''
sharedLib=libsystemd-shared-${version}.so
for prog in `find $out -type f -executable`; do
(patchelf --print-needed $prog | grep $sharedLib > /dev/null) && (
patchelf --set-rpath `patchelf --print-rpath $prog`:"$out/lib/systemd" $prog
) || true
done
'';
# The rpath to the shared systemd library is not added by meson. The # The interface version prevents NixOS from switching to an
# functionality was removed by a nixpkgs patch because it would overwrite # incompatible systemd at runtime. (Switching across reboots is
# the existing rpath. # fine, of course.) It should be increased whenever systemd changes
postFixup = '' # in a backwards-incompatible way. If the interface version of two
sharedLib=libsystemd-shared-${version}.so # systemd builds is the same, then we can switch between them at
for prog in `find $out -type f -executable`; do # runtime; otherwise we can't and we need to reboot.
(patchelf --print-needed $prog | grep $sharedLib > /dev/null) && ( passthru.interfaceVersion = 2;
patchelf --set-rpath `patchelf --print-rpath $prog`:"$out/lib/systemd" $prog
) || true
done
'';
# The interface version prevents NixOS from switching to an meta = {
# incompatible systemd at runtime. (Switching across reboots is homepage = http://www.freedesktop.org/wiki/Software/systemd;
# fine, of course.) It should be increased whenever systemd changes description = "A system and service manager for Linux";
# in a backwards-incompatible way. If the interface version of two platforms = stdenv.lib.platforms.linux;
# systemd builds is the same, then we can switch between them at maintainers = [ stdenv.lib.maintainers.eelco ];
# runtime; otherwise we can't and we need to reboot. };
passthru.interfaceVersion = 2;
meta = {
homepage = http://www.freedesktop.org/wiki/Software/systemd;
description = "A system and service manager for Linux";
platforms = stdenv.lib.platforms.linux;
maintainers = [ stdenv.lib.maintainers.eelco ];
};
} }