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:
Anton Arapov 2021-04-03 12:58:10 +02:00 committed by Alan Daniels
commit 56de2bcd43
30691 changed files with 3076956 additions and 0 deletions

View 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__ */

View file

@ -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}

View 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.

View 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"

View 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
# installs -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
#
})

View file

@ -0,0 +1,4 @@
# See pkgs/build-support/setup-hooks/role.bash
getHostRole
export NIX_LDFLAGS${role_post}+=" -lfts"

View 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
*/

View 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)

View 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

View 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
*/

View 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}

View 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)

View 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 \

View 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)