diff options
Diffstat (limited to 'pkgs/os-specific/bsd')
91 files changed, 1123 insertions, 575 deletions
diff --git a/pkgs/os-specific/bsd/freebsd/default.nix b/pkgs/os-specific/bsd/freebsd/default.nix index e56c70c1d32d0..cfe6080b020a0 100644 --- a/pkgs/os-specific/bsd/freebsd/default.nix +++ b/pkgs/os-specific/bsd/freebsd/default.nix @@ -3,7 +3,6 @@ makeScopeWithSplicing', generateSplicesForMkScope, callPackage, - crossLibcStdenv, attributePathToSplice ? [ "freebsd" ], branch ? "release/14.0.0", }: @@ -24,41 +23,30 @@ let Branches can be selected by overriding the `branch` attribute on the freebsd package set. ''; - # `./package-set.nix` should never know the name of the package set we - # are constructing; just this function is allowed to know that. This - # is why we: - # - # - do the splicing for cross compilation here - # - # - construct the *anonymized* `buildFreebsd` attribute to be passed - # to `./package-set.nix`. - callFreeBSDWithAttrs = - extraArgs: - let - # we do not include the branch in the splice here because the branch - # parameter to this file will only ever take on one value - more values - # are provided through overrides. - otherSplices = generateSplicesForMkScope attributePathToSplice; - in - makeScopeWithSplicing' { - inherit otherSplices; - f = - self: - { - inherit branch; - } - // callPackage ./package-set.nix ( - { - sourceData = versions.${self.branch} or (throw (badBranchError self.branch)); - versionData = self.sourceData.version; - buildFreebsd = otherSplices.selfBuildHost; - patchesRoot = ./patches + "/${self.versionData.revision}"; - } - // extraArgs - ) self; - }; + # we do not include the branch in the splice here because the branch + # parameter to this file will only ever take on one value - more values + # are provided through overrides. + otherSplices = generateSplicesForMkScope attributePathToSplice; in -{ - freebsd = callFreeBSDWithAttrs { }; - freebsdCross = callFreeBSDWithAttrs { stdenv = crossLibcStdenv; }; +# `./package-set.nix` should never know the name of the package set we +# are constructing; just this function is allowed to know that. This +# is why we: +# +# - do the splicing for cross compilation here +# +# - construct the *anonymized* `buildFreebsd` attribute to be passed +# to `./package-set.nix`. +makeScopeWithSplicing' { + inherit otherSplices; + f = + self: + { + inherit branch; + } + // callPackage ./package-set.nix ({ + sourceData = versions.${self.branch} or (throw (badBranchError self.branch)); + versionData = self.sourceData.version; + buildFreebsd = otherSplices.selfBuildHost; + patchesRoot = ./patches + "/${self.versionData.revision}"; + }) self; } diff --git a/pkgs/os-specific/bsd/freebsd/patches/13.1/compat-install-dirs.patch b/pkgs/os-specific/bsd/freebsd/patches/13.1/compat-install-dirs.patch index 9bb2bea32ee98..4bc21cf8eb147 100644 --- a/pkgs/os-specific/bsd/freebsd/patches/13.1/compat-install-dirs.patch +++ b/pkgs/os-specific/bsd/freebsd/patches/13.1/compat-install-dirs.patch @@ -2,12 +2,11 @@ diff --git a/tools/build/Makefile b/tools/build/Makefile index 948a5f9dfdb..592af84eeae 100644 --- a/tools/build/Makefile +++ b/tools/build/Makefile -@@ -327,15 +327,15 @@ host-symlinks: +@@ -327,14 +327,14 @@ host-symlinks: # and cross-tools stages. We do this here using mkdir since mtree may not exist # yet (this happens if we are crossbuilding from Linux/Mac). INSTALLDIR_LIST= \ - bin \ -- lib/casper \ - lib/geom \ - usr/include/casper \ - usr/include/private/ucl \ @@ -16,7 +15,6 @@ index 948a5f9dfdb..592af84eeae 100644 - usr/libdata/pkgconfig \ - usr/libexec + ${BINDIR} \ -+ ${LIBDIR}/casper \ + ${LIBDIR}/geom \ + ${INCLUDEDIR}/casper \ + ${INCLUDEDIR}/private/ucl \ diff --git a/pkgs/os-specific/bsd/freebsd/patches/14.0/libcxxrt-headers.patch b/pkgs/os-specific/bsd/freebsd/patches/14.0/libcxxrt-headers.patch new file mode 100644 index 0000000000000..256db9e2d9cf4 --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/patches/14.0/libcxxrt-headers.patch @@ -0,0 +1,11 @@ +--- freebsd/lib/libcxxrt/Makefile 2024-05-30 14:27:42.328086005 -0700 ++++ freebsd/lib/libcxxrt/Makefile.mod 2024-05-30 14:27:48.048014581 -0700 +@@ -19,6 +19,8 @@ + SRCS+= terminate.cc + SRCS+= typeinfo.cc + ++INCS+=cxxabi.h unwind.h unwind-arm.h unwind-itanium.h ++ + WARNS?= 0 + CFLAGS+= -isystem ${SRCDIR} -nostdinc++ + CXXSTD?= c++14 diff --git a/pkgs/os-specific/bsd/freebsd/patches/14.0/localedef.patch b/pkgs/os-specific/bsd/freebsd/patches/14.0/localedef.patch new file mode 100644 index 0000000000000..73a0341bd3240 --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/patches/14.0/localedef.patch @@ -0,0 +1,158 @@ +diff --git a/include/_ctype.h b/include/_ctype.h +index 91e6b1d14f6b..a6896b598da3 100644 +--- a/include/_ctype.h ++++ b/include/_ctype.h +@@ -44,7 +44,7 @@ + #define __CTYPE_H_ + + #include <sys/cdefs.h> +-#include <sys/_types.h> ++#include <sys/types.h> + + #define _CTYPE_A 0x00000100L /* Alpha */ + #define _CTYPE_C 0x00000200L /* Control */ +diff --git a/lib/libc/locale/collate.h b/lib/libc/locale/collate.h +index 2d3723b49f5b..6bbff732b9d7 100644 +--- a/lib/libc/locale/collate.h ++++ b/lib/libc/locale/collate.h +@@ -36,6 +36,7 @@ + #ifndef _COLLATE_H_ + #define _COLLATE_H_ + ++#include <stdint.h> + #include <sys/cdefs.h> + #include <sys/types.h> + #include <limits.h> +diff --git a/usr.bin/localedef/charmap.c b/usr.bin/localedef/charmap.c +index 44b7e3292eae..79c30b7cf372 100644 +--- a/usr.bin/localedef/charmap.c ++++ b/usr.bin/localedef/charmap.c +@@ -31,6 +31,7 @@ + /* + * CHARMAP file handling for localedef. + */ ++#include <stdint.h> + #include <sys/cdefs.h> + #include <sys/types.h> + #include <sys/tree.h> +diff --git a/usr.bin/localedef/collate.c b/usr.bin/localedef/collate.c +index 2a080773a95e..3f0030c638f5 100644 +--- a/usr.bin/localedef/collate.c ++++ b/usr.bin/localedef/collate.c +@@ -31,6 +31,7 @@ + /* + * LC_COLLATE database generation routines for localedef. + */ ++#include <stdint.h> + #include <sys/cdefs.h> + #include <sys/types.h> + #include <sys/tree.h> +diff --git a/usr.bin/localedef/ctype.c b/usr.bin/localedef/ctype.c +index ab7b76e57b2d..846c6d6480a8 100644 +--- a/usr.bin/localedef/ctype.c ++++ b/usr.bin/localedef/ctype.c +@@ -32,6 +32,7 @@ + /* + * LC_CTYPE database generation routines for localedef. + */ ++#include <stdint.h> + #include <sys/cdefs.h> + #include <sys/tree.h> + +diff --git a/usr.bin/localedef/localedef.c b/usr.bin/localedef/localedef.c +index 5ff146d6f655..ed69aa1f0c0e 100644 +--- a/usr.bin/localedef/localedef.c ++++ b/usr.bin/localedef/localedef.c +@@ -32,7 +32,7 @@ + * POSIX localedef. + */ + #include <sys/cdefs.h> +-#include <sys/endian.h> ++#include <endian.h> + #include <sys/stat.h> + #include <sys/types.h> + +diff --git a/usr.bin/localedef/messages.c b/usr.bin/localedef/messages.c +index 6b8eb9d684dd..0155821d0e56 100644 +--- a/usr.bin/localedef/messages.c ++++ b/usr.bin/localedef/messages.c +@@ -31,6 +31,7 @@ + /* + * LC_MESSAGES database generation routines for localedef. + */ ++#include <stdint.h> + #include <sys/cdefs.h> + #include <stdio.h> + #include <stdlib.h> +diff --git a/usr.bin/localedef/monetary.c b/usr.bin/localedef/monetary.c +index 7a77ac7e256c..7636c4deca1f 100644 +--- a/usr.bin/localedef/monetary.c ++++ b/usr.bin/localedef/monetary.c +@@ -31,6 +31,7 @@ + /* + * LC_MONETARY database generation routines for localedef. + */ ++#include <stdint.h> + #include <sys/cdefs.h> + #include <stdio.h> + #include <stdlib.h> +diff --git a/usr.bin/localedef/numeric.c b/usr.bin/localedef/numeric.c +index 5533b7c10e1a..9c47494f815c 100644 +--- a/usr.bin/localedef/numeric.c ++++ b/usr.bin/localedef/numeric.c +@@ -31,6 +31,7 @@ + /* + * LC_NUMERIC database generation routines for localedef. + */ ++#include <stdint.h> + #include <sys/cdefs.h> + #include <stdio.h> + #include <stdlib.h> +diff --git a/usr.bin/localedef/parser.y b/usr.bin/localedef/parser.y +index 23b3b54f8a6e..e01330f0152d 100644 +--- a/usr.bin/localedef/parser.y ++++ b/usr.bin/localedef/parser.y +@@ -33,6 +33,7 @@ + * POSIX localedef grammar. + */ + ++#include <stdint.h> + #include <wchar.h> + #include <stdio.h> + #include <limits.h> +diff --git a/usr.bin/localedef/scanner.c b/usr.bin/localedef/scanner.c +index c6d45a993f28..b17670ef4b4a 100644 +--- a/usr.bin/localedef/scanner.c ++++ b/usr.bin/localedef/scanner.c +@@ -32,6 +32,7 @@ + * This file contains the "scanner", which tokenizes the input files + * for localedef for processing by the higher level grammar processor. + */ ++#include <stdint.h> + #include <sys/cdefs.h> + #include <stdio.h> + #include <stdlib.h> +diff --git a/usr.bin/localedef/time.c b/usr.bin/localedef/time.c +index 7a56e244c921..0e409a742d0a 100644 +--- a/usr.bin/localedef/time.c ++++ b/usr.bin/localedef/time.c +@@ -31,6 +31,7 @@ + /* + * LC_TIME database generation routines for localedef. + */ ++#include <stdint.h> + #include <sys/cdefs.h> + #include <stdio.h> + #include <stdlib.h> +diff --git a/usr.bin/localedef/wide.c b/usr.bin/localedef/wide.c +index 062e120e6912..a199cddb198d 100644 +--- a/usr.bin/localedef/wide.c ++++ b/usr.bin/localedef/wide.c +@@ -34,6 +34,7 @@ + * to the wide character forms used internally by libc. Unfortunately, + * this approach means that we need a method for each and every encoding. + */ ++#include <stdint.h> + #include <sys/cdefs.h> + #include <ctype.h> + #include <stdlib.h> diff --git a/pkgs/os-specific/bsd/freebsd/patches/14.0/tinfo-host-cc.patch b/pkgs/os-specific/bsd/freebsd/patches/14.0/tinfo-host-cc.patch new file mode 100644 index 0000000000000..6446322a8a0a3 --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/patches/14.0/tinfo-host-cc.patch @@ -0,0 +1,15 @@ +--- a/lib/ncurses/tinfo/Makefile 2023-12-26 23:02:07.827892619 -0800 ++++ b/lib/ncurses/tinfo/Makefile 2023-12-26 23:01:24.175546100 -0800 +@@ -282,10 +282,10 @@ + build-tools: make_hash make_keys + + make_keys: make_keys.c names.c ncurses_def.h ${HEADERS} ${BUILD_TOOLS_META} +- ${CC:N${CCACHE_BIN}} -o $@ ${CFLAGS} ${NCURSES_DIR}/ncurses/tinfo/make_keys.c ++ ${CC_HOST:N${CCACHE_BIN}} -o $@ ${CFLAGS} ${NCURSES_DIR}/ncurses/tinfo/make_keys.c + + make_hash: make_hash.c hashsize.h ncurses_def.h ${HEADERS} ${BUILD_TOOLS_META} +- ${CC:N${CCACHE_BIN}} -o $@ ${CFLAGS} -DMAIN_PROGRAM \ ++ ${CC_HOST:N${CCACHE_BIN}} -o $@ ${CFLAGS} -DMAIN_PROGRAM \ + ${NCURSES_DIR}/ncurses/tinfo/make_hash.c + .endif + .if ${MK_DIRDEPS_BUILD} == "yes" && ${MACHINE} != "host" diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/bin.nix b/pkgs/os-specific/bsd/freebsd/pkgs/bin.nix new file mode 100644 index 0000000000000..2b2738ec5794a --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/bin.nix @@ -0,0 +1,92 @@ +{ + mkDerivation, + pkgsBuildBuild, + libjail, + libmd, + libnetbsd, + libcapsicum, + libcasper, + libelf, + libxo, + libncurses-tinfo, + libedit, + lib, + stdenv, + bsdSetupHook, + freebsdSetupHook, + makeMinimal, + install, + tsort, + lorder, + mandoc, + groff, + byacc, + gencat, +}: +mkDerivation { + pname = "bins"; + path = "bin"; + extraPaths = [ + "sys/conf" + "sys/sys/param.h" + "contrib/sendmail" + "contrib/tcsh" + "usr.bin/printf" + "lib/libsm" + ]; + buildInputs = [ + libjail + libmd + libnetbsd + libcapsicum + libcasper + libelf + libxo + libncurses-tinfo + libedit + ]; + nativeBuildInputs = [ + bsdSetupHook + freebsdSetupHook + makeMinimal + install + tsort + lorder + mandoc + groff + + byacc + gencat + ]; + + MK_TESTS = "no"; + + postPatch = '' + sed -E -i -e '/#define\tBSD.*/d' $BSDSRCDIR/sys/sys/param.h + sed -E -i -e '/^SYMLINKS.*/d' $BSDSRCDIR/bin/*/Makefile + sed -E -i -e 's/mktemp -t ka/mktemp -t kaXXXXXX/' $BSDSRCDIR/bin/sh/mkbuiltins $BSDSRCDIR/bin/sh/mktokens + ''; + + preBuild = '' + export NIX_CFLAGS_COMPILE="-I$BSDSRCDIR/sys $NIX_CFLAGS_COMPILE" + + make -C $BSDSRCDIR/lib/libsm $makeFlags + + make -C $BSDSRCDIR/bin/sh $makeFlags "CC=${pkgsBuildBuild.stdenv.cc}/bin/cc" CFLAGS="-D__unused= -D__printf0like\(a,b\)= -D__dead2=" ${ + lib.optionalString (!stdenv.buildPlatform.isFreeBSD) "MK_PIE=no " + }mkbuiltins mksyntax mktokens mknodes + make -C $BSDSRCDIR/bin/csh $makeFlags "CC=${pkgsBuildBuild.stdenv.cc}/bin/cc" CFLAGS="-D__unused= -D__printf0like\(a,b\)= -D__dead2= -I$BSDSRCDIR/contrib/tcsh -I." ${ + lib.optionalString (!stdenv.buildPlatform.isFreeBSD) "MK_PIE=no " + }gethost + ''; + + preInstall = '' + makeFlags="$makeFlags ROOTDIR=$out/root" + ''; + + outputs = [ + "out" + "man" + "debug" + ]; +} diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/boot-install.nix b/pkgs/os-specific/bsd/freebsd/pkgs/boot-install.nix index 966489d9aef36..79dab282e3f3f 100644 --- a/pkgs/os-specific/bsd/freebsd/pkgs/boot-install.nix +++ b/pkgs/os-specific/bsd/freebsd/pkgs/boot-install.nix @@ -1,10 +1,23 @@ { buildPackages, freebsd-lib }: -# Wrap NetBSD's install +# Wrap GNU coreutils' install +# The -l flag causes a symlink instead of a copy to be installed, so +# it is safe to discard during bootstrap since coreutils does not support it. + buildPackages.writeShellScriptBin "boot-install" ( freebsd-lib.install-wrapper + '' + fixed_args=() + while [[ ''${#args[0]} > 0 ]]; do + case "''${args[0]}" in + -l) + args=("''${args[@]:2}") + continue + esac + fixed_args+=("''${args[0]}") + args=("''${args[@]:1}") + done - ${buildPackages.netbsd.install}/bin/xinstall "''${args[@]}" + ${buildPackages.coreutils}/bin/install "''${fixed_args[@]}" '' ) diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/cp.nix b/pkgs/os-specific/bsd/freebsd/pkgs/cp.nix new file mode 100644 index 0000000000000..3ebfd91a4e153 --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/cp.nix @@ -0,0 +1,10 @@ +{ mkDerivation }: +mkDerivation { + path = "bin/cp"; + + extraPaths = [ "sys" ]; + + postPatch = '' + substituteInPlace $BSDSRCDIR/bin/cp/Makefile --replace 'tests' "" + ''; +} diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/csu.nix b/pkgs/os-specific/bsd/freebsd/pkgs/csu.nix index 0f74d78b1d13d..020a08c1d01ef 100644 --- a/pkgs/os-specific/bsd/freebsd/pkgs/csu.nix +++ b/pkgs/os-specific/bsd/freebsd/pkgs/csu.nix @@ -12,7 +12,7 @@ }: mkDerivation { - isStatic = true; + noLibc = true; path = "lib/csu"; extraPaths = [ "lib/Makefile.inc" diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/filterSource.nix b/pkgs/os-specific/bsd/freebsd/pkgs/filterSource.nix index dc215c18aecb7..09674056d9cd8 100644 --- a/pkgs/os-specific/bsd/freebsd/pkgs/filterSource.nix +++ b/pkgs/os-specific/bsd/freebsd/pkgs/filterSource.nix @@ -18,6 +18,17 @@ let lib.concatMapStringsSep "\n" (path: "/${path}") sortedPaths ); in -runCommand "${pname}-filtered-src" { nativeBuildInputs = [ pkgsBuildBuild.rsync ]; } '' - rsync -a -r --files-from=${filterText} ${source}/ $out -'' +runCommand "${pname}-filtered-src" + { + nativeBuildInputs = [ + (pkgsBuildBuild.rsync.override { + enableZstd = false; + enableXXHash = false; + enableOpenSSL = false; + enableLZ4 = false; + }) + ]; + } + '' + rsync -a -r --files-from=${filterText} ${source}/ $out + '' diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/iconv.nix b/pkgs/os-specific/bsd/freebsd/pkgs/iconv.nix new file mode 100644 index 0000000000000..9c1ba1835c145 --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/iconv.nix @@ -0,0 +1,12 @@ +{ + mkDerivation, + libcapsicum, + libcasper, +}: +mkDerivation { + path = "usr.bin/iconv"; + buildInputs = [ + libcapsicum + libcasper + ]; +} diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/include/package.nix b/pkgs/os-specific/bsd/freebsd/pkgs/include/package.nix index 70734226a54f5..a7ceb0cdf384f 100644 --- a/pkgs/os-specific/bsd/freebsd/pkgs/include/package.nix +++ b/pkgs/os-specific/bsd/freebsd/pkgs/include/package.nix @@ -7,7 +7,7 @@ }: mkDerivation { - isStatic = true; + noLibc = true; path = "include"; extraPaths = [ diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/ldd.nix b/pkgs/os-specific/bsd/freebsd/pkgs/ldd.nix new file mode 100644 index 0000000000000..406e37402b2bb --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/ldd.nix @@ -0,0 +1,21 @@ +{ + lib, + stdenv, + mkDerivation, + libelf, +}: +mkDerivation { + path = "usr.bin/ldd"; + extraPaths = [ + "libexec/rtld-elf" + "contrib/elftoolchain/libelf" + ]; + + buildInputs = [ libelf ]; + + env = { + NIX_CFLAGS_COMPILE = "-D_RTLD_PATH=${lib.getLib stdenv.cc.libc}/libexec/ld-elf.so.1"; + }; + + meta.platforms = lib.platforms.freebsd; +} diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/libc/package.nix b/pkgs/os-specific/bsd/freebsd/pkgs/libc/package.nix index 8f2cc976463e4..a991e69265823 100644 --- a/pkgs/os-specific/bsd/freebsd/pkgs/libc/package.nix +++ b/pkgs/os-specific/bsd/freebsd/pkgs/libc/package.nix @@ -21,7 +21,7 @@ }: mkDerivation { - isStatic = true; + noLibc = true; pname = "libc"; path = "lib/libc"; extraPaths = diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/libcapsicum.nix b/pkgs/os-specific/bsd/freebsd/pkgs/libcapsicum.nix new file mode 100644 index 0000000000000..3cb1560df77aa --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/libcapsicum.nix @@ -0,0 +1 @@ +{ mkDerivation }: mkDerivation { path = "lib/libcapsicum"; } diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/libcasper.nix b/pkgs/os-specific/bsd/freebsd/pkgs/libcasper.nix new file mode 100644 index 0000000000000..df27f72bc8cb0 --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/libcasper.nix @@ -0,0 +1,26 @@ +{ + lib, + stdenv, + mkDerivation, + libnv, +}: +mkDerivation { + path = "lib/libcasper/libcasper"; + extraPaths = [ + "lib/Makefile.inc" + "lib/libcasper" + ]; + buildInputs = [ libnv ]; + + MK_TESTS = "no"; + + makeFlags = [ + "STRIP=-s" # flag to install, not command + "CFLAGS=-DWITH_CASPER" + ] ++ lib.optional (!stdenv.hostPlatform.isFreeBSD) "MK_WERROR=no"; + + postInstall = '' + make -C $BSDSRCDIR/lib/libcasper/services $makeFlags CFLAGS="-DWITH_CASPER -I$out/include" + make -C $BSDSRCDIR/lib/libcasper/services $makeFlags install + ''; +} diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/libcxxrt.nix b/pkgs/os-specific/bsd/freebsd/pkgs/libcxxrt.nix new file mode 100644 index 0000000000000..fd5591c0ffb8a --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/libcxxrt.nix @@ -0,0 +1,18 @@ +{ mkDerivation }: +# this package is quite different from stock libcxxrt. +# as of FreeBSD 14.0, it is vendored from APPROXIMATELY libcxxrt +# 5d8a15823a103bbc27f1bfdcf2b5aa008fab57dd, though the vendoring mechanism is +# extremely ad-hoc. Moreover, the build mechanism is totally custom, and adds +# symbol versions not specified on any version of libcxxrt. +mkDerivation { + pname = "libcxxrt"; + path = "lib/libcxxrt"; + extraPaths = [ "contrib/libcxxrt" ]; + outputs = [ + "out" + "dev" + "debug" + ]; + noLibcxx = true; + libName = "cxxrt"; +} diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/libdl.nix b/pkgs/os-specific/bsd/freebsd/pkgs/libdl.nix new file mode 100644 index 0000000000000..2b77a0f716624 --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/libdl.nix @@ -0,0 +1,9 @@ +{ mkDerivation, ... }: +mkDerivation { + path = "lib/libdl"; + extraPaths = [ + "lib/libc" + "libexec/rtld-elf" + ]; + buildInputs = [ ]; +} diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/libedit.nix b/pkgs/os-specific/bsd/freebsd/pkgs/libedit.nix new file mode 100644 index 0000000000000..50b1c9f58333f --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/libedit.nix @@ -0,0 +1,7 @@ +{ mkDerivation, libncurses-tinfo }: +mkDerivation { + path = "lib/libedit"; + extraPaths = [ "contrib/libedit" ]; + buildInputs = [ libncurses-tinfo ]; + MK_TESTS = "no"; +} diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/libelf.nix b/pkgs/os-specific/bsd/freebsd/pkgs/libelf.nix new file mode 100644 index 0000000000000..a116aff81f397 --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/libelf.nix @@ -0,0 +1,29 @@ +{ + mkDerivation, + lib, + bsdSetupHook, + freebsdSetupHook, + makeMinimal, + install, + m4, +}: +mkDerivation { + path = "lib/libelf"; + extraPaths = [ + "lib/libc" + "contrib/elftoolchain" + "sys/sys/elf32.h" + "sys/sys/elf64.h" + "sys/sys/elf_common.h" + ]; + buildInputs = [ ]; + nativeBuildInputs = [ + bsdSetupHook + freebsdSetupHook + makeMinimal + install + m4 + ]; + + meta.platforms = lib.platforms.freebsd; +} diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/libjail.nix b/pkgs/os-specific/bsd/freebsd/pkgs/libjail.nix new file mode 100644 index 0000000000000..9150be559c650 --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/libjail.nix @@ -0,0 +1,5 @@ +{ mkDerivation }: +mkDerivation { + path = "lib/libjail"; + MK_TESTS = "no"; +} diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/libncurses-tinfo.nix b/pkgs/os-specific/bsd/freebsd/pkgs/libncurses-tinfo.nix new file mode 100644 index 0000000000000..f86f78dbc2914 --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/libncurses-tinfo.nix @@ -0,0 +1,15 @@ +{ mkDerivation, pkgsBuildBuild }: +mkDerivation { + path = "lib/ncurses/tinfo"; + extraPaths = [ + "lib/ncurses" + "contrib/ncurses" + "lib/Makefile.inc" + ]; + CC_HOST = "${pkgsBuildBuild.stdenv.cc}/bin/cc"; + MK_TESTS = "no"; + preBuild = '' + export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -D_VA_LIST -D_VA_LIST_DECLARED -Dva_list=__builtin_va_list -D_SIZE_T -D_WCHAR_T" + make $makeFlags "CFLAGS=-D_VA_LIST -D_VA_LIST_DECLARED -Dva_list=__builtin_va_list -I$BSDSRCDIR/contrib/ncurses/ncurses -I$BSDSRCDIR/contrib/ncurses/include -I." ncurses_dll.h make_hash make_keys + ''; +} diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/libncurses.nix b/pkgs/os-specific/bsd/freebsd/pkgs/libncurses.nix new file mode 100644 index 0000000000000..2dd1ee2fe57de --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/libncurses.nix @@ -0,0 +1,25 @@ +{ + lib, + versionData, + mkDerivation, + libncurses-tinfo, + ... +}: +mkDerivation { + path = "lib/ncurses/ncurses"; + extraPaths = [ + "lib/ncurses" + "contrib/ncurses" + "lib/Makefile.inc" + ]; + MK_TESTS = "no"; + preBuild = lib.optionalString (versionData.major == 14) '' + make -C ../tinfo $makeFlags curses.h ncurses_dll.h ncurses_def.h + ''; + buildInputs = lib.optionals (versionData.major == 14) [ libncurses-tinfo ]; + + # some packages depend on libncursesw.so.8 + postInstall = '' + ln -s $out/lib/libncursesw.so.9 $out/lib/libncursesw.so.8 + ''; +} diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/libxo.nix b/pkgs/os-specific/bsd/freebsd/pkgs/libxo.nix new file mode 100644 index 0000000000000..a4882ea1970c3 --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/libxo.nix @@ -0,0 +1,6 @@ +{ mkDerivation }: +mkDerivation { + path = "lib/libxo"; + extraPaths = [ "contrib/libxo" ]; + MK_TESTS = "no"; +} diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/locale.nix b/pkgs/os-specific/bsd/freebsd/pkgs/locale.nix new file mode 100644 index 0000000000000..b661a7cee853f --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/locale.nix @@ -0,0 +1,7 @@ +{ mkDerivation, libsbuf }: +mkDerivation { + path = "usr.bin/locale"; + buildInputs = [ libsbuf ]; + extraPaths = [ "lib/libc/locale" ]; + MK_TESTS = "no"; +} diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/localedef.nix b/pkgs/os-specific/bsd/freebsd/pkgs/localedef.nix new file mode 100644 index 0000000000000..2e4902860c8d9 --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/localedef.nix @@ -0,0 +1,39 @@ +{ + mkDerivation, + lib, + stdenv, + compat, + bsdSetupHook, + byacc, + freebsdSetupHook, + makeMinimal, + install, +}: +mkDerivation ( + { + path = "usr.bin/localedef"; + + extraPaths = [ + "lib/libc/locale" + "lib/libc/stdtime" + ] ++ lib.optionals (!stdenv.hostPlatform.isFreeBSD) [ "." ]; + + nativeBuildInputs = [ + bsdSetupHook + byacc + freebsdSetupHook + makeMinimal + install + ]; + + buildInputs = [ ]; + + preBuild = lib.optionalString (!stdenv.hostPlatform.isFreeBSD) '' + export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${compat}/include -D__unused= -D__pure= -Wno-strict-aliasing" + export NIX_LDFLAGS="$NIX_LDFLAGS -L${compat}/lib" + ''; + + MK_TESTS = "no"; + } + // lib.optionalAttrs (!stdenv.hostPlatform.isFreeBSD) { BOOTSTRAPPING = 1; } +) diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/locales.nix b/pkgs/os-specific/bsd/freebsd/pkgs/locales.nix new file mode 100644 index 0000000000000..d8d3de93d5ec7 --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/pkgs/locales.nix @@ -0,0 +1,51 @@ +{ + mkDerivation, + lib, + symlinkJoin, + bsdSetupHook, + freebsdSetupHook, + makeMinimal, + install, + tsort, + lorder, + mandoc, + groff, + localedef, + allLocales ? true, + locales ? [ "en_US.UTF-8" ], +}: +let + build = + name: needsLocaledef: + mkDerivation { + path = "share/${name}"; + + extraPaths = lib.optional needsLocaledef "tools/tools/locale/etc/final-maps"; + nativeBuildInputs = [ + bsdSetupHook + freebsdSetupHook + makeMinimal + install + tsort + lorder + mandoc + groff + ] ++ lib.optional needsLocaledef localedef; + }; + directories = { + colldef = true; + colldef_unicode = true; + ctypedef = true; + monetdef = false; + monetdef_unicode = false; + msgdef = false; + msgdef_unicode = false; + numericdef = false; + numericdef_unicode = false; + timedef = false; + }; +in +symlinkJoin { + name = "freebsd-locales"; + paths = lib.mapAttrsToList build directories; +} diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/mkDerivation.nix b/pkgs/os-specific/bsd/freebsd/pkgs/mkDerivation.nix index be195b3bc6fa5..a085367ac68e6 100644 --- a/pkgs/os-specific/bsd/freebsd/pkgs/mkDerivation.nix +++ b/pkgs/os-specific/bsd/freebsd/pkgs/mkDerivation.nix @@ -2,6 +2,9 @@ lib, stdenv, stdenvNoCC, + stdenvNoLibs, + overrideCC, + buildPackages, versionData, writeText, patches, @@ -21,7 +24,15 @@ lib.makeOverridable ( attrs: let - stdenv' = if attrs.noCC or false then stdenvNoCC else stdenv; + stdenv' = + if attrs.noCC or false then + stdenvNoCC + else if attrs.noLibc or false then + stdenvNoLibs + else if attrs.noLibcxx or false then + overrideCC stdenv buildPackages.llvmPackages.clangNoLibcxx + else + stdenv; in stdenv'.mkDerivation ( rec { @@ -47,12 +58,9 @@ lib.makeOverridable ( HOST_SH = stdenv'.shell; - # Since STRIP below is the flag - STRIPBIN = "${stdenv.cc.bintools.targetPrefix}strip"; - makeFlags = [ "STRIP=-s" # flag to install, not command - ] ++ lib.optional (!stdenv.hostPlatform.isFreeBSD) "MK_WERROR=no"; + ] ++ lib.optional (!stdenv'.hostPlatform.isFreeBSD) "MK_WERROR=no"; # amd64 not x86_64 for this on unlike NetBSD MACHINE_ARCH = freebsd-lib.mkBsdArch stdenv'; @@ -80,6 +88,9 @@ lib.makeOverridable ( // lib.optionalAttrs stdenv'.hasCC { # TODO should CC wrapper set this? CPP = "${stdenv'.cc.targetPrefix}cpp"; + + # Since STRIP in `makeFlags` has to be a flag, not the binary itself + STRIPBIN = "${stdenv'.cc.bintools.targetPrefix}strip"; } // lib.optionalAttrs stdenv'.isDarwin { MKRELRO = "no"; } // lib.optionalAttrs (stdenv'.cc.isClang or false) { @@ -128,15 +139,17 @@ lib.makeOverridable ( splitPatch = patchFile: let + allLines' = lib.strings.splitString "\n" (builtins.readFile patchFile); + allLines = builtins.filter ( + line: !((lib.strings.hasPrefix "diff --git" line) || (lib.strings.hasPrefix "index " line)) + ) allLines'; foldFunc = a: b: - if (lib.strings.hasPrefix "--- " b) then + if ((lib.strings.hasPrefix "--- " b) || (lib.strings.hasPrefix "diff --git " b)) then (a ++ [ [ b ] ]) else ((lib.lists.init a) ++ (lib.lists.singleton ((lib.lists.last a) ++ [ b ]))); - partitionedPatches' = lib.lists.foldl foldFunc [ [ ] ] ( - lib.strings.splitString "\n" (builtins.readFile patchFile) - ); + partitionedPatches' = lib.lists.foldl foldFunc [ [ ] ] allLines; partitionedPatches = if (builtins.length partitionedPatches' > 1) then (lib.lists.drop 1 partitionedPatches') diff --git a/pkgs/os-specific/bsd/lib/install-wrapper.sh b/pkgs/os-specific/bsd/lib/install-wrapper.sh index 91a7a2679f209..97a2aaab22c0e 100644 --- a/pkgs/os-specific/bsd/lib/install-wrapper.sh +++ b/pkgs/os-specific/bsd/lib/install-wrapper.sh @@ -14,7 +14,6 @@ while (( $# )); do case $1 in -C) ;; -o | -g) shift ;; - -s) ;; -m | -l) # handle next arg so not counted as path arg args+=("$1" "$2") diff --git a/pkgs/os-specific/bsd/netbsd/default.nix b/pkgs/os-specific/bsd/netbsd/default.nix index e0d03108960c0..eeccd0fa07eab 100644 --- a/pkgs/os-specific/bsd/netbsd/default.nix +++ b/pkgs/os-specific/bsd/netbsd/default.nix @@ -1,6 +1,6 @@ { - stdenv, lib, + crossLibcStdenv, stdenvNoCC, makeScopeWithSplicing', generateSplicesForMkScope, @@ -8,8 +8,13 @@ fetchcvs, }: -makeScopeWithSplicing' { +let otherSplices = generateSplicesForMkScope "netbsd"; + buildNetbsd = otherSplices.selfBuildHost; +in + +makeScopeWithSplicing' { + inherit otherSplices; f = ( self: lib.packagesFromDirectoryRecursive { @@ -17,19 +22,13 @@ makeScopeWithSplicing' { directory = ./pkgs; } // { - - fetchNetBSD = - path: version: sha256: - fetchcvs { - cvsRoot = ":pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot"; - module = "src/${path}"; - inherit sha256; - tag = "netbsd-${lib.replaceStrings [ "." ] [ "-" ] version}-RELEASE"; - }; + version = "9.2"; defaultMakeFlags = [ "MKSOFTFLOAT=${ - if stdenv.hostPlatform.gcc.float or (stdenv.hostPlatform.parsed.abi.float or "hard") == "soft" then + if + stdenvNoCC.hostPlatform.gcc.float or (stdenvNoCC.hostPlatform.parsed.abi.float or "hard") == "soft" + then "yes" else "no" @@ -38,37 +37,55 @@ makeScopeWithSplicing' { compatIfNeeded = lib.optional (!stdenvNoCC.hostPlatform.isNetBSD) self.compat; + stdenvLibcMinimal = crossLibcStdenv.override (old: { + cc = old.cc.override { + libc = self.libcMinimal; + bintools = old.cc.bintools.override { + libc = self.libcMinimal; + sharedLibraryLoader = null; + }; + }; + }); + # The manual callPackages below should in principle be unnecessary because # they're just selecting arguments that would be selected anyway. However, # if we don't perform these manual calls, we get infinite recursion issues # because of the splices. - mkDerivation = self.callPackage ./pkgs/mkDerivation.nix { - inherit stdenv stdenvNoCC; - inherit (buildPackages.netbsd) + compat = self.callPackage ./pkgs/compat/package.nix { + inherit (buildPackages) coreutils; + inherit (buildPackages.darwin) cctools-port; + inherit (buildNetbsd) makeMinimal; + inherit (self) install; + }; + + config = self.callPackage ./pkgs/config.nix { + inherit (buildNetbsd) makeMinimal install; + inherit (self) cksum; + }; + + csu = self.callPackage ./pkgs/csu.nix { + inherit (self) headers sys-headers ld_elf_so; + inherit (buildNetbsd) netbsdSetupHook makeMinimal install - tsort + genassym + gencat lorder + tsort + statHook ; - inherit (buildPackages) mandoc; - inherit (buildPackages.buildPackages) rsync; }; - makeMinimal = self.callPackage ./pkgs/makeMinimal.nix { inherit (self) make; }; - - compat = self.callPackage ./pkgs/compat/package.nix { - inherit (buildPackages) coreutils; - inherit (buildPackages.darwin) cctools-port; - inherit (buildPackages.buildPackages) rsync; - inherit (buildPackages.netbsd) makeMinimal; - inherit (self) + include = self.callPackage ./pkgs/include.nix { + inherit (buildNetbsd) + makeMinimal install - include - libc - libutil + nbperf + rpcgen ; + inherit (buildPackages) stdenv; }; install = self.callPackage ./pkgs/install/package.nix { @@ -78,110 +95,87 @@ makeScopeWithSplicing' { make compatIfNeeded ; - inherit (buildPackages.buildPackages) rsync; - inherit (buildPackages.netbsd) makeMinimal; - }; - - # See note in pkgs/stat/package.nix - stat = self.callPackage ./pkgs/stat/package.nix { - inherit (buildPackages.netbsd) makeMinimal install; - inherit (buildPackages.buildPackages) rsync; + inherit (buildNetbsd) makeMinimal; }; - # See note in pkgs/stat/hook.nix - statHook = self.callPackage ./pkgs/stat/hook.nix { inherit (self) stat; }; - - tsort = self.callPackage ./pkgs/tsort.nix { - inherit (buildPackages.netbsd) makeMinimal install; - inherit (buildPackages.buildPackages) rsync; - }; - - lorder = self.callPackage ./pkgs/lorder.nix { - inherit (buildPackages.netbsd) makeMinimal install; - inherit (buildPackages.buildPackages) rsync; + libcMinimal = self.callPackage ./pkgs/libcMinimal.nix { + inherit (self) headers csu; + inherit (buildNetbsd) + netbsdSetupHook + makeMinimal + install + genassym + gencat + lorder + tsort + statHook + rpcgen + ; }; - config = self.callPackage ./pkgs/config.nix { - inherit (buildPackages.netbsd) makeMinimal install; - inherit (buildPackages.buildPackages) rsync; - inherit (self) cksum; - }; + libpthread-headers = self.callPackage ./pkgs/libpthread/headers.nix { }; - include = self.callPackage ./pkgs/include.nix { - inherit (buildPackages.netbsd) + librpcsvc = self.callPackage ./pkgs/librpcsvc.nix { + inherit (buildNetbsd) + netbsdSetupHook makeMinimal install - nbperf + lorder + tsort + statHook rpcgen ; - inherit (buildPackages) stdenv; - inherit (buildPackages.buildPackages) rsync; }; - sys-headers = self.callPackage ./pkgs/sys/headers.nix { - inherit (buildPackages.netbsd) + libutil = self.callPackage ./pkgs/libutil.nix { + inherit (buildNetbsd) + netbsdSetupHook makeMinimal install - tsort lorder + tsort statHook - uudecode - config - genassym ; - inherit (buildPackages.buildPackages) rsync; }; - libutil = self.callPackage ./pkgs/libutil.nix { inherit (self) libc sys; }; + lorder = self.callPackage ./pkgs/lorder.nix { inherit (buildNetbsd) makeMinimal install; }; - libpthread-headers = self.callPackage ./pkgs/libpthread/headers.nix { }; + mtree = self.callPackage ./pkgs/mtree.nix { inherit (self) mknod; }; - csu = self.callPackage ./pkgs/csu.nix { - inherit (self) headers sys ld_elf_so; - inherit (buildPackages.netbsd) + mkDerivation = self.callPackage ./pkgs/mkDerivation.nix { + inherit (buildNetbsd) netbsdSetupHook makeMinimal install - genassym - gencat - lorder tsort - statHook + lorder ; + inherit (buildPackages) mandoc; inherit (buildPackages.buildPackages) rsync; }; - _mainLibcExtraPaths = with self; [ - common - i18n_module.src - sys.src - ld_elf_so.src - libpthread.src - libm.src - libresolv.src - librpcsvc.src - libutil.src - librt.src - libcrypt.src - ]; + makeMinimal = self.callPackage ./pkgs/makeMinimal.nix { inherit (self) make; }; - libc = self.callPackage ./pkgs/libc.nix { - inherit (self) headers csu librt; - inherit (buildPackages.netbsd) - netbsdSetupHook + # See note in pkgs/stat/package.nix + stat = self.callPackage ./pkgs/stat/package.nix { inherit (buildNetbsd) makeMinimal install; }; + + # See note in pkgs/stat/hook.nix + statHook = self.callPackage ./pkgs/stat/hook.nix { inherit (self) stat; }; + + sys-headers = self.callPackage ./pkgs/sys/headers.nix { + inherit (buildNetbsd) makeMinimal install - genassym - gencat - lorder tsort + lorder statHook - rpcgen + uudecode + config + genassym ; - inherit (buildPackages.buildPackages) rsync; }; - mtree = self.callPackage ./pkgs/mtree.nix { inherit (self) mknod; }; + tsort = self.callPackage ./pkgs/tsort.nix { inherit (buildNetbsd) makeMinimal install; }; } ); } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/cksum.nix b/pkgs/os-specific/bsd/netbsd/pkgs/cksum.nix index a2ec387501ae1..a95df55874e42 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/cksum.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/cksum.nix @@ -2,7 +2,5 @@ mkDerivation { path = "usr.bin/cksum"; - version = "9.2"; - sha256 = "0msfhgyvh5c2jmc6qjnf12c378dhw32ffsl864qz4rdb2b98rfcq"; meta.platforms = lib.platforms.netbsd; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/column.nix b/pkgs/os-specific/bsd/netbsd/pkgs/column.nix index f3cebfa9ab261..a51369433f6c2 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/column.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/column.nix @@ -1,7 +1,3 @@ { mkDerivation }: -mkDerivation { - path = "usr.bin/column"; - version = "9.2"; - sha256 = "0r6b0hjn5ls3j3sv6chibs44fs32yyk2cg8kh70kb4cwajs4ifyl"; -} +mkDerivation { path = "usr.bin/column"; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/common.nix b/pkgs/os-specific/bsd/netbsd/pkgs/common.nix deleted file mode 100644 index 464fc1c9e0c26..0000000000000 --- a/pkgs/os-specific/bsd/netbsd/pkgs/common.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ fetchNetBSD }: - -fetchNetBSD "common" "9.2" "1pfylz9r3ap5wnwwbwczbfjb1m5qdyspzbnmxmcdkpzz2zgj64b9" diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/compat/libbsd-overlay.pc b/pkgs/os-specific/bsd/netbsd/pkgs/compat/libbsd-overlay.pc index 3aadabe508822..086dd62303e96 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/compat/libbsd-overlay.pc +++ b/pkgs/os-specific/bsd/netbsd/pkgs/compat/libbsd-overlay.pc @@ -1,7 +1,7 @@ prefix=@out@ exec_prefix=${prefix} libdir=${exec_prefix}/lib -includedir=${prefix}/include +includedir=@includedir@ Name: nbcompat Description: NetBSD compatibility framework diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/compat/package.nix b/pkgs/os-specific/bsd/netbsd/pkgs/compat/package.nix index 4c149e95c1ae6..0f7483ce55ad1 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/compat/package.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/compat/package.nix @@ -6,27 +6,24 @@ defaultMakeFlags, coreutils, cctools-port, - include, - libc, - libutil, install, bsdSetupHook, netbsdSetupHook, makeMinimal, - rsync, - fetchNetBSD, - _mainLibcExtraPaths, + version, }: mkDerivation ( let - version = "9.2"; commonDeps = [ zlib ]; in { path = "tools/compat"; - sha256 = "1vsxg7136nlhc72vpa664vs22874xh7ila95nkmsd8crn3z3cyn0"; - inherit version; + + outputs = [ + "out" + "dev" + ]; setupHooks = [ ../../../../../build-support/setup-hooks/role.bash @@ -55,7 +52,6 @@ mkDerivation ( bsdSetupHook netbsdSetupHook makeMinimal - rsync ]; buildInputs = commonDeps; @@ -66,7 +62,7 @@ mkDerivation ( defaultMakeFlags ++ [ "INSTALL=${coreutils}/bin/install" - "DATADIR=$(out)/share" + "DATADIR=$(dev)/share" # Can't sort object files yet "LORDER=echo" "TSORT=cat" @@ -99,48 +95,47 @@ mkDerivation ( postInstall = '' # why aren't these installed by netbsd? - install -D compat_defs.h $out/include/compat_defs.h - install -D $BSDSRCDIR/include/cdbw.h $out/include/cdbw.h - install -D $BSDSRCDIR/sys/sys/cdbr.h $out/include/cdbr.h + install -D compat_defs.h $dev/include/compat_defs.h + install -D $BSDSRCDIR/include/cdbw.h $dev/include/cdbw.h + install -D $BSDSRCDIR/sys/sys/cdbr.h $dev/include/cdbr.h install -D $BSDSRCDIR/sys/sys/featuretest.h \ - $out/include/sys/featuretest.h - install -D $BSDSRCDIR/sys/sys/md5.h $out/include/md5.h - install -D $BSDSRCDIR/sys/sys/rmd160.h $out/include/rmd160.h - install -D $BSDSRCDIR/sys/sys/sha1.h $out/include/sha1.h - install -D $BSDSRCDIR/sys/sys/sha2.h $out/include/sha2.h - install -D $BSDSRCDIR/sys/sys/queue.h $out/include/sys/queue.h - install -D $BSDSRCDIR/include/vis.h $out/include/vis.h - install -D $BSDSRCDIR/include/db.h $out/include/db.h - install -D $BSDSRCDIR/include/netconfig.h $out/include/netconfig.h - install -D $BSDSRCDIR/include/utmpx.h $out/include/utmpx.h - install -D $BSDSRCDIR/include/tzfile.h $out/include/tzfile.h - install -D $BSDSRCDIR/sys/sys/tree.h $out/include/sys/tree.h - install -D $BSDSRCDIR/include/nl_types.h $out/include/nl_types.h - install -D $BSDSRCDIR/include/stringlist.h $out/include/stringlist.h + $dev/include/sys/featuretest.h + install -D $BSDSRCDIR/sys/sys/md5.h $dev/include/md5.h + install -D $BSDSRCDIR/sys/sys/rmd160.h $dev/include/rmd160.h + install -D $BSDSRCDIR/sys/sys/sha1.h $dev/include/sha1.h + install -D $BSDSRCDIR/sys/sys/sha2.h $dev/include/sha2.h + install -D $BSDSRCDIR/sys/sys/queue.h $dev/include/sys/queue.h + install -D $BSDSRCDIR/include/vis.h $dev/include/vis.h + install -D $BSDSRCDIR/include/db.h $dev/include/db.h + install -D $BSDSRCDIR/include/netconfig.h $dev/include/netconfig.h + install -D $BSDSRCDIR/include/utmpx.h $dev/include/utmpx.h + install -D $BSDSRCDIR/include/tzfile.h $dev/include/tzfile.h + install -D $BSDSRCDIR/sys/sys/tree.h $dev/include/sys/tree.h + install -D $BSDSRCDIR/include/nl_types.h $dev/include/nl_types.h + install -D $BSDSRCDIR/include/stringlist.h $dev/include/stringlist.h # Collapse includes slightly to fix dangling reference - install -D $BSDSRCDIR/common/include/rpc/types.h $out/include/rpc/types.h - sed -i '1s;^;#include "nbtool_config.h"\n;' $out/include/rpc/types.h + install -D $BSDSRCDIR/common/include/rpc/types.h $dev/include/rpc/types.h + sed -i '1s;^;#include "nbtool_config.h"\n;' $dev/include/rpc/types.h '' + lib.optionalString stdenv.isDarwin '' - mkdir -p $out/include/ssp - touch $out/include/ssp/ssp.h + mkdir -p $dev/include/ssp + touch $dev/include/ssp/ssp.h '' + '' - mkdir -p $out/lib/pkgconfig - substitute ${./libbsd-overlay.pc} $out/lib/pkgconfig/libbsd-overlay.pc \ - --subst-var-by out $out \ + mkdir -p $dev/lib/pkgconfig + substitute ${./libbsd-overlay.pc} $dev/lib/pkgconfig/libbsd-overlay.pc \ + --subst-var-by out "$out" \ + --subst-var-by includedir "$dev/include" \ --subst-var-by version ${version} ''; extraPaths = [ - include.src - libc.src - libutil.src - (fetchNetBSD "external/bsd/flex" "9.2" "0h98jpfj7vx5zh7vd7bk6b1hmzgkcb757a8j6d9zgygxxv13v43m") - (fetchNetBSD "sys/sys" "9.2" "0zawhw51klaigqqwkx0lzrx3mim2jywrc24cm7c66qsf1im9awgd") - (fetchNetBSD "common/include/rpc/types.h" "9.2" - "0n2df12mlc3cbc48jxq35yzl1y7ghgpykvy7jnfh898rdhac7m9a" - ) - ] ++ libutil.extraPaths ++ _mainLibcExtraPaths; + "common" + "include" + "lib/libc" + "lib/libutil" + "external/bsd/flex" + "sys/sys" + ]; } ) diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/config.nix b/pkgs/os-specific/bsd/netbsd/pkgs/config.nix index c423f3ca86760..94a014a189cf4 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/config.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/config.nix @@ -7,14 +7,11 @@ mandoc, byacc, flex, - rsync, compatIfNeeded, cksum, }: mkDerivation { path = "usr.bin/config"; - version = "9.2"; - sha256 = "1yz3n4hncdkk6kp595fh2q5lg150vpqg8iw2dccydkyw4y3hgsjj"; env.NIX_CFLAGS_COMPILE = toString [ "-DMAKE_BOOTSTRAP" ]; nativeBuildInputs = [ bsdSetupHook @@ -24,8 +21,7 @@ mkDerivation { mandoc byacc flex - rsync ]; buildInputs = compatIfNeeded; - extraPaths = [ cksum.src ]; + extraPaths = [ cksum.path ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/csu.nix b/pkgs/os-specific/bsd/netbsd/pkgs/csu.nix index 66443331490f5..c6e0de8edd117 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/csu.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/csu.nix @@ -14,16 +14,14 @@ lorder, tsort, statHook, - rsync, headers, - sys, + sys-headers, ld_elf_so, }: mkDerivation { + noLibc = true; path = "lib/csu"; - version = "9.2"; - sha256 = "0al5jfazvhlzn9hvmnrbchx4d0gm282hq5gp4xs2zmj9ycmf6d03"; meta.platforms = lib.platforms.netbsd; nativeBuildInputs = [ bsdSetupHook @@ -39,11 +37,10 @@ mkDerivation { lorder tsort statHook - rsync ]; buildInputs = [ headers ]; extraPaths = [ - sys.src - ld_elf_so.src + sys-headers.path + ld_elf_so.path ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/dict.nix b/pkgs/os-specific/bsd/netbsd/pkgs/dict.nix index 0d7d026dd21d2..8d27f29a75e57 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/dict.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/dict.nix @@ -3,7 +3,5 @@ mkDerivation { path = "share/dict"; noCC = true; - version = "9.2"; - sha256 = "0svfc0byk59ri37pyjslv4c4rc7zw396r73mr593i78d39q5g3ad"; makeFlags = defaultMakeFlags ++ [ "BINDIR=$(out)/share" ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/fts/package.nix b/pkgs/os-specific/bsd/netbsd/pkgs/fts/package.nix index 7c64658bf2e51..3201a1c0e082a 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/fts/package.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/fts/package.nix @@ -2,28 +2,21 @@ mkDerivation, bsdSetupHook, netbsdSetupHook, - rsync, compatIfNeeded, - fetchNetBSD, }: mkDerivation { pname = "fts"; path = "include/fts.h"; - sha256 = "01d4fpxvz1pgzfk5xznz5dcm0x0gdzwcsfm1h3d0xc9kc6hj2q77"; - version = "9.2"; nativeBuildInputs = [ bsdSetupHook netbsdSetupHook - rsync ]; propagatedBuildInputs = compatIfNeeded; extraPaths = [ - (fetchNetBSD "lib/libc/gen/fts.c" "9.2" "1a8hmf26242nmv05ipn3ircxb0jqmmi66rh78kkyi9vjwkfl3qn7") - (fetchNetBSD "lib/libc/include/namespace.h" "9.2" - "0kksr3pdwdc1cplqf5z12ih4cml6l11lqrz91f7hjjm64y7785kc" - ) - (fetchNetBSD "lib/libc/gen/fts.3" "9.2" "1asxw0n3fhjdadwkkq3xplfgqgl3q32w1lyrvbakfa3gs0wz5zc1") + "lib/libc/gen/fts.c" + "lib/libc/include/namespace.h" + "lib/libc/gen/fts.3" ]; skipIncludesPhase = true; buildPhase = '' diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/genassym.nix b/pkgs/os-specific/bsd/netbsd/pkgs/genassym.nix index 7f81a77a02dd2..9eed584b29ae4 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/genassym.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/genassym.nix @@ -1,7 +1,3 @@ { mkDerivation }: -mkDerivation { - path = "usr.bin/genassym"; - version = "9.2"; - sha256 = "1acl1dz5kvh9h5806vkz2ap95rdsz7phmynh5i3x5y7agbki030c"; -} +mkDerivation { path = "usr.bin/genassym"; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/gencat.nix b/pkgs/os-specific/bsd/netbsd/pkgs/gencat.nix index 411be85e91e2f..ea701b6404ecc 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/gencat.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/gencat.nix @@ -1,7 +1,3 @@ { mkDerivation }: -mkDerivation { - path = "usr.bin/gencat"; - version = "9.2"; - sha256 = "0gd463x1hg36bhr7y0xryb5jyxk0z0g7xvy8rgk82nlbnlnsbbwb"; -} +mkDerivation { path = "usr.bin/gencat"; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/getconf.nix b/pkgs/os-specific/bsd/netbsd/pkgs/getconf.nix index c8483d454b877..2feb6495ccf86 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/getconf.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/getconf.nix @@ -1,7 +1,3 @@ { mkDerivation }: -mkDerivation { - path = "usr.bin/getconf"; - sha256 = "122vslz4j3h2mfs921nr2s6m078zcj697yrb75rwp2hnw3qz4s8q"; - version = "9.2"; -} +mkDerivation { path = "usr.bin/getconf"; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/getent/package.nix b/pkgs/os-specific/bsd/netbsd/pkgs/getent/package.nix index 7a9acb1e0a9e8..b6a4efad4ac9c 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/getent/package.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/getent/package.nix @@ -2,7 +2,5 @@ mkDerivation { path = "usr.bin/getent"; - sha256 = "1qngywcmm0y7nl8h3n8brvkxq4jw63szbci3kc1q6a6ndhycbbvr"; - version = "9.2"; patches = [ ./getent.patch ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/i18n_module.nix b/pkgs/os-specific/bsd/netbsd/pkgs/i18n_module.nix index c76ada865775e..9504ac22a74ed 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/i18n_module.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/i18n_module.nix @@ -1,13 +1,20 @@ { lib, + stdenvLibcMinimal, mkDerivation, - libc, + libcMinimal, }: mkDerivation { path = "lib/i18n_module"; - version = "9.2"; - sha256 = "0w6y5v3binm7gf2kn7y9jja8k18rhnyl55cvvfnfipjqdxvxd9jd"; + + libcMinimal = true; + + # Hack around GCC's limits.h missing the include_next we want See + # https://gcc.gnu.org/legacy-ml/gcc/2003-10/msg01278.html + NIX_CFLAGS_COMPILE_BEFORE = "-isystem ${stdenvLibcMinimal.cc.libc.dev}/include"; + + extraPaths = [ libcMinimal.path ]; + meta.platforms = lib.platforms.netbsd; - extraPaths = [ libc.src ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/include.nix b/pkgs/os-specific/bsd/netbsd/pkgs/include.nix index ec316a63174fd..1048016b81e2f 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/include.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/include.nix @@ -7,18 +7,15 @@ install, mandoc, groff, - rsync, nbperf, rpcgen, - common, defaultMakeFlags, stdenv, }: mkDerivation { + noLibc = true; path = "include"; - version = "9.2"; - sha256 = "0nxnmj4c8s3hb9n3fpcmd0zl3l1nmhivqgi9a35sis943qvpgl9h"; nativeBuildInputs = [ bsdSetupHook netbsdSetupHook @@ -26,7 +23,6 @@ mkDerivation { install mandoc groff - rsync nbperf rpcgen ]; @@ -46,7 +42,7 @@ mkDerivation { makeFlags=''${makeFlags/INCSDIR/INCSDIR0} ''; - extraPaths = [ common ]; + extraPaths = [ "common" ]; headersOnly = true; noCC = true; meta.platforms = lib.platforms.netbsd; diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/install/package.nix b/pkgs/os-specific/bsd/netbsd/pkgs/install/package.nix index 0fc6ca452be0d..fa8bb690075f1 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/install/package.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/install/package.nix @@ -8,7 +8,6 @@ makeMinimal, mandoc, groff, - rsync, compatIfNeeded, fts, @@ -26,11 +25,9 @@ let in mkDerivation { path = "usr.bin/xinstall"; - version = "9.2"; - sha256 = "1f6pbz3qv1qcrchdxif8p5lbmnwl8b9nq615hsd3cyl4avd5bfqj"; extraPaths = [ - mtree.src - make.src + mtree.path + make.path ]; nativeBuildInputs = [ bsdSetupHook @@ -38,7 +35,6 @@ mkDerivation { makeMinimal mandoc groff - rsync ]; skipIncludesPhase = true; buildInputs = diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/ld_elf_so.nix b/pkgs/os-specific/bsd/netbsd/pkgs/ld_elf_so.nix index a350e81d32064..900b87967927c 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/ld_elf_so.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/ld_elf_so.nix @@ -1,22 +1,24 @@ { lib, mkDerivation, - libc, + libcMinimal, defaultMakeFlags, }: mkDerivation { + noLibc = true; path = "libexec/ld.elf_so"; - version = "9.2"; - sha256 = "0ia9mqzdljly0vqfwflm5mzz55k7qsr4rw2bzhivky6k30vgirqa"; meta.platforms = lib.platforms.netbsd; - LIBC_PIC = "${libc}/lib/libc_pic.a"; + LIBC_PIC = "${libcMinimal}/lib/libc_pic.a"; # Hack to prevent a symlink being installed here for compatibility. SHLINKINSTALLDIR = "/usr/libexec"; USE_FORT = "yes"; makeFlags = defaultMakeFlags ++ [ "BINDIR=$(out)/libexec" - "CLIBOBJ=${libc}/lib" + "CLIBOBJ=${libcMinimal}/lib" + ]; + extraPaths = [ + libcMinimal.path + "sys" ]; - extraPaths = [ libc.src ] ++ libc.extraPaths; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/libarch.nix b/pkgs/os-specific/bsd/netbsd/pkgs/libarch.nix index 93ea02f8a17c1..457ea6fa48d91 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/libarch.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/libarch.nix @@ -2,7 +2,5 @@ mkDerivation { path = "lib/libarch"; - version = "9.2"; - sha256 = "6ssenRhuSwp0Jn71ErT0PrEoCJ+cIYRztwdL4QTDZsQ="; meta.platforms = lib.platforms.netbsd; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/libc.nix b/pkgs/os-specific/bsd/netbsd/pkgs/libc.nix index d755e4b6870a1..665c9ce8ec8be 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/libc.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/libc.nix @@ -1,103 +1,52 @@ { lib, - mkDerivation, - defaultMakeFlags, - _mainLibcExtraPaths, - fetchNetBSD, - bsdSetupHook, - netbsdSetupHook, - makeMinimal, - install, - mandoc, - groff, - flex, - byacc, - genassym, - gencat, - lorder, - tsort, - statHook, - rsync, - rpcgen, - csu, - headers, + symlinkJoin, + libcMinimal, + libpthread, + libm, + libresolv, + librpcsvc, + i18n_module, + libutil, librt, + libcrypt, + version, }: -mkDerivation { - path = "lib/libc"; - version = "9.2"; - sha256 = "1y9c13igg0kai07sqvf9cm6yqmd8lhfd8hq3q7biilbgs1l99as3"; - USE_FORT = "yes"; - MKPROFILE = "no"; - extraPaths = _mainLibcExtraPaths ++ [ - (fetchNetBSD "external/bsd/jemalloc" "9.2" "0cq704swa0h2yxv4gc79z2lwxibk9k7pxh3q5qfs7axx3jx3n8kb") - ]; - nativeBuildInputs = [ - bsdSetupHook - netbsdSetupHook - makeMinimal - install - mandoc - groff - flex - byacc - genassym - gencat - lorder - tsort - statHook - rsync - rpcgen - ]; - buildInputs = [ - headers - csu - ]; - env.NIX_CFLAGS_COMPILE = "-B${csu}/lib -fcommon"; - meta.platforms = lib.platforms.netbsd; - SHLIBINSTALLDIR = "$(out)/lib"; - MKPICINSTALL = "yes"; - NLSDIR = "$(out)/share/nls"; - makeFlags = defaultMakeFlags ++ [ "FILESDIR=$(out)/var/db" ]; - postInstall = '' - pushd ${headers} - find . -type d -exec mkdir -p $out/\{} \; - find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \; - popd - - pushd ${csu} - find . -type d -exec mkdir -p $out/\{} \; - find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \; - popd - - NIX_CFLAGS_COMPILE+=" -B$out/lib" - NIX_CFLAGS_COMPILE+=" -I$out/include" - NIX_LDFLAGS+=" -L$out/lib" - - make -C $BSDSRCDIR/lib/libpthread $makeFlags - make -C $BSDSRCDIR/lib/libpthread $makeFlags install - - make -C $BSDSRCDIR/lib/libm $makeFlags - make -C $BSDSRCDIR/lib/libm $makeFlags install +symlinkJoin rec { + name = "${pname}-${version}"; + pname = "libc-netbsd"; + inherit version; - make -C $BSDSRCDIR/lib/libresolv $makeFlags - make -C $BSDSRCDIR/lib/libresolv $makeFlags install - - make -C $BSDSRCDIR/lib/librpcsvc $makeFlags - make -C $BSDSRCDIR/lib/librpcsvc $makeFlags install - - make -C $BSDSRCDIR/lib/i18n_module $makeFlags - make -C $BSDSRCDIR/lib/i18n_module $makeFlags install - - make -C $BSDSRCDIR/lib/libutil $makeFlags - make -C $BSDSRCDIR/lib/libutil $makeFlags install - - make -C $BSDSRCDIR/lib/librt $makeFlags - make -C $BSDSRCDIR/lib/librt $makeFlags install + outputs = [ + "out" + "dev" + "man" + ]; - make -C $BSDSRCDIR/lib/libcrypt $makeFlags - make -C $BSDSRCDIR/lib/libcrypt $makeFlags install + paths = + lib.concatMap + (p: [ + (lib.getDev p) + (lib.getLib p) + (lib.getMan p) + ]) + [ + libcMinimal + libm + libpthread + libresolv + librpcsvc + i18n_module + libutil + librt + libcrypt + ]; + + postBuild = '' + rm -r "$out/nix-support" + fixupPhase ''; - inherit (librt) postPatch; + + meta.platforms = lib.platforms.netbsd; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/libcMinimal.nix b/pkgs/os-specific/bsd/netbsd/pkgs/libcMinimal.nix new file mode 100644 index 0000000000000..bbab20d53d51e --- /dev/null +++ b/pkgs/os-specific/bsd/netbsd/pkgs/libcMinimal.nix @@ -0,0 +1,85 @@ +{ + lib, + mkDerivation, + defaultMakeFlags, + bsdSetupHook, + netbsdSetupHook, + makeMinimal, + install, + mandoc, + groff, + flex, + byacc, + genassym, + gencat, + lorder, + tsort, + statHook, + rpcgen, + csu, + headers, +}: + +mkDerivation { + noLibc = true; + path = "lib/libc"; + pname = "libcMinimal-netbsd"; + outputs = [ + "out" + "dev" + "man" + "tags" + ]; + USE_FORT = "yes"; + MKPROFILE = "no"; + extraPaths = [ + "common" + "lib/i18n_module" + "libexec/ld.elf_so" + "sys" + "external/bsd/jemalloc" + ]; + nativeBuildInputs = [ + bsdSetupHook + netbsdSetupHook + makeMinimal + install + mandoc + groff + flex + byacc + genassym + gencat + lorder + tsort + statHook + rpcgen + ]; + buildInputs = [ + headers + csu + ]; + env.NIX_CFLAGS_COMPILE = "-B${csu}/lib -fcommon"; + meta.platforms = lib.platforms.netbsd; + SHLIBINSTALLDIR = "$(out)/lib"; + MKPICINSTALL = "yes"; + NLSDIR = "$(out)/share/nls"; + makeFlags = defaultMakeFlags ++ [ "FILESDIR=$(out)/var/db" ]; + postInstall = '' + pushd ${headers} + find include -type d -exec mkdir -p "$dev/{}" ';' + find include '(' -type f -o -type l ')' -exec cp -pr "{}" "$dev/{}" ';' + popd + + pushd ${csu} + find lib -type d -exec mkdir -p "$out/{}" ';' + find lib '(' -type f -o -type l ')' -exec cp -pr "{}" "$out/{}" ';' + popd + + moveToOutput var/db/libc.tags "$tags" + ''; + + postPatch = '' + sed -i 's,/usr\(/include/sys/syscall.h\),${headers}\1,g' lib/lib*/sys/Makefile.inc + ''; +} diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/libcrypt.nix b/pkgs/os-specific/bsd/netbsd/pkgs/libcrypt.nix index c5f9deff589c4..f51dec0f68af2 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/libcrypt.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/libcrypt.nix @@ -2,8 +2,14 @@ mkDerivation { path = "lib/libcrypt"; - version = "9.2"; - sha256 = "0siqan1wdqmmhchh2n8w6a8x1abbff8n4yb6jrqxap3hqn8ay54g"; + + libcMinimal = true; + + outputs = [ + "out" + "man" + ]; + SHLIBINSTALLDIR = "$(out)/lib"; meta.platforms = lib.platforms.netbsd; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/libcurses.nix b/pkgs/os-specific/bsd/netbsd/pkgs/libcurses.nix index 5072821db9117..8d61bcfdf7d97 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/libcurses.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/libcurses.nix @@ -9,8 +9,6 @@ mkDerivation { path = "lib/libcurses"; - version = "9.2"; - sha256 = "0pd0dggl3w4bv5i5h0s1wrc8hr66n4hkv3zlklarwfdhc692fqal"; buildInputs = [ libterminfo ]; env.NIX_CFLAGS_COMPILE = toString ( [ diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/libedit.nix b/pkgs/os-specific/bsd/netbsd/pkgs/libedit.nix index ee1e7bf79f964..cb9951cb8cf10 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/libedit.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/libedit.nix @@ -9,8 +9,6 @@ mkDerivation { path = "lib/libedit"; - version = "9.2"; - sha256 = "1wqhngraxwqk4jgrf5f18jy195yrp7c06n1gf31pbplq79mg1bcj"; buildInputs = [ libterminfo libcurses diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/libm.nix b/pkgs/os-specific/bsd/netbsd/pkgs/libm.nix index f36e97f8e6ae0..f010c808c4843 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/libm.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/libm.nix @@ -1,14 +1,18 @@ -{ - lib, - mkDerivation, - sys, -}: +{ lib, mkDerivation }: mkDerivation { path = "lib/libm"; - version = "9.2"; - sha256 = "1apwfr26shdmbqqnmg7hxf7bkfxw44ynqnnnghrww9bnhqdnsy92"; + + libcMinimal = true; + + outputs = [ + "out" + "man" + ]; + SHLIBINSTALLDIR = "$(out)/lib"; + + extraPaths = [ "sys" ]; + meta.platforms = lib.platforms.netbsd; - extraPaths = [ sys.src ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/libossaudio.nix b/pkgs/os-specific/bsd/netbsd/pkgs/libossaudio.nix index 51bbc216e2046..a74176db68cdf 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/libossaudio.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/libossaudio.nix @@ -2,7 +2,5 @@ mkDerivation { path = "lib/libossaudio"; - version = "9.2"; - sha256 = "16l3bfy6dcwqnklvh3x0ps8ld1y504vf57v9rx8f9adzhb797jh0"; meta.platforms = lib.platforms.netbsd; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/libpci.nix b/pkgs/os-specific/bsd/netbsd/pkgs/libpci.nix index b0be4a2da723a..69d1ff5accca4 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/libpci.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/libpci.nix @@ -7,9 +7,7 @@ mkDerivation { pname = "libpci"; path = "lib/libpci"; - version = "9.2"; - sha256 = "+IOEO1Bw3/H3iCp3uk3bwsFZbvCqN5Ciz70irnPl8E8="; env.NIX_CFLAGS_COMPILE = toString [ "-I." ]; meta.platforms = lib.platforms.netbsd; - extraPaths = [ sys.src ]; + extraPaths = [ sys.path ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/libpthread/base.nix b/pkgs/os-specific/bsd/netbsd/pkgs/libpthread/base.nix deleted file mode 100644 index d8ea7c553eba3..0000000000000 --- a/pkgs/os-specific/bsd/netbsd/pkgs/libpthread/base.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - path = "lib/libpthread"; - version = "9.2"; - sha256 = "0mlmc31k509dwfmx5s2x010wxjc44mr6y0cbmk30cfipqh8c962h"; -} diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/libpthread/headers.nix b/pkgs/os-specific/bsd/netbsd/pkgs/libpthread/headers.nix index c3cc899017eee..41a447e2b4083 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/libpthread/headers.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/libpthread/headers.nix @@ -1,12 +1,10 @@ { lib, mkDerivation }: -mkDerivation ( - import ./base.nix - // { - pname = "libpthread-headers"; - installPhase = "includesPhase"; - dontBuild = true; - noCC = true; - meta.platforms = lib.platforms.netbsd; - } -) +mkDerivation { + path = "lib/libpthread"; + pname = "libpthread-headers"; + installPhase = "includesPhase"; + dontBuild = true; + noCC = true; + meta.platforms = lib.platforms.netbsd; +} diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/libpthread/package.nix b/pkgs/os-specific/bsd/netbsd/pkgs/libpthread/package.nix index 88d392e20b4a8..8e0ef5fd1b74e 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/libpthread/package.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/libpthread/package.nix @@ -1,28 +1,35 @@ { lib, + stdenvLibcMinimal, mkDerivation, headers, - common, - libc, + libcMinimal, librt, - sys, }: -mkDerivation ( - import ./base.nix - // { - pname = "libpthread"; - installPhase = null; - noCC = false; - dontBuild = false; - buildInputs = [ headers ]; - SHLIBINSTALLDIR = "$(out)/lib"; - extraPaths = [ - common - libc.src - librt.src - sys.src - ]; - meta.platforms = lib.platforms.netbsd; - } -) +mkDerivation { + path = "lib/libpthread"; + + libcMinimal = true; + + outputs = [ + "out" + "dev" + "man" + ]; + + SHLIBINSTALLDIR = "$(out)/lib"; + + # Hack around GCC's limits.h missing the include_next we want See + # https://gcc.gnu.org/legacy-ml/gcc/2003-10/msg01278.html + NIX_CFLAGS_COMPILE_BEFORE = "-isystem ${stdenvLibcMinimal.cc.libc.dev}/include"; + + extraPaths = [ + "common" + libcMinimal.path + librt.path + "sys" + ]; + + meta.platforms = lib.platforms.netbsd; +} diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/libresolv.nix b/pkgs/os-specific/bsd/netbsd/pkgs/libresolv.nix index 24bc4f2f9e002..63e95de850c09 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/libresolv.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/libresolv.nix @@ -1,13 +1,15 @@ { lib, mkDerivation, - libc, + libcMinimal, }: mkDerivation { path = "lib/libresolv"; - version = "9.2"; - sha256 = "1am74s74mf1ynwz3p4ncjkg63f78a1zjm983q166x4sgzps15626"; + + libcMinimal = true; + + extraPaths = [ libcMinimal.path ]; + meta.platforms = lib.platforms.netbsd; - extraPaths = [ libc.src ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/librpcsvc.nix b/pkgs/os-specific/bsd/netbsd/pkgs/librpcsvc.nix index 8d757a8a84304..60609ed134fb7 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/librpcsvc.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/librpcsvc.nix @@ -14,10 +14,14 @@ mkDerivation { path = "lib/librpcsvc"; - version = "9.2"; - sha256 = "1q34pfiyjbrgrdqm46jwrsqms49ly6z3b0xh1wg331zga900vq5n"; - makeFlags = defaultMakeFlags ++ [ "INCSDIR=$(out)/include/rpcsvc" ]; - meta.platforms = lib.platforms.netbsd; + + libcMinimal = true; + + outputs = [ + "out" + "dev" + ]; + nativeBuildInputs = [ bsdSetupHook netbsdSetupHook @@ -28,4 +32,8 @@ mkDerivation { rpcgen statHook ]; + + makeFlags = defaultMakeFlags ++ [ "INCSDIR=$(dev)/include/rpcsvc" ]; + + meta.platforms = lib.platforms.netbsd; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/librt.nix b/pkgs/os-specific/bsd/netbsd/pkgs/librt.nix index fa0229953b66b..c69062d9e87df 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/librt.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/librt.nix @@ -1,18 +1,22 @@ { lib, mkDerivation, - libc, - headers, + libcMinimal, }: mkDerivation { path = "lib/librt"; - version = "9.2"; - sha256 = "07f8mpjcqh5kig5z5sp97fg55mc4dz6aa1x5g01nv2pvbmqczxc6"; + + libcMinimal = true; + + outputs = [ + "out" + "man" + ]; + + extraPaths = [ libcMinimal.path ] ++ libcMinimal.extraPaths; + + inherit (libcMinimal) postPatch; + meta.platforms = lib.platforms.netbsd; - extraPaths = [ libc.src ] ++ libc.extraPaths; - postPatch = '' - sed -i 's,/usr\(/include/sys/syscall.h\),${headers}\1,g' \ - $BSDSRCDIR/lib/{libc,librt}/sys/Makefile.inc - ''; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/libterminfo.nix b/pkgs/os-specific/bsd/netbsd/pkgs/libterminfo.nix index 6ac573d865b1a..c02410a52ed2a 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/libterminfo.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/libterminfo.nix @@ -10,15 +10,11 @@ statHook, nbperf, tic, - rsync, compatIfNeeded, - fetchNetBSD, }: mkDerivation { path = "lib/libterminfo"; - version = "9.2"; - sha256 = "0pq05k3dj0dfsczv07frnnji92mazmy2qqngqbx2zgqc1x251414"; nativeBuildInputs = [ bsdSetupHook netbsdSetupHook @@ -30,7 +26,6 @@ mkDerivation { statHook nbperf tic - rsync ]; buildInputs = compatIfNeeded; SHLIBINSTALLDIR = "$(out)/lib"; @@ -45,7 +40,5 @@ mkDerivation { postInstall = '' make -C $BSDSRCDIR/share/terminfo $makeFlags BINDIR=$out/share install ''; - extraPaths = [ - (fetchNetBSD "share/terminfo" "9.2" "1vh9rl4w8118a9qdpblfxmv1wkpm83rm9gb4rzz5bpm56i6d7kk7") - ]; + extraPaths = [ "share/terminfo" ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/libutil.nix b/pkgs/os-specific/bsd/netbsd/pkgs/libutil.nix index fdc57df9c231e..c217f6a7ce465 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/libutil.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/libutil.nix @@ -1,8 +1,7 @@ { + lib, + stdenvLibcMinimal, mkDerivation, - common, - libc, - sys, bsdSetupHook, netbsdSetupHook, makeMinimal, @@ -12,19 +11,19 @@ lorder, mandoc, statHook, - rsync, headers, }: mkDerivation { path = "lib/libutil"; - version = "9.2"; - sha256 = "02gm5a5zhh8qp5r5q5r7x8x6x50ir1i0ncgsnfwh1vnrz6mxbq7z"; - extraPaths = [ - common - libc.src - sys.src + + libcMinimal = true; + + outputs = [ + "out" + "man" ]; + nativeBuildInputs = [ bsdSetupHook netbsdSetupHook @@ -35,8 +34,19 @@ mkDerivation { lorder mandoc statHook - rsync ]; - buildInputs = [ headers ]; + SHLIBINSTALLDIR = "$(out)/lib"; + + # Hack around GCC's limits.h missing the include_next we want See + # https://gcc.gnu.org/legacy-ml/gcc/2003-10/msg01278.html + NIX_CFLAGS_COMPILE_BEFORE = "-isystem ${stdenvLibcMinimal.cc.libc.dev}/include"; + + extraPaths = [ + "common" + "lib/libc" + "sys" + ]; + + meta.platforms = lib.platforms.netbsd; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/locale/package.nix b/pkgs/os-specific/bsd/netbsd/pkgs/locale/package.nix index 3c61e8517b35b..e3e06ba1a152c 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/locale/package.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/locale/package.nix @@ -2,8 +2,6 @@ mkDerivation { path = "usr.bin/locale"; - version = "9.2"; - sha256 = "0kk6v9k2bygq0wf9gbinliqzqpzs9bgxn0ndyl2wcv3hh2bmsr9p"; patches = [ ./locale.patch ]; env.NIX_CFLAGS_COMPILE = "-DYESSTR=__YESSTR -DNOSTR=__NOSTR"; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/lorder.nix b/pkgs/os-specific/bsd/netbsd/pkgs/lorder.nix index 0b99a794b07a0..b10b8caee2ff2 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/lorder.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/lorder.nix @@ -6,13 +6,10 @@ install, mandoc, groff, - rsync, }: mkDerivation { path = "usr.bin/lorder"; - version = "9.2"; - sha256 = "0rjf9blihhm0n699vr2bg88m4yjhkbxh6fxliaay3wxkgnydjwn2"; nativeBuildInputs = [ bsdSetupHook netbsdSetupHook @@ -20,6 +17,5 @@ mkDerivation { install mandoc groff - rsync ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/make-rules.nix b/pkgs/os-specific/bsd/netbsd/pkgs/make-rules.nix index 8528606165468..e16027b535fca 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/make-rules.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/make-rules.nix @@ -1,24 +1,19 @@ { lib, mkDerivation, - fetchNetBSD, stdenv, bsdSetupHook, netbsdSetupHook, - rsync, }: mkDerivation { path = "share/mk"; - sha256 = "0w9x77cfnm6zwy40slradzi0ip9gz80x6lk7pvnlxzsr2m5ra5sy"; - version = "9.2"; noCC = true; buildInputs = [ ]; nativeBuildInputs = [ bsdSetupHook netbsdSetupHook - rsync ]; dontBuild = true; diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/make.nix b/pkgs/os-specific/bsd/netbsd/pkgs/make.nix index 4d0b9f4b4cf22..9612ca7ff4893 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/make.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/make.nix @@ -1,15 +1,12 @@ { lib, mkDerivation, - fetchNetBSD, stdenv, make-rules, }: mkDerivation { path = "usr.bin/make"; - sha256 = "0vi73yicbmbp522qzqvd979cx6zm5jakhy77xh73c1kygf8klccs"; - version = "9.2"; postPatch = make-rules.postPatch @@ -21,7 +18,5 @@ mkDerivation { postInstall = '' make -C $BSDSRCDIR/share/mk FILESDIR=$out/share/mk install ''; - extraPaths = [ - (fetchNetBSD "share/mk" "9.2" "0w9x77cfnm6zwy40slradzi0ip9gz80x6lk7pvnlxzsr2m5ra5sy") - ]; + extraPaths = [ "share/mk" ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/makeMinimal.nix b/pkgs/os-specific/bsd/netbsd/pkgs/makeMinimal.nix index 62a4d4a6a1246..aab6e7f2b0dfe 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/makeMinimal.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/makeMinimal.nix @@ -2,21 +2,17 @@ mkDerivation, bsdSetupHook, netbsdSetupHook, - rsync, make, make-rules, }: mkDerivation { path = "tools/make"; - sha256 = "0fh0nrnk18m613m5blrliq2aydciv51qhc0ihsj4k63incwbk90n"; - version = "9.2"; buildInputs = [ ]; nativeBuildInputs = [ bsdSetupHook netbsdSetupHook - rsync ]; skipIncludesPhase = true; @@ -47,5 +43,5 @@ mkDerivation { runHook postInstall ''; - extraPaths = [ make.src ]; + extraPaths = [ make.path ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/man.nix b/pkgs/os-specific/bsd/netbsd/pkgs/man.nix index bce5bcee66946..527c547fdaad0 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/man.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/man.nix @@ -3,8 +3,6 @@ mkDerivation { path = "share/man"; noCC = true; - version = "9.2"; - sha256 = "1l4lmj4kmg8dl86x94sr45w0xdnkz8dn4zjx0ipgr9bnq98663zl"; # man0 generates a man.pdf using ps2pdf, but doesn't install it later, # so we can avoid the dependency on ghostscript postPatch = '' diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/misc.nix b/pkgs/os-specific/bsd/netbsd/pkgs/misc.nix index 7f96f4d1495ad..726acf27d50b0 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/misc.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/misc.nix @@ -3,7 +3,5 @@ mkDerivation { path = "share/misc"; noCC = true; - version = "9.2"; - sha256 = "1j2cdssdx6nncv8ffj7f7ybl7m9hadjj8vm8611skqdvxnjg6nbc"; makeFlags = defaultMakeFlags ++ [ "BINDIR=$(out)/share" ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/mkDerivation.nix b/pkgs/os-specific/bsd/netbsd/pkgs/mkDerivation.nix index 849d2b1da3fbf..8605bfbfcebe2 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/mkDerivation.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/mkDerivation.nix @@ -1,8 +1,12 @@ { lib, - stdenvNoCC, stdenv, - fetchNetBSD, + stdenvNoCC, + crossLibcStdenv, + stdenvLibcMinimal, + runCommand, + rsync, + source, bsdSetupHook, netbsdSetupHook, makeMinimal, @@ -12,21 +16,39 @@ mandoc, groff, statHook, - rsync, compatIfNeeded, defaultMakeFlags, + version, }: lib.makeOverridable ( attrs: let - stdenv' = if attrs.noCC or false then stdenvNoCC else stdenv; + stdenv' = + if attrs.noCC or false then + stdenvNoCC + else if attrs.noLibc or false then + crossLibcStdenv + else if attrs.libcMinimal or false then + stdenvLibcMinimal + else + stdenv; in stdenv'.mkDerivation ( - { + rec { pname = "${attrs.pname or (baseNameOf attrs.path)}-netbsd"; - inherit (attrs) version; - src = fetchNetBSD attrs.path attrs.version attrs.sha256; + inherit version; + src = runCommand "${pname}-filtered-src" { nativeBuildInputs = [ rsync ]; } '' + for p in ${lib.concatStringsSep " " ([ attrs.path ] ++ attrs.extraPaths or [ ])}; do + set -x + path="$out/$p" + mkdir -p "$(dirname "$path")" + src_path="${source}/$p" + if [[ -d "$src_path" ]]; then src_path+=/; fi + rsync --chmod="+w" -r "$src_path" "$path" + set +x + done + ''; extraPaths = [ ]; @@ -40,7 +62,6 @@ lib.makeOverridable ( mandoc groff statHook - rsync ]; buildInputs = compatIfNeeded; diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/mknod.nix b/pkgs/os-specific/bsd/netbsd/pkgs/mknod.nix index 5c4c172e40a7d..bf7d8b7db689b 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/mknod.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/mknod.nix @@ -1,7 +1,3 @@ { mkDerivation }: -mkDerivation { - path = "sbin/mknod"; - version = "9.2"; - sha256 = "1d9369shzwgixz3nph991i8q5vk7hr04py3n9avbfbhzy4gndqs2"; -} +mkDerivation { path = "sbin/mknod"; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/mtree.nix b/pkgs/os-specific/bsd/netbsd/pkgs/mtree.nix index 723da3ad891bc..8310941c7cb22 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/mtree.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/mtree.nix @@ -2,7 +2,5 @@ mkDerivation { path = "usr.sbin/mtree"; - version = "9.2"; - sha256 = "04p7w540vz9npvyb8g8hcf2xa05phn1y88hsyrcz3vwanvpc0yv9"; - extraPaths = [ mknod.src ]; + extraPaths = [ mknod.path ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/nbperf.nix b/pkgs/os-specific/bsd/netbsd/pkgs/nbperf.nix index a23c5dddfc9f8..3b52eae96c3b2 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/nbperf.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/nbperf.nix @@ -1,7 +1,3 @@ { mkDerivation }: -mkDerivation { - path = "usr.bin/nbperf"; - version = "9.2"; - sha256 = "1nxc302vgmjhm3yqdivqyfzslrg0vjpbss44s74rcryrl19mma9r"; -} +mkDerivation { path = "usr.bin/nbperf"; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/netbsdSetupHook/setup-hook.sh b/pkgs/os-specific/bsd/netbsd/pkgs/netbsdSetupHook/setup-hook.sh index ef00ea418e535..8c3742a76534b 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/netbsdSetupHook/setup-hook.sh +++ b/pkgs/os-specific/bsd/netbsd/pkgs/netbsdSetupHook/setup-hook.sh @@ -1,16 +1,6 @@ -mergeNetBSDSourceDir() { - # merge together all extra paths - # there should be a better way to do this - chmod -R u+w $BSDSRCDIR - for path in $extraPaths; do - rsync -Er --chmod u+w $path/ $BSDSRCDIR/ - done -} - addNetBSDMakeFlags() { makeFlags="INCSDIR=${!outputDev}/include $makeFlags" makeFlags="MANDIR=${!outputMan}/share/man $makeFlags" } -postUnpackHooks+=(mergeNetBSDSourceDir) preConfigureHooks+=(addNetBSDMakeFlags) diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/rpcgen.nix b/pkgs/os-specific/bsd/netbsd/pkgs/rpcgen.nix index b1482d4dff112..dc6ceb7bd634d 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/rpcgen.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/rpcgen.nix @@ -1,7 +1,3 @@ { mkDerivation }: -mkDerivation { - path = "usr.bin/rpcgen"; - version = "9.2"; - sha256 = "1kfgfx54jg98wbg0d95p0rvf4w0302v8fz724b0bdackdsrd4988"; -} +mkDerivation { path = "usr.bin/rpcgen"; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/source.nix b/pkgs/os-specific/bsd/netbsd/pkgs/source.nix new file mode 100644 index 0000000000000..432de84ffb3e1 --- /dev/null +++ b/pkgs/os-specific/bsd/netbsd/pkgs/source.nix @@ -0,0 +1,12 @@ +{ + lib, + fetchcvs, + version, +}: + +fetchcvs { + cvsRoot = ":pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot"; + module = "src"; + tag = "netbsd-${lib.replaceStrings [ "." ] [ "-" ] version}-RELEASE"; + sha256 = "sha256-+onT/ajWayaKALucaZBqoiEkvBBI400Fs2OCtMf/bYU="; +} diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/stat/package.nix b/pkgs/os-specific/bsd/netbsd/pkgs/stat/package.nix index 397b1f5303c15..f55bab160bc2c 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/stat/package.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/stat/package.nix @@ -6,7 +6,6 @@ install, mandoc, groff, - rsync, }: # Don't add this to nativeBuildInputs directly. @@ -14,8 +13,6 @@ mkDerivation { path = "usr.bin/stat"; - version = "9.2"; - sha256 = "18nqwlndfc34qbbgqx5nffil37jfq9aw663ippasfxd2hlyc106x"; nativeBuildInputs = [ bsdSetupHook netbsdSetupHook @@ -23,6 +20,5 @@ mkDerivation { install mandoc groff - rsync ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/sys/base.nix b/pkgs/os-specific/bsd/netbsd/pkgs/sys/base.nix index 4c140fa3bdef7..116aa46e73503 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/sys/base.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/sys/base.nix @@ -9,17 +9,13 @@ tsort, lorder, statHook, - rsync, uudecode, config, genassym, defaultMakeFlags, - common, }: { path = "sys"; - version = "9.2"; - sha256 = "03s18q8d9giipf05bx199fajc2qwikji0djz7hw63d2lya6bfnpj"; # Make the build ignore linker warnings prePatch = '' @@ -56,7 +52,6 @@ tsort lorder statHook - rsync uudecode config genassym @@ -89,5 +84,5 @@ ''; meta.platforms = lib.platforms.netbsd; - extraPaths = [ common ]; + extraPaths = [ "common" ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/sys/headers.nix b/pkgs/os-specific/bsd/netbsd/pkgs/sys/headers.nix index 2df35efc199ad..d19d9d86cb382 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/sys/headers.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/sys/headers.nix @@ -9,12 +9,10 @@ tsort, lorder, statHook, - rsync, uudecode, config, genassym, defaultMakeFlags, - common, }: let base = import ./base.nix { @@ -29,12 +27,10 @@ let tsort lorder statHook - rsync uudecode config genassym defaultMakeFlags - common ; }; in diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/sys/package.nix b/pkgs/os-specific/bsd/netbsd/pkgs/sys/package.nix index c8e6edab5f48f..0bdd83126bcf7 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/sys/package.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/sys/package.nix @@ -9,12 +9,10 @@ tsort, lorder, statHook, - rsync, uudecode, config, genassym, defaultMakeFlags, - common, }: let base = import ./base.nix { @@ -29,12 +27,10 @@ let tsort lorder statHook - rsync uudecode config genassym defaultMakeFlags - common ; }; in diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/tic.nix b/pkgs/os-specific/bsd/netbsd/pkgs/tic.nix index e0900652108fd..42772d1d71285 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/tic.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/tic.nix @@ -7,17 +7,13 @@ mandoc, groff, nbperf, - rsync, compatIfNeeded, defaultMakeFlags, libterminfo, - fetchNetBSD, }: mkDerivation { path = "tools/tic"; - version = "9.2"; - sha256 = "092y7db7k4kh2jq8qc55126r5qqvlb8lq8mhmy5ipbi36hwb4zrz"; HOSTPROG = "tic"; buildInputs = compatIfNeeded; nativeBuildInputs = [ @@ -28,12 +24,11 @@ mkDerivation { mandoc groff nbperf - rsync ]; makeFlags = defaultMakeFlags ++ [ "TOOLDIR=$(out)" ]; extraPaths = [ - libterminfo.src - (fetchNetBSD "usr.bin/tic" "9.2" "1mwdfg7yx1g43ss378qsgl5rqhsxskqvsd2mqvrn38qw54i8v5i1") - (fetchNetBSD "tools/Makefile.host" "9.2" "15b4ab0n36lqj00j5lz2xs83g7l8isk3wx1wcapbrn66qmzz2sxy") + libterminfo.path + "usr.bin/tic" + "tools/Makefile.host" ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/tsort.nix b/pkgs/os-specific/bsd/netbsd/pkgs/tsort.nix index 9200bc57a73e0..c844e48b4412a 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/tsort.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/tsort.nix @@ -6,13 +6,10 @@ install, mandoc, groff, - rsync, }: mkDerivation { path = "usr.bin/tsort"; - version = "9.2"; - sha256 = "1dqvf9gin29nnq3c4byxc7lfd062pg7m84843zdy6n0z63hnnwiq"; nativeBuildInputs = [ bsdSetupHook netbsdSetupHook @@ -20,6 +17,5 @@ mkDerivation { install mandoc groff - rsync ]; } diff --git a/pkgs/os-specific/bsd/netbsd/pkgs/uudecode.nix b/pkgs/os-specific/bsd/netbsd/pkgs/uudecode.nix index 7592db3eaf180..1e58df16ceeec 100644 --- a/pkgs/os-specific/bsd/netbsd/pkgs/uudecode.nix +++ b/pkgs/os-specific/bsd/netbsd/pkgs/uudecode.nix @@ -6,8 +6,6 @@ mkDerivation { path = "usr.bin/uudecode"; - version = "9.2"; - sha256 = "00a3zmh15pg4vx6hz0kaa5mi8d2b1sj4h512d7p6wbvxq6mznwcn"; env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isLinux "-DNO_BASE64"; NIX_LDFLAGS = lib.optional stdenv.isDarwin "-lresolv"; } diff --git a/pkgs/os-specific/bsd/openbsd/default.nix b/pkgs/os-specific/bsd/openbsd/default.nix index 00dba195b92f5..bfc88f097865f 100644 --- a/pkgs/os-specific/bsd/openbsd/default.nix +++ b/pkgs/os-specific/bsd/openbsd/default.nix @@ -1,16 +1,17 @@ { - stdenv, lib, - stdenvNoCC, makeScopeWithSplicing', generateSplicesForMkScope, - pkgs, buildPackages, - netbsd, }: -makeScopeWithSplicing' { +let otherSplices = generateSplicesForMkScope "openbsd"; + buildOpenbsd = otherSplices.selfBuildHost; +in + +makeScopeWithSplicing' { + inherit otherSplices; f = ( self: lib.packagesFromDirectoryRecursive { @@ -19,8 +20,8 @@ makeScopeWithSplicing' { } // { libc = self.callPackage ./pkgs/libc/package.nix { - inherit (self) csu include lorder; - inherit (buildPackages.openbsd) makeMinimal; + inherit (self) csu include; + inherit (buildOpenbsd) makeMinimal; inherit (buildPackages.netbsd) install gencat @@ -30,16 +31,16 @@ makeScopeWithSplicing' { }; makeMinimal = buildPackages.netbsd.makeMinimal.override { inherit (self) make-rules; }; mkDerivation = self.callPackage ./pkgs/mkDerivation.nix { - inherit stdenv; inherit (buildPackages.netbsd) install; + inherit (buildPackages.buildPackages) rsync; }; include = self.callPackage ./pkgs/include/package.nix { - inherit (buildPackages.openbsd) makeMinimal; + inherit (buildOpenbsd) makeMinimal; inherit (buildPackages.netbsd) install rpcgen mtree; }; csu = self.callPackage ./pkgs/csu.nix { inherit (self) include; - inherit (buildPackages.openbsd) makeMinimal; + inherit (buildOpenbsd) makeMinimal; inherit (buildPackages.netbsd) install; }; make-rules = self.callPackage ./pkgs/make-rules/package.nix { }; diff --git a/pkgs/os-specific/bsd/openbsd/pkgs/csu.nix b/pkgs/os-specific/bsd/openbsd/pkgs/csu.nix index a2b2153a729b1..03a7180425684 100644 --- a/pkgs/os-specific/bsd/openbsd/pkgs/csu.nix +++ b/pkgs/os-specific/bsd/openbsd/pkgs/csu.nix @@ -9,6 +9,7 @@ }: mkDerivation { + noLibc = true; path = "lib/csu"; nativeBuildInputs = [ bsdSetupHook diff --git a/pkgs/os-specific/bsd/openbsd/pkgs/libc/package.nix b/pkgs/os-specific/bsd/openbsd/pkgs/libc/package.nix index cf233c827840a..1a6b6d06a1936 100644 --- a/pkgs/os-specific/bsd/openbsd/pkgs/libc/package.nix +++ b/pkgs/os-specific/bsd/openbsd/pkgs/libc/package.nix @@ -1,6 +1,6 @@ { lib, - stdenv, + crossLibcStdenv, mkDerivation, bsdSetupHook, openbsdSetupHook, @@ -10,7 +10,6 @@ byacc, gencat, rpcgen, - lorder, csu, include, ctags, @@ -19,7 +18,8 @@ fetchpatch, }: -mkDerivation rec { +mkDerivation { + noLibc = true; pname = "libc"; path = "lib/libc"; extraPaths = [ @@ -53,7 +53,6 @@ mkDerivation rec { gencat rpcgen ctags - lorder tsort ]; @@ -69,7 +68,9 @@ mkDerivation rec { # Suppress lld >= 16 undefined version errors # https://github.com/freebsd/freebsd-src/commit/2ba84b4bcdd6012e8cfbf8a0d060a4438623a638 - env.NIX_LDFLAGS = lib.optionalString (stdenv.hostPlatform.linker == "lld") "--undefined-version"; + env.NIX_LDFLAGS = lib.optionalString ( + crossLibcStdenv.hostPlatform.linker == "lld" + ) "--undefined-version"; makeFlags = [ "STRIP=-s" # flag to install, not command diff --git a/pkgs/os-specific/bsd/openbsd/pkgs/lorder.nix b/pkgs/os-specific/bsd/openbsd/pkgs/lorder.nix index 25ff1fcbd14f6..c923a84317682 100644 --- a/pkgs/os-specific/bsd/openbsd/pkgs/lorder.nix +++ b/pkgs/os-specific/bsd/openbsd/pkgs/lorder.nix @@ -8,6 +8,7 @@ }: mkDerivation { + noCC = true; path = "usr.bin/lorder"; nativeBuildInputs = [ bsdSetupHook diff --git a/pkgs/os-specific/bsd/openbsd/pkgs/make-rules/package.nix b/pkgs/os-specific/bsd/openbsd/pkgs/make-rules/package.nix index 1e7c705c0dfd0..fefa1136eb76d 100644 --- a/pkgs/os-specific/bsd/openbsd/pkgs/make-rules/package.nix +++ b/pkgs/os-specific/bsd/openbsd/pkgs/make-rules/package.nix @@ -2,7 +2,6 @@ fetchpatch, lib, mkDerivation, - stdenv, }: mkDerivation { diff --git a/pkgs/os-specific/bsd/openbsd/pkgs/mkDerivation.nix b/pkgs/os-specific/bsd/openbsd/pkgs/mkDerivation.nix index 6c5bc5cd17193..371c6c58b91fb 100644 --- a/pkgs/os-specific/bsd/openbsd/pkgs/mkDerivation.nix +++ b/pkgs/os-specific/bsd/openbsd/pkgs/mkDerivation.nix @@ -2,6 +2,7 @@ lib, stdenv, stdenvNoCC, + crossLibcStdenv, runCommand, rsync, source, @@ -14,7 +15,13 @@ lib.makeOverridable ( attrs: let - stdenv' = if attrs.noCC or false then stdenvNoCC else stdenv; + stdenv' = + if attrs.noCC or false then + stdenvNoCC + else if attrs.noLibc or false then + crossLibcStdenv + else + stdenv; in stdenv'.mkDerivation ( rec { @@ -43,9 +50,6 @@ lib.makeOverridable ( HOST_SH = stdenv'.shell; - # Since STRIP below is the flag - STRIPBIN = "${stdenv.cc.bintools.targetPrefix}strip"; - makeFlags = [ "STRIP=-s" # flag to install, not command "-B" @@ -81,6 +85,9 @@ lib.makeOverridable ( // lib.optionalAttrs stdenv'.hasCC { # TODO should CC wrapper set this? CPP = "${stdenv'.cc.targetPrefix}cpp"; + + # Since STRIP in `makeFlags` has to be a flag, not the binary itself + STRIPBIN = "${stdenv'.cc.bintools.targetPrefix}strip"; } // lib.optionalAttrs (attrs.headersOnly or false) { installPhase = "includesPhase"; |