From 96166c8ac1333556c1c547950247b0ab622f11f5 Mon Sep 17 00:00:00 2001 From: Lars Wendler Date: Fri, 20 Nov 2020 21:30:44 +0100 Subject: sys-apps/util-linux: Revbump to fix user mount Closes: https://bugs.gentoo.org/755878 Package-Manager: Portage-3.0.9, Repoman-3.0.2 Signed-off-by: Lars Wendler --- ...-linux-2.36.1-libmount_dont_use_symfollow.patch | 40 +++ sys-apps/util-linux/util-linux-2.36.1-r1.ebuild | 315 +++++++++++++++++++++ sys-apps/util-linux/util-linux-2.36.1.ebuild | 311 -------------------- 3 files changed, 355 insertions(+), 311 deletions(-) create mode 100644 sys-apps/util-linux/files/util-linux-2.36.1-libmount_dont_use_symfollow.patch create mode 100644 sys-apps/util-linux/util-linux-2.36.1-r1.ebuild delete mode 100644 sys-apps/util-linux/util-linux-2.36.1.ebuild (limited to 'sys-apps/util-linux') diff --git a/sys-apps/util-linux/files/util-linux-2.36.1-libmount_dont_use_symfollow.patch b/sys-apps/util-linux/files/util-linux-2.36.1-libmount_dont_use_symfollow.patch new file mode 100644 index 000000000000..7c0b73f49d78 --- /dev/null +++ b/sys-apps/util-linux/files/util-linux-2.36.1-libmount_dont_use_symfollow.patch @@ -0,0 +1,40 @@ +From 76bb9b30cfcf54b59591a57a3d2a747e514469b2 Mon Sep 17 00:00:00 2001 +From: Karel Zak +Date: Thu, 19 Nov 2020 09:49:16 +0100 +Subject: [PATCH] libmount: don't use "symfollow" for helpers on user mounts + +Addresses: https://github.com/karelzak/util-linux/issues/1193 +Signed-off-by: Karel Zak +--- + libmount/src/context_mount.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/libmount/src/context_mount.c b/libmount/src/context_mount.c +index 8c394c1ff..dd1786176 100644 +--- a/libmount/src/context_mount.c ++++ b/libmount/src/context_mount.c +@@ -415,6 +415,9 @@ static int generate_helper_optstr(struct libmnt_context *cxt, char **optstr) + * string, because there is nothing like MS_EXEC (we only have + * MS_NOEXEC in mount flags and we don't care about the original + * mount string in libmount for VFS options). ++ * ++ * This use-case makes sense for MS_SECURE flags only (see ++ * mnt_optstr_get_flags() and mnt_context_merge_mflags()). + */ + if (!(cxt->mountflags & MS_NOEXEC)) + mnt_optstr_append_option(optstr, "exec", NULL); +@@ -422,11 +425,8 @@ static int generate_helper_optstr(struct libmnt_context *cxt, char **optstr) + mnt_optstr_append_option(optstr, "suid", NULL); + if (!(cxt->mountflags & MS_NODEV)) + mnt_optstr_append_option(optstr, "dev", NULL); +- if (!(cxt->mountflags & MS_NOSYMFOLLOW)) +- mnt_optstr_append_option(optstr, "symfollow", NULL); + } + +- + if (cxt->flags & MNT_FL_SAVED_USER) + rc = mnt_optstr_set_option(optstr, "user", cxt->orig_user); + if (rc) +-- +2.29.2 + diff --git a/sys-apps/util-linux/util-linux-2.36.1-r1.ebuild b/sys-apps/util-linux/util-linux-2.36.1-r1.ebuild new file mode 100644 index 000000000000..f7acbfdb1510 --- /dev/null +++ b/sys-apps/util-linux/util-linux-2.36.1-r1.ebuild @@ -0,0 +1,315 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=( python3_{6,7,8,9} ) + +inherit toolchain-funcs libtool flag-o-matic bash-completion-r1 usr-ldscript \ + pam python-r1 multilib-minimal multiprocessing systemd + +MY_PV="${PV/_/-}" +MY_P="${PN}-${MY_PV}" + +if [[ ${PV} == 9999 ]] ; then + inherit git-r3 autotools + EGIT_REPO_URI="https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git" +else + [[ "${PV}" = *_rc* ]] || \ + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux" + SRC_URI="https://www.kernel.org/pub/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.xz" +fi + +DESCRIPTION="Various useful Linux utilities" +HOMEPAGE="https://www.kernel.org/pub/linux/utils/util-linux/ https://github.com/karelzak/util-linux" + +LICENSE="GPL-2 GPL-3 LGPL-2.1 BSD-4 MIT public-domain" +SLOT="0" +IUSE="audit build caps +cramfs cryptsetup fdformat hardlink kill +logger ncurses nls pam python +readline selinux slang static-libs su +suid systemd test tty-helpers udev unicode userland_GNU" + +# Most lib deps here are related to programs rather than our libs, +# so we rarely need to specify ${MULTILIB_USEDEP}. +RDEPEND=" + virtual/libcrypt:= + audit? ( >=sys-process/audit-2.6:= ) + caps? ( sys-libs/libcap-ng ) + cramfs? ( sys-libs/zlib:= ) + cryptsetup? ( sys-fs/cryptsetup ) + hardlink? ( dev-libs/libpcre2:= ) + ncurses? ( >=sys-libs/ncurses-5.2-r2:0=[unicode?] ) + nls? ( virtual/libintl[${MULTILIB_USEDEP}] ) + pam? ( sys-libs/pam ) + ppc? ( sys-libs/librtas ) + ppc64? ( sys-libs/librtas ) + python? ( ${PYTHON_DEPS} ) + readline? ( sys-libs/readline:0= ) + selinux? ( >=sys-libs/libselinux-2.2.2-r4[${MULTILIB_USEDEP}] ) + slang? ( sys-libs/slang ) + !build? ( systemd? ( sys-apps/systemd ) ) + udev? ( virtual/libudev:= )" +BDEPEND=" + virtual/pkgconfig + nls? ( sys-devel/gettext ) + test? ( sys-devel/bc ) +" +DEPEND=" + ${RDEPEND} + virtual/os-headers +" +RDEPEND+=" + hardlink? ( !app-arch/hardlink ) + logger? ( !>=app-admin/sysklogd-2.0[logger] ) + kill? ( + !sys-apps/coreutils[kill] + !sys-process/procps[kill] + ) + su? ( + !=sys-apps/shadow-4.7-r2[su] + ) + !net-wireless/rfkill + ! "${T}"/fallocate.${ABI}.c + #define _GNU_SOURCE + #include + main() { return fallocate(0, 0, 0, 0); } + EOF + append-lfs-flags + $(tc-getCC) ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} "${T}"/fallocate.${ABI}.c -o /dev/null >/dev/null 2>&1 \ + || export ac_cv_func_fallocate=no + rm -f "${T}"/fallocate.${ABI}.c +} + +python_configure() { + local myeconfargs=( + "${commonargs[@]}" + --disable-all-programs + --disable-bash-completion + --without-systemdsystemunitdir + --with-python + ) + if use userland_GNU; then + myeconfargs+=( + --enable-libblkid + --enable-libmount + --enable-pylibmount + ) + fi + mkdir "${BUILD_DIR}" || die + pushd "${BUILD_DIR}" >/dev/null || die + ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" + popd >/dev/null || die +} + +multilib_src_configure() { + lfs_fallocate_test + # The scanf test in a run-time test which fails while cross-compiling. + # Blindly assume a POSIX setup since we require libmount, and libmount + # itself fails when the scanf test fails. #531856 + tc-is-cross-compiler && export scanf_cv_alloc_modifier=ms + export ac_cv_header_security_pam_misc_h=$(multilib_native_usex pam) #485486 + export ac_cv_header_security_pam_appl_h=$(multilib_native_usex pam) #545042 + + # Undo bad ncurses handling by upstream. Fall back to pkg-config. #601530 + export NCURSES6_CONFIG=false NCURSES5_CONFIG=false + export NCURSESW6_CONFIG=false NCURSESW5_CONFIG=false + + # configure args shared by python and non-python builds + local commonargs=( + --enable-fs-paths-extra="${EPREFIX}/usr/sbin:${EPREFIX}/bin:${EPREFIX}/usr/bin" + ) + + local myeconfargs=( + "${commonargs[@]}" + --with-bashcompletiondir="$(get_bashcompdir)" + --without-python + $(multilib_native_use_enable suid makeinstall-chown) + $(multilib_native_use_enable suid makeinstall-setuid) + $(multilib_native_use_with readline) + $(multilib_native_use_with slang) + $(multilib_native_use_with systemd) + $(multilib_native_use_with udev) + $(multilib_native_usex ncurses "$(use_with unicode ncursesw)" '--without-ncursesw') + $(multilib_native_usex ncurses "$(use_with !unicode ncurses)" '--without-ncurses') + $(multilib_native_use_with audit) + $(tc-has-tls || echo --disable-tls) + $(use_enable nls) + $(use_enable unicode widechar) + $(use_enable static-libs static) + $(use_with ncurses tinfo) + $(use_with selinux) + ) + # build programs only on GNU, on *BSD we want libraries only + if multilib_is_native_abi && use userland_GNU; then + myeconfargs+=( + --disable-chfn-chsh + --disable-login + --disable-nologin + --disable-pylibmount + --enable-agetty + --enable-bash-completion + --enable-line + --enable-partx + --enable-raw + --enable-rename + --enable-rfkill + --enable-schedutils + --with-systemdsystemunitdir="$(systemd_get_systemunitdir)" + $(use_enable caps setpriv) + $(use_enable cramfs) + $(use_enable fdformat) + $(use_enable hardlink) + $(use_enable kill) + $(use_enable logger) + $(use_enable ncurses pg) + $(use_enable su) + $(use_enable tty-helpers mesg) + $(use_enable tty-helpers wall) + $(use_enable tty-helpers write) + $(use_with cryptsetup) + ) + else + myeconfargs+=( + --disable-all-programs + --disable-bash-completion + --without-systemdsystemunitdir + # build libraries + --enable-libuuid + --enable-libblkid + --enable-libsmartcols + --enable-libfdisk + ) + if use userland_GNU; then + # those libraries don't work on *BSD + myeconfargs+=( + --enable-libmount + ) + fi + fi + ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" + + if multilib_is_native_abi && use python; then + python_foreach_impl python_configure + fi +} + +python_compile() { + pushd "${BUILD_DIR}" >/dev/null || die + emake all + popd >/dev/null || die +} + +multilib_src_compile() { + emake all + + if multilib_is_native_abi && use python; then + python_foreach_impl python_compile + fi +} + +python_test() { + pushd "${BUILD_DIR}" >/dev/null || die + emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot" + popd >/dev/null || die +} + +multilib_src_test() { + emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot" + if multilib_is_native_abi && use python; then + python_foreach_impl python_test + fi +} + +python_install() { + pushd "${BUILD_DIR}" >/dev/null || die + emake DESTDIR="${D}" install + python_optimize + popd >/dev/null || die +} + +multilib_src_install() { + if multilib_is_native_abi && use python; then + python_foreach_impl python_install + fi + + # This needs to be called AFTER python_install call (#689190) + emake DESTDIR="${D}" install + + if multilib_is_native_abi && use userland_GNU; then + # need the libs in / + gen_usr_ldscript -a blkid fdisk mount smartcols uuid + fi +} + +multilib_src_install_all() { + dodoc AUTHORS NEWS README* Documentation/{TODO,*.txt,releases/*} + chmod -x "${ED}"/usr/share/doc/util-linux-${PVR}/getopt/getopt-parse* || die + + # e2fsprogs-libs didnt install .la files, and .pc work fine + find "${ED}" -name "*.la" -delete || die + + if ! use userland_GNU; then + # manpage collisions + # TODO: figure out a good way to keep them + rm "${ED}"/usr/share/man/man3/uuid* || die + fi + + if use pam; then + newpamd "${FILESDIR}/runuser.pamd" runuser + newpamd "${FILESDIR}/runuser-l.pamd" runuser-l + fi + + # Note: + # Bash completion for "runuser" command is provided by same file which + # would also provide bash completion for "su" command. However, we don't + # use "su" command from this package. + # This triggers a known QA warning which we ignore for now to magically + # keep bash completion for "su" command which shadow package does not + # provide. +} + +pkg_postinst() { + if ! use tty-helpers; then + elog "The mesg/wall/write tools have been disabled due to USE=-tty-helpers." + fi + + if [[ -z ${REPLACING_VERSIONS} ]]; then + elog "The agetty util now clears the terminal by default. You" + elog "might want to add --noclear to your /etc/inittab lines." + fi +} diff --git a/sys-apps/util-linux/util-linux-2.36.1.ebuild b/sys-apps/util-linux/util-linux-2.36.1.ebuild deleted file mode 100644 index 902e36ad068a..000000000000 --- a/sys-apps/util-linux/util-linux-2.36.1.ebuild +++ /dev/null @@ -1,311 +0,0 @@ -# Copyright 1999-2020 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -PYTHON_COMPAT=( python3_{6,7,8,9} ) - -inherit toolchain-funcs libtool flag-o-matic bash-completion-r1 usr-ldscript \ - pam python-r1 multilib-minimal multiprocessing systemd - -MY_PV="${PV/_/-}" -MY_P="${PN}-${MY_PV}" - -if [[ ${PV} == 9999 ]] ; then - inherit git-r3 autotools - EGIT_REPO_URI="https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git" -else - [[ "${PV}" = *_rc* ]] || \ - KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux" - SRC_URI="https://www.kernel.org/pub/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.xz" -fi - -DESCRIPTION="Various useful Linux utilities" -HOMEPAGE="https://www.kernel.org/pub/linux/utils/util-linux/ https://github.com/karelzak/util-linux" - -LICENSE="GPL-2 GPL-3 LGPL-2.1 BSD-4 MIT public-domain" -SLOT="0" -IUSE="audit build caps +cramfs cryptsetup fdformat hardlink kill +logger ncurses nls pam python +readline selinux slang static-libs su +suid systemd test tty-helpers udev unicode userland_GNU" - -# Most lib deps here are related to programs rather than our libs, -# so we rarely need to specify ${MULTILIB_USEDEP}. -RDEPEND=" - virtual/libcrypt:= - audit? ( >=sys-process/audit-2.6:= ) - caps? ( sys-libs/libcap-ng ) - cramfs? ( sys-libs/zlib:= ) - cryptsetup? ( sys-fs/cryptsetup ) - hardlink? ( dev-libs/libpcre2:= ) - ncurses? ( >=sys-libs/ncurses-5.2-r2:0=[unicode?] ) - nls? ( virtual/libintl[${MULTILIB_USEDEP}] ) - pam? ( sys-libs/pam ) - ppc? ( sys-libs/librtas ) - ppc64? ( sys-libs/librtas ) - python? ( ${PYTHON_DEPS} ) - readline? ( sys-libs/readline:0= ) - selinux? ( >=sys-libs/libselinux-2.2.2-r4[${MULTILIB_USEDEP}] ) - slang? ( sys-libs/slang ) - !build? ( systemd? ( sys-apps/systemd ) ) - udev? ( virtual/libudev:= )" -BDEPEND=" - virtual/pkgconfig - nls? ( sys-devel/gettext ) - test? ( sys-devel/bc ) -" -DEPEND=" - ${RDEPEND} - virtual/os-headers -" -RDEPEND+=" - hardlink? ( !app-arch/hardlink ) - logger? ( !>=app-admin/sysklogd-2.0[logger] ) - kill? ( - !sys-apps/coreutils[kill] - !sys-process/procps[kill] - ) - su? ( - !=sys-apps/shadow-4.7-r2[su] - ) - !net-wireless/rfkill - ! "${T}"/fallocate.${ABI}.c - #define _GNU_SOURCE - #include - main() { return fallocate(0, 0, 0, 0); } - EOF - append-lfs-flags - $(tc-getCC) ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} "${T}"/fallocate.${ABI}.c -o /dev/null >/dev/null 2>&1 \ - || export ac_cv_func_fallocate=no - rm -f "${T}"/fallocate.${ABI}.c -} - -python_configure() { - local myeconfargs=( - "${commonargs[@]}" - --disable-all-programs - --disable-bash-completion - --without-systemdsystemunitdir - --with-python - ) - if use userland_GNU; then - myeconfargs+=( - --enable-libblkid - --enable-libmount - --enable-pylibmount - ) - fi - mkdir "${BUILD_DIR}" || die - pushd "${BUILD_DIR}" >/dev/null || die - ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" - popd >/dev/null || die -} - -multilib_src_configure() { - lfs_fallocate_test - # The scanf test in a run-time test which fails while cross-compiling. - # Blindly assume a POSIX setup since we require libmount, and libmount - # itself fails when the scanf test fails. #531856 - tc-is-cross-compiler && export scanf_cv_alloc_modifier=ms - export ac_cv_header_security_pam_misc_h=$(multilib_native_usex pam) #485486 - export ac_cv_header_security_pam_appl_h=$(multilib_native_usex pam) #545042 - - # Undo bad ncurses handling by upstream. Fall back to pkg-config. #601530 - export NCURSES6_CONFIG=false NCURSES5_CONFIG=false - export NCURSESW6_CONFIG=false NCURSESW5_CONFIG=false - - # configure args shared by python and non-python builds - local commonargs=( - --enable-fs-paths-extra="${EPREFIX}/usr/sbin:${EPREFIX}/bin:${EPREFIX}/usr/bin" - ) - - local myeconfargs=( - "${commonargs[@]}" - --with-bashcompletiondir="$(get_bashcompdir)" - --without-python - $(multilib_native_use_enable suid makeinstall-chown) - $(multilib_native_use_enable suid makeinstall-setuid) - $(multilib_native_use_with readline) - $(multilib_native_use_with slang) - $(multilib_native_use_with systemd) - $(multilib_native_use_with udev) - $(multilib_native_usex ncurses "$(use_with unicode ncursesw)" '--without-ncursesw') - $(multilib_native_usex ncurses "$(use_with !unicode ncurses)" '--without-ncurses') - $(multilib_native_use_with audit) - $(tc-has-tls || echo --disable-tls) - $(use_enable nls) - $(use_enable unicode widechar) - $(use_enable static-libs static) - $(use_with ncurses tinfo) - $(use_with selinux) - ) - # build programs only on GNU, on *BSD we want libraries only - if multilib_is_native_abi && use userland_GNU; then - myeconfargs+=( - --disable-chfn-chsh - --disable-login - --disable-nologin - --disable-pylibmount - --enable-agetty - --enable-bash-completion - --enable-line - --enable-partx - --enable-raw - --enable-rename - --enable-rfkill - --enable-schedutils - --with-systemdsystemunitdir="$(systemd_get_systemunitdir)" - $(use_enable caps setpriv) - $(use_enable cramfs) - $(use_enable fdformat) - $(use_enable hardlink) - $(use_enable kill) - $(use_enable logger) - $(use_enable ncurses pg) - $(use_enable su) - $(use_enable tty-helpers mesg) - $(use_enable tty-helpers wall) - $(use_enable tty-helpers write) - $(use_with cryptsetup) - ) - else - myeconfargs+=( - --disable-all-programs - --disable-bash-completion - --without-systemdsystemunitdir - # build libraries - --enable-libuuid - --enable-libblkid - --enable-libsmartcols - --enable-libfdisk - ) - if use userland_GNU; then - # those libraries don't work on *BSD - myeconfargs+=( - --enable-libmount - ) - fi - fi - ECONF_SOURCE="${S}" econf "${myeconfargs[@]}" - - if multilib_is_native_abi && use python; then - python_foreach_impl python_configure - fi -} - -python_compile() { - pushd "${BUILD_DIR}" >/dev/null || die - emake all - popd >/dev/null || die -} - -multilib_src_compile() { - emake all - - if multilib_is_native_abi && use python; then - python_foreach_impl python_compile - fi -} - -python_test() { - pushd "${BUILD_DIR}" >/dev/null || die - emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot" - popd >/dev/null || die -} - -multilib_src_test() { - emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot" - if multilib_is_native_abi && use python; then - python_foreach_impl python_test - fi -} - -python_install() { - pushd "${BUILD_DIR}" >/dev/null || die - emake DESTDIR="${D}" install - python_optimize - popd >/dev/null || die -} - -multilib_src_install() { - if multilib_is_native_abi && use python; then - python_foreach_impl python_install - fi - - # This needs to be called AFTER python_install call (#689190) - emake DESTDIR="${D}" install - - if multilib_is_native_abi && use userland_GNU; then - # need the libs in / - gen_usr_ldscript -a blkid fdisk mount smartcols uuid - fi -} - -multilib_src_install_all() { - dodoc AUTHORS NEWS README* Documentation/{TODO,*.txt,releases/*} - chmod -x "${ED}"/usr/share/doc/util-linux-${PVR}/getopt/getopt-parse* || die - - # e2fsprogs-libs didnt install .la files, and .pc work fine - find "${ED}" -name "*.la" -delete || die - - if ! use userland_GNU; then - # manpage collisions - # TODO: figure out a good way to keep them - rm "${ED}"/usr/share/man/man3/uuid* || die - fi - - if use pam; then - newpamd "${FILESDIR}/runuser.pamd" runuser - newpamd "${FILESDIR}/runuser-l.pamd" runuser-l - fi - - # Note: - # Bash completion for "runuser" command is provided by same file which - # would also provide bash completion for "su" command. However, we don't - # use "su" command from this package. - # This triggers a known QA warning which we ignore for now to magically - # keep bash completion for "su" command which shadow package does not - # provide. -} - -pkg_postinst() { - if ! use tty-helpers; then - elog "The mesg/wall/write tools have been disabled due to USE=-tty-helpers." - fi - - if [[ -z ${REPLACING_VERSIONS} ]]; then - elog "The agetty util now clears the terminal by default. You" - elog "might want to add --noclear to your /etc/inittab lines." - fi -} -- cgit v1.2.3