commit: 2dc57d72ada009425ab74d4ff46064a17d477782 Author: Marek Szuba <marecki <AT> gentoo <DOT> org> AuthorDate: Thu Sep 22 00:21:53 2022 +0000 Commit: Marek Szuba <marecki <AT> gentoo <DOT> org> CommitDate: Thu Sep 22 00:32:39 2022 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2dc57d72
sys-apps/gptfdisk: fix dev-libs/popt-1.19 incompatibility Without this, starting gdisk linked against popt-1.19 fails with Problem opening (garbage) for reading! Error is 2. The specified file does not exist! (assuming gptfdisk has been emerged without tests; otherwise this does get caught by the test suite) Closes: https://bugs.gentoo.org/872131 Signed-off-by: Marek Szuba <marecki <AT> gentoo.org> .../gptfdisk/files/gptfdisk-1.0.9-popt_segv.patch | 22 ++++++++ sys-apps/gptfdisk/gptfdisk-1.0.9-r2.ebuild | 61 ++++++++++++++++++++++ 2 files changed, 83 insertions(+) diff --git a/sys-apps/gptfdisk/files/gptfdisk-1.0.9-popt_segv.patch b/sys-apps/gptfdisk/files/gptfdisk-1.0.9-popt_segv.patch new file mode 100644 index 000000000000..470defd33cf6 --- /dev/null +++ b/sys-apps/gptfdisk/files/gptfdisk-1.0.9-popt_segv.patch @@ -0,0 +1,22 @@ +--- a/gptcl.cc ++++ b/gptcl.cc +@@ -156,9 +156,10 @@ + + // Assume first non-option argument is the device filename.... + device = (char*) poptGetArg(poptCon); +- poptResetContext(poptCon); + + if (device != NULL) { ++ device = strdup(device); ++ poptResetContext(poptCon); + JustLooking(); // reset as necessary + BeQuiet(); // Tell called functions to be less verbose & interactive + if (LoadPartitions((string) device)) { +@@ -498,6 +499,7 @@ + cerr << "Error encountered; not saving changes.\n"; + retval = 4; + } // if ++ free(device); + } // if (device != NULL) + poptFreeContext(poptCon); + return retval; diff --git a/sys-apps/gptfdisk/gptfdisk-1.0.9-r2.ebuild b/sys-apps/gptfdisk/gptfdisk-1.0.9-r2.ebuild new file mode 100644 index 000000000000..5ccaa186a5da --- /dev/null +++ b/sys-apps/gptfdisk/gptfdisk-1.0.9-r2.ebuild @@ -0,0 +1,61 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit flag-o-matic toolchain-funcs + +DESCRIPTION="GPT partition table manipulator for Linux" +HOMEPAGE="https://www.rodsbooks.com/gdisk/" +SRC_URI="mirror://sourceforge/${PN}/${PN}/${PV}/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux" +IUSE="ncurses static" + +# libuuid from util-linux is required. +RDEPEND="!static? ( + dev-libs/popt + ncurses? ( sys-libs/ncurses:=[unicode(+)] ) + kernel_linux? ( sys-apps/util-linux ) + )" +DEPEND=" + ${RDEPEND} + static? ( + dev-libs/popt[static-libs(+)] + ncurses? ( sys-libs/ncurses:=[unicode(+),static-libs(+)] ) + kernel_linux? ( sys-apps/util-linux[static-libs(+)] ) + ) + virtual/pkgconfig +" + +PATCHES=( + "${FILESDIR}/${PN}-1.0.9-libuuid.patch" #844073 + "${FILESDIR}/${PN}-1.0.9-popt_segv.patch" #872131 +) + +src_prepare() { + default + + tc-export CXX PKG_CONFIG + + if ! use ncurses ; then + sed -i \ + -e '/^all:/s: cgdisk::' \ + Makefile || die + fi + + sed \ + -e '/g++/s:=:?=:g' \ + -e 's:-lncursesw:$(shell $(PKG_CONFIG) --libs ncursesw):g' \ + -i Makefile || die + + use static && append-ldflags -static +} + +src_install() { + dosbin gdisk sgdisk $(usex ncurses cgdisk '') fixparts + doman *.8 + dodoc NEWS README +}