Merge pull request #298849 from rhelmot/freebsd-minimal2/fblibc

FreeBSD: Rework scope + building libc
This commit is contained in:
John Ericson
2024-05-11 21:56:38 -04:00
committed by GitHub
47 changed files with 821 additions and 256 deletions
+2
View File
@@ -81,6 +81,8 @@ let
&& final.parsed.kernel == platform.parsed.kernel;
isCompatible = _: throw "2022-05-23: isCompatible has been removed in favor of canExecute, refer to the 22.11 changelog for details";
# Derived meta-data
useLLVM = final.isFreeBSD;
libc =
/**/ if final.isDarwin then "libSystem"
else if final.isMinGW then "msvcrt"
+1 -1
View File
@@ -5,7 +5,7 @@
callPackage,
crossLibcStdenv,
attributePathToSplice ? [ "freebsd" ],
branch ? "release/13.1.0",
branch ? "release/14.0.0",
}:
let
+21 -7
View File
@@ -17,6 +17,7 @@ lib.packagesFromDirectoryRecursive {
}
// {
inherit sourceData patchesRoot versionData;
patches = ./patches/${self.versionData.revision};
# Keep the crawled portion of Nixpkgs finite.
buildFreebsd = lib.dontRecurseIntoAttrs buildFreebsd;
@@ -26,7 +27,8 @@ lib.packagesFromDirectoryRecursive {
sha256 = "BpHqJfnGOeTE7tkFJBx0Wk8ryalmf4KNTit/Coh026E=";
};
compatIfNeeded = lib.optional (!stdenvNoCC.hostPlatform.isFreeBSD) self.compat;
compatIsNeeded = !stdenvNoCC.hostPlatform.isFreeBSD;
compatIfNeeded = lib.optional self.compatIsNeeded self.compat;
freebsd-lib = import ./lib {
version = lib.concatStringsSep "." (
map toString (
@@ -44,7 +46,7 @@ lib.packagesFromDirectoryRecursive {
compat = self.callPackage ./pkgs/compat/package.nix {
inherit stdenv;
inherit (buildFreebsd) makeMinimal boot-install;
inherit (buildFreebsd) makeMinimal;
};
csu = self.callPackage ./pkgs/csu.nix {
@@ -52,13 +54,11 @@ lib.packagesFromDirectoryRecursive {
inherit (self) include;
};
include = self.callPackage ./pkgs/include/package.nix {
inherit (buildFreebsd) makeMinimal install rpcgen;
};
include = self.callPackage ./pkgs/include/package.nix { inherit (buildFreebsd) rpcgen mtree; };
install = self.callPackage ./pkgs/install.nix {
inherit (buildFreebsd) makeMinimal;
inherit (self) mtree libnetbsd;
inherit (self) libmd libnetbsd;
};
libc = self.callPackage ./pkgs/libc/package.nix {
@@ -67,16 +67,30 @@ lib.packagesFromDirectoryRecursive {
install
gencat
rpcgen
mkcsmapper
mkesdb
;
inherit (self) csu include;
};
libnetbsd = self.callPackage ./pkgs/libnetbsd/package.nix { inherit (buildFreebsd) makeMinimal; };
libmd = self.callPackage ./pkgs/libmd.nix { inherit (buildFreebsd) makeMinimal; };
mkDerivation = self.callPackage ./pkgs/mkDerivation.nix {
inherit stdenv;
inherit (buildFreebsd) makeMinimal install tsort;
inherit (buildFreebsd)
freebsdSetupHook
makeMinimal
install
tsort
lorder
;
};
makeMinimal = self.callPackage ./pkgs/makeMinimal.nix { inherit (self) make; };
mtree = self.callPackage ./pkgs/mtree.nix { inherit (self) libnetbsd libmd; };
tsort = self.callPackage ./pkgs/tsort.nix { inherit (buildFreebsd) makeMinimal install; };
}
@@ -0,0 +1,13 @@
--- a/contrib/mtree/Makefile 2023-12-04 23:02:13.919144141 -0700
+++ b/contrib/mtree/Makefile 2023-12-04 23:02:58.371810109 -0700
@@ -10,8 +10,8 @@
SRCS= compare.c crc.c create.c excludes.c misc.c mtree.c spec.c specspec.c \
verify.c getid.c pack_dev.c only.c
.if (${HOSTPROG:U} == "")
-DPADD+= ${LIBUTIL}
-LDADD+= -lutil
+LIBADD+= ${LIBUTIL}
+#LIBADD+= -lutil
.endif
CPPFLAGS+= -I${NETBSDSRCDIR}/sbin/mknod
@@ -0,0 +1,11 @@
--- a/share/mk/src.libnames.mk 2023-12-21 23:56:50.767042385 -0800
+++ b/share/mk/src.libnames.mk 2023-12-21 23:56:39.671089506 -0800
@@ -392,7 +392,7 @@
_DP_ztest= geom m nvpair umem zpool pthread avl zfs_core spl zutil zfs uutil icp
# The libc dependencies are not strictly needed but are defined to make the
# assert happy.
-_DP_c= compiler_rt
+_DP_c=
# Use libssp_nonshared only on i386 and power*. Other archs emit direct calls
# to __stack_chk_fail, not __stack_chk_fail_local provided by libssp_nonshared.
.if ${MK_SSP} != "no" && \
@@ -0,0 +1,32 @@
--- a/tools/build/cross-build/include/common/sys/_types.h
+++ b/tools/build/cross-build/include/common/sys/_types.h
@@ -47,3 +47,6 @@
* Neither GLibc nor macOS define __va_list but many FreeBSD headers require it.
*/
typedef __builtin_va_list __va_list;
+
+typedef __UINTPTR_TYPE__ __uintptr_t;
+typedef __INTPTR_TYPE__ __intptr_t;
--- a/tools/build/cross-build/include/common/sys/types.h
+++ b/tools/build/cross-build/include/common/sys/types.h
@@ -49,9 +49,6 @@
#include <sys/sysmacros.h>
#endif
-typedef __UINTPTR_TYPE__ __uintptr_t;
-typedef __INTPTR_TYPE__ __intptr_t;
-
/* needed for gencat */
typedef int __nl_item;
--- a/tools/build/cross-build/include/linux/sys/types.h
+++ b/tools/build/cross-build/include/linux/sys/types.h
@@ -39,6 +39,8 @@
#include_next <sys/types.h>
+#include <sys/_types.h>
+
#ifndef __size_t
typedef __SIZE_TYPE__ __size_t;
#endif
@@ -0,0 +1,40 @@
diff --git a/tools/build/Makefile b/tools/build/Makefile
index 948a5f9dfdb..592af84eeae 100644
--- a/tools/build/Makefile
+++ b/tools/build/Makefile
@@ -327,14 +327,14 @@ host-symlinks:
# and cross-tools stages. We do this here using mkdir since mtree may not exist
# yet (this happens if we are crossbuilding from Linux/Mac).
INSTALLDIR_LIST= \
- bin \
- lib/geom \
- usr/include/casper \
- usr/include/private/ucl \
- usr/include/private/zstd \
- usr/lib \
- usr/libdata/pkgconfig \
- usr/libexec
+ ${BINDIR} \
+ ${LIBDIR}/geom \
+ ${INCLUDEDIR}/casper \
+ ${INCLUDEDIR}/private/ucl \
+ ${INCLUDEDIR}/private/zstd \
+ ${LIBDIR} \
+ ${LIBDIR}/libdata/pkgconfig \
+ ${LIBEXECDIR}
installdirs:
mkdir -p ${INSTALLDIR_LIST:S,^,${DESTDIR}/,}
@@ -352,9 +352,9 @@ installdirs:
rm -rf "${DESTDIR}/${_dir}"; \
fi
.endfor
- ln -sfn bin ${DESTDIR}/sbin
- ln -sfn ../bin ${DESTDIR}/usr/bin
- ln -sfn ../bin ${DESTDIR}/usr/sbin
+ ln -sfn bin ${DESTDIR}/${SBINDIR}
+ ln -sfn ../bin ${DESTDIR}/${BINDIR}
+ ln -sfn ../bin ${DESTDIR}/${SBINDIR}
.for _group in ${INCSGROUPS:NINCS}
mkdir -p "${DESTDIR}/${${_group}DIR}"
.endfor
@@ -0,0 +1,11 @@
--- a/usr.bin/xinstall/Makefile 2023-09-23 19:18:49.165192183 -0700
+++ b/usr.bin/xinstall/Makefile 2023-12-06 17:06:57.836888028 -0700
@@ -14,7 +14,7 @@
CFLAGS+= -I${SRCTOP}/lib/libnetbsd
LIBADD= md
-CFLAGS+= -DWITH_MD5 -DWITH_RIPEMD160
+CFLAGS+= -I${BSDSRCDIR}/contrib/libc-vis -I${BSDSRCDIR}/lib/libnetbsd
.ifdef BOOTSTRAPPING
# For the bootstrap we disable copy_file_range()
@@ -0,0 +1,11 @@
--- a/lib/libc/Makefile
+++ b/lib/libc/Makefile
@@ -194,7 +194,7 @@ SUBDIR.${MK_TESTS}+= tests
# recording a build dependency
CFLAGS+= -I${SRCTOP}/lib/libutil
# Same issue with libm
-MSUN_ARCH_SUBDIR != ${MAKE} -B -C ${SRCTOP}/lib/msun -V ARCH_SUBDIR
+MSUN_ARCH_SUBDIR = ${MACHINE_CPUARCH:S/i386/i387/}
# unfortunately msun/src contains both private and public headers
CFLAGS+= -I${SRCTOP}/lib/msun/${MSUN_ARCH_SUBDIR}
.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
@@ -0,0 +1,10 @@
--- a/lib/libc/Makefile
+++ b/lib/libc/Makefile
@@ -58,7 +58,6 @@ CFLAGS+=${CANCELPOINTS_CFLAGS}
# Link with static libcompiler_rt.a.
#
LDFLAGS+= -nodefaultlibs
-LIBADD+= compiler_rt
.if ${MK_SSP} != "no" && \
(${LIBC_ARCH} == "i386" || ${MACHINE_ARCH:Mpower*} != "")
@@ -0,0 +1,32 @@
diff --git a/Makefile b/Makefile
index 22710f3d933..22effc848cf 100644
--- a/lib/libnetbsd/Makefile
+++ b/lib/libnetbsd/Makefile
@@ -9,6 +9,26 @@ CFLAGS+= -I${.CURDIR}
SRCS+= efun.c sockaddr_snprintf.c strsuftoll.c util.c util.h
-INTERNALLIB=
+INCSGROUPS= INCS SYSINCS NETINETINCS
+
+INCS+= \
+ glob.h \
+ pthread.h \
+ rmd160.h \
+ sha1.h \
+ sha2.h \
+ stdlib.h \
+ util.h
+
+SYSINCSDIR= ${INCLUDEDIR}/sys
+SYSINCS+= \
+ sys/cdefs.h \
+ sys/event.h \
+ sys/types.h \
+ sys/wait.h
+
+NETINETINCSDIR= ${INCLUDEDIR}/netinet
+NETINETINCS+= \
+ netinet/in.h
.include <bsd.lib.mk>
@@ -0,0 +1,11 @@
--- a/lib/librpcsvc/Makefile
+++ b/lib/librpcsvc/Makefile
@@ -20,7 +20,7 @@ OTHERSRCS+= yp_passwd.c yp_update.c
RPCCOM= RPCGEN_CPP=${CPP:Q} rpcgen -C
-INCDIRS= -I${SYSROOT:U${DESTDIR}}/usr/include/rpcsvc
+INCDIRS= -I${INCLUDEDIR}/rpcsvc
CFLAGS+= -DYP ${INCDIRS}
@@ -0,0 +1,13 @@
--- a/contrib/mtree/Makefile 2023-12-04 23:02:13.919144141 -0700
+++ b/contrib/mtree/Makefile 2023-12-04 23:02:58.371810109 -0700
@@ -10,8 +10,8 @@
SRCS= compare.c crc.c create.c excludes.c misc.c mtree.c spec.c specspec.c \
verify.c getid.c pack_dev.c only.c
.if (${HOSTPROG:U} == "")
-DPADD+= ${LIBUTIL}
-LDADD+= -lutil
+LIBADD+= ${LIBUTIL}
+#LIBADD+= -lutil
.endif
CPPFLAGS+= -I${NETBSDSRCDIR}/sbin/mknod
@@ -0,0 +1,11 @@
--- a/etc/mtree/BSD.include.dist
+++ b/etc/mtree/BSD.include.dist
@@ -3,7 +3,7 @@
# Please see the file src/etc/mtree/README before making changes to this file.
#
-/set type=dir uname=root gname=wheel mode=0755
+/set type=dir
.
arpa
..
@@ -0,0 +1,10 @@
--- a/libexec/rtld-elf/Makefile
+++ b/libexec/rtld-elf/Makefile
@@ -86,7 +86,6 @@
# Some of the required math functions (div & mod) are implemented in
# libcompiler_rt on some architectures.
-LIBADD+= compiler_rt
.include <bsd.prog.mk>
${PROG_FULL}: ${VERSION_MAP}
@@ -0,0 +1,13 @@
diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh
index c594724d814..d5287c7b992 100644
--- a/sys/conf/newvers.sh
+++ b/sys/conf/newvers.sh
@@ -177,7 +177,7 @@ u=${USER:-root}
d=$(pwd)
h=${HOSTNAME:-$(hostname)}
if [ -n "$SOURCE_DATE_EPOCH" ]; then
- if ! t=$(date -r $SOURCE_DATE_EPOCH 2>/dev/null); then
+ if ! t=$(date -d @$SOURCE_DATE_EPOCH 2>/dev/null); then
echo "Invalid SOURCE_DATE_EPOCH" >&2
exit 1
fi
@@ -0,0 +1,42 @@
--- a/sys/modules/aesni/Makefile 2023-12-16 09:19:28.454892154 -0700
+++ b/sys/Modules/aesni/Makefile 2023-12-16 09:19:41.975047684 -0700
@@ -1,6 +1,5 @@
.PATH: ${SRCTOP}/sys/crypto/aesni
-.PATH: ${SRCTOP}/contrib/llvm-project/clang/lib/Headers
KMOD= aesni
SRCS= aesni.c
@@ -39,8 +38,8 @@
aesni_ghash.o: aesni.h
aesni_wrap.o: aesni.h
aesni_ccm.o: aesni.h
-intel_sha1.o: sha_sse.h immintrin.h shaintrin.h tmmintrin.h xmmintrin.h
-intel_sha256.o: sha_sse.h immintrin.h shaintrin.h tmmintrin.h xmmintrin.h
+intel_sha1.o: sha_sse.h
+intel_sha256.o: sha_sse.h
.include <bsd.kmod.mk>
diff --git a/sys/modules/blake2/Makefile b/sys/modules/blake2/Makefile
index e4b3fb9f126..5bfd9c2ae02 100644
--- a/sys/modules/blake2/Makefile
+++ b/sys/modules/blake2/Makefile
@@ -3,7 +3,6 @@
.PATH: ${SRCTOP}/sys/contrib/libb2
.PATH: ${SRCTOP}/sys/crypto/blake2
.PATH: ${SRCTOP}/sys/opencrypto
-.PATH: ${SRCTOP}/contrib/llvm-project/clang/lib/Headers
KMOD = blake2
@@ -64,8 +63,7 @@ ${src:S/.c/.o/}: ${src}
-D_MM_MALLOC_H_INCLUDED -Wno-unused-function ${.IMPSRC}
${CTFCONVERT_CMD}
-${src:S/.c/.o/}: intrin.h emmintrin.h tmmintrin.h smmintrin.h immintrin.h \
- x86intrin.h ${SRCS:M*.h}
+${src:S/.c/.o/}: ${SRCS:M*.h}
.endfor
# FreeBSD-specific sources:
@@ -2,7 +2,7 @@
lib,
stdenv,
mkDerivation,
patchesRoot,
versionData,
bsdSetupHook,
freebsdSetupHook,
makeMinimal,
@@ -17,7 +17,7 @@ let
inherit (freebsd-lib) mkBsdArch;
in
mkDerivation rec {
mkDerivation {
pname = "compat";
path = "tools/build";
extraPaths =
@@ -40,6 +40,9 @@ mkDerivation rec {
# Take only individual headers, or else we will clobber native libc, etc.
"sys/rpc/types.h"
]
++ lib.optionals (versionData.major == 14) [ "sys/sys/bitcount.h" ]
++ [
# Listed in Makekfile as INC
"include/mpool.h"
@@ -53,6 +56,13 @@ mkDerivation rec {
"include/nl_types.h"
"include/elf.h"
"sys/sys/ctf.h"
]
++ lib.optionals (versionData.major == 14) [
"include/bitstring.h"
"sys/sys/bitstring.h"
"sys/sys/nv_namespace.h"
]
++ [
# Listed in Makekfile as SYSINC
@@ -80,6 +90,12 @@ mkDerivation rec {
"sys/sys/font.h"
"sys/sys/consio.h"
"sys/sys/fnv_hash.h"
#"sys/sys/cdefs.h"
#"sys/sys/param.h"
"sys/sys/_null.h"
#"sys/sys/types.h"
"sys/sys/_pthreadtypes.h"
"sys/sys/_stdint.h"
"sys/crypto/chacha20/_chacha.h"
"sys/crypto/chacha20/chacha.h"
@@ -92,12 +108,11 @@ mkDerivation rec {
"lib/libcapsicum"
"lib/libcasper"
];
"lib/libmd"
patches = [
/${patchesRoot}/compat-install-dirs.patch
/${patchesRoot}/compat-fix-typedefs-locations.patch
];
# idk bro
"sys/sys/kbio.h"
];
preBuild =
''
@@ -151,4 +166,9 @@ mkDerivation rec {
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
cp --no-preserve=mode -r cross-build/include/darwin/* $out/1-include
'';
# Compat is for making other platforms look like FreeBSD (e.g. to
# build build-time dependencies for building FreeBSD packages). It is
# not needed when building for FreeBSD.
meta.broken = stdenv.hostPlatform.isFreeBSD;
}
@@ -12,6 +12,7 @@
}:
mkDerivation {
isStatic = true;
path = "lib/csu";
extraPaths = [
"lib/Makefile.inc"
@@ -1,15 +1,7 @@
{
lib,
stdenv,
mkDerivation,
bsdSetupHook,
freebsdSetupHook,
makeMinimal,
install,
mandoc,
groff,
compatIfNeeded,
libelf,
libdwarf,
zlib,
libspl,
@@ -26,21 +18,18 @@ mkDerivation {
];
OPENSOLARIS_USR_DISTDIR = "$(SRCTOP)/cddl/contrib/opensolaris";
OPENSOLARIS_SYS_DISTDIR = "$(SRCTOP)/sys/cddl/contrib/opensolaris";
nativeBuildInputs = [
bsdSetupHook
freebsdSetupHook
makeMinimal
install
mandoc
groff
# flex byacc file2c
makeFlags = [
"STRIP=-s"
"MK_WERROR=no"
"MK_TESTS=no"
];
buildInputs = compatIfNeeded ++ [
libelf
libdwarf
zlib
libspl
];
meta.license = lib.licenses.cddl;
}
@@ -0,0 +1,23 @@
{
lib,
pkgsBuildBuild,
runCommand,
writeText,
source,
}:
{
pname,
path,
extraPaths ? [ ],
}:
let
sortedPaths = lib.naturalSort ([ path ] ++ extraPaths);
filterText = writeText "${pname}-src-include" (
lib.concatMapStringsSep "\n" (path: "/${path}") sortedPaths
);
in
runCommand "${pname}-filtered-src" { nativeBuildInputs = [ pkgsBuildBuild.rsync ]; } ''
rsync -a -r --files-from=${filterText} ${source}/ $out
''
@@ -5,7 +5,18 @@ setFreeBSDSrcTop() {
addFreeBSDMakeFlags() {
makeFlags="SBINDIR=${!outputBin}/bin $makeFlags"
makeFlags="LIBEXECDIR=${!outputLib}/libexec $makeFlags"
makeFlags="LIBDATADIR=${!outputLib}/data $makeFlags"
makeFlags="INCLUDEDIR=${!outputDev}/include $makeFlags"
makeFlags="CONFDIR=${!outputBin}/etc $makeFlags"
makeFlags="MANDIR=${!outputMan}/share/man/man $makeFlags"
if [ -n "$debug" ]; then
makeFlags="DEBUGFILEDIR=${debug}/lib/debug $makeFlags"
else
makeFlags="DEBUGFILEDIR=${out}/lib/debug $makeFlags"
fi
echo $makeFlags
}
postUnpackHooks+=(setFreeBSDSrcTop)
@@ -1,19 +1,13 @@
{
lib,
mkDerivation,
patchesRoot,
buildPackages,
bsdSetupHook,
freebsdSetupHook,
makeMinimal,
install,
mandoc,
groff,
rsync, # , nbperf
rpcgen,
mtree,
}:
mkDerivation {
isStatic = true;
path = "include";
extraPaths = [
@@ -22,22 +16,11 @@ mkDerivation {
"sys"
];
nativeBuildInputs = [
bsdSetupHook
freebsdSetupHook
makeMinimal
install
mandoc
groff
rsync # nbperf
extraNativeBuildInputs = [
rpcgen
# HACK use NetBSD's for now
buildPackages.netbsd.mtree
mtree
];
patches = [ /${patchesRoot}/no-perms-BSD.include.dist.patch ];
# The makefiles define INCSDIR per subdirectory, so we have to set
# something else on the command line so those definitions aren't
# overridden.
@@ -46,6 +29,7 @@ mkDerivation {
sed -i -E \
-e 's_/usr/include_''${INCSDIR0}_' \
{} \;
sed -E -i -e "/_PATH_LOGIN/d" $BSDSRCDIR/include/paths.h
'';
makeFlags = [ "RPCGEN_CPP=${buildPackages.stdenv.cc.cc}/bin/cpp" ];
+12 -8
View File
@@ -4,7 +4,6 @@
mkDerivation,
writeShellScript,
freebsd-lib,
mtree,
bsdSetupHook,
freebsdSetupHook,
makeMinimal,
@@ -30,7 +29,7 @@ let
in
mkDerivation {
path = "usr.bin/xinstall";
extraPaths = [ mtree.path ];
extraPaths = [ "contrib/mtree" ];
nativeBuildInputs = [
bsdSetupHook
freebsdSetupHook
@@ -44,13 +43,18 @@ mkDerivation {
libmd
libnetbsd
];
makeFlags = [
"STRIP=-s" # flag to install, not command
"MK_WERROR=no"
"TESTSDIR=${builtins.placeholder "test"}"
] ++ lib.optional (stdenv.hostPlatform == stdenv.buildPlatform) "INSTALL=boot-install";
makeFlags =
[
"STRIP=-s" # flag to install, not command
"MK_WERROR=no"
"TESTSDIR=${builtins.placeholder "test"}"
]
++ lib.optionals (stdenv.hostPlatform == stdenv.buildPlatform) [
"BOOTSTRAPPING=1"
"INSTALL=boot-install"
];
postInstall = ''
install -D -m 0550 ${binstall} $out/bin/binstall
install -C -m 0550 ${binstall} $out/bin/binstall
substituteInPlace $out/bin/binstall --subst-var out
mv $out/bin/install $out/bin/xinstall
ln -s ./binstall $out/bin/install
@@ -1,8 +1,8 @@
{
lib,
buildPackages,
stdenv,
mkDerivation,
patchesRoot,
bsdSetupHook,
freebsdSetupHook,
@@ -12,62 +12,108 @@
byacc,
gencat,
rpcgen,
mkcsmapper,
mkesdb,
csu,
include,
versionData,
}:
mkDerivation rec {
mkDerivation {
isStatic = true;
pname = "libc";
path = "lib/libc";
extraPaths = [
"etc/group"
"etc/master.passwd"
"etc/shells"
"lib/libmd"
"lib/libutil"
"lib/msun"
"sys/kern"
"sys/libkern"
"sys/sys"
"sys/crypto/chacha20"
"include/rpcsvc"
"contrib/jemalloc"
"contrib/gdtoa"
"contrib/libc-pwcache"
"contrib/libc-vis"
"contrib/tzcode/stdtime"
extraPaths =
[
"lib/libc_nonshared"
"etc/group"
"etc/master.passwd"
"etc/shells"
"lib/libmd"
"lib/libutil"
"lib/msun"
"sys/kern"
"sys/libkern"
"sys/sys"
"sys/crypto/chacha20"
"include/rpcsvc"
"contrib/jemalloc"
"contrib/gdtoa"
"contrib/libc-pwcache"
"contrib/libc-vis"
]
++ lib.optionals (versionData.major == 13) [ "contrib/tzcode/stdtime" ]
++ lib.optionals (versionData.major == 14) [ "contrib/tzcode" ]
++ [
# libthr
"lib/libthr"
"lib/libthread_db"
"libexec/rtld-elf"
# libthr
"lib/libthr"
"lib/libthread_db"
"libexec/rtld-elf"
"lib/csu/common/crtbrand.S"
"lib/csu/common/notes.h"
# librpcsvc
"lib/librpcsvc"
# librpcsvc
"lib/librpcsvc"
# librt
"lib/librt"
# librt
"lib/librt"
# libcrypt
"lib/libcrypt"
"lib/libmd"
"sys/crypto/sha2"
];
# libcrypt
"lib/libcrypt"
"lib/libmd"
"sys/crypto/sha2"
"sys/crypto/skein"
patches = [
# Hack around broken propogating MAKEFLAGS to submake, just inline logic
/${patchesRoot}/libc-msun-arch-subdir.patch
# libgcc and friends
"lib/libgcc_eh"
"lib/libgcc_s"
"lib/libcompiler_rt"
"contrib/llvm-project/libunwind"
"contrib/llvm-project/compiler-rt"
#"contrib/llvm-project/libcxx"
# Don't force -lcompiler-rt, we don't actually call it that
/${patchesRoot}/libc-no-force--lcompiler-rt.patch
# terminfo
"lib/ncurses"
"contrib/ncurses"
"lib/Makefile.inc"
]
++ lib.optionals (stdenv.hostPlatform.isx86_32) [ "lib/libssp_nonshared" ]
++ [
"lib/libexecinfo"
"contrib/libexecinfo"
# Fix extra include dir to get rpcsvc headers.
/${patchesRoot}/librpcsvc-include-subdir.patch
];
"lib/libkvm"
"sys" # ummmmmmmmmm libkvm wants arch-specific headers from the kernel tree
"lib/libmemstat"
"lib/libprocstat"
"sys/contrib/openzfs"
"sys/contrib/pcg-c"
"sys/opencrypto"
"sys/contrib/ck"
"sys/crypto"
"lib/libdevstat"
"lib/libelf"
"contrib/elftoolchain"
"lib/libiconv_modules"
"share/i18n"
"include/paths.h"
"lib/libdl"
];
postPatch = ''
substituteInPlace $COMPONENT_PATH/Makefile --replace '.include <src.opts.mk>' ""
substituteInPlace $BSDSRCDIR/include/paths.h \
--replace '/usr/lib/i18n' '${builtins.placeholder "out"}/lib/i18n' \
--replace '/usr/share/i18n' '${builtins.placeholder "out"}/share/i18n'
'';
nativeBuildInputs = [
@@ -80,16 +126,20 @@ mkDerivation rec {
byacc
gencat
rpcgen
mkcsmapper
mkesdb
];
buildInputs = [
include
csu
];
env.NIX_CFLAGS_COMPILE = "-B${csu}/lib";
# Suppress lld >= 16 undefined version errors
# https://github.com/freebsd/freebsd-src/commit/2ba84b4bcdd6012e8cfbf8a0d060a4438623a638
env.NIX_LDFLAGS = lib.optionalString (stdenv.targetPlatform.linker == "lld") "--undefined-version";
env.NIX_CFLAGS_COMPILE = toString [
"-B${csu}/lib"
# These are supposed to have _RTLD_COMPAT_LIB_SUFFIX so we can get things like "lib32"
# but that's unnecessary
"-DSTANDARD_LIBRARY_PATH=\"${builtins.placeholder "out"}/lib\""
"-D_PATH_RTLD=\"${builtins.placeholder "out"}/libexec/ld-elf.so.1\""
];
makeFlags = [
"STRIP=-s" # flag to install, not command
@@ -100,7 +150,7 @@ mkDerivation rec {
MK_SYMVER = "yes";
MK_SSP = "yes";
MK_NLS = "yes";
MK_ICONV = "no"; # TODO make srctop
MK_ICONV = "yes";
MK_NS_CACHING = "yes";
MK_INET6_SUPPORT = "yes";
MK_HESIOD = "yes";
@@ -112,44 +162,125 @@ mkDerivation rec {
MK_MALLOC_PRODUCTION = "yes";
MK_TESTS = "no";
MACHINE_ABI = "";
MK_DETECT_TZ_CHANGES = "no";
MK_MACHDEP_OPTIMIZATIONS = "yes";
MK_ASAN = "no";
MK_UBSAN = "no";
postInstall = ''
pushd ${include}
find . -type d -exec mkdir -p $out/\{} \;
find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \;
popd
NO_FSCHG = "yes";
pushd ${csu}
find . -type d -exec mkdir -p $out/\{} \;
find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \;
popd
preBuild = lib.optionalString (stdenv.hostPlatform.isx86_32) ''
make -C $BSDSRCDIR/lib/libssp_nonshared $makeFlags
make -C $BSDSRCDIR/lib/libssp_nonshared $makeFlags install
'';
sed -i -e 's| [^ ]*/libc_nonshared.a||' $out/lib/libc.so
postInstall =
''
pushd ${include}
find . -type d -exec mkdir -p $out/\{} \;
find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \;
popd
$CC -nodefaultlibs -lgcc -shared -o $out/lib/libgcc_s.so
pushd ${csu}
find . -type d -exec mkdir -p $out/\{} \;
find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \;
popd
NIX_CFLAGS_COMPILE+=" -B$out/lib"
NIX_CFLAGS_COMPILE+=" -I$out/include"
NIX_LDFLAGS+=" -L$out/lib"
mkdir $BSDSRCDIR/lib/libcompiler_rt/i386
make -C $BSDSRCDIR/lib/libcompiler_rt $makeFlags
make -C $BSDSRCDIR/lib/libcompiler_rt $makeFlags install
make -C $BSDSRCDIR/lib/libthr $makeFlags
make -C $BSDSRCDIR/lib/libthr $makeFlags install
make -C $BSDSRCDIR/lib/libgcc_eh $makeFlags
make -C $BSDSRCDIR/lib/libgcc_eh $makeFlags install
make -C $BSDSRCDIR/lib/msun $makeFlags
make -C $BSDSRCDIR/lib/msun $makeFlags install
ln -s $BSDSRCDIR/lib/libc/libc.so.7 $BSDSRCDIR/lib/libc/libc.so # not sure
mkdir $BSDSRCDIR/lib/libgcc_s/i386
make -C $BSDSRCDIR/lib/libgcc_s $makeFlags
make -C $BSDSRCDIR/lib/libgcc_s $makeFlags install
make -C $BSDSRCDIR/lib/librpcsvc $makeFlags
make -C $BSDSRCDIR/lib/librpcsvc $makeFlags install
NIX_CFLAGS_COMPILE+=" -B$out/lib"
NIX_CFLAGS_COMPILE+=" -I$out/include"
NIX_LDFLAGS+=" -L$out/lib"
make -C $BSDSRCDIR/lib/libutil $makeFlags
make -C $BSDSRCDIR/lib/libutil $makeFlags install
make -C $BSDSRCDIR/lib/libc_nonshared $makeFlags
make -C $BSDSRCDIR/lib/libc_nonshared $makeFlags install
make -C $BSDSRCDIR/lib/librt $makeFlags
make -C $BSDSRCDIR/lib/librt $makeFlags install
mkdir $BSDSRCDIR/lib/libmd/sys
make -C $BSDSRCDIR/lib/libmd $makeFlags
make -C $BSDSRCDIR/lib/libmd $makeFlags install
make -C $BSDSRCDIR/lib/libcrypt $makeFlags
make -C $BSDSRCDIR/lib/libcrypt $makeFlags install
make -C $BSDSRCDIR/lib/libthr $makeFlags
make -C $BSDSRCDIR/lib/libthr $makeFlags install
make -C $BSDSRCDIR/lib/msun $makeFlags
make -C $BSDSRCDIR/lib/msun $makeFlags install
make -C $BSDSRCDIR/lib/librpcsvc $makeFlags
make -C $BSDSRCDIR/lib/librpcsvc $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
make -C $BSDSRCDIR/lib/libelf $makeFlags
make -C $BSDSRCDIR/lib/libelf $makeFlags install
make -C $BSDSRCDIR/lib/libexecinfo $makeFlags
make -C $BSDSRCDIR/lib/libexecinfo $makeFlags install
make -C $BSDSRCDIR/lib/libkvm $makeFlags
make -C $BSDSRCDIR/lib/libkvm $makeFlags install
make -C $BSDSRCDIR/lib/libmemstat $makeFlags
make -C $BSDSRCDIR/lib/libmemstat $makeFlags install
make -C $BSDSRCDIR/lib/libprocstat $makeFlags
make -C $BSDSRCDIR/lib/libprocstat $makeFlags install
make -C $BSDSRCDIR/lib/libdevstat $makeFlags
make -C $BSDSRCDIR/lib/libdevstat $makeFlags install
make -C $BSDSRCDIR/lib/libiconv_modules $makeFlags
make -C $BSDSRCDIR/lib/libiconv_modules $makeFlags SHLIBDIR=${builtins.placeholder "out"}/lib/i18n install
make -C $BSDSRCDIR/lib/libdl $makeFlags
make -C $BSDSRCDIR/lib/libdl $makeFlags install
make -C $BSDSRCDIR/share/i18n $makeFlags
make -C $BSDSRCDIR/share/i18n $makeFlags ESDBDIR=${builtins.placeholder "out"}/share/i18n/esdb CSMAPPERDIR=${builtins.placeholder "out"}/share/i18n/csmapper install
''
+ lib.optionalString stdenv.hostPlatform.isx86_32 ''
$CC -c $BSDSRCDIR/contrib/llvm-project/compiler-rt/lib/builtins/udivdi3.c -o $BSDSRCDIR/contrib/llvm-project/compiler-rt/lib/builtins/udivdi3.o
ORIG_NIX_LDFLAGS="$NIX_LDFLAGS"
NIX_LDFLAGS+=" $BSDSRCDIR/contrib/llvm-project/compiler-rt/lib/builtins/udivdi3.o"
''
+ ''
make -C $BSDSRCDIR/libexec/rtld-elf $makeFlags
make -C $BSDSRCDIR/libexec/rtld-elf $makeFlags install
rm -f $out/libexec/ld-elf.so.1
mv $out/bin/ld-elf.so.1 $out/libexec
'';
# libc should not be allowed to refer to anything other than itself
postFixup = ''
find $out -type f | xargs -n1 ${buildPackages.patchelf}/bin/patchelf --shrink-rpath --allowed-rpath-prefixes $out || true
'';
meta.platforms = lib.platforms.freebsd;
# definitely a bad idea to enable stack protection on the stack protection initializers
hardeningDisable = [ "stackprotector" ];
outputs = [
"out"
"man"
"debug"
];
}
+3 -20
View File
@@ -1,16 +1,8 @@
{
lib,
stdenv,
mkDerivation,
bsdSetupHook,
freebsdSetupHook,
makeMinimal,
install,
mandoc,
groff,
m4,
compatIfNeeded,
libelf,
zlib,
}:
mkDerivation {
@@ -22,16 +14,7 @@ mkDerivation {
"sys/sys/elf64.h"
"sys/sys/elf_common.h"
];
nativeBuildInputs = [
bsdSetupHook
freebsdSetupHook
makeMinimal
install
mandoc
groff
m4
];
buildInputs = compatIfNeeded ++ [ libelf ];
extraNativeBuildInputs = [ m4 ];
buildInputs = compatIfNeeded ++ [ zlib ];
MK_TESTS = "no";
}
@@ -1,35 +0,0 @@
{
lib,
stdenv,
mkDerivation,
bsdSetupHook,
freebsdSetupHook,
makeMinimal,
install,
mandoc,
groff,
m4,
}:
mkDerivation {
path = "lib/libelf";
extraPaths = [
"contrib/elftoolchain/libelf"
"contrib/elftoolchain/common"
"sys/sys/elf32.h"
"sys/sys/elf64.h"
"sys/sys/elf_common.h"
];
BOOTSTRAPPING = !stdenv.isFreeBSD;
nativeBuildInputs = [
bsdSetupHook
freebsdSetupHook
makeMinimal
install
mandoc
groff
m4
];
MK_TESTS = "no";
}
@@ -0,0 +1,49 @@
{
lib,
stdenv,
mkDerivation,
freebsdSetupHook,
bsdSetupHook,
makeMinimal,
}:
mkDerivation {
path = "lib/libmd";
extraPaths = [
"sys/sys/md5.h"
"sys/crypto/sha2"
"sys/crypto/skein"
];
nativeBuildInputs = [
makeMinimal
bsdSetupHook
freebsdSetupHook
];
makeFlags = [
"STRIP=-s" # flag to install, not command
"RELDIR=."
] ++ lib.optional (!stdenv.hostPlatform.isFreeBSD) "MK_WERROR=no";
preBuild = ''
mkdir sys
'';
installPhase = ''
# libmd is used by install. do it yourself!
mkdir -p $out/include $out/lib $man/share/man
cp libmd.a $out/lib/libmd.a
for f in $(make $makeFlags -V INCS); do
if [ -e "$f" ]; then cp "$f" "$out/include/$f"; fi
if [ -e "$BSDSRCDIR/sys/crypto/sha2/$f" ]; then cp "$BSDSRCDIR/sys/crypto/sha2/$f" "$out/include/$f"; fi
if [ -e "$BSDSRCDIR/sys/crypto/skein/$f" ]; then cp "$BSDSRCDIR/sys/crypto/skein/$f" "$out/include/$f"; fi
done
for f in $(make $makeFlags -V MAN); do
cp "$f" "$man/share/man/$f"
done
'';
outputs = [
"out"
"man"
];
}
@@ -2,7 +2,6 @@
lib,
stdenv,
mkDerivation,
patchesRoot,
bsdSetupHook,
freebsdSetupHook,
makeMinimal,
@@ -10,7 +9,6 @@
groff,
boot-install,
install,
compatIfNeeded,
}:
mkDerivation {
@@ -23,13 +21,8 @@ mkDerivation {
groff
(if stdenv.hostPlatform == stdenv.buildPlatform then boot-install else install)
];
patches = lib.optionals (!stdenv.hostPlatform.isFreeBSD) [
/${patchesRoot}/libnetbsd-do-install.patch
#/${patchesRoot}/libnetbsd-define-__va_list.patch
];
makeFlags = [
"STRIP=-s" # flag to install, not command
"MK_WERROR=no"
] ++ lib.optional (stdenv.hostPlatform == stdenv.buildPlatform) "INSTALL=boot-install";
buildInputs = compatIfNeeded;
}
+12 -11
View File
@@ -3,19 +3,20 @@
mkDerivation {
path = "cddl/lib/libspl";
extraPaths = [
"sys/contrib/openzfs/lib/libspl"
"sys/contrib/openzfs/include"
"cddl/compat/opensolaris/include"
"sys/contrib/openzfs/include"
"sys/contrib/openzfs/lib/libspl"
"sys/contrib/openzfs/module/icp/include"
"sys/modules/zfs"
"sys/modules/zfs/zfs_config.h"
];
# nativeBuildInputs = [
# bsdSetupHook freebsdSetupHook
# makeMinimal install mandoc groff
# flex byacc file2c
# ];
# buildInputs = compatIfNeeded ++ [ libnv libsbuf ];
meta.license = lib.licenses.cddl;
# Without a prefix it will try to put object files in nonexistant directories
preBuild = ''
export MAKEOBJDIRPREFIX=$TMP/obj
'';
meta = with lib; {
platform = platforms.freebsd;
license = licenses.cddl;
};
}
@@ -6,6 +6,5 @@
mkDerivation {
path = "lib/libutil";
extraPaths = [ "lib/libc/gen" ];
clangFixup = true;
MK_TESTS = "no";
}
+1 -2
View File
@@ -3,8 +3,7 @@
bsdSetupHook,
freebsdSetupHook,
}:
mkDerivation rec {
mkDerivation {
path = "usr.bin/lorder";
noCC = true;
dontBuild = true;
@@ -7,7 +7,7 @@
freebsdSetupHook,
}:
mkDerivation rec {
mkDerivation {
inherit (make) path;
buildInputs = [ ];
@@ -25,6 +25,8 @@ mkDerivation rec {
${make.postPatch}
'';
configureFlags = [ "--with-filemon=no" ];
buildPhase = ''
runHook preBuild
@@ -2,11 +2,12 @@
lib,
stdenv,
stdenvNoCC,
versionData,
writeText,
patches,
compatIfNeeded,
runCommand,
rsync,
freebsd-lib,
source,
filterSource,
bsdSetupHook,
freebsdSetupHook,
makeMinimal,
@@ -24,21 +25,13 @@ lib.makeOverridable (
in
stdenv'.mkDerivation (
rec {
pname = "${attrs.pname or (baseNameOf attrs.path)}-freebsd";
inherit (freebsd-lib) version;
src = runCommand "${pname}-filtered-src" { nativeBuildInputs = [ rsync ]; } ''
for p in ${lib.concatStringsSep " " ([ attrs.path ] ++ attrs.extraPaths or [ ])}; do
set -x
path="$out/$p"
mkdir -p "$(dirname "$path")"
src_path="${source}/$p"
if [[ -d "$src_path" ]]; then src_path+=/; fi
rsync --chmod="+w" -r "$src_path" "$path"
set +x
done
'';
extraPaths = [ ];
pname = "${attrs.pname or (baseNameOf attrs.path)}";
src = filterSource {
inherit pname;
inherit (attrs) path;
extraPaths = attrs.extraPaths or [ ];
};
nativeBuildInputs = [
bsdSetupHook
@@ -48,8 +41,8 @@ lib.makeOverridable (
tsort
lorder
mandoc
groff # statHook
];
groff
] ++ attrs.extraNativeBuildInputs or [ ];
buildInputs = compatIfNeeded;
HOST_SH = stdenv'.shell;
@@ -72,11 +65,17 @@ lib.makeOverridable (
strictDeps = true;
meta = with lib; {
maintainers = with maintainers; [ ericson2314 ];
platforms = platforms.unix;
license = licenses.bsd2;
};
meta =
with lib;
{
maintainers = with maintainers; [
rhelmot
artemist
];
platforms = platforms.unix;
license = licenses.bsd2;
}
// attrs.meta or { };
}
// lib.optionalAttrs stdenv'.hasCC {
# TODO should CC wrapper set this?
@@ -95,5 +94,71 @@ lib.makeOverridable (
dontBuild = true;
}
// attrs
// lib.optionalAttrs (stdenv'.hasCC && stdenv'.cc.isClang or false && attrs.clangFixup or true) {
preBuild =
''
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -D_VA_LIST -D_VA_LIST_DECLARED -Dva_list=__builtin_va_list -D_SIZE_T_DECLARED -D_SIZE_T -Dsize_t=__SIZE_TYPE__ -D_WCHAR_T"
''
+ lib.optionalString (versionData.major == 13) ''
export NIX_LDFLAGS="$NIX_LDFLAGS --undefined-version"
''
+ (attrs.preBuild or "");
}
// {
patches =
let
isDir =
file:
let
base = baseNameOf file;
type = (builtins.readDir (dirOf file)).${base} or null;
in
file == /. || type == "directory";
consolidatePatches =
patches:
if (lib.isDerivation patches) then
[ patches ]
else if (builtins.isPath patches) then
(if (isDir patches) then (lib.filesystem.listFilesRecursive patches) else [ patches ])
else if (builtins.isList patches) then
(lib.flatten (builtins.map consolidatePatches patches))
else
throw "Bad patches - must be path or derivation or list thereof";
consolidated = consolidatePatches patches;
splitPatch =
patchFile:
let
foldFunc =
a: b:
if (lib.strings.hasPrefix "--- " b) then
(a ++ [ [ b ] ])
else
((lib.lists.init a) ++ (lib.lists.singleton ((lib.lists.last a) ++ [ b ])));
partitionedPatches' = lib.lists.foldl foldFunc [ [ ] ] (
lib.strings.splitString "\n" (builtins.readFile patchFile)
);
partitionedPatches =
if (builtins.length partitionedPatches' > 1) then
(lib.lists.drop 1 partitionedPatches')
else
(throw "${patchFile} does not seem to be a unified patch (diff -u). this is required for FreeBSD.");
filterFunc =
patchLines:
let
prefixedPath = builtins.elemAt (builtins.split " |\t" (builtins.elemAt patchLines 1)) 2;
unfixedPath = lib.path.subpath.join (lib.lists.drop 1 (lib.path.subpath.components prefixedPath));
in
lib.lists.any (included: lib.path.hasPrefix (/. + ("/" + included)) (/. + ("/" + unfixedPath))) (
(attrs.extraPaths or [ ]) ++ [ attrs.path ]
);
filteredLines = builtins.filter filterFunc partitionedPatches;
derive = patchLines: writeText "freebsd-patch" (lib.concatLines patchLines);
derivedPatches = builtins.map derive filteredLines;
in
derivedPatches;
picked = lib.lists.concatMap splitPatch consolidated;
in
picked ++ attrs.patches or [ ];
}
)
)
@@ -0,0 +1,22 @@
{
stdenv,
mkDerivation,
byacc,
flex,
}:
mkDerivation {
path = "usr.bin/mkcsmapper";
extraPaths = [
"lib/libc/iconv"
"lib/libiconv_modules/mapper_std"
];
BOOTSTRAPPING = !stdenv.hostPlatform.isFreeBSD;
extraNativeBuildInputs = [
byacc
flex
];
}
@@ -0,0 +1,19 @@
{
stdenv,
mkDerivation,
byacc,
flex,
}:
mkDerivation {
path = "usr.bin/mkesdb";
extraPaths = [ "lib/libc/iconv" ];
BOOTSTRAPPING = !stdenv.hostPlatform.isFreeBSD;
extraNativeBuildInputs = [
byacc
flex
];
}
+35 -2
View File
@@ -1,6 +1,39 @@
{ mkDerivation, mknod }:
{
lib,
stdenv,
mkDerivation,
compatIfNeeded,
compatIsNeeded,
libmd,
libnetbsd,
libutil,
}:
mkDerivation {
path = "contrib/mtree";
extraPaths = [ mknod.path ];
extraPaths = [ "contrib/mknod" ];
buildInputs =
compatIfNeeded
++ [
libmd
libnetbsd
]
++ lib.optional (stdenv.isFreeBSD) libutil;
postPatch = ''
ln -s $BSDSRCDIR/contrib/mknod/*.c $BSDSRCDIR/contrib/mknod/*.h $BSDSRCDIR/contrib/mtree
'';
preBuild = ''
export NIX_LDFLAGS="$NIX_LDFLAGS ${
toString (
[
"-lmd"
"-lnetbsd"
]
++ lib.optional compatIsNeeded "-legacy"
++ lib.optional stdenv.isFreeBSD "-lutil"
)
}"
'';
}
@@ -5,7 +5,7 @@
patchesRoot,
}:
mkDerivation rec {
mkDerivation {
path = "usr.bin/rpcgen";
patches = lib.optionals (stdenv.hostPlatform.libc == "glibc") [
# `WUNTRACED` is defined privately `bits/waitflags.h` in glibc.
@@ -22,6 +22,6 @@ mkDerivation rec {
#
# This hacks around this by manually including `WUNTRACED` until
# the problem is fixed properly in glibc.
/${patchesRoot}/rpcgen-glibc-hack.patch
./rpcgen-glibc-hack.patch
];
}
+1 -2
View File
@@ -1,7 +1,6 @@
{ mkDerivation, source }:
{ mkDerivation }:
mkDerivation {
path = "usr.bin/sed";
TESTSRC = "${source}/contrib/netbsd-tests";
MK_TESTS = "no";
}
@@ -4,7 +4,6 @@
# If you want you could fetchgit from "https://git.FreeBSD.org/src.git" instead.
# The update script still pulls directly from git.freebsd.org
fetchFromGitHub {
name = "src"; # Want to rename this next rebuild
owner = "freebsd";
repo = "freebsd-src";
inherit (sourceData) rev hash;
@@ -2,7 +2,6 @@
stdenv,
mkDerivation,
freebsd-lib,
patchesRoot,
buildPackages,
bsdSetupHook,
freebsdSetupHook,
@@ -15,7 +14,7 @@
file2c,
gawk,
uudecode,
xargs-j, # , ctfconvert
xargs-j,
}:
mkDerivation (
@@ -39,12 +38,6 @@ mkDerivation (
gawk
uudecode
xargs-j
#ctfconvert
];
patches = [
/${patchesRoot}/sys-gnu-date.patch
/${patchesRoot}/sys-no-explicit-intrinsics-dep.patch
];
# --dynamic-linker /red/herring is used when building the kernel.
@@ -1,4 +1,5 @@
{
lib,
mkDerivation,
bsdSetupHook,
freebsdSetupHook,
@@ -10,6 +11,12 @@
mkDerivation {
path = "usr.bin/tsort";
extraPaths = [ ];
outputs = [ "out" ];
MK_TESTS = "no";
makeFlags = [
"STRIP=-s" # flag to install, not command
];
nativeBuildInputs = [
bsdSetupHook
freebsdSetupHook
@@ -9,6 +9,7 @@ mergeNetBSDSourceDir() {
addNetBSDMakeFlags() {
makeFlags="INCSDIR=${!outputDev}/include $makeFlags"
makeFlags="MANDIR=${!outputMan}/share/man $makeFlags"
}
postUnpackHooks+=(mergeNetBSDSourceDir)
-1
View File
@@ -49,7 +49,6 @@ addMakeFlags() {
makeFlags="LIBDIR=${!outputLib}/lib $makeFlags"
makeFlags="SHLIBDIR=${!outputLib}/lib $makeFlags"
makeFlags="SHAREDIR=${!outputLib}/share $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"
+3 -3
View File
@@ -193,7 +193,7 @@ with pkgs;
pythonInterpreter = "${python3.withPackages (ps: [ ps.pyelftools ])}/bin/python";
autoPatchelfScript = ../build-support/setup-hooks/auto-patchelf.py;
};
meta.platforms = lib.platforms.linux;
meta.platforms = lib.platforms.linux ++ lib.platforms.freebsd;
} ../build-support/setup-hooks/auto-patchelf.sh;
tomato-c = callPackage ../applications/misc/tomato-c { };
@@ -16316,7 +16316,7 @@ with pkgs;
# assumption is that or any later version is good.
choose = platform:
/**/ if platform.isDarwin then 16
else if platform.isFreeBSD then 12
else if platform.isFreeBSD then 16
else if platform.isAndroid then 12
else if platform.isLinux then 17
else if platform.isWasm then 16
@@ -22526,7 +22526,7 @@ with pkgs;
# We also provide `libiconvReal`, which will always be a standalone libiconv,
# just in case you want it regardless of platform.
libiconv =
if lib.elem stdenv.hostPlatform.libc [ "glibc" "musl" "nblibc" "wasilibc" ]
if lib.elem stdenv.hostPlatform.libc [ "glibc" "musl" "nblibc" "wasilibc" "fblibc" ]
then libcIconv (if stdenv.hostPlatform != stdenv.buildPlatform
then libcCross
else stdenv.cc.libc)
+1 -3
View File
@@ -57,9 +57,7 @@ in
, # Non-GNU/Linux OSes are currently "impure" platforms, with their libc
# outside of the store. Thus, GCC, GFortran, & co. must always look for files
# in standard system directories (/usr/include, etc.)
noSysDirs ? stdenv.buildPlatform.system != "x86_64-freebsd"
&& stdenv.buildPlatform.system != "i686-freebsd"
&& stdenv.buildPlatform.system != "x86_64-solaris"
noSysDirs ? stdenv.buildPlatform.system != "x86_64-solaris"
&& stdenv.buildPlatform.system != "x86_64-kfreebsd-gnu"
, # The configuration attribute set