Skip to content

Commit ada2b12

Browse files
authored
freebsd.libc: break into many small derivations (#359190)
2 parents c1d4a2c + 6b0a1f8 commit ada2b12

39 files changed

+1092
-472
lines changed

pkgs/os-specific/bsd/freebsd/package-set.nix

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
buildFreebsd,
99
patchesRoot,
1010
writeText,
11+
buildPackages,
1112
}:
1213

1314
self:
@@ -64,16 +65,32 @@ lib.packagesFromDirectoryRecursive {
6465
inherit (self) libmd libnetbsd;
6566
};
6667

67-
libc = self.callPackage ./pkgs/libc/package.nix {
68+
libcMinimal = self.callPackage ./pkgs/libcMinimal.nix {
6869
inherit (buildFreebsd)
69-
makeMinimal
70-
install
71-
gencat
7270
rpcgen
73-
mkcsmapper
74-
mkesdb
71+
gencat
72+
;
73+
inherit (buildPackages)
74+
flex
75+
byacc
7576
;
76-
inherit (self) csu include;
77+
};
78+
79+
libc = self.callPackage ./pkgs/libc/package.nix {
80+
inherit (self) libcMinimal librpcsvc libelf;
81+
};
82+
83+
librpcsvc = self.callPackage ./pkgs/librpcsvc.nix {
84+
inherit (buildFreebsd) rpcgen;
85+
};
86+
87+
i18n = self.callPackage ./pkgs/i18n.nix { inherit (buildFreebsd) mkcsmapper mkesdb; };
88+
89+
libelf = self.callPackage ./pkgs/libelf.nix { inherit (buildPackages) m4; };
90+
91+
rtld-elf = self.callPackage ./pkgs/rtld-elf.nix {
92+
inherit (buildFreebsd) rpcgen;
93+
inherit (buildPackages) flex byacc;
7794
};
7895

7996
libnetbsd = self.callPackage ./pkgs/libnetbsd/package.nix { inherit (buildFreebsd) makeMinimal; };

pkgs/os-specific/bsd/freebsd/patches/14.1/bsd-lib-mk-force-static.patch

Lines changed: 0 additions & 81 deletions
This file was deleted.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git a/lib/libelf/Makefile b/lib/libelf/Makefile
2+
index c15ce2798a91..d6d8754e2b4f 100644
3+
--- a/lib/libelf/Makefile
4+
+++ b/lib/libelf/Makefile
5+
@@ -80,7 +80,7 @@ INCS= libelf.h gelf.h
6+
SRCS+= sys/elf32.h sys/elf64.h sys/elf_common.h
7+
8+
# Allow bootstrapping elftoolchain on Linux:
9+
-.if defined(BOOTSTRAPPING) && ${.MAKE.OS} == "Linux"
10+
+.if defined(BOOTSTRAPPING)
11+
native-elf-format.h:
12+
${ELFTCDIR}/common/native-elf-format > ${.TARGET} || rm ${.TARGET}
13+
SRCS+= native-elf-format.h
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
diff --git a/share/mk/bsd.incs.mk b/share/mk/bsd.incs.mk
2+
index df4cf4641141..a87c7f9db03a 100644
3+
--- a/share/mk/bsd.incs.mk
4+
+++ b/share/mk/bsd.incs.mk
5+
@@ -63,8 +63,8 @@ stage_includes: stage_as.${header:T}
6+
7+
installincludes: _${group}INS_${header:T}
8+
_${group}INS_${header:T}: ${header}
9+
- ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -C -o ${${group}OWN_${.ALLSRC:T}} \
10+
- -g ${${group}GRP_${.ALLSRC:T}} -m ${${group}MODE_${.ALLSRC:T}} \
11+
+ ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -C \
12+
+ -m ${${group}MODE_${.ALLSRC:T}} \
13+
${.ALLSRC} \
14+
${DESTDIR}${${group}DIR_${.ALLSRC:T}}/${${group}NAME_${.ALLSRC:T}}
15+
.else
16+
@@ -78,10 +78,10 @@ stage_includes: stage_files.${group}
17+
installincludes: _${group}INS
18+
_${group}INS: ${_${group}INCS}
19+
.if defined(${group}NAME)
20+
- ${INSTALL} ${${group}TAG_ARGS} -C -o ${${group}OWN} -g ${${group}GRP} -m ${${group}MODE} \
21+
+ ${INSTALL} ${${group}TAG_ARGS} -C -m ${${group}MODE} \
22+
${.ALLSRC} ${DESTDIR}${${group}DIR}/${${group}NAME}
23+
.else
24+
- ${INSTALL} ${${group}TAG_ARGS} -C -o ${${group}OWN} -g ${${group}GRP} -m ${${group}MODE} \
25+
+ ${INSTALL} ${${group}TAG_ARGS} -C -m ${${group}MODE} \
26+
${.ALLSRC} ${DESTDIR}${${group}DIR}/
27+
.endif
28+
.endif # !empty(_${group}INCS)
29+
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
30+
index 5f328d5378ca..264bbcc84ffb 100644
31+
--- a/share/mk/bsd.lib.mk
32+
+++ b/share/mk/bsd.lib.mk
33+
@@ -242,7 +242,7 @@ PO_FLAG=-pg
34+
_LIBDIR:=${LIBDIR}
35+
_SHLIBDIR:=${SHLIBDIR}
36+
37+
-.if defined(SHLIB_NAME)
38+
+.if defined(SHLIB_NAME) && !empty(SHLIB_NAME)
39+
.if ${MK_DEBUG_FILES} != "no"
40+
SHLIB_NAME_FULL=${SHLIB_NAME}.full
41+
# Use ${DEBUGDIR} for base system debug files, else .debug subdirectory
42+
@@ -277,7 +277,7 @@ LDFLAGS+= -Wl,--undefined-version
43+
.endif
44+
.endif
45+
46+
-.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)
47+
+.if defined(LIB) && !empty(LIB) || (defined(SHLIB_NAME) && !empty(SHLIB_NAME))
48+
OBJS+= ${SRCS:N*.h:${OBJS_SRCS_FILTER:ts:}:S/$/.o/}
49+
BCOBJS+= ${SRCS:N*.[hsS]:N*.asm:${OBJS_SRCS_FILTER:ts:}:S/$/.bco/g}
50+
LLOBJS+= ${SRCS:N*.[hsS]:N*.asm:${OBJS_SRCS_FILTER:ts:}:S/$/.llo/g}
51+
@@ -320,14 +320,14 @@ lib${LIB_PRIVATE}${LIB}.ll: ${LLOBJS}
52+
CLEANFILES+= lib${LIB_PRIVATE}${LIB}.bc lib${LIB_PRIVATE}${LIB}.ll
53+
.endif
54+
55+
-.if defined(SHLIB_NAME) || \
56+
+.if (defined(SHLIB_NAME) && !empty(SHLIB_NAME)) || \
57+
defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
58+
SOBJS+= ${OBJS:.o=.pico}
59+
DEPENDOBJS+= ${SOBJS}
60+
CLEANFILES+= ${SOBJS}
61+
.endif
62+
63+
-.if defined(SHLIB_NAME)
64+
+.if defined(SHLIB_NAME) && !empty(SHLIB_NAME)
65+
_LIBS+= ${SHLIB_NAME}
66+
67+
SOLINKOPTS+= -shared -Wl,-x
68+
@@ -435,7 +435,7 @@ all: all-man
69+
CLEANFILES+= ${_LIBS}
70+
71+
_EXTRADEPEND:
72+
-.if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME)
73+
+.if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME) && !empty(SHLIB_NAME)
74+
.if defined(DPADD) && !empty(DPADD)
75+
echo ${SHLIB_NAME_FULL}: ${DPADD} >> ${DEPENDFILE}
76+
.endif
77+
@@ -482,7 +482,7 @@ _SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}}
78+
installpcfiles: installpcfiles-${pcfile}
79+
80+
installpcfiles-${pcfile}: ${pcfile}
81+
- ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
82+
+ ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -m ${LIBMODE} \
83+
${_INSTALLFLAGS} \
84+
${.ALLSRC} ${DESTDIR}${LIBDATADIR}/pkgconfig/
85+
.endfor
86+
@@ -494,28 +494,28 @@ realinstall: _libinstall installpcfiles
87+
.ORDER: beforeinstall _libinstall
88+
_libinstall:
89+
.if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no"
90+
- ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
91+
+ ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -m ${LIBMODE} \
92+
${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}${_STATICLIB_SUFFIX}.a ${DESTDIR}${_LIBDIR}/
93+
.if ${MK_PROFILE} != "no"
94+
- ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
95+
+ ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -m ${LIBMODE} \
96+
${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}_p.a ${DESTDIR}${_LIBDIR}/
97+
.endif
98+
.endif
99+
-.if defined(SHLIB_NAME)
100+
- ${INSTALL} ${TAG_ARGS} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
101+
+.if defined(SHLIB_NAME) && !empty(SHLIB_NAME)
102+
+ ${INSTALL} ${TAG_ARGS} ${STRIP} -m ${LIBMODE} \
103+
${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
104+
${SHLIB_NAME} ${DESTDIR}${_SHLIBDIR}/
105+
.if ${MK_DEBUG_FILES} != "no"
106+
.if defined(DEBUGMKDIR)
107+
${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dbg} -d ${DESTDIR}${DEBUGFILEDIR}/
108+
.endif
109+
- ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dbg} -o ${LIBOWN} -g ${LIBGRP} -m ${DEBUGMODE} \
110+
+ ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dbg} -m ${DEBUGMODE} \
111+
${_INSTALLFLAGS} \
112+
${SHLIB_NAME}.debug ${DESTDIR}${DEBUGFILEDIR}/
113+
.endif
114+
.if defined(SHLIB_LINK)
115+
.if commands(${SHLIB_LINK:R}.ld)
116+
- ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -S -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
117+
+ ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -S -m ${LIBMODE} \
118+
${_INSTALLFLAGS} ${SHLIB_LINK:R}.ld \
119+
${DESTDIR}${_LIBDIR}/${SHLIB_LINK}
120+
.for _SHLIB_LINK_LINK in ${SHLIB_LDSCRIPT_LINKS}
121+
@@ -548,7 +548,7 @@ _libinstall:
122+
.endif # SHLIB_LINK
123+
.endif # SHIB_NAME
124+
.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
125+
- ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
126+
+ ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -m ${LIBMODE} \
127+
${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${_LIBDIR}/
128+
.endif
129+
.endif # !defined(INTERNALLIB)
130+
@@ -588,7 +588,7 @@ OBJS_DEPEND_GUESS+= ${SRCS:M*.h}
131+
OBJS_DEPEND_GUESS.${_S:${OBJS_SRCS_FILTER:ts:}}.po+= ${_S}
132+
.endfor
133+
.endif
134+
-.if defined(SHLIB_NAME) || \
135+
+.if (defined(SHLIB_NAME) && !empty(SHLIB_NAME)) || \
136+
defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
137+
.for _S in ${SRCS:N*.[hly]}
138+
OBJS_DEPEND_GUESS.${_S:${OBJS_SRCS_FILTER:ts:}}.pico+= ${_S}
139+
diff --git a/share/mk/bsd.man.mk b/share/mk/bsd.man.mk
140+
index 04316c46b705..9ad3c8ce70e7 100644
141+
--- a/share/mk/bsd.man.mk
142+
+++ b/share/mk/bsd.man.mk
143+
@@ -50,9 +50,9 @@
144+
.endif
145+
146+
.if ${MK_MANSPLITPKG} == "no"
147+
-MINSTALL?= ${INSTALL} ${TAG_ARGS} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
148+
+MINSTALL?= ${INSTALL} ${TAG_ARGS} -m ${MANMODE}
149+
.else
150+
-MINSTALL?= ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},man} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
151+
+MINSTALL?= ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},man} -m ${MANMODE}
152+
.endif
153+
154+
CATDIR= ${MANDIR:H:S/$/\/cat/}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git a/libexec/rtld-elf/Makefile b/libexec/rtld-elf/Makefile
2+
index 0dbd2b8aa935..241d7a78e208 100644
3+
--- a/libexec/rtld-elf/Makefile
4+
+++ b/libexec/rtld-elf/Makefile
5+
@@ -54,7 +54,7 @@ NO_WCAST_ALIGN= yes
6+
INSTALLFLAGS= -C -b
7+
PRECIOUSPROG=
8+
BINDIR= /libexec
9+
-SYMLINKS= ../..${BINDIR}/${PROG} ${LIBEXECDIR}/${PROG}
10+
+SYMLINKS= ${BINDIR}/${PROG} ${LIBEXECDIR}/${PROG}
11+
MLINKS?= rtld.1 ld-elf.so.1.1 \
12+
rtld.1 ld.so.1
13+

pkgs/os-specific/bsd/freebsd/pkgs/bin.nix

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22
mkDerivation,
33
pkgsBuildBuild,
44
libjail,
5-
libmd,
65
libnetbsd,
76
libcapsicum,
87
libcasper,
9-
libelf,
108
libxo,
119
libncurses-tinfo,
1210
libedit,
@@ -36,11 +34,9 @@ mkDerivation {
3634
];
3735
buildInputs = [
3836
libjail
39-
libmd
4037
libnetbsd
4138
libcapsicum
4239
libcasper
43-
libelf
4440
libxo
4541
libncurses-tinfo
4642
libedit

pkgs/os-specific/bsd/freebsd/pkgs/compat/package.nix

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,4 +174,6 @@ mkDerivation {
174174
# build build-time dependencies for building FreeBSD packages). It is
175175
# not needed when building for FreeBSD.
176176
meta.broken = stdenv.hostPlatform.isFreeBSD;
177+
178+
alwaysKeepStatic = true;
177179
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
mkDerivation,
3+
mkcsmapper,
4+
mkesdb,
5+
}:
6+
7+
mkDerivation {
8+
path = "share/i18n";
9+
10+
noLibc = true;
11+
12+
extraNativeBuildInputs = [
13+
mkcsmapper
14+
mkesdb
15+
];
16+
17+
preBuild = ''
18+
export makeFlags="$makeFlags ESDBDIR=$out/share/i18n/esdb CSMAPPERDIR=$out/share/i18n/csmapper"
19+
'';
20+
}

pkgs/os-specific/bsd/freebsd/pkgs/include/package.nix

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
{
2-
stdenv,
32
lib,
43
mkDerivation,
54
buildPackages,

pkgs/os-specific/bsd/freebsd/pkgs/install.nix

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ let
2626
@out@/bin/xinstall "''${args[@]}"
2727
''
2828
);
29+
libmd' = libmd.override {
30+
bootstrapInstallation = true;
31+
};
2932
in
3033
mkDerivation {
3134
path = "usr.bin/xinstall";
@@ -39,10 +42,14 @@ mkDerivation {
3942
(if stdenv.hostPlatform == stdenv.buildPlatform then boot-install else install)
4043
];
4144
skipIncludesPhase = true;
42-
buildInputs = compatIfNeeded ++ [
43-
libmd
44-
libnetbsd
45-
];
45+
buildInputs =
46+
compatIfNeeded
47+
++ lib.optionals (!stdenv.hostPlatform.isFreeBSD) [
48+
libmd'
49+
]
50+
++ [
51+
libnetbsd
52+
];
4653
makeFlags =
4754
[
4855
"STRIP=-s" # flag to install, not command

0 commit comments

Comments
 (0)