diff options
Diffstat (limited to 'pkgs/os-specific/bsd')
-rw-r--r-- | pkgs/os-specific/bsd/netbsd/builder.sh | 3 | ||||
-rw-r--r-- | pkgs/os-specific/bsd/netbsd/default.nix | 85 |
2 files changed, 75 insertions, 13 deletions
diff --git a/pkgs/os-specific/bsd/netbsd/builder.sh b/pkgs/os-specific/bsd/netbsd/builder.sh index 925001567f7..332e5c2098f 100644 --- a/pkgs/os-specific/bsd/netbsd/builder.sh +++ b/pkgs/os-specific/bsd/netbsd/builder.sh @@ -105,9 +105,10 @@ moveUsrDir() { if [ -d $prefix ]; then # Remove lingering /usr references if [ -d $prefix/usr ]; then - cd $prefix/usr + pushd $prefix/usr find . -type d -exec mkdir -p $out/\{} \; find . \( -type f -o -type l \) -exec mv \{} $out/\{} \; + popd fi find $prefix -type d -empty -delete diff --git a/pkgs/os-specific/bsd/netbsd/default.nix b/pkgs/os-specific/bsd/netbsd/default.nix index d7ee2182109..d461a3e62f3 100644 --- a/pkgs/os-specific/bsd/netbsd/default.nix +++ b/pkgs/os-specific/bsd/netbsd/default.nix @@ -1,5 +1,5 @@ -{ stdenv, stdenvNoCC, fetchcvs, lib, groff, mandoc, zlib, bison, flex -, writeText, buildPackages, splicePackages, symlinkJoin }: +{ stdenv, stdenvNoCC, fetchcvs, lib, groff, mandoc, zlib, byacc, flex +, makeSetupHook, writeText, buildPackages, splicePackages, symlinkJoin }: let fetchNetBSD = path: version: sha256: fetchcvs { @@ -26,11 +26,11 @@ let stdenv' = if attrs.noCC or false then stdenvNoCC else stdenv; in stdenv'.mkDerivation ({ name = "${attrs.pname or (baseNameOf attrs.path)}-netbsd-${attrs.version}"; - src = attrs.src or fetchNetBSD attrs.path attrs.version attrs.sha256; + src = fetchNetBSD attrs.path attrs.version attrs.sha256; extraPaths = [ ]; - nativeBuildInputs = [ makeMinimal install tsort lorder mandoc groff stat ]; + nativeBuildInputs = [ makeMinimal install tsort lorder mandoc groff statHook ]; buildInputs = [ compat ]; # depsBuildBuild = [ buildPackages.stdenv.cc ]; @@ -243,6 +243,7 @@ let ]; }; + # Don't add this to nativeBuildInputs directly. Use statHook instead. stat = mkDerivation { path = "usr.bin/stat"; version = "8.0"; @@ -250,6 +251,17 @@ let nativeBuildInputs = [ makeMinimal install mandoc groff ]; }; + # stat isn't in POSIX, and NetBSD stat supports a completely + # different range of flags than GNU stat, so including it in PATH + # breaks stdenv. Work around that with a hook that will point + # NetBSD's build system and NetBSD stat without including it in + # PATH. + statHook = makeSetupHook { + name = "netbsd-stat-hook"; + } (writeText "netbsd-stat-hook-impl" '' + makeFlagsArray+=(TOOL_STAT=${netbsd.stat}/bin/stat) + ''); + tsort = mkDerivation { path = "usr.bin/tsort"; version = "8.0"; @@ -367,6 +379,30 @@ let (fetchNetBSD "tools/Makefile.host" "8.0" "1p23dsc4qrv93vc6gzid9w2479jwswry9qfn88505s0pdd7h6nvp") ]; }; + + uudecode = mkDerivation { + path = "usr.bin/uudecode"; + version = "8.0"; + sha256 = "00a3zmh15pg4vx6hz0kaa5mi8d2b1sj4h512d7p6wbvxq6mznwcn"; + NIX_CFLAGS_COMPILE = lib.optional stdenv.isLinux "-DNO_BASE64"; + }; + + cksum = mkDerivation { + path = "usr.bin/cksum"; + version = "8.0"; + sha256 = "0327820171djn9dzb2q1arypxw2zsxiixnd1ahy34dagd9cwcphj"; + meta.platforms = lib.platforms.netbsd; + }; + + config = mkDerivation { + path = "usr.bin/config"; + version = "8.0"; + sha256 = "0piyn8lgdqxwz9wkgc2plzp2xpj93fs4xncri8l0jfas9rv5j2m5"; + NIX_CFLAGS_COMPILE = [ "-DMAKE_BOOTSTRAP" ]; + buildInputs = [ compat ]; + nativeBuildInputs = [ makeMinimal install mandoc byacc flex ]; + extraPaths = [ cksum.src ]; + }; ## ## END COMMAND LINE TOOLS ## @@ -397,10 +433,35 @@ let path = "sys"; version = "8.0"; sha256 = "123ilg8fqmp69bw6bs6nh98fpi1v2n9lamrzar61p27ji6sj7g0w"; + + CONFIG = "GENERIC"; + propagatedBuildInputs = [ include ]; - #meta.platforms = lib.platforms.netbsd; - extraPaths = [ common.src ]; + nativeBuildInputs = [ + makeMinimal install tsort lorder statHook uudecode config genassym + ]; + + postConfigure = '' + pushd arch/$MACHINE/conf + config $CONFIG + popd + ''; + + makeFlags = [ "FIRMWAREDIR=$(out)/libdata/firmware" ]; + hardeningDisable = [ "pic" ]; MKKMOD = "no"; + NIX_CFLAGS_COMPILE = [ "-Wa,--no-warn" ]; + + postBuild = '' + make -C arch/$MACHINE/compile/$CONFIG $makeFlags + ''; + + postInstall = '' + cp arch/$MACHINE/compile/$CONFIG/netbsd $out + ''; + + meta.platforms = lib.platforms.netbsd; + extraPaths = [ common.src ]; }; headers = symlinkJoin { @@ -563,7 +624,7 @@ let sha256 = "0630lbvz6v4ic13bfg8ccwfhqkgcv76bfdw9f36rfsnwfgpxqsmq"; meta.platforms = lib.platforms.netbsd; nativeBuildInputs = [ makeMinimal install mandoc groff flex - bison genassym gencat lorder tsort stat ]; + byacc genassym gencat lorder tsort statHook ]; extraPaths = [ sys.src ld_elf_so.src ]; }; @@ -587,7 +648,7 @@ let librpcsvc.src libutil.src librt.src libcrypt.src ]; buildInputs = [ buildPackages.netbsd.headers csu ]; nativeBuildInputs = [ makeMinimal install mandoc groff flex - bison genassym gencat lorder tsort stat ]; + byacc genassym gencat lorder tsort statHook rpcgen ]; NIX_CFLAGS_COMPILE = "-B${csu}/lib"; meta.platforms = lib.platforms.netbsd; SHLIBINSTALLDIR = "$(out)/lib"; @@ -617,8 +678,8 @@ let make -C $NETBSDSRCDIR/lib/libresolv $makeFlags make -C $NETBSDSRCDIR/lib/libresolv $makeFlags install - make -C $NETBSDSRCDIR/lib/librpcsv $makeFlags - make -C $NETBSDSRCDIR/lib/librpcsv $makeFlags install + make -C $NETBSDSRCDIR/lib/librpcsvc $makeFlags + make -C $NETBSDSRCDIR/lib/librpcsvc $makeFlags install make -C $NETBSDSRCDIR/lib/i18n_module $makeFlags make -C $NETBSDSRCDIR/lib/i18n_module $makeFlags install @@ -633,8 +694,8 @@ let make -C $NETBSDSRCDIR/lib/libcrypt $makeFlags install ''; postPatch = '' - substituteInPlace sys/Makefile.inc \ - --replace /usr/include/sys/syscall.h ${buildPackages.netbsd.headers}/include/sys/syscall.h + sed -i 's,/usr\(/include/sys/syscall.h\),${buildPackages.netbsd.headers}\1,g' \ + sys/Makefile.inc ../librt/sys/Makefile.inc ''; }; # |