Diff util-linux-2.41.4-r1 with a util-linux-9999

/usr/portage/sys-apps/util-linux/util-linux-9999.ebuild 2026-06-10 19:17:07.270324044 +0300
6 6
PYTHON_COMPAT=( python3_{11..14} )
7 7
TMPFILES_OPTIONAL=1
8 8

  
9
inherit toolchain-funcs libtool flag-o-matic bash-completion-r1 \
10
	pam python-r1 multilib-minimal multiprocessing systemd tmpfiles
9
inherit pam python-r1 meson-multilib tmpfiles toolchain-funcs
11 10

  
12 11
MY_PV="${PV/_/-}"
13 12
MY_P="${PN}-${MY_PV}"
......
17 16

  
18 17
if [[ ${PV} == 9999 ]] ; then
19 18
	EGIT_REPO_URI="https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git"
20
	inherit autotools git-r3
19
	inherit git-r3
21 20
else
22 21
	VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/karelzak.asc
23 22
	inherit verify-sig
24 23

  
25 24
	if [[ ${PV} != *_rc* ]] ; then
26
		KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~loong ~m68k ~mips ~ppc ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos"
25
		KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos"
27 26
	fi
28 27

  
29 28
	SRC_URI="https://www.kernel.org/pub/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.xz"
......
34 33

  
35 34
# GPL-2+ first per README.licensing ("default license"), then the rest
36 35
# are in order as listed in that file.
37
LICENSE="GPL-2+ GPL-1+ GPL-2 GPL-2+ GPL-3+ LGPL-2.1+ MIT BSD-2 BSD BSD-4 EUPL-1.2 public-domain"
36
LICENSE="GPL-2+ GPL-1+ GPL-2 GPL-2+ GPL-3+ LGPL-2.1+ MIT BSD-2 BSD EUPL-1.2 public-domain"
38 37
SLOT="0"
39 38
IUSE="audit build caps +cramfs cryptsetup fdformat +hardlink kill +logger magic ncurses nls pam python +readline rtas selinux slang static-libs +su +suid systemd test tty-helpers udev unicode uuidd"
40 39

  
......
105 104
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} ) su? ( pam )"
106 105
RESTRICT="!test? ( test )"
107 106

  
108
PATCHES=(
109
	"${FILESDIR}"/${PN}-2.41.4-no-AF_ALG.patch
110
)
111

  
112 107
pkg_pretend() {
113 108
	if use su && ! use suid ; then
114 109
		elog "su will be installed as suid despite USE=-suid (bug #832092)"
......
145 140
			lsfd/mkfds-inotify
146 141
			lsfd/mkfds-symlink
147 142
			lsfd/mkfds-rw-character-device
143
			lsns/filter
144
			findmnt/df-options
145
			findmnt/target
146
			findmnt/outputs
147
			findmnt/filterQ
148
			findmnt/filter
149
			lsblk/lsblk
150
			lslocks/lslocks
148 151
			# Fails with network-sandbox at least in nspawn
149 152
			lsfd/option-inet
150 153
			utmp/last-ipv6
......
160 163
			lsfd/mkfds-eventpoll
161 164
			lsfd/column-xmode
162 165

  
163
			# Hangs on some machines
164
			script/replay
166
			# bashism
167
			kill/decode
168

  
169
			# Format changes?
170
			lslogins/checkuser
171

  
172
			# Permission issues with changing OOM score
173
			choom/choom
174

  
175
			# MKFDS_PID is empty
176
			lsfd/option-hyperlink
165 177

  
166
			# Fails for 32-bit time_t which some profiles have
167
			misc/time_t
178
			# Crashes but only under sandbox
179
			setarch/setarch
168 180
		)
169 181

  
170 182
		# debug prints confuse the tests which look for a diff
171 183
		# in output
172
		if has_version "=app-shells/bash-5.3_alpha*" ; then
184
		if has_version "=app-shells/bash-5.4_alpha*" ; then
173 185
			known_failing_tests+=(
174 186
				lsfd/column-ainodeclass
175 187
				lsfd/mkfds-netlink-protocol
......
202 214

  
203 215
	if [[ ${PV} == 9999 ]] ; then
204 216
		po/update-potfiles
205
		eautoreconf
206
	else
207
		elibtoolize
208 217
	fi
209 218
}
210 219

  
211 220
python_configure() {
212
	local myeconfargs=(
213
		"${commonargs[@]}"
214
		--disable-all-programs
215
		--disable-bash-completion
216
		--without-systemdsystemunitdir
217
		--with-python
218
		--enable-libblkid
219
		--enable-libmount
220
		--enable-pylibmount
221
	local emesonargs=(
222
		-Dauto_features=disabled
223
		-Dbuild-python=enabled
224
		-Dpython="${EPYTHON}"
225

  
226
		# XXX: The 'check' target doesn't get created with
227
		# -Dauto_features=disabled, but there's no Python-specific
228
		# tests anyway, so it's not a big deal.
229
		# See https://github.com/util-linux/util-linux/pull/3351 for
230
		# an incomplete fix.
231
		#$(meson_use test program-tests)
232

  
233
		-Dbuild-libblkid=enabled
234
		-Dbuild-libmount=enabled
221 235
	)
222 236

  
223 237
	mkdir "${BUILD_DIR}" || die
224 238
	pushd "${BUILD_DIR}" >/dev/null || die
225
	ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
239
	meson_src_configure
226 240
	popd >/dev/null || die
227 241
}
228 242

  
229 243
multilib_src_configure() {
230
	# The scanf test in a run-time test which fails while cross-compiling.
231
	# Blindly assume a POSIX setup since we require libmount, and libmount
232
	# itself fails when the scanf test fails. bug #531856
233
	tc-is-cross-compiler && export scanf_cv_alloc_modifier=ms
234

  
235
	# bug #485486
236
	export ac_cv_header_security_pam_misc_h=$(multilib_native_usex pam)
237
	# bug #545042
238
	export ac_cv_header_security_pam_appl_h=$(multilib_native_usex pam)
239

  
240
	# Undo bad ncurses handling by upstream. Fall back to pkg-config.
241
	# bug #601530
242
	export NCURSES6_CONFIG=false NCURSES5_CONFIG=false
243
	export NCURSESW6_CONFIG=false NCURSESW5_CONFIG=false
244

  
245
	# Avoid automagic dependency on ppc*
246
	export ac_cv_lib_rtas_rtas_get_sysparm=$(usex rtas)
247

  
248
	# configure args shared by python and non-python builds
249
	local commonargs=(
250
		--localstatedir="${EPREFIX}/var"
251
		--runstatedir="${EPREFIX}/run"
252
		--enable-fs-paths-extra="${EPREFIX}/usr/sbin:${EPREFIX}/bin:${EPREFIX}/usr/bin"
253
	)
254

  
255
	local myeconfargs=(
256
		"${commonargs[@]}"
257
		--with-bashcompletiondir="$(get_bashcompdir)"
258
		--without-python
259
		$(multilib_native_use_enable suid makeinstall-chown)
260
		$(multilib_native_use_enable suid makeinstall-setuid)
261
		$(multilib_native_use_with readline)
262
		$(multilib_native_use_with slang)
263
		$(multilib_native_usex ncurses "$(use_with magic libmagic)" '--without-libmagic')
264
		$(multilib_native_usex ncurses "$(use_with unicode ncursesw)" '--without-ncursesw')
265
		$(multilib_native_usex ncurses "$(use_with !unicode ncurses)" '--without-ncurses')
266
		$(multilib_native_use_with audit)
267
		$(tc-has-tls || echo --disable-tls)
268
		$(use_enable nls)
269
		$(use_enable nls poman)
270
		$(use_enable unicode widechar)
271
		$(use_enable static-libs static)
272
		$(use_with ncurses tinfo)
273
		$(use_with selinux)
274
		$(multilib_native_use_enable uuidd)
244
	local emesonargs=(
245
		-Dbuild-python=disabled
246
		-Dfs-search-path-extra="${EPREFIX}/usr/sbin:${EPREFIX}/bin:${EPREFIX}/usr/bin"
247
		-Duse-tls=$(tc-has-tls && echo true || echo false)
248

  
249
		$(meson_use test program-tests)
250

  
251
		$(meson_native_use_feature audit)
252
		$(meson_native_use_feature readline)
253
		$(meson_native_use_feature slang)
254
		$(meson_native_use_feature magic)
255
		$(meson_feature unicode widechar)
256
		$(meson_native_use_feature uuidd build-uuidd)
257

  
258
		$(meson_feature nls)
259
		$(meson_feature selinux)
260
		$(meson_feature ncurses tinfo)
261
		-Ddefault_library=$(multilib_native_usex static-libs both shared)
275 262

  
276 263
		# TODO: Wire this up (bug #931118)
277
		--without-econf
264
		-Deconf=disabled
278 265

  
279 266
		# TODO: Wire this up (bug #931297)
280
		# TODO: investigate build failure w/ 2.40.1_rc1
281
		--disable-liblastlog2
282
		--disable-pam-lastlog2
267
		-Dbuild-liblastlog2=disabled
268
		-Dbuild-pam-lastlog2=disabled
269

  
270
		# Provided by sys-apps/shadow
271
		-Dbuild-chfn-chsh=disabled
272
		-Dbuild-login=disabled
273
		-Dbuild-newgrp=disabled
274
		-Dbuild-nologin=disabled
275
		-Dbuild-vipw=disabled
276

  
277
		-Dbuild-pylibmount=disabled
278
		-Dbuild-raw=disabled
279

  
280
		$(meson_native_enabled build-agetty)
281
		$(meson_native_enabled build-bash-completion)
282
		$(meson_native_enabled build-line)
283
		$(meson_native_enabled build-partx)
284
		$(meson_native_enabled build-rename)
285
		$(meson_native_enabled build-rfkill)
286
		$(meson_native_enabled build-schedutils)
287

  
288
		$(meson_native_use_feature caps build-setpriv)
289
		$(meson_native_use_feature cramfs build-cramfs)
290
		$(meson_native_use_feature fdformat build-fdformat)
291
		$(meson_native_use_feature hardlink build-hardlink)
292
		$(meson_native_use_feature kill build-kill)
293
		$(meson_native_use_feature logger build-logger)
294
		$(meson_native_use_feature ncurses build-pg)
295
		$(meson_native_use_feature su build-su)
296
		$(meson_native_use_feature tty-helpers build-mesg)
297
		$(meson_native_use_feature tty-helpers build-wall)
298
		$(meson_native_use_feature tty-helpers build-write)
299
		$(meson_native_use_feature cryptsetup)
300

  
301
		# Libraries
302
		-Dbuild-libuuid=enabled
303
		-Dbuild-libblkid=enabled
304
		-Dbuild-libsmartcols=enabled
305
		-Dbuild-libfdisk=enabled
306
		-Dbuild-libmount=enabled
307

  
308
		# TODO: Support uuidd for non-native libuuid (do we want this still?)
309
		#$(use_enable uuidd libuuid-force-uuidd)
283 310
	)
284 311

  
312
	# TODO: udev (which seems to be controlled by just the systemd option right now?)
285 313
	if use build ; then
286
		myeconfargs+=(
287
			--without-systemd
288
			--without-udev
314
		emesonargs+=(
315
			-Dsystemd=disabled
289 316
		)
290 317
	else
291
		myeconfargs+=(
292
			$(multilib_native_use_with systemd)
293
			$(multilib_native_use_with udev)
294
		)
295
	fi
296

  
297
	if multilib_is_native_abi ; then
298
		myeconfargs+=(
299
			--disable-chfn-chsh
300
			--disable-login
301
			--disable-newgrp
302
			--disable-nologin
303
			--disable-pylibmount
304
			--disable-raw
305
			--disable-vipw
306
			--enable-agetty
307
			--enable-bash-completion
308
			--enable-line
309
			--enable-partx
310
			--enable-rename
311
			--enable-rfkill
312
			--enable-schedutils
313
			--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
314
			--with-tmpfilesdir="${EPREFIX}"/usr/lib/tmpfiles.d
315
			$(use_enable caps setpriv)
316
			$(use_enable cramfs)
317
			$(use_enable fdformat)
318
			$(use_enable hardlink)
319
			$(use_enable kill)
320
			$(use_enable logger)
321
			$(use_enable ncurses pg)
322
			$(use_enable su)
323
			$(use_enable tty-helpers mesg)
324
			$(use_enable tty-helpers wall)
325
			$(use_enable tty-helpers write)
326
			$(use_with cryptsetup)
327
		)
328
		if [[ ${PV} == *9999 ]] ; then
329
			myeconfargs+=( --enable-asciidoc )
330
		else
331
			# Upstream is shipping pre-generated man-pages for releases
332
			myeconfargs+=( --disable-asciidoc )
333
		fi
334
	else
335
		myeconfargs+=(
336
			--disable-all-programs
337
			--disable-asciidoc
338
			--disable-bash-completion
339
			--without-systemdsystemunitdir
340
			--disable-poman
341

  
342
			# build libraries
343
			--enable-libuuid
344
			--enable-libblkid
345
			--enable-libsmartcols
346
			--enable-libfdisk
347
			--enable-libmount
348

  
349
			# Support uuidd for non-native libuuid
350
			$(use_enable uuidd libuuid-force-uuidd)
318
		emesonargs+=(
319
			$(meson_native_use_feature systemd)
351 320
		)
352 321
	fi
353 322

  
354 323
	if use kernel_Hurd ; then
355 324
		# Disable Linux-specific features
356
		myeconfargs+=(
357
			--disable-partx
358
			--disable-rfkill
359
			--disable-schedutils
360
			--disable-fsck
325
		emesonargs+=(
326
			-Dbuild-partx=disabled
327
			-Dbuild-rfkill=disabled
328
			-Dbuild-schedutils=disabled
329
			-Dbuild-fsck=disabled
361 330
		)
362 331

  
363 332
		# This is explicitly needed for some reason? TODO
364
		myeconfargs+=(
365
			--enable-agetty
333
		emesonargs+=(
334
			-Dbuild-agetty=enabled
366 335
		)
367 336
	fi
368 337

  
369
	# https://savannah.gnu.org/support/?111394
370
	# This can be removed when we patch dev-build/autoconf, though
371
	# packages w/o eautoreconf will still need it.
372
	[[ ${enable_year2038} == "no" ]] && myeconfargs+=( --disable-year2038 )
338
	local native_file="${T}"/meson.${CHOST}.${ABI}.ini.local
339
	cat >> ${native_file} <<-EOF || die
340
	[binaries]
341
	asciidoctor='asciidoctor-falseified'
342
	EOF
343
	# TODO: Verify this does the right thing for releases (may need to
344
	# manually install).
345
	# https://github.com/util-linux/util-linux/issues/2900
346
	if [[ ${PV} != *9999 ]] ; then
347
		# Upstream is shipping pre-generated man-pages for releases
348
		emesonargs+=(
349
			--native-file "${native_file}"
350
		)
351
	fi
352

  
353
	# TODO: check pam automagic (bug #485486, bug #545042)
354
	#export ac_cv_header_security_pam_misc_h=$(multilib_native_usex pam)
355
	#export ac_cv_header_security_pam_appl_h=$(multilib_native_usex pam)
356
	#
357
	# TODO: check librtas automagic to avoid automagic dependency on ppc*
358
	#export ac_cv_lib_rtas_rtas_get_sysparm=$(usex rtas)
373 359

  
374
	ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
360
	meson_src_configure
375 361

  
376 362
	if multilib_is_native_abi && use python ; then
377 363
		python_foreach_impl python_configure
378 364
	fi
379 365
}
380 366

  
381
src_configure() {
382
	append-lfs-flags
383

  
384
	# Workaround for bug #961040 (gcc PR120006)
385
	if tc-is-gcc && [[ $(gcc-major-version) == 15 && $(gcc-minor-version) -lt 2 ]] ; then
386
		append-flags -fno-ipa-pta
387
	fi
388

  
389
	multilib-minimal_src_configure
390
}
391

  
392 367
python_compile() {
393 368
	pushd "${BUILD_DIR}" >/dev/null || die
394
	emake all
369
	meson_src_compile
395 370
	popd >/dev/null || die
396 371
}
397 372

  
398 373
multilib_src_compile() {
399
	emake all
374
	meson_src_compile
400 375

  
401 376
	if multilib_is_native_abi && use python ; then
402 377
		python_foreach_impl python_compile
......
405 380

  
406 381
python_test() {
407 382
	pushd "${BUILD_DIR}" >/dev/null || die
408
	emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot"
383
	# XXX: See python_configure
384
	#eninja check
409 385
	popd >/dev/null || die
410 386
}
411 387

  
412 388
multilib_src_test() {
413
	emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot"
389
	eninja check
390

  
414 391
	if multilib_is_native_abi && use python ; then
415 392
		python_foreach_impl python_test
416 393
	fi
......
418 395

  
419 396
python_install() {
420 397
	pushd "${BUILD_DIR}" >/dev/null || die
421
	emake DESTDIR="${D}" install
398
	meson_src_install
422 399
	python_optimize
423 400
	popd >/dev/null || die
424 401
}
......
428 405
		python_foreach_impl python_install
429 406
	fi
430 407

  
431
	# This needs to be called AFTER python_install call, bug #689190
432
	# XXX: -j1 as temporary workaround for bug #931301
433
	emake DESTDIR="${D}" install -j1
408
	meson_src_install
434 409
}
435 410

  
436 411
multilib_src_install_all() {
......
439 414
	dosym hexdump /usr/bin/hd
440 415
	newman - hd.1 <<< '.so man1/hexdump.1'
441 416

  
442
	# e2fsprogs-libs didn't install .la files, and .pc work fine
443
	find "${ED}" -name "*.la" -delete || die
444

  
445 417
	if use pam ; then
446 418
		# See https://github.com/util-linux/util-linux/blob/master/Documentation/PAM-configuration.txt
447 419
		newpamd "${FILESDIR}/runuser.pamd" runuser
Thank you!