uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
18
pkgs/os-specific/bsd/netbsd/compat-cxx-safe-header.patch
Normal file
18
pkgs/os-specific/bsd/netbsd/compat-cxx-safe-header.patch
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
diff -u -r1.35.2.1 nbtool_config.h.in
|
||||
--- a/nbtool_config.h.in 22 Apr 2015 07:18:58 -0000 1.35.2.1
|
||||
+++ b/nbtool_config.h.in 31 May 2018 01:46:53 -0000
|
||||
@@ -680,5 +680,14 @@
|
||||
/* Define if you have u_int8_t, but not uint8_t. */
|
||||
#undef uint8_t
|
||||
|
||||
+#ifdef __cplusplus
|
||||
+extern "C" {
|
||||
+#endif
|
||||
+
|
||||
#include "compat_defs.h"
|
||||
+
|
||||
+#ifdef __cplusplus
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
#endif /* !__NETBSD_NBTOOL_CONFIG_H__ */
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
commit f2d0ff85e05b49e9d11735ce4810b242c1dbf5af
|
||||
Author: John Ericson <John.Ericson@Obsidian.Systems>
|
||||
Date: Wed Sep 1 15:38:56 2021 +0000
|
||||
|
||||
Make should not hit configure
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index b5adb8a5f2e9..1a914ef16739 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -76,11 +76,6 @@ _CURDIR:= ${.CURDIR}
|
||||
|
||||
SRCS:= ${SRCS:M*.c}
|
||||
|
||||
-config.cache: include/.stamp configure nbtool_config.h.in defs.mk.in
|
||||
- rm -f ${.TARGET}
|
||||
- CC=${HOST_CC:Q} CFLAGS=${HOST_CFLAGS:Q} LDFLAGS=${HOST_LDFLAGS:Q} \
|
||||
- ${HOST_SH} ${.CURDIR}/configure --cache-file=config.cache
|
||||
-
|
||||
defs.mk: config.cache
|
||||
@touch ${.TARGET}
|
||||
|
||||
101
pkgs/os-specific/bsd/netbsd/compat-no-force-native.patch
Normal file
101
pkgs/os-specific/bsd/netbsd/compat-no-force-native.patch
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
commit 5acf3bdea5140e90135d15d6479f29fbf624f75e
|
||||
Author: John Ericson <John.Ericson@Obsidian.Systems>
|
||||
Date: Wed Sep 1 15:38:56 2021 +0000
|
||||
|
||||
Don't force building and installing for the build platform
|
||||
|
||||
Also remove `compat/` subdir from install directories.
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 4bcf227f0e75..9ed1d6eea6ff 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
# $NetBSD: Makefile,v 1.87 2019/05/08 02:25:50 thorpej Exp $
|
||||
|
||||
-HOSTLIB= nbcompat
|
||||
+LIB= nbcompat
|
||||
|
||||
-.include <bsd.hostinit.mk>
|
||||
+.include <bsd.own.mk>
|
||||
|
||||
@@ -94,63 +94,37 @@ include/.stamp:
|
||||
|
||||
# Install rules
|
||||
|
||||
-HOST_LIBDIR= ${TOOLDIR}/lib
|
||||
-HOST_INCSDIR= ${TOOLDIR}/include
|
||||
-HOST_SHAREDIR= ${TOOLDIR}/share
|
||||
-
|
||||
-install: .PHONY install.lib includes install.defs.mk
|
||||
-
|
||||
-# Install lib${HOSTLIB}.a in ${TOOLDIR}/lib
|
||||
-install.lib: .PHONY ${HOST_LIBDIR}/lib${HOSTLIB}.a
|
||||
-${HOST_LIBDIR}/lib${HOSTLIB}.a: lib${HOSTLIB}.a
|
||||
- ${_MKTARGET_INSTALL}
|
||||
- ${HOST_INSTALL_DIR} ${HOST_LIBDIR}
|
||||
- ${HOST_INSTALL_FILE} -m ${LIBMODE} ${.ALLSRC} ${.TARGET}
|
||||
+install: .PHONY includes install.defs.mk
|
||||
|
||||
.for _f in ${INCFILES}
|
||||
-HOST_INCINSTFILES+= ${HOST_INCSDIR}/compat/${_f}
|
||||
-${HOST_INCSDIR}/compat/${_f}: ${_f}
|
||||
+INCINSTFILES+= ${INCSDIR}/${_f}
|
||||
+${INCSDIR}/${_f}: ${_f}
|
||||
${_MKTARGET_INSTALL}
|
||||
- ${HOST_INSTALL_FILE} ${.ALLSRC} ${.TARGET}
|
||||
+ ${INSTALL_FILE} ${.ALLSRC} ${.TARGET}
|
||||
.endfor
|
||||
|
||||
.for _d in ${INCSUBDIRS}
|
||||
-HOST_INCINSTDIRS+= ${HOST_INCSDIR}/compat/${_d}
|
||||
-${HOST_INCSDIR}/compat/${_d}:
|
||||
+INCINSTDIRS+= ${INCSDIR}/${_d}
|
||||
+${INCSDIR}/${_d}:
|
||||
${_MKTARGET_INSTALL}
|
||||
- ${HOST_INSTALL_DIR} ${.TARGET}
|
||||
+ ${INSTALL_DIR} ${.TARGET}
|
||||
.endfor
|
||||
|
||||
-# Install include files in ${TOOLDIR}/include/compat
|
||||
-includes: .PHONY ${HOST_INCINSTDIRS} .WAIT ${HOST_INCINSTFILES}
|
||||
+# Install include files in ${INCSDIR}
|
||||
+includes: .PHONY ${INCINSTDIRS} .WAIT ${INCINSTFILES}
|
||||
@(cd include && find . -name '*.h' -print | while read f ; do \
|
||||
- ${HOST_INSTALL_FILE} $$f ${HOST_INCSDIR}/compat/$$f ; \
|
||||
+ ${INSTALL_FILE} $$f ${INCSDIR}/$$f ; \
|
||||
done)
|
||||
|
||||
|
||||
-# Install defs.mk in ${TOOLDIR}/share/compat
|
||||
-install.defs.mk: .PHONY ${HOST_SHAREDIR}/compat/defs.mk
|
||||
-${HOST_SHAREDIR}/compat/defs.mk: defs.mk
|
||||
+# Install defs.mk in ${DATADIR}
|
||||
+install.defs.mk: .PHONY ${DATADIR}/defs.mk
|
||||
+${DATADIR}/defs.mk: defs.mk
|
||||
${_MKTARGET_INSTALL}
|
||||
- ${HOST_INSTALL_DIR} ${HOST_SHAREDIR}
|
||||
- ${HOST_INSTALL_DIR} ${HOST_SHAREDIR}/compat
|
||||
- ${HOST_INSTALL_FILE} ${.ALLSRC} ${.TARGET}
|
||||
-
|
||||
-# bsd.hostlib.mk wants HOST_CPPFLAGS, not CPPFLAGS
|
||||
-
|
||||
-HOST_CPPFLAGS:= ${CPPFLAGS}
|
||||
-CPPFLAGS:= # empty
|
||||
-
|
||||
-.include <bsd.hostlib.mk>
|
||||
-
|
||||
-# Use uninstalled copy of host-mkdep
|
||||
-HOST_MKDEP_OBJ!= cd ${.CURDIR}/../host-mkdep && ${PRINTOBJDIR}
|
||||
-HOST_MKDEP= ${HOST_MKDEP_OBJ}/host-mkdep
|
||||
-MKDEP= ${HOST_MKDEP}
|
||||
+ ${INSTALL_DIR} ${DATADIR}
|
||||
+ ${INSTALL_FILE} ${.ALLSRC} ${.TARGET}
|
||||
|
||||
-# Use uninstalled copy of the install program
|
||||
-INSTALL_OBJ!= cd ${NETBSDSRCDIR}/tools/binstall && ${PRINTOBJDIR}
|
||||
-INSTALL= ${INSTALL_OBJ}/xinstall
|
||||
+.include <bsd.lib.mk>
|
||||
|
||||
# Run "${TOOLDIR}/bin/nbmake-${MACHINE} regen" by hand after editing
|
||||
# configure.ac. See more detailed instructions in configure.ac.
|
||||
5
pkgs/os-specific/bsd/netbsd/compat-setup-hook.sh
Normal file
5
pkgs/os-specific/bsd/netbsd/compat-setup-hook.sh
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# See pkgs/build-support/setup-hooks/role.bash
|
||||
getHostRole
|
||||
|
||||
export NIX_LDFLAGS${role_post}+=" -lnbcompat"
|
||||
export NIX_CFLAGS_COMPILE${role_post}+=" -DHAVE_NBTOOL_CONFIG_H"
|
||||
999
pkgs/os-specific/bsd/netbsd/default.nix
Normal file
999
pkgs/os-specific/bsd/netbsd/default.nix
Normal file
|
|
@ -0,0 +1,999 @@
|
|||
{ stdenv, lib, stdenvNoCC
|
||||
, pkgsBuildBuild, pkgsBuildHost, pkgsBuildTarget, pkgsHostHost, pkgsTargetTarget
|
||||
, buildPackages, splicePackages, newScope
|
||||
, bsdSetupHook, makeSetupHook, fetchcvs, groff, mandoc, byacc, flex
|
||||
, zlib
|
||||
, writeText, symlinkJoin
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (buildPackages.buildPackages) rsync;
|
||||
|
||||
fetchNetBSD = path: version: sha256: fetchcvs {
|
||||
cvsRoot = ":pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot";
|
||||
module = "src/${path}";
|
||||
inherit sha256;
|
||||
tag = "netbsd-${lib.replaceStrings ["."] ["-"] version}-RELEASE";
|
||||
};
|
||||
|
||||
netbsdSetupHook = makeSetupHook {
|
||||
name = "netbsd-setup-hook";
|
||||
} ./setup-hook.sh;
|
||||
|
||||
otherSplices = {
|
||||
selfBuildBuild = pkgsBuildBuild.netbsd;
|
||||
selfBuildHost = pkgsBuildHost.netbsd;
|
||||
selfBuildTarget = pkgsBuildTarget.netbsd;
|
||||
selfHostHost = pkgsHostHost.netbsd;
|
||||
selfTargetTarget = pkgsTargetTarget.netbsd or {}; # might be missing
|
||||
};
|
||||
|
||||
defaultMakeFlags = [
|
||||
"MKSOFTFLOAT=${if stdenv.hostPlatform.gcc.float or (stdenv.hostPlatform.parsed.abi.float or "hard") == "soft"
|
||||
then "yes"
|
||||
else "no"}"
|
||||
];
|
||||
|
||||
in lib.makeScopeWithSplicing
|
||||
splicePackages
|
||||
newScope
|
||||
otherSplices
|
||||
(_: {})
|
||||
(_: {})
|
||||
(self: let
|
||||
inherit (self) mkDerivation;
|
||||
in {
|
||||
|
||||
# Why do we have splicing and yet do `nativeBuildInputs = with self; ...`?
|
||||
#
|
||||
# We use `lib.makeScopeWithSplicing` because this should be used for all
|
||||
# nested package sets which support cross, so the inner `callPackage` works
|
||||
# correctly. But for the inline packages we don't bother to use
|
||||
# `callPackage`.
|
||||
#
|
||||
# We still could have tried to `with` a big spliced packages set, but
|
||||
# splicing is jank and causes a number of bootstrapping infinite recursions
|
||||
# if one is not careful. Pulling deps out of the right package set directly
|
||||
# side-steps splicing entirely and avoids those footguns.
|
||||
#
|
||||
# For non-bootstrap-critical packages, we might as well use `callPackage` for
|
||||
# consistency with everything else, and maybe put in separate files too.
|
||||
|
||||
compatIfNeeded = lib.optional (!stdenvNoCC.hostPlatform.isNetBSD) self.compat;
|
||||
|
||||
mkDerivation = lib.makeOverridable (attrs: 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 = fetchNetBSD attrs.path attrs.version attrs.sha256;
|
||||
|
||||
extraPaths = [ ];
|
||||
|
||||
nativeBuildInputs = with buildPackages.netbsd; [
|
||||
bsdSetupHook netbsdSetupHook
|
||||
makeMinimal
|
||||
install tsort lorder buildPackages.mandoc groff statHook rsync
|
||||
];
|
||||
buildInputs = with self; compatIfNeeded;
|
||||
|
||||
HOST_SH = stdenv'.shell;
|
||||
|
||||
MACHINE_ARCH = {
|
||||
i486 = "i386";
|
||||
i586 = "i386";
|
||||
i686 = "i386";
|
||||
}.${stdenv'.hostPlatform.parsed.cpu.name}
|
||||
or stdenv'.hostPlatform.parsed.cpu.name;
|
||||
|
||||
MACHINE = {
|
||||
x86_64 = "amd64";
|
||||
aarch64 = "evbarm64";
|
||||
i486 = "i386";
|
||||
i586 = "i386";
|
||||
i686 = "i386";
|
||||
}.${stdenv'.hostPlatform.parsed.cpu.name}
|
||||
or stdenv'.hostPlatform.parsed.cpu.name;
|
||||
|
||||
BSD_PATH = attrs.path;
|
||||
|
||||
makeFlags = defaultMakeFlags;
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
meta = with lib; {
|
||||
maintainers = with maintainers; [ matthewbauer qyliss ];
|
||||
platforms = platforms.unix;
|
||||
license = licenses.bsd2;
|
||||
};
|
||||
|
||||
} // lib.optionalAttrs stdenv'.hasCC {
|
||||
# TODO should CC wrapper set this?
|
||||
CPP = "${stdenv'.cc.targetPrefix}cpp";
|
||||
} // lib.optionalAttrs stdenv'.isDarwin {
|
||||
MKRELRO = "no";
|
||||
} // lib.optionalAttrs (stdenv'.cc.isClang or false) {
|
||||
HAVE_LLVM = lib.versions.major (lib.getVersion stdenv'.cc.cc);
|
||||
} // lib.optionalAttrs (stdenv'.cc.isGNU or false) {
|
||||
HAVE_GCC = lib.versions.major (lib.getVersion stdenv'.cc.cc);
|
||||
} // lib.optionalAttrs (stdenv'.isx86_32) {
|
||||
USE_SSP = "no";
|
||||
} // lib.optionalAttrs (attrs.headersOnly or false) {
|
||||
installPhase = "includesPhase";
|
||||
dontBuild = true;
|
||||
} // attrs // {
|
||||
postPatch = lib.optionalString (!stdenv'.hostPlatform.isNetBSD) ''
|
||||
# Files that use NetBSD-specific macros need to have nbtool_config.h
|
||||
# included ahead of them on non-NetBSD platforms.
|
||||
set +e
|
||||
grep -Zlr "^__RCSID
|
||||
^__BEGIN_DECLS" | xargs -0r grep -FLZ nbtool_config.h |
|
||||
xargs -0tr sed -i '0,/^#/s//#include <nbtool_config.h>\n\0/'
|
||||
set -e
|
||||
'' + attrs.postPatch or "";
|
||||
}));
|
||||
|
||||
##
|
||||
## START BOOTSTRAPPING
|
||||
##
|
||||
makeMinimal = mkDerivation {
|
||||
path = "tools/make";
|
||||
sha256 = "0fh0nrnk18m613m5blrliq2aydciv51qhc0ihsj4k63incwbk90n";
|
||||
version = "9.2";
|
||||
|
||||
buildInputs = with self; [];
|
||||
nativeBuildInputs = with buildPackages.netbsd; [ bsdSetupHook netbsdSetupHook rsync ];
|
||||
|
||||
skipIncludesPhase = true;
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs configure
|
||||
${self.make.postPatch}
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
sh ./buildmake.sh
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -D nbmake $out/bin/nbmake
|
||||
ln -s $out/bin/nbmake $out/bin/make
|
||||
mkdir -p $out/share
|
||||
cp -r $BSDSRCDIR/share/mk $out/share/mk
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
extraPaths = with self; [ make.src ] ++ make.extraPaths;
|
||||
};
|
||||
|
||||
compat = mkDerivation (let
|
||||
version = "9.2";
|
||||
commonDeps = [ zlib ];
|
||||
in {
|
||||
path = "tools/compat";
|
||||
sha256 = "1vsxg7136nlhc72vpa664vs22874xh7ila95nkmsd8crn3z3cyn0";
|
||||
inherit version;
|
||||
|
||||
setupHooks = [
|
||||
../../../build-support/setup-hooks/role.bash
|
||||
./compat-setup-hook.sh
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
make include/.stamp configure nbtool_config.h.in defs.mk.in
|
||||
'';
|
||||
|
||||
configurePlatforms = [ "build" "host" ];
|
||||
configureFlags = [
|
||||
"--cache-file=config.cache"
|
||||
] ++ lib.optionals stdenv.hostPlatform.isMusl [
|
||||
# We include this header in our musl package only for legacy
|
||||
# compatibility, and compat works fine without it (and having it
|
||||
# know about sys/cdefs.h breaks packages like glib when built
|
||||
# statically).
|
||||
"ac_cv_header_sys_cdefs_h=no"
|
||||
];
|
||||
|
||||
nativeBuildInputs = with buildPackages.netbsd; commonDeps ++ [
|
||||
bsdSetupHook netbsdSetupHook
|
||||
makeMinimal
|
||||
rsync
|
||||
];
|
||||
|
||||
buildInputs = with self; commonDeps;
|
||||
|
||||
# temporarily use gnuinstall for bootstrapping
|
||||
# bsdinstall will be built later
|
||||
makeFlags = defaultMakeFlags ++ [
|
||||
"INSTALL=${buildPackages.coreutils}/bin/install"
|
||||
"DATADIR=$(out)/share"
|
||||
# Can't sort object files yet
|
||||
"LORDER=echo"
|
||||
"TSORT=cat"
|
||||
# Can't process man pages yet
|
||||
"MKSHARE=no"
|
||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
# GNU objcopy produces broken .a libs which won't link into dependers.
|
||||
# Makefiles only invoke `$OBJCOPY -x/-X`, so cctools strip works here.
|
||||
"OBJCOPY=${buildPackages.darwin.cctools}/bin/strip"
|
||||
];
|
||||
RENAME = "-D";
|
||||
|
||||
passthru.tests = { netbsd-install = self.install; };
|
||||
|
||||
patches = [
|
||||
./compat-cxx-safe-header.patch
|
||||
./compat-dont-configure-twice.patch
|
||||
./compat-no-force-native.patch
|
||||
];
|
||||
|
||||
preInstall = ''
|
||||
makeFlagsArray+=('INSTALL_FILE=''${INSTALL} ''${COPY} ''${PRESERVE} ''${RENAME}')
|
||||
makeFlagsArray+=('INSTALL_DIR=''${INSTALL} -d')
|
||||
makeFlagsArray+=('INSTALL_SYMLINK=''${INSTALL} ''${SYMLINK} ''${RENAME}')
|
||||
'';
|
||||
|
||||
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 $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
|
||||
|
||||
# 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
|
||||
'' + lib.optionalString stdenv.isDarwin ''
|
||||
mkdir -p $out/include/ssp
|
||||
touch $out/include/ssp/ssp.h
|
||||
'' + ''
|
||||
mkdir -p $out/lib/pkgconfig
|
||||
substitute ${./libbsd-overlay.pc} $out/lib/pkgconfig/libbsd-overlay.pc \
|
||||
--subst-var-by out $out \
|
||||
--subst-var-by version ${version}
|
||||
'';
|
||||
extraPaths = with self; [ 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;
|
||||
});
|
||||
|
||||
# HACK: to ensure parent directories exist. This emulates GNU
|
||||
# install’s -D option. No alternative seems to exist in BSD install.
|
||||
install = let binstall = writeText "binstall" ''
|
||||
#!${stdenv.shell}
|
||||
for last in $@; do true; done
|
||||
mkdir -p $(dirname $last)
|
||||
xinstall "$@"
|
||||
''; in mkDerivation {
|
||||
path = "usr.bin/xinstall";
|
||||
version = "9.2";
|
||||
sha256 = "1f6pbz3qv1qcrchdxif8p5lbmnwl8b9nq615hsd3cyl4avd5bfqj";
|
||||
extraPaths = with self; [ mtree.src make.src ];
|
||||
nativeBuildInputs = with buildPackages.netbsd; [
|
||||
bsdSetupHook netbsdSetupHook
|
||||
makeMinimal
|
||||
mandoc groff rsync
|
||||
];
|
||||
skipIncludesPhase = true;
|
||||
buildInputs = with self; compatIfNeeded ++ [ fts ];
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -D install.1 $out/share/man/man1/install.1
|
||||
install -D xinstall $out/bin/xinstall
|
||||
install -D -m 0550 ${binstall} $out/bin/binstall
|
||||
ln -s $out/bin/binstall $out/bin/install
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
setupHook = ./install-setup-hook.sh;
|
||||
};
|
||||
|
||||
fts = mkDerivation {
|
||||
pname = "fts";
|
||||
path = "include/fts.h";
|
||||
sha256 = "01d4fpxvz1pgzfk5xznz5dcm0x0gdzwcsfm1h3d0xc9kc6hj2q77";
|
||||
version = "9.2";
|
||||
nativeBuildInputs = with buildPackages.netbsd; [
|
||||
bsdSetupHook netbsdSetupHook rsync
|
||||
];
|
||||
propagatedBuildInputs = with self; compatIfNeeded;
|
||||
extraPaths = with self; [
|
||||
(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")
|
||||
];
|
||||
skipIncludesPhase = true;
|
||||
buildPhase = ''
|
||||
"$CC" -c -Iinclude -Ilib/libc/include lib/libc/gen/fts.c \
|
||||
-o lib/libc/gen/fts.o
|
||||
"$AR" -rsc libfts.a lib/libc/gen/fts.o
|
||||
'';
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -D lib/libc/gen/fts.3 $out/share/man/man3/fts.3
|
||||
install -D include/fts.h $out/include/fts.h
|
||||
install -D lib/libc/include/namespace.h $out/include/namespace.h
|
||||
install -D libfts.a $out/lib/libfts.a
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
setupHooks = [
|
||||
../../../build-support/setup-hooks/role.bash
|
||||
./fts-setup-hook.sh
|
||||
];
|
||||
};
|
||||
|
||||
# Don't add this to nativeBuildInputs directly. Use statHook instead.
|
||||
stat = mkDerivation {
|
||||
path = "usr.bin/stat";
|
||||
version = "9.2";
|
||||
sha256 = "18nqwlndfc34qbbgqx5nffil37jfq9aw663ippasfxd2hlyc106x";
|
||||
nativeBuildInputs = with buildPackages.netbsd; [
|
||||
bsdSetupHook netbsdSetupHook
|
||||
makeMinimal
|
||||
install mandoc groff rsync
|
||||
];
|
||||
};
|
||||
|
||||
# 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=${self.stat}/bin/stat)
|
||||
'');
|
||||
|
||||
tsort = mkDerivation {
|
||||
path = "usr.bin/tsort";
|
||||
version = "9.2";
|
||||
sha256 = "1dqvf9gin29nnq3c4byxc7lfd062pg7m84843zdy6n0z63hnnwiq";
|
||||
nativeBuildInputs = with buildPackages.netbsd; [
|
||||
bsdSetupHook netbsdSetupHook
|
||||
makeMinimal
|
||||
install mandoc groff rsync
|
||||
];
|
||||
};
|
||||
|
||||
lorder = mkDerivation {
|
||||
path = "usr.bin/lorder";
|
||||
version = "9.2";
|
||||
sha256 = "0rjf9blihhm0n699vr2bg88m4yjhkbxh6fxliaay3wxkgnydjwn2";
|
||||
nativeBuildInputs = with buildPackages.netbsd; [
|
||||
bsdSetupHook netbsdSetupHook
|
||||
makeMinimal
|
||||
install mandoc groff rsync
|
||||
];
|
||||
};
|
||||
##
|
||||
## END BOOTSTRAPPING
|
||||
##
|
||||
|
||||
##
|
||||
## START COMMAND LINE TOOLS
|
||||
##
|
||||
make = mkDerivation {
|
||||
path = "usr.bin/make";
|
||||
sha256 = "0vi73yicbmbp522qzqvd979cx6zm5jakhy77xh73c1kygf8klccs";
|
||||
version = "9.2";
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.doc.mk \
|
||||
--replace '-o ''${DOCOWN}' "" \
|
||||
--replace '-g ''${DOCGRP}' ""
|
||||
for mk in $BSDSRCDIR/share/mk/bsd.inc.mk $BSDSRCDIR/share/mk/bsd.kinc.mk; do
|
||||
substituteInPlace $mk \
|
||||
--replace '-o ''${BINOWN}' "" \
|
||||
--replace '-g ''${BINGRP}' ""
|
||||
done
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.kmodule.mk \
|
||||
--replace '-o ''${KMODULEOWN}' "" \
|
||||
--replace '-g ''${KMODULEGRP}' ""
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.lib.mk \
|
||||
--replace '-o ''${LIBOWN}' "" \
|
||||
--replace '-g ''${LIBGRP}' "" \
|
||||
--replace '-o ''${DEBUGOWN}' "" \
|
||||
--replace '-g ''${DEBUGGRP}' ""
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.lua.mk \
|
||||
--replace '-o ''${LIBOWN}' "" \
|
||||
--replace '-g ''${LIBGRP}' ""
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.man.mk \
|
||||
--replace '-o ''${MANOWN}' "" \
|
||||
--replace '-g ''${MANGRP}' ""
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.nls.mk \
|
||||
--replace '-o ''${NLSOWN}' "" \
|
||||
--replace '-g ''${NLSGRP}' ""
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.prog.mk \
|
||||
--replace '-o ''${BINOWN}' "" \
|
||||
--replace '-g ''${BINGRP}' "" \
|
||||
--replace '-o ''${RUMPBINOWN}' "" \
|
||||
--replace '-g ''${RUMPBINGRP}' "" \
|
||||
--replace '-o ''${DEBUGOWN}' "" \
|
||||
--replace '-g ''${DEBUGGRP}' ""
|
||||
|
||||
# make needs this to pick up our sys make files
|
||||
export NIX_CFLAGS_COMPILE+=" -D_PATH_DEFSYSPATH=\"$out/share/mk\""
|
||||
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.lib.mk \
|
||||
--replace '_INSTRANLIB=''${empty(PRESERVE):?-a "''${RANLIB} -t":}' '_INSTRANLIB='
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.kinc.mk \
|
||||
--replace /bin/rm rm
|
||||
'' + lib.optionalString stdenv.isDarwin ''
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.sys.mk \
|
||||
--replace '-Wl,--fatal-warnings' "" \
|
||||
--replace '-Wl,--warn-shared-textrel' ""
|
||||
'';
|
||||
postInstall = ''
|
||||
make -C $BSDSRCDIR/share/mk FILESDIR=$out/share/mk install
|
||||
'';
|
||||
extraPaths = [
|
||||
(fetchNetBSD "share/mk" "9.2" "0w9x77cfnm6zwy40slradzi0ip9gz80x6lk7pvnlxzsr2m5ra5sy")
|
||||
];
|
||||
};
|
||||
|
||||
mtree = mkDerivation {
|
||||
path = "usr.sbin/mtree";
|
||||
version = "9.2";
|
||||
sha256 = "04p7w540vz9npvyb8g8hcf2xa05phn1y88hsyrcz3vwanvpc0yv9";
|
||||
extraPaths = with self; [ mknod.src ];
|
||||
};
|
||||
|
||||
mknod = mkDerivation {
|
||||
path = "sbin/mknod";
|
||||
version = "9.2";
|
||||
sha256 = "1d9369shzwgixz3nph991i8q5vk7hr04py3n9avbfbhzy4gndqs2";
|
||||
};
|
||||
|
||||
getent = mkDerivation {
|
||||
path = "usr.bin/getent";
|
||||
sha256 = "1qngywcmm0y7nl8h3n8brvkxq4jw63szbci3kc1q6a6ndhycbbvr";
|
||||
version = "9.2";
|
||||
patches = [ ./getent.patch ];
|
||||
};
|
||||
|
||||
getconf = mkDerivation {
|
||||
path = "usr.bin/getconf";
|
||||
sha256 = "122vslz4j3h2mfs921nr2s6m078zcj697yrb75rwp2hnw3qz4s8q";
|
||||
version = "9.2";
|
||||
};
|
||||
|
||||
locale = mkDerivation {
|
||||
path = "usr.bin/locale";
|
||||
version = "9.2";
|
||||
sha256 = "0kk6v9k2bygq0wf9gbinliqzqpzs9bgxn0ndyl2wcv3hh2bmsr9p";
|
||||
patches = [ ./locale.patch ];
|
||||
NIX_CFLAGS_COMPILE = "-DYESSTR=__YESSTR -DNOSTR=__NOSTR";
|
||||
};
|
||||
|
||||
rpcgen = mkDerivation {
|
||||
path = "usr.bin/rpcgen";
|
||||
version = "9.2";
|
||||
sha256 = "1kfgfx54jg98wbg0d95p0rvf4w0302v8fz724b0bdackdsrd4988";
|
||||
};
|
||||
|
||||
genassym = mkDerivation {
|
||||
path = "usr.bin/genassym";
|
||||
version = "9.2";
|
||||
sha256 = "1acl1dz5kvh9h5806vkz2ap95rdsz7phmynh5i3x5y7agbki030c";
|
||||
};
|
||||
|
||||
gencat = mkDerivation {
|
||||
path = "usr.bin/gencat";
|
||||
version = "9.2";
|
||||
sha256 = "0gd463x1hg36bhr7y0xryb5jyxk0z0g7xvy8rgk82nlbnlnsbbwb";
|
||||
};
|
||||
|
||||
nbperf = mkDerivation {
|
||||
path = "usr.bin/nbperf";
|
||||
version = "9.2";
|
||||
sha256 = "1nxc302vgmjhm3yqdivqyfzslrg0vjpbss44s74rcryrl19mma9r";
|
||||
};
|
||||
|
||||
tic = mkDerivation {
|
||||
path = "tools/tic";
|
||||
version = "9.2";
|
||||
sha256 = "092y7db7k4kh2jq8qc55126r5qqvlb8lq8mhmy5ipbi36hwb4zrz";
|
||||
HOSTPROG = "tic";
|
||||
buildInputs = with self; compatIfNeeded;
|
||||
nativeBuildInputs = with buildPackages.netbsd; [
|
||||
bsdSetupHook netbsdSetupHook
|
||||
makeMinimal
|
||||
install mandoc groff nbperf rsync
|
||||
];
|
||||
makeFlags = defaultMakeFlags ++ [ "TOOLDIR=$(out)" ];
|
||||
extraPaths = with self; [
|
||||
libterminfo.src
|
||||
(fetchNetBSD "usr.bin/tic" "9.2" "1mwdfg7yx1g43ss378qsgl5rqhsxskqvsd2mqvrn38qw54i8v5i1")
|
||||
(fetchNetBSD "tools/Makefile.host" "9.2" "15b4ab0n36lqj00j5lz2xs83g7l8isk3wx1wcapbrn66qmzz2sxy")
|
||||
];
|
||||
};
|
||||
|
||||
uudecode = mkDerivation {
|
||||
path = "usr.bin/uudecode";
|
||||
version = "9.2";
|
||||
sha256 = "00a3zmh15pg4vx6hz0kaa5mi8d2b1sj4h512d7p6wbvxq6mznwcn";
|
||||
NIX_CFLAGS_COMPILE = lib.optional stdenv.isLinux "-DNO_BASE64";
|
||||
};
|
||||
|
||||
cksum = mkDerivation {
|
||||
path = "usr.bin/cksum";
|
||||
version = "9.2";
|
||||
sha256 = "0msfhgyvh5c2jmc6qjnf12c378dhw32ffsl864qz4rdb2b98rfcq";
|
||||
meta.platforms = lib.platforms.netbsd;
|
||||
};
|
||||
|
||||
config = mkDerivation {
|
||||
path = "usr.bin/config";
|
||||
version = "9.2";
|
||||
sha256 = "1yz3n4hncdkk6kp595fh2q5lg150vpqg8iw2dccydkyw4y3hgsjj";
|
||||
NIX_CFLAGS_COMPILE = [ "-DMAKE_BOOTSTRAP" ];
|
||||
nativeBuildInputs = with buildPackages.netbsd; [
|
||||
bsdSetupHook netbsdSetupHook
|
||||
makeMinimal install mandoc byacc flex rsync
|
||||
];
|
||||
buildInputs = with self; compatIfNeeded;
|
||||
extraPaths = with self; [ cksum.src ];
|
||||
};
|
||||
##
|
||||
## END COMMAND LINE TOOLS
|
||||
##
|
||||
|
||||
##
|
||||
## START HEADERS
|
||||
##
|
||||
include = mkDerivation {
|
||||
path = "include";
|
||||
version = "9.2";
|
||||
sha256 = "0nxnmj4c8s3hb9n3fpcmd0zl3l1nmhivqgi9a35sis943qvpgl9h";
|
||||
nativeBuildInputs = with buildPackages.netbsd; [
|
||||
bsdSetupHook netbsdSetupHook
|
||||
makeMinimal
|
||||
install mandoc groff rsync nbperf rpcgen
|
||||
];
|
||||
|
||||
# The makefiles define INCSDIR per subdirectory, so we have to set
|
||||
# something else on the command line so those definitions aren't
|
||||
# overridden.
|
||||
postPatch = ''
|
||||
find "$BSDSRCDIR" -name Makefile -exec \
|
||||
sed -i -E \
|
||||
-e 's_/usr/include_''${INCSDIR0}_' \
|
||||
{} \;
|
||||
'';
|
||||
|
||||
# multiple header dirs, see above
|
||||
postConfigure = ''
|
||||
makeFlags=''${makeFlags/INCSDIR/INCSDIR0}
|
||||
'';
|
||||
|
||||
extraPaths = with self; [ common ];
|
||||
headersOnly = true;
|
||||
noCC = true;
|
||||
meta.platforms = lib.platforms.netbsd;
|
||||
makeFlags = defaultMakeFlags ++ [ "RPCGEN_CPP=${buildPackages.stdenv.cc.cc}/bin/cpp" ];
|
||||
};
|
||||
|
||||
common = fetchNetBSD "common" "9.2" "1pfylz9r3ap5wnwwbwczbfjb1m5qdyspzbnmxmcdkpzz2zgj64b9";
|
||||
|
||||
sys-headers = mkDerivation {
|
||||
pname = "sys-headers";
|
||||
path = "sys";
|
||||
version = "9.2";
|
||||
sha256 = "03s18q8d9giipf05bx199fajc2qwikji0djz7hw63d2lya6bfnpj";
|
||||
|
||||
patches = [
|
||||
# Fix this error when building bootia32.efi and bootx64.efi:
|
||||
# error: PHDR segment not covered by LOAD segment
|
||||
./no-dynamic-linker.patch
|
||||
|
||||
# multiple header dirs, see above
|
||||
./sys-headers-incsdir.patch
|
||||
];
|
||||
|
||||
# multiple header dirs, see above
|
||||
inherit (self.include) postPatch;
|
||||
|
||||
CONFIG = "GENERIC";
|
||||
|
||||
propagatedBuildInputs = with self; [ include ];
|
||||
nativeBuildInputs = with buildPackages.netbsd; [
|
||||
bsdSetupHook netbsdSetupHook
|
||||
makeMinimal install tsort lorder statHook rsync uudecode config genassym
|
||||
];
|
||||
|
||||
postConfigure = ''
|
||||
pushd arch/$MACHINE/conf
|
||||
config $CONFIG
|
||||
popd
|
||||
''
|
||||
# multiple header dirs, see above
|
||||
+ self.include.postConfigure;
|
||||
|
||||
makeFlags = defaultMakeFlags ++ [ "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 = with self; [ common ];
|
||||
|
||||
installPhase = "includesPhase";
|
||||
dontBuild = true;
|
||||
noCC = true;
|
||||
};
|
||||
|
||||
# The full kernel. We do the funny thing of overridding the headers to the
|
||||
# full kernal and not vice versa to avoid infinite recursion -- the headers
|
||||
# come earlier in the bootstrap.
|
||||
sys = self.sys-headers.override {
|
||||
pname = "sys";
|
||||
installPhase = null;
|
||||
noCC = false;
|
||||
dontBuild = false;
|
||||
};
|
||||
|
||||
headers = symlinkJoin {
|
||||
name = "netbsd-headers-9.2";
|
||||
paths = with self; [
|
||||
include
|
||||
sys-headers
|
||||
libpthread-headers
|
||||
];
|
||||
meta.platforms = lib.platforms.netbsd;
|
||||
};
|
||||
##
|
||||
## END HEADERS
|
||||
##
|
||||
|
||||
##
|
||||
## START LIBRARIES
|
||||
##
|
||||
libutil = mkDerivation {
|
||||
path = "lib/libutil";
|
||||
version = "9.2";
|
||||
sha256 = "02gm5a5zhh8qp5r5q5r7x8x6x50ir1i0ncgsnfwh1vnrz6mxbq7z";
|
||||
extraPaths = with self; [ common libc.src sys.src ];
|
||||
nativeBuildInputs = with buildPackages.netbsd; [
|
||||
bsdSetupHook netbsdSetupHook
|
||||
makeMinimal
|
||||
byacc install tsort lorder mandoc statHook rsync
|
||||
];
|
||||
buildInputs = with self; [ headers ];
|
||||
SHLIBINSTALLDIR = "$(out)/lib";
|
||||
};
|
||||
|
||||
libedit = mkDerivation {
|
||||
path = "lib/libedit";
|
||||
version = "9.2";
|
||||
sha256 = "1wqhngraxwqk4jgrf5f18jy195yrp7c06n1gf31pbplq79mg1bcj";
|
||||
buildInputs = with self; [ libterminfo libcurses ];
|
||||
propagatedBuildInputs = with self; compatIfNeeded;
|
||||
SHLIBINSTALLDIR = "$(out)/lib";
|
||||
makeFlags = defaultMakeFlags ++ [ "LIBDO.terminfo=${self.libterminfo}/lib" ];
|
||||
postPatch = ''
|
||||
sed -i '1i #undef bool_t' el.h
|
||||
substituteInPlace config.h \
|
||||
--replace "#define HAVE_STRUCT_DIRENT_D_NAMLEN 1" ""
|
||||
substituteInPlace readline/Makefile --replace /usr/include "$out/include"
|
||||
'';
|
||||
NIX_CFLAGS_COMPILE = [
|
||||
"-D__noinline="
|
||||
"-D__scanflike(a,b)="
|
||||
"-D__va_list=va_list"
|
||||
];
|
||||
};
|
||||
|
||||
libterminfo = mkDerivation {
|
||||
path = "lib/libterminfo";
|
||||
version = "9.2";
|
||||
sha256 = "0pq05k3dj0dfsczv07frnnji92mazmy2qqngqbx2zgqc1x251414";
|
||||
nativeBuildInputs = with buildPackages.netbsd; [
|
||||
bsdSetupHook netbsdSetupHook
|
||||
makeMinimal install tsort lorder mandoc statHook nbperf tic rsync
|
||||
];
|
||||
buildInputs = with self; compatIfNeeded;
|
||||
SHLIBINSTALLDIR = "$(out)/lib";
|
||||
postPatch = ''
|
||||
substituteInPlace term.c --replace /usr/share $out/share
|
||||
substituteInPlace setupterm.c \
|
||||
--replace '#include <curses.h>' 'void use_env(bool);'
|
||||
'';
|
||||
postBuild = ''
|
||||
make -C $BSDSRCDIR/share/terminfo $makeFlags BINDIR=$out/share
|
||||
'';
|
||||
postInstall = ''
|
||||
make -C $BSDSRCDIR/share/terminfo $makeFlags BINDIR=$out/share install
|
||||
'';
|
||||
extraPaths = with self; [
|
||||
(fetchNetBSD "share/terminfo" "9.2" "1vh9rl4w8118a9qdpblfxmv1wkpm83rm9gb4rzz5bpm56i6d7kk7")
|
||||
];
|
||||
};
|
||||
|
||||
libcurses = mkDerivation {
|
||||
path = "lib/libcurses";
|
||||
version = "9.2";
|
||||
sha256 = "0pd0dggl3w4bv5i5h0s1wrc8hr66n4hkv3zlklarwfdhc692fqal";
|
||||
buildInputs = with self; [ libterminfo ];
|
||||
NIX_CFLAGS_COMPILE = [
|
||||
"-D__scanflike(a,b)="
|
||||
"-D__va_list=va_list"
|
||||
"-D__warn_references(a,b)="
|
||||
] ++ lib.optional stdenv.isDarwin "-D__strong_alias(a,b)=";
|
||||
propagatedBuildInputs = with self; compatIfNeeded;
|
||||
MKDOC = "no"; # missing vfontedpr
|
||||
makeFlags = defaultMakeFlags ++ [ "LIBDO.terminfo=${self.libterminfo}/lib" ];
|
||||
postPatch = lib.optionalString (!stdenv.isDarwin) ''
|
||||
substituteInPlace printw.c \
|
||||
--replace "funopen(win, NULL, __winwrite, NULL, NULL)" NULL \
|
||||
--replace "__strong_alias(vwprintw, vw_printw)" 'extern int vwprintw(WINDOW*, const char*, va_list) __attribute__ ((alias ("vw_printw")));'
|
||||
substituteInPlace scanw.c \
|
||||
--replace "__strong_alias(vwscanw, vw_scanw)" 'extern int vwscanw(WINDOW*, const char*, va_list) __attribute__ ((alias ("vw_scanw")));'
|
||||
'';
|
||||
};
|
||||
|
||||
column = mkDerivation {
|
||||
path = "usr.bin/column";
|
||||
version = "9.2";
|
||||
sha256 = "0r6b0hjn5ls3j3sv6chibs44fs32yyk2cg8kh70kb4cwajs4ifyl";
|
||||
};
|
||||
|
||||
libossaudio = mkDerivation {
|
||||
path = "lib/libossaudio";
|
||||
version = "9.2";
|
||||
sha256 = "16l3bfy6dcwqnklvh3x0ps8ld1y504vf57v9rx8f9adzhb797jh0";
|
||||
meta.platforms = lib.platforms.netbsd;
|
||||
};
|
||||
|
||||
librpcsvc = mkDerivation {
|
||||
path = "lib/librpcsvc";
|
||||
version = "9.2";
|
||||
sha256 = "1q34pfiyjbrgrdqm46jwrsqms49ly6z3b0xh1wg331zga900vq5n";
|
||||
makeFlags = defaultMakeFlags ++ [ "INCSDIR=$(out)/include/rpcsvc" ];
|
||||
meta.platforms = lib.platforms.netbsd;
|
||||
nativeBuildInputs = with buildPackages.netbsd; [
|
||||
bsdSetupHook netbsdSetupHook
|
||||
makeMinimal
|
||||
install tsort lorder rpcgen statHook
|
||||
];
|
||||
};
|
||||
|
||||
librt = mkDerivation {
|
||||
path = "lib/librt";
|
||||
version = "9.2";
|
||||
sha256 = "07f8mpjcqh5kig5z5sp97fg55mc4dz6aa1x5g01nv2pvbmqczxc6";
|
||||
meta.platforms = lib.platforms.netbsd;
|
||||
extraPaths = with self; [ libc.src ] ++ libc.extraPaths;
|
||||
postPatch = ''
|
||||
sed -i 's,/usr\(/include/sys/syscall.h\),${self.headers}\1,g' \
|
||||
$BSDSRCDIR/lib/{libc,librt}/sys/Makefile.inc
|
||||
'';
|
||||
};
|
||||
|
||||
libcrypt = mkDerivation {
|
||||
path = "lib/libcrypt";
|
||||
version = "9.2";
|
||||
sha256 = "0siqan1wdqmmhchh2n8w6a8x1abbff8n4yb6jrqxap3hqn8ay54g";
|
||||
SHLIBINSTALLDIR = "$(out)/lib";
|
||||
meta.platforms = lib.platforms.netbsd;
|
||||
};
|
||||
|
||||
libpthread-headers = mkDerivation {
|
||||
pname = "libpthread-headers";
|
||||
path = "lib/libpthread";
|
||||
version = "9.2";
|
||||
sha256 = "0mlmc31k509dwfmx5s2x010wxjc44mr6y0cbmk30cfipqh8c962h";
|
||||
installPhase = "includesPhase";
|
||||
dontBuild = true;
|
||||
noCC = true;
|
||||
meta.platforms = lib.platforms.netbsd;
|
||||
};
|
||||
|
||||
libpthread = self.libpthread-headers.override {
|
||||
pname = "libpthread";
|
||||
installPhase = null;
|
||||
noCC = false;
|
||||
dontBuild = false;
|
||||
buildInputs = with self; [ headers ];
|
||||
SHLIBINSTALLDIR = "$(out)/lib";
|
||||
extraPaths = with self; [ common libc.src librt.src sys.src ];
|
||||
};
|
||||
|
||||
libresolv = mkDerivation {
|
||||
path = "lib/libresolv";
|
||||
version = "9.2";
|
||||
sha256 = "1am74s74mf1ynwz3p4ncjkg63f78a1zjm983q166x4sgzps15626";
|
||||
meta.platforms = lib.platforms.netbsd;
|
||||
extraPaths = with self; [ libc.src ];
|
||||
};
|
||||
|
||||
libm = mkDerivation {
|
||||
path = "lib/libm";
|
||||
version = "9.2";
|
||||
sha256 = "1apwfr26shdmbqqnmg7hxf7bkfxw44ynqnnnghrww9bnhqdnsy92";
|
||||
SHLIBINSTALLDIR = "$(out)/lib";
|
||||
meta.platforms = lib.platforms.netbsd;
|
||||
extraPaths = with self; [ sys.src ];
|
||||
};
|
||||
|
||||
i18n_module = mkDerivation {
|
||||
path = "lib/i18n_module";
|
||||
version = "9.2";
|
||||
sha256 = "0w6y5v3binm7gf2kn7y9jja8k18rhnyl55cvvfnfipjqdxvxd9jd";
|
||||
meta.platforms = lib.platforms.netbsd;
|
||||
extraPaths = with self; [ libc.src ];
|
||||
};
|
||||
|
||||
csu = mkDerivation {
|
||||
path = "lib/csu";
|
||||
version = "9.2";
|
||||
sha256 = "0al5jfazvhlzn9hvmnrbchx4d0gm282hq5gp4xs2zmj9ycmf6d03";
|
||||
meta.platforms = lib.platforms.netbsd;
|
||||
nativeBuildInputs = with buildPackages.netbsd; [
|
||||
bsdSetupHook netbsdSetupHook
|
||||
makeMinimal
|
||||
install mandoc groff flex
|
||||
byacc genassym gencat lorder tsort statHook rsync
|
||||
];
|
||||
buildInputs = with self; [ headers ];
|
||||
extraPaths = with self; [ sys.src ld_elf_so.src ];
|
||||
};
|
||||
|
||||
ld_elf_so = mkDerivation {
|
||||
path = "libexec/ld.elf_so";
|
||||
version = "9.2";
|
||||
sha256 = "0ia9mqzdljly0vqfwflm5mzz55k7qsr4rw2bzhivky6k30vgirqa";
|
||||
meta.platforms = lib.platforms.netbsd;
|
||||
LIBC_PIC = "${self.libc}/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=${self.libc}/lib" ];
|
||||
extraPaths = with self; [ libc.src ] ++ libc.extraPaths;
|
||||
};
|
||||
|
||||
_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
|
||||
];
|
||||
|
||||
libc = mkDerivation {
|
||||
path = "lib/libc";
|
||||
version = "9.2";
|
||||
sha256 = "1y9c13igg0kai07sqvf9cm6yqmd8lhfd8hq3q7biilbgs1l99as3";
|
||||
USE_FORT = "yes";
|
||||
MKPROFILE = "no";
|
||||
extraPaths = with self; _mainLibcExtraPaths ++ [
|
||||
(fetchNetBSD "external/bsd/jemalloc" "9.2" "0cq704swa0h2yxv4gc79z2lwxibk9k7pxh3q5qfs7axx3jx3n8kb")
|
||||
];
|
||||
nativeBuildInputs = with buildPackages.netbsd; [
|
||||
bsdSetupHook netbsdSetupHook
|
||||
makeMinimal
|
||||
install mandoc groff flex
|
||||
byacc genassym gencat lorder tsort statHook rsync rpcgen
|
||||
];
|
||||
buildInputs = with self; [ headers csu ];
|
||||
NIX_CFLAGS_COMPILE = "-B${self.csu}/lib";
|
||||
meta.platforms = lib.platforms.netbsd;
|
||||
SHLIBINSTALLDIR = "$(out)/lib";
|
||||
MKPICINSTALL = "yes";
|
||||
NLSDIR = "$(out)/share/nls";
|
||||
makeFlags = defaultMakeFlags ++ [ "FILESDIR=$(out)/var/db"];
|
||||
postInstall = ''
|
||||
pushd ${self.headers}
|
||||
find . -type d -exec mkdir -p $out/\{} \;
|
||||
find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \;
|
||||
popd
|
||||
|
||||
pushd ${self.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
|
||||
|
||||
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
|
||||
|
||||
make -C $BSDSRCDIR/lib/libcrypt $makeFlags
|
||||
make -C $BSDSRCDIR/lib/libcrypt $makeFlags install
|
||||
'';
|
||||
inherit (self.librt) postPatch;
|
||||
};
|
||||
#
|
||||
# END LIBRARIES
|
||||
#
|
||||
|
||||
#
|
||||
# START MISCELLANEOUS
|
||||
#
|
||||
dict = mkDerivation {
|
||||
path = "share/dict";
|
||||
noCC = true;
|
||||
version = "9.2";
|
||||
sha256 = "0svfc0byk59ri37pyjslv4c4rc7zw396r73mr593i78d39q5g3ad";
|
||||
makeFlags = defaultMakeFlags ++ [ "BINDIR=$(out)/share" ];
|
||||
};
|
||||
|
||||
misc = mkDerivation {
|
||||
path = "share/misc";
|
||||
noCC = true;
|
||||
version = "9.2";
|
||||
sha256 = "1j2cdssdx6nncv8ffj7f7ybl7m9hadjj8vm8611skqdvxnjg6nbc";
|
||||
makeFlags = defaultMakeFlags ++ [ "BINDIR=$(out)/share" ];
|
||||
};
|
||||
|
||||
man = 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 = ''
|
||||
substituteInPlace man0/Makefile --replace "ps2pdf" "echo noop "
|
||||
'';
|
||||
makeFlags = defaultMakeFlags ++ [
|
||||
"FILESDIR=$(out)/share"
|
||||
"MKRUMP=no" # would require to have additional path sys/rump/share/man
|
||||
];
|
||||
};
|
||||
#
|
||||
# END MISCELLANEOUS
|
||||
#
|
||||
|
||||
})
|
||||
4
pkgs/os-specific/bsd/netbsd/fts-setup-hook.sh
Normal file
4
pkgs/os-specific/bsd/netbsd/fts-setup-hook.sh
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# See pkgs/build-support/setup-hooks/role.bash
|
||||
getHostRole
|
||||
|
||||
export NIX_LDFLAGS${role_post}+=" -lfts"
|
||||
455
pkgs/os-specific/bsd/netbsd/getent.patch
Normal file
455
pkgs/os-specific/bsd/netbsd/getent.patch
Normal file
|
|
@ -0,0 +1,455 @@
|
|||
Author: Matthew Bauer
|
||||
Description: Remove unavailable getent databases
|
||||
Version: 7.1.2
|
||||
--- a/getent.c 2018-04-16 13:33:49.000000000 -0500
|
||||
+++ b/getent.c 2018-04-16 13:29:30.000000000 -0500
|
||||
@@ -42,7 +42,6 @@
|
||||
#include <grp.h>
|
||||
#include <limits.h>
|
||||
#include <netdb.h>
|
||||
-#include <netgroup.h>
|
||||
#include <pwd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
@@ -57,27 +56,16 @@
|
||||
#include <arpa/nameser.h>
|
||||
|
||||
#include <net/if.h>
|
||||
-#include <net/if_ether.h>
|
||||
|
||||
#include <netinet/in.h> /* for INET6_ADDRSTRLEN */
|
||||
|
||||
-#include <rpc/rpcent.h>
|
||||
-
|
||||
-#include <disktab.h>
|
||||
-
|
||||
static int usage(void) __attribute__((__noreturn__));
|
||||
static int parsenum(const char *, unsigned long *);
|
||||
-static int disktab(int, char *[]);
|
||||
-static int gettytab(int, char *[]);
|
||||
-static int ethers(int, char *[]);
|
||||
static int group(int, char *[]);
|
||||
static int hosts(int, char *[]);
|
||||
-static int netgroup(int, char *[]);
|
||||
static int networks(int, char *[]);
|
||||
static int passwd(int, char *[]);
|
||||
-static int printcap(int, char *[]);
|
||||
static int protocols(int, char *[]);
|
||||
-static int rpc(int, char *[]);
|
||||
static int services(int, char *[]);
|
||||
static int shells(int, char *[]);
|
||||
|
||||
@@ -92,17 +80,11 @@
|
||||
const char *name;
|
||||
int (*callback)(int, char *[]);
|
||||
} databases[] = {
|
||||
- { "disktab", disktab, },
|
||||
- { "ethers", ethers, },
|
||||
- { "gettytab", gettytab, },
|
||||
{ "group", group, },
|
||||
{ "hosts", hosts, },
|
||||
- { "netgroup", netgroup, },
|
||||
{ "networks", networks, },
|
||||
{ "passwd", passwd, },
|
||||
- { "printcap", printcap, },
|
||||
{ "protocols", protocols, },
|
||||
- { "rpc", rpc, },
|
||||
{ "services", services, },
|
||||
{ "shells", shells, },
|
||||
|
||||
@@ -195,49 +177,6 @@
|
||||
(void)printf("\n");
|
||||
}
|
||||
|
||||
-
|
||||
- /*
|
||||
- * ethers
|
||||
- */
|
||||
-
|
||||
-static int
|
||||
-ethers(int argc, char *argv[])
|
||||
-{
|
||||
- char hostname[MAXHOSTNAMELEN + 1], *hp;
|
||||
- struct ether_addr ea, *eap;
|
||||
- int i, rv;
|
||||
-
|
||||
- assert(argc > 1);
|
||||
- assert(argv != NULL);
|
||||
-
|
||||
-#define ETHERSPRINT (void)printf("%-17s %s\n", ether_ntoa(eap), hp)
|
||||
-
|
||||
- rv = RV_OK;
|
||||
- if (argc == 2) {
|
||||
- warnx("Enumeration not supported on ethers");
|
||||
- rv = RV_NOENUM;
|
||||
- } else {
|
||||
- for (i = 2; i < argc; i++) {
|
||||
- if ((eap = ether_aton(argv[i])) == NULL) {
|
||||
- eap = &ea;
|
||||
- hp = argv[i];
|
||||
- if (ether_hostton(hp, eap) != 0) {
|
||||
- rv = RV_NOTFOUND;
|
||||
- break;
|
||||
- }
|
||||
- } else {
|
||||
- hp = hostname;
|
||||
- if (ether_ntohost(hp, eap) != 0) {
|
||||
- rv = RV_NOTFOUND;
|
||||
- break;
|
||||
- }
|
||||
- }
|
||||
- ETHERSPRINT;
|
||||
- }
|
||||
- }
|
||||
- return rv;
|
||||
-}
|
||||
-
|
||||
/*
|
||||
* group
|
||||
*/
|
||||
@@ -298,7 +237,7 @@
|
||||
hosts(int argc, char *argv[])
|
||||
{
|
||||
struct hostent *he;
|
||||
- char addr[IN6ADDRSZ];
|
||||
+ char addr[NS_IN6ADDRSZ];
|
||||
int i, rv;
|
||||
|
||||
assert(argc > 1);
|
||||
@@ -312,9 +251,9 @@
|
||||
} else {
|
||||
for (i = 2; i < argc; i++) {
|
||||
if (inet_pton(AF_INET6, argv[i], (void *)addr) > 0)
|
||||
- he = gethostbyaddr(addr, IN6ADDRSZ, AF_INET6);
|
||||
+ he = gethostbyaddr(addr, NS_IN6ADDRSZ, AF_INET6);
|
||||
else if (inet_pton(AF_INET, argv[i], (void *)addr) > 0)
|
||||
- he = gethostbyaddr(addr, INADDRSZ, AF_INET);
|
||||
+ he = gethostbyaddr(addr, NS_INADDRSZ, AF_INET);
|
||||
else
|
||||
he = gethostbyname(argv[i]);
|
||||
if (he != NULL)
|
||||
@@ -330,48 +269,6 @@
|
||||
}
|
||||
|
||||
/*
|
||||
- * netgroup
|
||||
- */
|
||||
-static int
|
||||
-netgroup(int argc, char *argv[])
|
||||
-{
|
||||
- int rv, i;
|
||||
- bool first;
|
||||
- const char *host, *user, *domain;
|
||||
-
|
||||
- assert(argc > 1);
|
||||
- assert(argv != NULL);
|
||||
-
|
||||
-#define NETGROUPPRINT(s) (((s) != NULL) ? (s) : "")
|
||||
-
|
||||
- rv = RV_OK;
|
||||
- if (argc == 2) {
|
||||
- warnx("Enumeration not supported on netgroup");
|
||||
- rv = RV_NOENUM;
|
||||
- } else {
|
||||
- for (i = 2; i < argc; i++) {
|
||||
- setnetgrent(argv[i]);
|
||||
- first = true;
|
||||
- while (getnetgrent(&host, &user, &domain) != 0) {
|
||||
- if (first) {
|
||||
- first = false;
|
||||
- (void)fputs(argv[i], stdout);
|
||||
- }
|
||||
- (void)printf(" (%s,%s,%s)",
|
||||
- NETGROUPPRINT(host),
|
||||
- NETGROUPPRINT(user),
|
||||
- NETGROUPPRINT(domain));
|
||||
- }
|
||||
- if (!first)
|
||||
- (void)putchar('\n');
|
||||
- endnetgrent();
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- return rv;
|
||||
-}
|
||||
-
|
||||
- /*
|
||||
* networks
|
||||
*/
|
||||
|
||||
@@ -464,227 +361,6 @@
|
||||
return rv;
|
||||
}
|
||||
|
||||
-static char *
|
||||
-mygetent(const char * const * db_array, const char *name)
|
||||
-{
|
||||
- char *buf = NULL;
|
||||
- int error;
|
||||
-
|
||||
- switch (error = cgetent(&buf, db_array, name)) {
|
||||
- case -3:
|
||||
- warnx("tc= loop in record `%s' in `%s'", name, db_array[0]);
|
||||
- break;
|
||||
- case -2:
|
||||
- warn("system error fetching record `%s' in `%s'", name,
|
||||
- db_array[0]);
|
||||
- break;
|
||||
- case -1:
|
||||
- case 0:
|
||||
- break;
|
||||
- case 1:
|
||||
- warnx("tc= reference not found in record for `%s' in `%s'",
|
||||
- name, db_array[0]);
|
||||
- break;
|
||||
- default:
|
||||
- warnx("unknown error %d in record `%s' in `%s'", error, name,
|
||||
- db_array[0]);
|
||||
- break;
|
||||
- }
|
||||
- return buf;
|
||||
-}
|
||||
-
|
||||
-static char *
|
||||
-mygetone(const char * const * db_array, int first)
|
||||
-{
|
||||
- char *buf = NULL;
|
||||
- int error;
|
||||
-
|
||||
- switch (error = (first ? cgetfirst : cgetnext)(&buf, db_array)) {
|
||||
- case -2:
|
||||
- warnx("tc= loop in `%s'", db_array[0]);
|
||||
- break;
|
||||
- case -1:
|
||||
- warn("system error fetching record in `%s'", db_array[0]);
|
||||
- break;
|
||||
- case 0:
|
||||
- case 1:
|
||||
- break;
|
||||
- case 2:
|
||||
- warnx("tc= reference not found in `%s'", db_array[0]);
|
||||
- break;
|
||||
- default:
|
||||
- warnx("unknown error %d in `%s'", error, db_array[0]);
|
||||
- break;
|
||||
- }
|
||||
- return buf;
|
||||
-}
|
||||
-
|
||||
-static void
|
||||
-capprint(const char *cap)
|
||||
-{
|
||||
- char *c = strchr(cap, ':');
|
||||
- if (c)
|
||||
- if (c == cap)
|
||||
- (void)printf("true\n");
|
||||
- else {
|
||||
- int l = (int)(c - cap);
|
||||
- (void)printf("%*.*s\n", l, l, cap);
|
||||
- }
|
||||
- else
|
||||
- (void)printf("%s\n", cap);
|
||||
-}
|
||||
-
|
||||
-static void
|
||||
-prettyprint(char *b)
|
||||
-{
|
||||
-#define TERMWIDTH 65
|
||||
- int did = 0;
|
||||
- size_t len;
|
||||
- char *s, c;
|
||||
-
|
||||
- for (;;) {
|
||||
- len = strlen(b);
|
||||
- if (len <= TERMWIDTH) {
|
||||
-done:
|
||||
- if (did)
|
||||
- printf("\t:");
|
||||
- printf("%s\n", b);
|
||||
- return;
|
||||
- }
|
||||
- for (s = b + TERMWIDTH; s > b && *s != ':'; s--)
|
||||
- continue;
|
||||
- if (*s++ != ':')
|
||||
- goto done;
|
||||
- c = *s;
|
||||
- *s = '\0';
|
||||
- if (did)
|
||||
- printf("\t:");
|
||||
- did++;
|
||||
- printf("%s\\\n", b);
|
||||
- *s = c;
|
||||
- b = s;
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-static void
|
||||
-handleone(const char * const *db_array, char *b, int recurse, int pretty,
|
||||
- int level)
|
||||
-{
|
||||
- char *tc;
|
||||
-
|
||||
- if (level && pretty)
|
||||
- printf("\n");
|
||||
- if (pretty)
|
||||
- prettyprint(b);
|
||||
- else
|
||||
- printf("%s\n", b);
|
||||
- if (!recurse || cgetstr(b, "tc", &tc) <= 0)
|
||||
- return;
|
||||
-
|
||||
- b = mygetent(db_array, tc);
|
||||
- free(tc);
|
||||
-
|
||||
- if (b == NULL)
|
||||
- return;
|
||||
-
|
||||
- handleone(db_array, b, recurse, pretty, ++level);
|
||||
- free(b);
|
||||
-}
|
||||
-
|
||||
-static int
|
||||
-handlecap(const char *db, int argc, char *argv[])
|
||||
-{
|
||||
- static const char sfx[] = "=#:";
|
||||
- const char *db_array[] = { db, NULL };
|
||||
- char *b, *cap;
|
||||
- int i, rv, c;
|
||||
- size_t j;
|
||||
- int expand = 1, recurse = 0, pretty = 0;
|
||||
-
|
||||
- assert(argc > 1);
|
||||
- assert(argv != NULL);
|
||||
-
|
||||
- argc--;
|
||||
- argv++;
|
||||
- while ((c = getopt(argc, argv, "pnr")) != -1)
|
||||
- switch (c) {
|
||||
- case 'n':
|
||||
- expand = 0;
|
||||
- break;
|
||||
- case 'r':
|
||||
- expand = 0;
|
||||
- recurse = 1;
|
||||
- break;
|
||||
- case 'p':
|
||||
- pretty = 1;
|
||||
- break;
|
||||
- default:
|
||||
- usage();
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- argc -= optind;
|
||||
- argv += optind;
|
||||
- csetexpandtc(expand);
|
||||
- rv = RV_OK;
|
||||
- if (argc == 0) {
|
||||
- for (b = mygetone(db_array, 1); b; b = mygetone(db_array, 0)) {
|
||||
- handleone(db_array, b, recurse, pretty, 0);
|
||||
- free(b);
|
||||
- }
|
||||
- } else {
|
||||
- if ((b = mygetent(db_array, argv[0])) == NULL)
|
||||
- return RV_NOTFOUND;
|
||||
- if (argc == 1)
|
||||
- handleone(db_array, b, recurse, pretty, 0);
|
||||
- else {
|
||||
- for (i = 2; i < argc; i++) {
|
||||
- for (j = 0; j < sizeof(sfx) - 1; j++) {
|
||||
- cap = cgetcap(b, argv[i], sfx[j]);
|
||||
- if (cap) {
|
||||
- capprint(cap);
|
||||
- break;
|
||||
- }
|
||||
- }
|
||||
- if (j == sizeof(sfx) - 1)
|
||||
- printf("false\n");
|
||||
- }
|
||||
- }
|
||||
- free(b);
|
||||
- }
|
||||
- return rv;
|
||||
-}
|
||||
-
|
||||
- /*
|
||||
- * gettytab
|
||||
- */
|
||||
-
|
||||
-static int
|
||||
-gettytab(int argc, char *argv[])
|
||||
-{
|
||||
- return handlecap(_PATH_GETTYTAB, argc, argv);
|
||||
-}
|
||||
-
|
||||
- /*
|
||||
- * printcap
|
||||
- */
|
||||
-
|
||||
-static int
|
||||
-printcap(int argc, char *argv[])
|
||||
-{
|
||||
- return handlecap(_PATH_PRINTCAP, argc, argv);
|
||||
-}
|
||||
-
|
||||
- /*
|
||||
- * disktab
|
||||
- */
|
||||
-
|
||||
-static int
|
||||
-disktab(int argc, char *argv[])
|
||||
-{
|
||||
- return handlecap(_PATH_DISKTAB, argc, argv);
|
||||
-}
|
||||
-
|
||||
/*
|
||||
* protocols
|
||||
*/
|
||||
@@ -726,47 +402,6 @@
|
||||
}
|
||||
|
||||
/*
|
||||
- * rpc
|
||||
- */
|
||||
-
|
||||
-static int
|
||||
-rpc(int argc, char *argv[])
|
||||
-{
|
||||
- struct rpcent *re;
|
||||
- unsigned long id;
|
||||
- int i, rv;
|
||||
-
|
||||
- assert(argc > 1);
|
||||
- assert(argv != NULL);
|
||||
-
|
||||
-#define RPCPRINT printfmtstrings(re->r_aliases, " ", " ", \
|
||||
- "%-16s %6d", \
|
||||
- re->r_name, re->r_number)
|
||||
-
|
||||
- setrpcent(1);
|
||||
- rv = RV_OK;
|
||||
- if (argc == 2) {
|
||||
- while ((re = getrpcent()) != NULL)
|
||||
- RPCPRINT;
|
||||
- } else {
|
||||
- for (i = 2; i < argc; i++) {
|
||||
- if (parsenum(argv[i], &id))
|
||||
- re = getrpcbynumber((int)id);
|
||||
- else
|
||||
- re = getrpcbyname(argv[i]);
|
||||
- if (re != NULL)
|
||||
- RPCPRINT;
|
||||
- else {
|
||||
- rv = RV_NOTFOUND;
|
||||
- break;
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
- endrpcent();
|
||||
- return rv;
|
||||
-}
|
||||
-
|
||||
- /*
|
||||
* services
|
||||
*/
|
||||
|
||||
8
pkgs/os-specific/bsd/netbsd/install-setup-hook.sh
Normal file
8
pkgs/os-specific/bsd/netbsd/install-setup-hook.sh
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
addNetBSDInstallMakeFlags() {
|
||||
export INSTALL_FILE="install -U -c"
|
||||
export INSTALL_DIR="install -U -d"
|
||||
export INSTALL_LINK="install -U -l h"
|
||||
export INSTALL_SYMLINK="install -U -l s"
|
||||
}
|
||||
|
||||
preConfigureHooks+=(addNetBSDInstallMakeFlags)
|
||||
11
pkgs/os-specific/bsd/netbsd/libbsd-overlay.pc
Normal file
11
pkgs/os-specific/bsd/netbsd/libbsd-overlay.pc
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
prefix=@out@
|
||||
exec_prefix=${prefix}
|
||||
libdir=${exec_prefix}/lib
|
||||
includedir=${prefix}/include
|
||||
|
||||
Name: nbcompat
|
||||
Description: NetBSD compatibility framework
|
||||
Version: @version@
|
||||
URL: https://www.netbsd.org/
|
||||
Libs: -L${libdir} -lnbcompat
|
||||
Cflags: -I${includedir} -DHAVE_NBTOOL_CONFIG_H -include nbtool_config.h
|
||||
85
pkgs/os-specific/bsd/netbsd/locale.patch
Normal file
85
pkgs/os-specific/bsd/netbsd/locale.patch
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
--- a/locale.c 2018-06-11 14:39:06.449762000 -0400
|
||||
+++ b/locale.c 2018-06-11 14:42:28.461122899 -0400
|
||||
@@ -56,14 +56,8 @@
|
||||
#include <stringlist.h>
|
||||
#include <unistd.h>
|
||||
|
||||
-#include "citrus_namespace.h"
|
||||
-#include "citrus_region.h"
|
||||
-#include "citrus_lookup.h"
|
||||
-#include "setlocale_local.h"
|
||||
-
|
||||
/* Local prototypes */
|
||||
void init_locales_list(void);
|
||||
-void init_locales_list_alias(void);
|
||||
void list_charmaps(void);
|
||||
void list_locales(void);
|
||||
const char *lookup_localecat(int);
|
||||
@@ -221,6 +215,8 @@
|
||||
};
|
||||
#define NKWINFO (sizeof(kwinfo)/sizeof(kwinfo[0]))
|
||||
|
||||
+const char *_PathLocale = NULL;
|
||||
+
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
@@ -411,8 +407,7 @@
|
||||
while ((dp = readdir(dirp)) != NULL) {
|
||||
/* exclude "." and "..", _LOCALE_ALIAS_NAME */
|
||||
if ((dp->d_name[0] != '.' || (dp->d_name[1] != '\0' &&
|
||||
- (dp->d_name[1] != '.' || dp->d_name[2] != '\0'))) &&
|
||||
- strcmp(_LOCALE_ALIAS_NAME, dp->d_name) != 0) {
|
||||
+ (dp->d_name[1] != '.' || dp->d_name[2] != '\0')))) {
|
||||
s = strdup(dp->d_name);
|
||||
if (s == NULL)
|
||||
err(1, "could not allocate memory");
|
||||
@@ -431,48 +426,10 @@
|
||||
if (sl_find(locales, "C") == NULL)
|
||||
sl_add(locales, "C");
|
||||
|
||||
- init_locales_list_alias();
|
||||
-
|
||||
/* make output nicer, sort the list */
|
||||
qsort(locales->sl_str, locales->sl_cur, sizeof(char *), scmp);
|
||||
}
|
||||
|
||||
-void
|
||||
-init_locales_list_alias(void)
|
||||
-{
|
||||
- char aliaspath[PATH_MAX];
|
||||
- struct _lookup *hlookup;
|
||||
- struct _region key, dat;
|
||||
- size_t n;
|
||||
- char *s, *t;
|
||||
-
|
||||
- _DIAGASSERT(locales != NULL);
|
||||
- _DIAGASSERT(_PathLocale != NULL);
|
||||
-
|
||||
- (void)snprintf(aliaspath, sizeof(aliaspath),
|
||||
- "%s/" _LOCALE_ALIAS_NAME, _PathLocale);
|
||||
-
|
||||
- if (_lookup_seq_open(&hlookup, aliaspath,
|
||||
- _LOOKUP_CASE_SENSITIVE) == 0) {
|
||||
- while (_lookup_seq_next(hlookup, &key, &dat) == 0) {
|
||||
- n = _region_size((const struct _region *)&key);
|
||||
- s = _region_head((const struct _region *)&key);
|
||||
- for (t = s; n > 0 && *s!= '/'; --n, ++s);
|
||||
- n = (size_t)(s - t);
|
||||
- s = malloc(n + 1);
|
||||
- if (s == NULL)
|
||||
- err(1, "could not allocate memory");
|
||||
- memcpy(s, t, n);
|
||||
- s[n] = '\0';
|
||||
- if (sl_find(locales, s) == NULL)
|
||||
- sl_add(locales, s);
|
||||
- else
|
||||
- free(s);
|
||||
- }
|
||||
- _lookup_seq_close(hlookup);
|
||||
- }
|
||||
-}
|
||||
-
|
||||
/*
|
||||
* Show current locale status, depending on environment variables
|
||||
*/
|
||||
16
pkgs/os-specific/bsd/netbsd/no-dynamic-linker.patch
Normal file
16
pkgs/os-specific/bsd/netbsd/no-dynamic-linker.patch
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
===================================================================
|
||||
RCS file: /ftp/cvs/cvsroot/src/sys/arch/i386/stand/efiboot/Makefile.efiboot,v
|
||||
rcsdiff: /ftp/cvs/cvsroot/src/sys/arch/i386/stand/efiboot/Makefile.efiboot,v: warning: Unknown phrases like `commitid ...;' are present.
|
||||
retrieving revision 1.16
|
||||
retrieving revision 1.17
|
||||
diff -u -p -r1.16 -r1.17
|
||||
--- sys/arch/i386/stand/efiboot/Makefile.efiboot 2019/09/13 02:19:45 1.16
|
||||
+++ sys/arch/i386/stand/efiboot/Makefile.efiboot 2020/04/04 15:30:46 1.17
|
||||
@@ -41,6 +41,7 @@ BINMODE=444
|
||||
.PATH: ${.CURDIR}/../../libsa
|
||||
|
||||
LDSCRIPT?= ${.CURDIR}/ldscript
|
||||
+LDFLAGS+= --no-dynamic-linker --noinhibit-exec
|
||||
LDFLAGS+= -nostdlib -T${LDSCRIPT} -Bsymbolic -shared -nocombreloc
|
||||
CPPFLAGS+= -I$S -I${.CURDIR} -I${.CURDIR}/.. -I$S/lib/libsa
|
||||
CPPFLAGS+= -I${.OBJDIR}
|
||||
15
pkgs/os-specific/bsd/netbsd/setup-hook.sh
Normal file
15
pkgs/os-specific/bsd/netbsd/setup-hook.sh
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
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"
|
||||
}
|
||||
|
||||
postUnpackHooks+=(mergeNetBSDSourceDir)
|
||||
preConfigureHooks+=(addNetBSDMakeFlags)
|
||||
13
pkgs/os-specific/bsd/netbsd/sys-headers-incsdir.patch
Normal file
13
pkgs/os-specific/bsd/netbsd/sys-headers-incsdir.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/Makefile b/Makefile
|
||||
index 3f1e18dc659d..163362b82f94 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
.include <bsd.own.mk>
|
||||
|
||||
+INCSDIR= ${INCSDIR0}
|
||||
+
|
||||
SUBDIR= altq arch compat dev fs miscfs \
|
||||
net net80211 netatalk netbt netcan netipsec netinet netinet6 \
|
||||
netmpls netsmb \
|
||||
109
pkgs/os-specific/bsd/setup-hook.sh
Normal file
109
pkgs/os-specific/bsd/setup-hook.sh
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
# BSD makefiles should be able to detect this
|
||||
# but without they end up using gcc on Darwin stdenv
|
||||
addMakeFlags() {
|
||||
export setOutputFlags=
|
||||
|
||||
export LIBCRT0=
|
||||
export LIBCRTI=
|
||||
export LIBCRTEND=
|
||||
export LIBCRTBEGIN=
|
||||
export LIBC=
|
||||
export LIBUTIL=
|
||||
export LIBSSL=
|
||||
export LIBCRYPTO=
|
||||
export LIBCRYPT=
|
||||
export LIBCURSES=
|
||||
export LIBTERMINFO=
|
||||
export LIBM=
|
||||
export LIBL=
|
||||
|
||||
export _GCC_CRTBEGIN=
|
||||
export _GCC_CRTBEGINS=
|
||||
export _GCC_CRTEND=
|
||||
export _GCC_CRTENDS=
|
||||
export _GCC_LIBGCCDIR=
|
||||
export _GCC_CRTI=
|
||||
export _GCC_CRTN=
|
||||
export _GCC_CRTDIR=
|
||||
|
||||
# Definitions passed to share/mk/*.mk. Should be pretty simple -
|
||||
# eventually maybe move it to a configure script.
|
||||
export DESTDIR=
|
||||
export USETOOLS=never
|
||||
export NOCLANGERROR=yes
|
||||
export NOGCCERROR=yes
|
||||
export LEX=flex
|
||||
export MKUNPRIVED=yes
|
||||
export EXTERNAL_TOOLCHAIN=yes
|
||||
|
||||
makeFlags="MACHINE=$MACHINE $makeFlags"
|
||||
makeFlags="MACHINE_ARCH=$MACHINE_ARCH $makeFlags"
|
||||
makeFlags="AR=$AR $makeFlags"
|
||||
makeFlags="CC=$CC $makeFlags"
|
||||
makeFlags="CPP=$CPP $makeFlags"
|
||||
makeFlags="CXX=$CXX $makeFlags"
|
||||
makeFlags="LD=$LD $makeFlags"
|
||||
makeFlags="STRIP=$STRIP $makeFlags"
|
||||
|
||||
makeFlags="BINDIR=${!outputBin}/bin $makeFlags"
|
||||
makeFlags="LIBDIR=${!outputLib}/lib $makeFlags"
|
||||
makeFlags="SHLIBDIR=${!outputLib}/lib $makeFlags"
|
||||
makeFlags="MANDIR=${!outputMan}/share/man $makeFlags"
|
||||
makeFlags="INFODIR=${!outputInfo}/share/info $makeFlags"
|
||||
makeFlags="DOCDIR=${!outputDoc}/share/doc $makeFlags"
|
||||
makeFlags="LOCALEDIR=${!outputLib}/share/locale $makeFlags"
|
||||
|
||||
# Parallel building. Needs the space.
|
||||
makeFlags="-j $NIX_BUILD_CORES $makeFlags"
|
||||
}
|
||||
|
||||
setBSDSourceDir() {
|
||||
sourceRoot=$PWD/$sourceRoot
|
||||
export BSDSRCDIR=$sourceRoot
|
||||
export _SRC_TOP_=$BSDSRCDIR
|
||||
|
||||
cd $sourceRoot
|
||||
if [ -d "$BSD_PATH" ]
|
||||
then sourceRoot=$sourceRoot/$BSD_PATH
|
||||
fi
|
||||
}
|
||||
|
||||
includesPhase() {
|
||||
if [ -z "${skipIncludesPhase:-}" ]; then
|
||||
runHook preIncludes
|
||||
|
||||
local flagsArray=(
|
||||
$makeFlags ${makeFlagsArray+"${makeFlagsArray[@]}"}
|
||||
includes
|
||||
)
|
||||
|
||||
echoCmd 'includes flags' "${flagsArray[@]}"
|
||||
make ${makefile:+-f $makefile} "${flagsArray[@]}"
|
||||
|
||||
moveUsrDir
|
||||
|
||||
runHook postIncludes
|
||||
fi
|
||||
}
|
||||
|
||||
moveUsrDir() {
|
||||
if [ -d $prefix ]; then
|
||||
# Remove lingering /usr references
|
||||
if [ -d $prefix/usr ]; then
|
||||
# Didn't try using rsync yet because per
|
||||
# https://unix.stackexchange.com/questions/127712/merging-folders-with-mv,
|
||||
# it's not neessarily better.
|
||||
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
|
||||
fi
|
||||
}
|
||||
|
||||
postUnpackHooks+=(setBSDSourceDir)
|
||||
preConfigureHooks+=(addMakeFlags)
|
||||
preInstallHooks+=(includesPhase)
|
||||
fixupOutputHooks+=(moveUsrDir)
|
||||
Loading…
Add table
Add a link
Reference in a new issue