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
+}

Reply via email to