diff options
25 files changed, 104 insertions, 45 deletions
diff --git a/lib/systems/doubles.nix b/lib/systems/doubles.nix index c6618083ce7..adc454406b8 100644 --- a/lib/systems/doubles.nix +++ b/lib/systems/doubles.nix @@ -44,5 +44,5 @@ in rec { openbsd = filterDoubles predicates.isOpenBSD; unix = filterDoubles predicates.isUnix; - mesaPlatforms = ["i686-linux" "x86_64-linux" "x86_64-darwin" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux"]; + mesaPlatforms = ["i686-linux" "x86_64-linux" "x86_64-darwin" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "powerpc64le-linux"]; } diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix index 31772ba0054..3828b2f84c6 100644 --- a/lib/systems/examples.nix +++ b/lib/systems/examples.nix @@ -8,6 +8,14 @@ rec { # # Linux # + powernv = { + config = "powerpc64le-unknown-linux-gnu"; + platform = platforms.powernv; + }; + musl-power = { + config = "powerpc64le-unknown-linux-musl"; + platform = platforms.powernv; + }; sheevaplug = rec { config = "armv5tel-unknown-linux-gnueabi"; diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix index 0c70f2a7cd5..ac34ed45695 100644 --- a/lib/systems/inspect.nix +++ b/lib/systems/inspect.nix @@ -11,6 +11,7 @@ rec { isi686 = { cpu = cpuTypes.i686; }; isx86_64 = { cpu = cpuTypes.x86_64; }; isPowerPC = { cpu = cpuTypes.powerpc; }; + isPower = { cpu = { family = "power"; }; }; isx86 = { cpu = { family = "x86"; }; }; isAarch32 = { cpu = { family = "arm"; bits = 32; }; }; isAarch64 = { cpu = { family = "arm"; bits = 64; }; }; diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix index b07396a9dfd..7ee3479c333 100644 --- a/lib/systems/parse.nix +++ b/lib/systems/parse.nix @@ -90,6 +90,8 @@ rec { mips64el = { bits = 64; significantByte = littleEndian; family = "mips"; }; powerpc = { bits = 32; significantByte = bigEndian; family = "power"; }; + powerpc64 = { bits = 64; significantByte = bigEndian; family = "power"; }; + powerpc64le = { bits = 64; significantByte = littleEndian; family = "power"; }; riscv32 = { bits = 32; significantByte = littleEndian; family = "riscv"; }; riscv64 = { bits = 64; significantByte = littleEndian; family = "riscv"; }; diff --git a/lib/systems/platforms.nix b/lib/systems/platforms.nix index 8027f6b9fc1..56783d99e3d 100644 --- a/lib/systems/platforms.nix +++ b/lib/systems/platforms.nix @@ -20,6 +20,22 @@ rec { kernelAutoModules = false; }; + powernv = { + name = "PowerNV"; + kernelArch = "powerpc"; + kernelBaseConfig = "powernv_defconfig"; + kernelTarget = "zImage"; + kernelInstallTarget = "install"; + kernelFile = "vmlinux"; + kernelAutoModules = true; + # avoid driver/FS trouble arising from unusual page size + kernelExtraConfig = '' + PPC_64K_PAGES n + PPC_4K_PAGES y + IPV6 y + ''; + }; + ## ## ARM ## @@ -458,5 +474,6 @@ rec { "armv7l-linux" = armv7l-hf-multiplatform; "aarch64-linux" = aarch64-multiplatform; "mipsel-linux" = fuloong2f_n32; + "powerpc64le-linux" = powernv; }.${system} or pcBase; } diff --git a/pkgs/build-support/bintools-wrapper/default.nix b/pkgs/build-support/bintools-wrapper/default.nix index 3635b0ef046..7948f726c62 100644 --- a/pkgs/build-support/bintools-wrapper/default.nix +++ b/pkgs/build-support/bintools-wrapper/default.nix @@ -171,7 +171,7 @@ stdenv.mkDerivation { else if targetPlatform.isWindows then "pe" else "elf" + toString targetPlatform.parsed.cpu.bits; endianPrefix = if targetPlatform.isBigEndian then "big" else "little"; - sep = optionalString (!targetPlatform.isMips) "-"; + sep = optionalString (!targetPlatform.isMips && !targetPlatform.isPower) "-"; arch = /**/ if targetPlatform.isAarch64 then endianPrefix + "aarch64" else if targetPlatform.isAarch32 then endianPrefix + "arm" @@ -183,7 +183,7 @@ stdenv.mkDerivation { "mips64" = "btsmip"; "mips64el" = "ltsmip"; }.${targetPlatform.parsed.cpu.name} - else if targetPlatform.isPowerPC then "powerpc" + else if targetPlatform.isPower then if targetPlatform.isBigEndian then "ppc" else "lppc" else if targetPlatform.isSparc then "sparc" else throw "unknown emulation for platform: " + targetPlatform.config; in targetPlatform.platform.bfdEmulation or (fmt + sep + arch); diff --git a/pkgs/build-support/setup-hooks/audit-tmpdir.sh b/pkgs/build-support/setup-hooks/audit-tmpdir.sh index ffaa61f2d80..0f515842ebc 100644 --- a/pkgs/build-support/setup-hooks/audit-tmpdir.sh +++ b/pkgs/build-support/setup-hooks/audit-tmpdir.sh @@ -27,7 +27,7 @@ auditTmpdir() { fi if isScript "$i"; then - if [ -e "$(dirname $i)/.$(basename $i)-wrapped" ]; then + if [ -e "$(dirname "$i")/.$(basename "$i")-wrapped" ]; then if grep -q -F "$TMPDIR" "$i"; then echo "wrapper script $i contains a forbidden reference to $TMPDIR" exit 1 diff --git a/pkgs/development/compilers/gcc/7/default.nix b/pkgs/development/compilers/gcc/7/default.nix index 0c51868aef8..c5541da0790 100644 --- a/pkgs/development/compilers/gcc/7/default.nix +++ b/pkgs/development/compilers/gcc/7/default.nix @@ -54,7 +54,8 @@ let version = "7.3.0"; url = "https://git.busybox.net/buildroot/plain/package/gcc/7.1.0/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02"; sha256 = "0mrvxsdwip2p3l17dscpc1x8vhdsciqw1z5q9i6p5g9yg1cqnmgs"; }) - ++ optional langFortran ../gfortran-driving.patch; + ++ optional langFortran ../gfortran-driving.patch + ++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch; /* Cross-gcc settings (build == host != target) */ crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; diff --git a/pkgs/development/compilers/gcc/8/default.nix b/pkgs/development/compilers/gcc/8/default.nix index fa19e9c533d..5d7be163783 100644 --- a/pkgs/development/compilers/gcc/8/default.nix +++ b/pkgs/development/compilers/gcc/8/default.nix @@ -49,7 +49,8 @@ let version = "8.2.0"; url = "https://git.busybox.net/buildroot/plain/package/gcc/${version}/0900-remove-selftests.patch?id=11271540bfe6adafbc133caf6b5b902a816f5f02"; sha256 = ""; # TODO: uncomment and check hash when available. }) */ - ++ optional langFortran ../gfortran-driving.patch; + ++ optional langFortran ../gfortran-driving.patch + ++ optional (targetPlatform.libc == "musl" && targetPlatform.isPower) ../ppc-musl.patch; /* Cross-gcc settings (build == host != target) */ crossMingw = targetPlatform != hostPlatform && targetPlatform.libc == "msvcrt"; diff --git a/pkgs/development/compilers/gcc/common/platform-flags.nix b/pkgs/development/compilers/gcc/common/platform-flags.nix index 9a6d3f8f620..ba6d5912fe8 100644 --- a/pkgs/development/compilers/gcc/common/platform-flags.nix +++ b/pkgs/development/compilers/gcc/common/platform-flags.nix @@ -10,4 +10,7 @@ in lib.concatLists [ (lib.optional (p ? fpu) "--with-fpu=${p.fpu}") (lib.optional (p ? float) "--with-float=${p.float}") (lib.optional (p ? mode) "--with-mode=${p.mode}") + (lib.optional + (let tp = targetPlatform; in tp.isPower && tp.libc == "glibc" && tp.is64bit && tp.isLittleEndian) + "--with-long-double-128") ] diff --git a/pkgs/development/compilers/gcc/ppc-musl.patch b/pkgs/development/compilers/gcc/ppc-musl.patch new file mode 100644 index 00000000000..bc90888a379 --- /dev/null +++ b/pkgs/development/compilers/gcc/ppc-musl.patch @@ -0,0 +1,18 @@ +diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h +index cbee89140dd..e1f26b0a096 100644 +--- a/gcc/config/rs6000/sysv4.h ++++ b/gcc/config/rs6000/sysv4.h +@@ -996,13 +996,7 @@ ncrtn.o%s" + { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \ + GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, + +-#ifdef LOCAL_INCLUDE_DIR +-#define INCLUDE_DEFAULTS_MUSL_LOCAL \ +- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \ +- { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, +-#else + #define INCLUDE_DEFAULTS_MUSL_LOCAL +-#endif + + #ifdef PREFIX_INCLUDE_DIR + #define INCLUDE_DEFAULTS_MUSL_PREFIX \ diff --git a/pkgs/development/interpreters/perl/default.nix b/pkgs/development/interpreters/perl/default.nix index 765487fc650..ec4f971eeef 100644 --- a/pkgs/development/interpreters/perl/default.nix +++ b/pkgs/development/interpreters/perl/default.nix @@ -97,12 +97,6 @@ let sed -i 's,\(libswanted.*\)pthread,\1,g' Configure ''; - preBuild = optionalString (!(stdenv ? cc && stdenv.cc.nativeTools)) - '' - # Make Cwd work on NixOS (where we don't have a /bin/pwd). - substituteInPlace dist/PathTools/Cwd.pm --replace "'/bin/pwd'" "'$(type -tP pwd)'" - ''; - setupHook = ./setup-hook.sh; passthru.libPrefix = "lib/perl5/site_perl"; diff --git a/pkgs/development/libraries/kerberos/krb5.nix b/pkgs/development/libraries/kerberos/krb5.nix index 8f9c75c441d..4e3ba399cc3 100644 --- a/pkgs/development/libraries/kerberos/krb5.nix +++ b/pkgs/development/libraries/kerberos/krb5.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, pkgconfig, perl, yacc, bootstrap_cmds -, openssl, openldap, libedit +, openssl, openldap, libedit, keyutils # Extra Arguments , type ? "" @@ -40,6 +40,7 @@ stdenv.mkDerivation rec { # Provides the mig command used by the build scripts ++ optional stdenv.isDarwin bootstrap_cmds; buildInputs = [ openssl ] + ++ optionals (stdenv.hostPlatform.isLinux) [ keyutils ] ++ optionals (!libOnly) [ openldap libedit ]; preConfigure = "cd ./src"; diff --git a/pkgs/development/libraries/libical/default.nix b/pkgs/development/libraries/libical/default.nix index 1efc16b2bf5..718233b0ffa 100644 --- a/pkgs/development/libraries/libical/default.nix +++ b/pkgs/development/libraries/libical/default.nix @@ -3,7 +3,7 @@ stdenv.mkDerivation rec { name = "libical-${version}"; - version = "3.0.3"; + version = "3.0.4"; outputs = [ "out" "dev" "devdoc" ]; @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { owner = "libical"; repo = "libical"; rev = "v${version}"; - sha256 = "0dhlfn6n136di4fbqd74gdaibyh5zz1vac5x8ii3bjc2d5h7hw8h"; + sha256 = "1qgpbdjd6jsivw87v5w52268kqp0rv780kli8cgb3ndlv592wlbm"; }; nativeBuildInputs = [ diff --git a/pkgs/development/libraries/wayland/protocols.nix b/pkgs/development/libraries/wayland/protocols.nix index 7b619ebb35e..54fa9447775 100644 --- a/pkgs/development/libraries/wayland/protocols.nix +++ b/pkgs/development/libraries/wayland/protocols.nix @@ -4,11 +4,11 @@ stdenv.mkDerivation rec { name = "wayland-protocols-${version}"; - version = "1.15"; + version = "1.16"; src = fetchurl { url = "https://wayland.freedesktop.org/releases/${name}.tar.xz"; - sha256 = "1qlyf9cllr2p339xxplznh023qcwj5iisp02ikx7ps349dx75fys"; + sha256 = "1icqikvhgv9kcf8lcqml3w9fb8q3igr4c3471jb6mlyw3yaqa53b"; }; nativeBuildInputs = [ pkgconfig ]; diff --git a/pkgs/os-specific/linux/iproute/default.nix b/pkgs/os-specific/linux/iproute/default.nix index d8197edc46c..f1abf0fbe92 100644 --- a/pkgs/os-specific/linux/iproute/default.nix +++ b/pkgs/os-specific/linux/iproute/default.nix @@ -4,11 +4,11 @@ stdenv.mkDerivation rec { name = "iproute2-${version}"; - version = "4.17.0"; + version = "4.18.0"; src = fetchurl { url = "mirror://kernel/linux/utils/net/iproute2/${name}.tar.xz"; - sha256 = "0vmynikcamfhakvwyk5dsffy0ymgi5mdqiwybdvqfn1ijaq93abg"; + sha256 = "0ida5njr9nacg6ym3rjvl3cc9czw0hn4akhzbqf8f4zmjl6cgrm9"; }; preConfigure = '' diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix index 80721c4b401..33aa22abaf2 100644 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ b/pkgs/os-specific/linux/kernel/manual-config.nix @@ -98,6 +98,7 @@ let sed -i "$mf" -e 's|/usr/bin/||g ; s|/bin/||g ; s|/sbin/||g' done sed -i Makefile -e 's|= depmod|= ${buildPackages.kmod}/bin/depmod|' + sed -i scripts/ld-version.sh -e "s|/usr/bin/awk|${buildPackages.gawk}/bin/awk|" ''; configurePhase = '' @@ -145,9 +146,12 @@ let ++ optional installsFirmware "INSTALL_FW_PATH=$(out)/lib/firmware"; # Some image types need special install targets (e.g. uImage is installed with make uinstall) - installTargets = [ (if platform.kernelTarget == "uImage" then "uinstall" else - if platform.kernelTarget == "zImage" || platform.kernelTarget == "Image.gz" then "zinstall" else - "install") ]; + installTargets = [ ( + if platform ? kernelInstallTarget then platform.kernelInstallTarget + else if platform.kernelTarget == "uImage" then "uinstall" + else if platform.kernelTarget == "zImage" || platform.kernelTarget == "Image.gz" then "zinstall" + else "install" + ) ]; postInstall = (optionalString installsFirmware '' mkdir -p $out/lib/firmware diff --git a/pkgs/os-specific/linux/musl/default.nix b/pkgs/os-specific/linux/musl/default.nix index d6936ccd650..e586539db08 100644 --- a/pkgs/os-specific/linux/musl/default.nix +++ b/pkgs/os-specific/linux/musl/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl +{ stdenv, lib, fetchurl, hostPlatform , linuxHeaders ? null , useBSDCompatHeaders ? true }: @@ -61,11 +61,12 @@ stdenv.mkDerivation rec { configureFlagsArray+=("--syslibdir=$out/lib") ''; + CFLAGS="-fstack-protector-strong" + lib.optionalString hostPlatform.isPower " -mlong-double-64"; + configureFlags = [ "--enable-shared" "--enable-static" "--enable-debug" - "CFLAGS=-fstack-protector-strong" "--enable-wrapper=all" ]; diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix index 6f94929ffd6..c9e8dd04c47 100644 --- a/pkgs/servers/x11/xorg/default.nix +++ b/pkgs/servers/x11/xorg/default.nix @@ -740,11 +740,11 @@ let }) // {inherit windowswmproto libX11 libXext xextproto ;}; libX11 = (mkDerivation "libX11" { - name = "libX11-1.6.5"; + name = "libX11-1.6.6"; builder = ./builder.sh; src = fetchurl { - url = mirror://xorg/individual/lib/libX11-1.6.5.tar.bz2; - sha256 = "0pa3cfp6h9rl2vxmkph65250gfqyki0ccqyaan6bl9d25gdr0f2d"; + url = mirror://xorg/individual/lib/libX11-1.6.6.tar.bz2; + sha256 = "0ks1mxlda7nxfmffihi15ljsn50q8dknl33i2xag8xzc80fiizk5"; }; nativeBuildInputs = [ pkgconfig ]; buildInputs = [ inputproto kbproto libxcb xextproto xf86bigfontproto xproto xtrans ]; diff --git a/pkgs/servers/x11/xorg/tarballs-7.7.list b/pkgs/servers/x11/xorg/tarballs-7.7.list index 70f3a35505e..6e67e8eb6e1 100644 --- a/pkgs/servers/x11/xorg/tarballs-7.7.list +++ b/pkgs/servers/x11/xorg/tarballs-7.7.list @@ -60,7 +60,7 @@ mirror://xorg/individual/lib/libICE-1.0.9.tar.bz2 mirror://xorg/individual/lib/libpciaccess-0.14.tar.bz2 mirror://xorg/individual/lib/libSM-1.2.2.tar.bz2 mirror://xorg/X11R7.7/src/everything/libWindowsWM-1.0.1.tar.bz2 -mirror://xorg/individual/lib/libX11-1.6.5.tar.bz2 +mirror://xorg/individual/lib/libX11-1.6.6.tar.bz2 mirror://xorg/individual/lib/libXau-1.0.8.tar.bz2 mirror://xorg/individual/lib/libXaw-1.0.13.tar.bz2 mirror://xorg/individual/lib/libXcomposite-0.4.4.tar.bz2 diff --git a/pkgs/stdenv/default.nix b/pkgs/stdenv/default.nix index 203cf545940..210e0439c0b 100644 --- a/pkgs/stdenv/default.nix +++ b/pkgs/stdenv/default.nix @@ -47,6 +47,7 @@ in "aarch64-linux" = stagesLinux; "mipsel-linux" = stagesLinux; "powerpc-linux" = /* stagesLinux */ stagesNative; + "powerpc64le-linux" = stagesLinux; "x86_64-darwin" = stagesDarwin; "x86_64-solaris" = stagesNix; "i686-cygwin" = stagesNative; diff --git a/pkgs/stdenv/linux/bootstrap-tools/scripts/unpack-bootstrap-tools.sh b/pkgs/stdenv/linux/bootstrap-tools/scripts/unpack-bootstrap-tools.sh index 85e74aea89e..64583f80fa8 100644 --- a/pkgs/stdenv/linux/bootstrap-tools/scripts/unpack-bootstrap-tools.sh +++ b/pkgs/stdenv/linux/bootstrap-tools/scripts/unpack-bootstrap-tools.sh @@ -9,6 +9,9 @@ echo Patching the bootstrap tools... if test -f $out/lib/ld.so.?; then # MIPS case LD_BINARY=$out/lib/ld.so.? +elif test -f $out/lib/ld64.so.?; then + # ppc64(le) + LD_BINARY=$out/lib/ld64.so.? else # i686, x86_64 and armv5tel LD_BINARY=$out/lib/ld-*so.? diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index ef46bdeb213..c7fc2ebac35 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -16,11 +16,13 @@ "armv7l-linux" = import ./bootstrap-files/armv7l.nix; "aarch64-linux" = import ./bootstrap-files/aarch64.nix; "mipsel-linux" = import ./bootstrap-files/loongson2f.nix; + "powerpc64le-linux" = import ./bootstrap-files/ppc64le.nix; }; "musl" = { "aarch64-linux" = import ./bootstrap-files/aarch64-musl.nix; "armv6l-linux" = import ./bootstrap-files/armv6l-musl.nix; "x86_64-linux" = import ./bootstrap-files/x86_64-musl.nix; + "powerpc64le-linux" = import ./bootstrap-files/ppc64le-musl.nix; }; }; archLookupTable = table.${localSystem.libc} @@ -263,7 +265,7 @@ in # because gcc (since JAR support) already depends on zlib, and # then if we already have a zlib we want to use that for the # other purposes (binutils and top-level pkgs) too. - inherit (prevStage) gettext gnum4 bison gmp perl zlib linuxHeaders; + inherit (prevStage) gettext gnum4 bison gmp perl texinfo zlib linuxHeaders; ${localSystem.libc} = getLibc prevStage; binutils = super.binutils.override { # Don't use stdenv's shell but our own @@ -344,7 +346,6 @@ in concatMap (p: [ (getBin p) (getLib p) ]) [ gzip bzip2 xz bash binutils.bintools coreutils diffutils findutils gawk gnumake gnused gnutar gnugrep gnupatch patchelf ed paxctl - texinfo ] # Library dependencies ++ map getLib ( @@ -363,7 +364,7 @@ in inherit (prevStage) gzip bzip2 xz bash coreutils diffutils findutils gawk gnumake gnused gnutar gnugrep gnupatch patchelf - attr acl paxctl zlib pcre texinfo; + attr acl paxctl zlib pcre; ${localSystem.libc} = getLibc prevStage; } // lib.optionalAttrs (super.targetPlatform == localSystem) { # Need to get rid of these when cross-compiling. diff --git a/pkgs/stdenv/linux/make-bootstrap-tools-cross.nix b/pkgs/stdenv/linux/make-bootstrap-tools-cross.nix index 0dd65bd2478..d1ee317a2bc 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools-cross.nix +++ b/pkgs/stdenv/linux/make-bootstrap-tools-cross.nix @@ -5,16 +5,18 @@ let localSystem = { inherit system; }; inherit crossSystem; }; - -in with (import ../../../lib).systems.examples; { - armv5tel = make sheevaplug; - scaleway = make scaleway-c1; - pogoplug4 = make pogoplug4; - armv6l = make raspberryPi; - armv7l = make armv7l-hf-multiplatform; - aarch64 = make aarch64-multiplatform; - x86_64-musl = make musl64; - armv6l-musl = make muslpi; - aarch64-musl = make aarch64-multiplatform-musl; - riscv64 = make riscv64; -} + lib = import ../../../lib; +in lib.mapAttrs (n: make) (with lib.systems.examples; { + armv5tel = sheevaplug; + scaleway = scaleway-c1; + pogoplug4 = pogoplug4; + armv6l = raspberryPi; + armv7l = armv7l-hf-multiplatform; + aarch64 = aarch64-multiplatform; + x86_64-musl = musl64; + armv6l-musl = muslpi; + aarch64-musl = aarch64-multiplatform-musl; + riscv64 = riscv64; + powerpc64le = powernv; + powerpc64le-musl = musl-power; +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 302ff26ed40..35f79a88aa0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14231,7 +14231,8 @@ with pkgs; kernel = null; # dpdk modules are in linuxPackages.dpdk.kmod }; - keyutils = callPackage ../os-specific/linux/keyutils { }; + # Using fetchurlBoot because this is used by kerberos (on Linux), which curl depends on + keyutils = callPackage ../os-specific/linux/keyutils { fetchurl = fetchurlBoot; }; libselinux = callPackage ../os-specific/linux/libselinux { }; |