1PORTNAME=	rl9
2PORTVERSION=	${LINUX_DIST_VER}
3PORTREVISION=	4
4CATEGORIES=	emulators linux
5PKGNAMEPREFIX=	linux_base-
6EXTRACT_ONLY=	${DISTFILES:N*${SRC_SUFX}*:Nf/filesystem-*:C/:[^:]+$//}
7
8MAINTAINER=	ports@MidnightBSD.org
9COMMENT=	Base set of packages needed in Linux mode (Rocky Linux ${LINUX_DIST_VER})
10
11LICENSE=	bsd2
12
13CONFLICTS=	linux_base-c7-*
14
15SKIP_FAKE_ALL=	yes
16
17USES=		linux:rl9
18USE_LINUX=	# empty
19USE_LINUX_RPM=	yes
20WANT_LINUX32=	yes
21PLIST=                 ${PKGDIR}/pkg-plist.${ARCH}
22
23# lib64/gconv/ stuff that is loaded dynamically and has rpath
24NO_SHLIB_REQUIRES_GLOB=	libCNS.so* libGB.so* libISOIR165.so* \
25			libJIS.so* libJISX0213.so* libKSC.so*
26
27.include	"${.CURDIR}/Makefile.version"
28
29BIN_DISTNAMES=	bash-${bash_ver} \
30		bzip2-${bzip2_ver} \
31		coreutils-${coreutils_ver} \
32		diffutils-${diffutils_ver} \
33		e2fsprogs-${e2fsprogs_ver} \
34		filesystem-${filesystem_ver} \
35		findutils-${findutils_ver} \
36		fuse-${fuse_ver} \
37		gawk-${gawk_ver} \
38		glibc-all-langpacks-${glibc_ver} \
39		glibc-common-${glibc_ver} \
40		grep-${grep_ver} \
41		info-${info_ver} \
42		keyutils-${keyutils_ver} \
43		less-${less_ver} \
44		ncurses-${ncurses_ver} \
45		sed-${sed_ver} \
46		setserial-${setserial_ver} \
47		sqlite-${sqlite_ver} \
48		util-linux-${util_ver} \
49		util-linux-core-${util_ver} \
50		which-${which_ver}
51LIB_DISTNAMES=	bzip2-libs-${bzip2_ver} \
52		e2fsprogs-libs-${e2fsprogs_ver} \
53		fuse-libs-${fuse_ver} \
54		gdbm-libs-${gdbm_ver} \
55		geocode-glib-${geocode-glib_ver} \
56		glib-networking-${glib-networking_ver} \
57		glib2-${glib2_ver} \
58		glibc-${glibc_ver} \
59		glibc-gconv-extra-${glibc_ver} \
60		gmp-${gmp_ver} \
61		json-glib-${json-glib_ver} \
62		keyutils-libs-${keyutils_ver} \
63		krb5-libs-${krb5_ver} \
64		libacl-${libacl_ver} \
65		libattr-${libattr_ver} \
66		libblkid-${util_ver} \
67		libbrotli-${brotli_ver} \
68		libcap-${libcap_ver}  \
69		libcom_err-${e2fsprogs_ver} \
70		libdatrie-${libdatrie_ver} \
71		libdb-${libdb_ver} \
72		libedit-${libedit_ver} \
73		libevdev-${libevdev_ver} \
74		libfdisk-${util_ver} \
75		libffi-${libffi_ver} \
76		libgcc-${gcc_ver} \
77		libgudev-${libgudev_ver} \
78		libidn2-${libidn2_ver} \
79		libmount-${util_ver} \
80		libnsl-${glibc_ver} \
81		libproxy-${libproxy_ver} \
82		libpsl-${libpsl_ver} \
83		libselinux-${selinux_ver} \
84		libsepol-${sepol_ver} \
85		libsigsegv-${libsigsegv_ver} \
86		libsmartcols-${util_ver} \
87		libsoup-${libsoup_ver} \
88		libstdc++-${gcc_ver} \
89		libunistring-${libunistring_ver} \
90		libuuid-${util_ver} \
91		libverto-${libverto_ver} \
92		libxcrypt-${libxcrypt_ver} \
93		libzstd-${zstd_ver} \
94		mpfr-${mpfr_ver} \
95		mtdev-${mtdev_ver} \
96		ncurses-libs-${ncurses_ver} \
97		openssl-libs-${openssl_ver} \
98		pcre-${pcre_ver} \
99		pcre-utf16-${pcre_ver} \
100		pcre-utf32-${pcre_ver} \
101		pcre2-${pcre2_ver} \
102		pcre2-utf16-${pcre2_ver} \
103		pcre2-utf32-${pcre2_ver} \
104		popt-${popt_ver} \
105		readline-${readline_ver} \
106		slang-${slang_ver} \
107		sqlite-libs-${sqlite_ver} \
108		xz-libs-${xz_ver} \
109		zlib-${zlib_ver}
110
111SHARE_DISTNAMES=basesystem-${basesystem_ver} \
112		ncurses-base-${ncurses_ver} \
113		rocky-release-${rocky-release_ver} \
114		setup-${setup_ver}
115SRC_DISTFILES=	acl-${libacl_ver}${SRC_SUFX}:SOURCE \
116		attr-${libattr_ver}${SRC_SUFX}:SOURCE \
117		basesystem-${basesystem_ver}${SRC_SUFX}:SOURCE \
118		bash-${bash_ver}${SRC_SUFX}:SOURCE \
119		bzip2-${bzip2_ver}${SRC_SUFX}:SOURCE \
120		coreutils-${coreutils_ver}${SRC_SUFX}:SOURCE \
121		diffutils-${diffutils_ver}${SRC_SUFX}:SOURCE \
122		e2fsprogs-${e2fsprogs_ver}${SRC_SUFX}:SOURCE \
123		filesystem-${filesystem_ver}${SRC_SUFX}:SOURCE \
124		findutils-${findutils_ver}${SRC_SUFX}:SOURCE \
125		fuse-${fuse_ver}${SRC_SUFX}:SOURCE \
126		gawk-${gawk_ver}${SRC_SUFX}:SOURCE \
127		gcc-${gcc_ver}${SRC_SUFX}:SOURCE \
128		gdbm-${gdbm_ver}${SRC_SUFX}:SOURCE \
129		geocode-glib-${geocode-glib_ver}${SRC_SUFX}:SOURCE \
130		glib-networking-${glib-networking_ver}${SRC_SUFX}:SOURCE \
131		glib2-${glib2_ver}${SRC_SUFX}:SOURCE \
132		glibc-${glibc_ver}${SRC_SUFX}:SOURCE \
133		gmp-${gmp_ver}${SRC_SUFX}:SOURCE \
134		grep-${grep_ver}${SRC_SUFX}:SOURCE \
135		json-glib-${json-glib_ver}${SRC_SUFX}:SOURCE \
136		keyutils-${keyutils_ver}${SRC_SUFX}:SOURCE \
137		krb5-${krb5_ver}${SRC_SUFX}:SOURCE \
138		less-${less_ver}${SRC_SUFX}:SOURCE \
139		libcap-${libcap_ver}${SRC_SUFX}:SOURCE \
140		libdatrie-${libdatrie_ver}${SRC_SUFX}:SOURCE \
141		libdb-${libdb_ver}${SRC_SUFX}:SOURCE \
142		libedit-${libedit_ver}${SRC_SUFX}:SOURCE \
143		libevdev-${libevdev_ver}${SRC_SUFX}:SOURCE \
144		libffi-${libffi_ver}${SRC_SUFX}:SOURCE \
145		libgudev-${libgudev_ver}${SRC_SUFX}:SOURCE \
146		libproxy-${libproxy_ver}${SRC_SUFX}:SOURCE \
147		libselinux-${selinux_ver}${SRC_SUFX}:SOURCE \
148		libsepol-${sepol_ver}${SRC_SUFX}:SOURCE \
149		libsigsegv-${libsigsegv_ver}${SRC_SUFX}:SOURCE \
150		libsoup-${libsoup_ver}${SRC_SUFX}:SOURCE \
151		libverto-${libverto_ver}${SRC_SUFX}:SOURCE \
152		libxcrypt-${libxcrypt_ver}${SRC_SUFX}:SOURCE \
153		mpfr-${mpfr_ver}${SRC_SUFX}:SOURCE \
154		mtdev-${mtdev_ver}${SRC_SUFX}:SOURCE \
155		ncurses-${ncurses_ver}${SRC_SUFX}:SOURCE \
156		openssl-${openssl_ver}${SRC_SUFX}:SOURCE \
157		pcre-${pcre_ver}${SRC_SUFX}:SOURCE \
158		pcre2-${pcre2_ver}${SRC_SUFX}:SOURCE \
159		popt-${popt_ver}${SRC_SUFX}:SOURCE \
160		readline-${readline_ver}${SRC_SUFX}:SOURCE \
161		rocky-release-${rocky-release_ver}${SRC_SUFX}:SOURCE \
162		sed-${sed_ver}${SRC_SUFX}:SOURCE \
163		setserial-${setserial_ver}${SRC_SUFX}:SOURCE \
164		setup-${setup_ver}${SRC_SUFX}:SOURCE \
165		slang-${slang_ver}${SRC_SUFX}:SOURCE \
166		texinfo-${info_ver}${SRC_SUFX}:SOURCE \
167		util-linux-${util_ver}${SRC_SUFX}:SOURCE \
168		which-${which_ver}${SRC_SUFX}:SOURCE \
169		xz-${xz_ver}${SRC_SUFX}:SOURCE \
170		zlib-${zlib_ver}${SRC_SUFX}:SOURCE \
171		zstd-${zstd_ver}${SRC_SUFX}:SOURCE \
172
173PLIST_SUB=	LINUXBASE=${LINUXBASE} SYSCTLMIB=${SYSCTLMIB}
174
175OPTIONS_DEFINE=	DOCS NLS
176OPTIONS_SUB=	yes
177
178REMOVE_DIRS=	boot etc/pam.d home media mnt proc root run sys tmp var/log \
179		var/tmp
180REMOVE_FILES=	bin/chfn bin/chsh bin/findmnt bin/login bin/lsblk bin/lscpu \
181		bin/lsipc bin/lslogins bin/lsmem bin/lsns bin/script \
182		bin/setpriv bin/su \
183		etc/exports etc/group etc/gshadow etc/motd \
184		etc/passwd etc/printcap etc/protocols etc/services etc/shadow \
185		sbin/clock sbin/debugfs sbin/hwclock sbin/runuser sbin/zramctl \
186		usr/bin/chrt usr/bin/dmesg usr/bin/flock usr/bin/hardlink \
187		usr/bin/ionice usr/bin/ipcmk usr/bin/ipcrm usr/bin/ipcs usr/bin/kill \
188		usr/bin/logger usr/bin/nsenter usr/bin/renice usr/bin/setsid \
189		usr/bin/taskset usr/bin/unshare usr/sbin/agetty usr/sbin/blkid \
190		usr/sbin/blockdev usr/sbin/fsck usr/sbin/losetup usr/sbin/mkswap \
191		usr/sbin/partx usr/sbin/swapoff usr/sbin/swapon usr/sbin/switch_root \
192		usr/lib/gio/modules/libgiognutls.so usr/lib64/gio/modules/libgiognutls.so \
193		usr/share/man/man1/chrt.1.gz usr/share/man/man1/dmesg.1.gz \
194		usr/share/man/man1/flock.1.gz usr/share/man/man1/hardlink.1.gz \
195		usr/share/man/man1/ionice.1.gz usr/share/man/man1/ipcmk.1.gz \
196		usr/share/man/man1/ipcrm.1.gz usr/share/man/man1/ipcs.1.gz \
197		usr/share/man/man1/kill.1.gz usr/share/man/man1/logger.1.gz \
198		usr/share/man/man1/nsenter.1.gz usr/share/man/man1/renice.1.gz \
199		usr/share/man/man1/setsid.1.gz usr/share/man/man1/taskset.1.gz \
200		usr/share/man/man1/unshare.1.gz usr/share/man/man8/agetty.8.gz \
201		usr/share/man/man8/blkid.8.gz usr/share/man/man8/blockdev.8.gz \
202		usr/share/man/man8/findmnt.8.gz usr/share/man/man8/fsck.8.gz \
203		usr/share/man/man8/losetup.8.gz usr/share/man/man8/mkswap.8.gz \
204		usr/share/man/man8/partx.8.gz usr/share/man/man8/swapoff.8.gz \
205		usr/share/man/man8/swapon.8.gz usr/share/man/man8/switch_root.8.gz
206
207
208.include <bsd.mport.options.mk>
209
210PLIST_SUB+=	NEWGLIBC=""
211
212.if ${ARCH} == aarch64 || ${ARCH} == amd64
213SYSCTLMIB=	kern.features.linux64
214.else
215SYSCTLMIB=	compat.linux.osrelease
216.endif
217
218post-extract:
219# These directories become symbolic links when the filesystem distfile is
220# extracted.  Other distfiles cannot be extracted when these are links so the
221# filesystem distfile must be extracted last.
222.for d in bin lib lib64 sbin
223	@(cd ${WRKSRC} && if [ -e ${d} -a ! -L ${d} ]; then \
224		${FIND} ${d} | ${CPIO} -dumpl --quiet usr && ${RM} -r ${d}; fi)
225.endfor
226	@(cd ${WRKSRC} && ${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} \
227		${DISTDIR}/${DIST_SUBDIR}/f/filesystem-${filesystem_ver}${EXTRACT_SUFX_${ARCH}} \
228		${EXTRACT_AFTER_ARGS})
229.if ${ARCH} == i386
230	@${CHMOD} u+w ${WRKSRC}/usr/lib/pm-utils
231.elif ${ARCH} == aarch64 || ${ARCH} == amd64
232	@${CHMOD} u+w ${WRKSRC}/usr/lib64/pm-utils
233.endif
234
235post-patch:
236	-${RM} -r ${REMOVE_DIRS:S|^|${WRKSRC}/|}
237	-${RM} ${REMOVE_FILES:S|^|${WRKSRC}/|}
238	@${FIND} ${WRKSRC}/usr -type d -empty -not -path '*/lib*/gio/*' -delete
239.if ${ARCH} == aarch64
240	${BRANDELF} -t Linux ${WRKSRC}/usr/lib/ld-linux-*
241.else
242	${BRANDELF} -t Linux ${WRKSRC}/usr/lib64/ld-linux-*.so.2
243.endif
244
245post-install:
246	-${RM} -r ${FAKE_DESTDIR}${LOCALBASE}
247	${MV} ${PREFIX}/etc/krb5.conf \
248		${PREFIX}/etc/krb5.conf.sample
249	${MV} ${PREFIX}/etc/nsswitch.conf \
250		${PREFIX}/etc/nsswitch.conf.sample
251	${LN} -sf "../proc/self/mounts" ${PREFIX}/etc/mtab
252	${LN} -sf ${LOCALBASE}/share/icons ${PREFIX}/usr/share/icons
253	${LN} -sf /var/run ${PREFIX}/run
254	${LN} -sf /var/tmp ${PREFIX}/usr/tmp
255
256.include <bsd.port.mk>
257