diff options
author | Jan Malakhovski <oxij@oxij.org> | 2018-03-10 14:41:34 +0000 |
---|---|---|
committer | Jan Malakhovski <oxij@oxij.org> | 2018-03-10 20:38:13 +0000 |
commit | 7079e744d4666db3af186899fe2fc0ef3cbeb842 (patch) | |
tree | d65e951be75dab998ecd2e8337e1c30e7722e28c /pkgs/os-specific/linux/systemd | |
parent | 4eec6bc9c9cafac55dbf774a2fd30da7e5a79cc4 (diff) | |
parent | ddddca5c2fe1c93369404979ac194a1bc5d5fbaf (diff) | |
download | nixlib-7079e744d4666db3af186899fe2fc0ef3cbeb842.tar nixlib-7079e744d4666db3af186899fe2fc0ef3cbeb842.tar.gz nixlib-7079e744d4666db3af186899fe2fc0ef3cbeb842.tar.bz2 nixlib-7079e744d4666db3af186899fe2fc0ef3cbeb842.tar.lz nixlib-7079e744d4666db3af186899fe2fc0ef3cbeb842.tar.xz nixlib-7079e744d4666db3af186899fe2fc0ef3cbeb842.tar.zst nixlib-7079e744d4666db3af186899fe2fc0ef3cbeb842.zip |
Merge branch 'master' into staging
Resolved the following conflicts (by carefully applying patches from the both branches since the fork point): pkgs/development/libraries/epoxy/default.nix pkgs/development/libraries/gtk+/3.x.nix pkgs/development/python-modules/asgiref/default.nix pkgs/development/python-modules/daphne/default.nix pkgs/os-specific/linux/systemd/default.nix
Diffstat (limited to 'pkgs/os-specific/linux/systemd')
-rw-r--r-- | pkgs/os-specific/linux/systemd/default.nix | 425 |
1 files changed, 210 insertions, 215 deletions
diff --git a/pkgs/os-specific/linux/systemd/default.nix b/pkgs/os-specific/linux/systemd/default.nix index 915613cb0d2d..1e4df0d3f0ef 100644 --- a/pkgs/os-specific/linux/systemd/default.nix +++ b/pkgs/os-specific/linux/systemd/default.nix @@ -17,219 +17,214 @@ assert stdenv.isLinux; let pythonLxmlEnv = buildPackages.python3Packages.python.withPackages ( ps: with ps; [ python3Packages.lxml ]); -in - - stdenv.mkDerivation rec { - version = "237"; - name = "systemd-${version}"; - - src = fetchFromGitHub { - 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. - glibcLocales - patchelf getent m4 - ]; - buildInputs = - [ linuxHeaders libcap kmod xz pam acl - /* cryptsetup */ libuuid glib libgcrypt libgpgerror libidn2 - libmicrohttpd kexectools libseccomp libffi audit lz4 bzip2 libapparmor - iptables gnu-efi - # This is actually native, but we already pull it from buildPackages - pythonLxmlEnv - ]; - - #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" - - (if stdenv.isArm || !hostPlatform.isEfi then "-Dgnu-efi=false" else "-Dgnu-efi=true") - "-Defi-libdir=${toString gnu-efi}/lib" - "-Defi-includedir=${toString gnu-efi}/include/efi" - "-Defi-ldsdir=${toString gnu-efi}/lib" - - "-Dsysvinit-path=" - "-Dsysvrcnd-path=" - - "-Dkill-path=${coreutils}/bin/kill" - "-Dkmod-path=${kmod}/bin/kmod" - "-Dsulogin-path=${utillinux}/bin/sulogin" - "-Dmount-path=${utillinux}/bin/mount" - "-Dumount-path=${utillinux}/bin/umount" - ]; - - preConfigure = - '' - 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) - - # FIXME: Why aren't includedir and libdir picked up from mesonFlags while other options are? - substituteInPlace meson.build \ - --replace "includedir = join_paths(prefixdir, get_option('includedir'))" \ - "includedir = '$dev/include'" \ - --replace "libdir = join_paths(prefixdir, get_option('libdir'))" \ - "libdir = '$lib/lib'" - - export LC_ALL="en_US.UTF-8"; - # FIXME: patch this in systemd properly (and send upstream). - # already fixed in f00929ad622c978f8ad83590a15a765b4beecac9: (u)mount - 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 - 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 - substituteInPlace $i \ - --replace "#!/usr/bin/env python" "#!${pythonLxmlEnv}/bin/python" - done - - for i in src/basic/generate-gperfs.py src/resolve/generate-dns_type-gperf.py src/test/generate-sym-test.py ; do - substituteInPlace $i \ - --replace "#!/usr/bin/env python" "#!${buildPackages.python3Packages.python}/bin/python" - done - - substituteInPlace src/journal/catalog.c \ - --replace /usr/lib/systemd/catalog/ $out/lib/systemd/catalog/ - ''; - - # These defines are overridden by CFLAGS and would trigger annoying - # 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\"" - - # Set the release_agent on /sys/fs/cgroup/systemd to the - # 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/ - - mkdir -p $out/example/systemd - 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 - - # Fix reference to /bin/false in the D-Bus services. - 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 {} \; - - # Keep only libudev and libsystemd in the lib output. - 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 interface version prevents NixOS from switching to an - # incompatible systemd at runtime. (Switching across reboots is - # fine, of course.) It should be increased whenever systemd changes - # in a backwards-incompatible way. If the interface version of two - # systemd builds is the same, then we can switch between them at - # 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 ]; - }; +in stdenv.mkDerivation rec { + version = "237"; + name = "systemd-${version}"; + + src = fetchFromGitHub { + owner = "NixOS"; + repo = "systemd"; + rev = "98067cc806ae0d2759cdd2334f230cd8548e5317"; + sha256 = "077svfs2xy3g30s62q69wcv5pb9vfhzh8i7lhfri73vvhwbpzd5q"; + }; + + 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. + glibcLocales + patchelf getent m4 + ]; + buildInputs = + [ linuxHeaders libcap kmod xz pam acl + /* cryptsetup */ libuuid glib libgcrypt libgpgerror libidn2 + libmicrohttpd kexectools libseccomp libffi audit lz4 bzip2 libapparmor + iptables gnu-efi + # This is actually native, but we already pull it from buildPackages + pythonLxmlEnv + ]; + + #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" + + (if stdenv.isArm || !hostPlatform.isEfi then "-Dgnu-efi=false" else "-Dgnu-efi=true") + "-Defi-libdir=${toString gnu-efi}/lib" + "-Defi-includedir=${toString gnu-efi}/include/efi" + "-Defi-ldsdir=${toString gnu-efi}/lib" + + "-Dsysvinit-path=" + "-Dsysvrcnd-path=" + + "-Dkill-path=${coreutils}/bin/kill" + "-Dkmod-path=${kmod}/bin/kmod" + "-Dsulogin-path=${utillinux}/bin/sulogin" + "-Dmount-path=${utillinux}/bin/mount" + "-Dumount-path=${utillinux}/bin/umount" + ]; + + preConfigure = '' + 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+=(-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? + substituteInPlace meson.build \ + --replace "includedir = join_paths(prefixdir, get_option('includedir'))" \ + "includedir = '$dev/include'" \ + --replace "libdir = join_paths(prefixdir, get_option('libdir'))" \ + "libdir = '$lib/lib'" + + export LC_ALL="en_US.UTF-8"; + # FIXME: patch this in systemd properly (and send upstream). + # already fixed in f00929ad622c978f8ad83590a15a765b4beecac9: (u)mount + 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 + 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 + substituteInPlace $i \ + --replace "#!/usr/bin/env python" "#!${pythonLxmlEnv}/bin/python" + done + + for i in src/basic/generate-gperfs.py src/resolve/generate-dns_type-gperf.py src/test/generate-sym-test.py ; do + substituteInPlace $i \ + --replace "#!/usr/bin/env python" "#!${buildPackages.python3Packages.python}/bin/python" + done + + substituteInPlace src/journal/catalog.c \ + --replace /usr/lib/systemd/catalog/ $out/lib/systemd/catalog/ + ''; + + # These defines are overridden by CFLAGS and would trigger annoying + # 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\"" + + # Set the release_agent on /sys/fs/cgroup/systemd to the + # 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/ + + mkdir -p $out/example/systemd + 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 + + # Fix reference to /bin/false in the D-Bus services. + 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 {} \; + + # Keep only libudev and libsystemd in the lib output. + 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 interface version prevents NixOS from switching to an + # incompatible systemd at runtime. (Switching across reboots is + # fine, of course.) It should be increased whenever systemd changes + # in a backwards-incompatible way. If the interface version of two + # systemd builds is the same, then we can switch between them at + # 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 ]; + }; } |