summaryrefslogtreecommitdiff
path: root/sys-devel/bison
diff options
context:
space:
mode:
Diffstat (limited to 'sys-devel/bison')
-rw-r--r--sys-devel/bison/Manifest2
-rw-r--r--sys-devel/bison/bison-3.8.2-r3.ebuild109
-rw-r--r--sys-devel/bison/files/bison-3.8.2-gcc15-glibcxx-assertions.patch69
3 files changed, 180 insertions, 0 deletions
diff --git a/sys-devel/bison/Manifest b/sys-devel/bison/Manifest
index e656b6150ee6..3697fe5fab8e 100644
--- a/sys-devel/bison/Manifest
+++ b/sys-devel/bison/Manifest
@@ -1,4 +1,6 @@
+AUX bison-3.8.2-gcc15-glibcxx-assertions.patch 2340 BLAKE2B 8e7afaa6d42a9c8eccaa668f180b653eb4e88498f34d6ee00a1533ab1e774f9fc3e5ba315bd713a9a9dc590e2199f2afc923b723dcd769ad6db663df8eb95444 SHA512 d307b4c01ebf427f08886c34e0495ccb7e5d5feca7bd08ca50074ab8a77ec2ddc99d64c3376230ee48741abbc40bbce9a9efc0c51edcba03c38032555d65d833
DIST bison-3.8.2.tar.xz 2817324 BLAKE2B e211b61494c911f55b72a8b70b5a48cdf4000ce9e675a1f1f52735bb8f57d93a3f8075341451263af9c9c531004907ae2b62b1873e7e4664c2cd26fa3b12271c SHA512 d4d23af6671406e97257892f90651b67f2ab95219831372be032190b7156c10a3435d457857e677445df8b2327aacccc15344acbbc3808a6f332a93cce23b444
DIST bison-3.8.2.tar.xz.sig 195 BLAKE2B b9bd21adb5115d3d3174c94223fbc9cd33afa0e9c1805008e49f77ff154fc2b656d8a9e9503dc5290658ae2948a2ca7c0dbc812f62aec268d8f8bfafb6349096 SHA512 8bb7743ca326e81a6c091b1413e3c09bd43c7eabbb80bac0638ccd52bdf7e3395cce300a86acd95f4637a9ec8a1b0e9a4d3d25d95ab0a8f03e57fd82eb87a7ac
EBUILD bison-3.8.2-r2.ebuild 3007 BLAKE2B 383ff56feae6295d9b11e32e15578be954f3c0b5aa8142f1971657a425885fad440fd9bdbc392efd2f5b0101d96cbb0ecad0fed985cdcafd6a125e8e39a72194 SHA512 c0c5fa9907c1bb4196c255b54dee86a919eeb4d5e11eee3e19ae2c6f2c7c23b6d693ec03dceeea6fd665e060507e26ddff8cfdffff939c7d98782a576548217f
+EBUILD bison-3.8.2-r3.ebuild 3086 BLAKE2B 6035b7efa21ff5f1c405b32597b7a045a53cd96f580003dd825fe73981b743cecaa7dc267d855119c6cadad93537f63727b718fb1d13e11435ef417243392e52 SHA512 a5dc69baac0c416a9e8ea24bfae7fb6b34695fd8c236b3a5af2cd73ad024937d605fcb3573b86680089327c02d8d3071d854f0ba581e882a9cd7ff9c3c403a72
MISC metadata.xml 434 BLAKE2B ff2a68a1c7ee92b241c18b0b7e9760dfb8355b50061096e525a7b3e50d7882054a3b4407138156747b4fe011d50c9bf83f6d81d99c61682c73fd97e7deaa8b5f SHA512 2709d880cc8b3a25a8e5790eebd62e491ea51b91b62a387763e66e75e1b650482b55933c2010c110eefc61adc8284de519edf68d67ee7eb430f9bfb0d843ac6c
diff --git a/sys-devel/bison/bison-3.8.2-r3.ebuild b/sys-devel/bison/bison-3.8.2-r3.ebuild
new file mode 100644
index 000000000000..966b52d053aa
--- /dev/null
+++ b/sys-devel/bison/bison-3.8.2-r3.ebuild
@@ -0,0 +1,109 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/bison.asc
+inherit flag-o-matic multiprocessing verify-sig
+
+DESCRIPTION="A general-purpose (yacc-compatible) parser generator"
+HOMEPAGE="https://www.gnu.org/software/bison/"
+SRC_URI="mirror://gnu/${PN}/${P}.tar.xz"
+SRC_URI+=" verify-sig? ( mirror://gnu/${PN}/${P}.tar.xz.sig )"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="examples nls static test"
+RESTRICT="!test? ( test )"
+
+# gettext _IS_ required in RDEPEND because >=bison-3.7 links against
+# libtextstyle.so!!! (see bug #740754)
+DEPEND="
+ >=sys-devel/m4-1.4.16
+ >=sys-devel/gettext-0.21
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ app-alternatives/lex
+ test? ( dev-lang/perl )
+ verify-sig? ( sec-keys/openpgp-keys-bison )
+"
+PDEPEND="app-alternatives/yacc"
+
+DOCS=( AUTHORS ChangeLog NEWS README THANKS TODO ) # ChangeLog-2012 ChangeLog-1998 PACKAGING README-alpha README-release
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-3.8.2-gcc15-glibcxx-assertions.patch
+)
+
+src_prepare() {
+ # Old logic when we needed to patch configure.ac
+ # Keeping in case it's useful for future
+
+ # Record date to avoid 'config.status --recheck' & regen of 'tests/package.m4'
+ #touch -r configure.ac old.configure.ac || die
+ #touch -r configure old.configure || die
+
+ #eapply "${WORKDIR}"/patches
+ #default
+
+ # Restore date after patching
+ #touch -r old.configure.ac configure.ac || die
+ #touch -r old.configure configure || die
+
+ # The makefiles make the man page depend on the configure script
+ # which we patched above. Touch it to prevent regeneration.
+ #touch doc/bison.1 || die #548778 #538300#9
+
+ default
+
+ # Avoid regenerating the info page when the timezone is diff. #574492
+ sed -i '2iexport TZ=UTC' build-aux/mdate-sh || die
+}
+
+src_configure() {
+ use static && append-ldflags -static
+
+ local myeconfargs=(
+ $(use_enable nls)
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_test() {
+ emake check TESTSUITEFLAGS="--jobs=$(get_makeopts_jobs)"
+}
+
+src_install() {
+ default
+
+ # These are owned by app-alternatives/yacc
+ mv "${ED}"/usr/bin/yacc{,.bison} || die
+ mv "${ED}"/usr/share/man/man1/yacc{,.bison}.1 || die
+
+ # We do not need liby.a
+ rm -r "${ED}"/usr/lib* || die
+
+ # Examples are about 200K, so let's make them optional still for now.
+ if ! use examples ; then
+ rm -r "${ED}"/usr/share/doc/${PF}/examples/ || die
+ fi
+}
+
+pkg_postinst() {
+ # ensure to preserve the symlinks before app-alternatives/yacc
+ # is installed
+ if [[ ! -h ${EROOT}/usr/bin/yacc ]]; then
+ if [[ -e ${EROOT}/usr/bin/yacc ]] ; then
+ # bug #886123
+ ewarn "${EROOT}/usr/bin/yacc exists but is not a symlink."
+ ewarn "This is expected during Prefix bootstrap and unusual otherwise."
+ ewarn "Moving away unexpected ${EROOT}/usr/bin/yacc to .bak."
+ mv "${EROOT}/usr/bin/yacc" "${EROOT}/usr/bin/yacc.bak" || die
+ fi
+
+ ln -s yacc.bison "${EROOT}/usr/bin/yacc" || die
+ fi
+}
diff --git a/sys-devel/bison/files/bison-3.8.2-gcc15-glibcxx-assertions.patch b/sys-devel/bison/files/bison-3.8.2-gcc15-glibcxx-assertions.patch
new file mode 100644
index 000000000000..245cc842a7be
--- /dev/null
+++ b/sys-devel/bison/files/bison-3.8.2-gcc15-glibcxx-assertions.patch
@@ -0,0 +1,69 @@
+https://bugs.gentoo.org/935754
+https://lists.gnu.org/archive/html/bison-patches/2024-07/msg00000.html
+
+* data/skeletons/glr2.cc (yyundeleteLastStack): Recover
+yylookaheadNeeds stack entry also, to prevent desyncing the sizes
+of yystates and yylookaheadNeeds.
+(class glr_state_set): New field yylookaheadNeedLastDeleted,
+tracks lookahead need of last deleted state.
+(yymarkStackDeleted): Save yylookaheadNeeds also.
+---
+Hi!
+
+GCC 15 has added bounds-checks to vector<bool> when assertions are
+enabled. This has caught a bug in Bison. See bug referenced above.
+
+Now, WRT the fix: I am not sure of its correctness, but it appears to
+pass tests and everything seems to indicate that the presumption it is
+based on is correct. That presumption is that the two stacks mentioned
+above (yylookaheadNeeds and yystates) ought to be the same size. I
+inferred this because all other locations that alter the size of the two
+vectors appear to do so in lock-step.
+
+TIA, have a lovely day.
+
+ data/skeletons/glr2.cc | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/data/skeletons/glr2.cc b/data/skeletons/glr2.cc
+index 970ccfdf..8b962d6f 100644
+--- a/data/skeletons/glr2.cc
++++ b/data/skeletons/glr2.cc
+@@ -1080,7 +1080,10 @@ namespace
+ {
+ size_t k = yyk.uget ();
+ if (yystates[k] != YY_NULLPTR)
+- yylastDeleted = yystates[k];
++ {
++ yylastDeleted = yystates[k];
++ yylookaheadNeedLastDeleted = yylookaheadNeeds[k];
++ }
+ yystates[k] = YY_NULLPTR;
+ }
+
+@@ -1093,6 +1096,7 @@ namespace
+ if (yylastDeleted == YY_NULLPTR || !yystates.empty ())
+ return;
+ yystates.push_back (yylastDeleted);
++ yylookaheadNeeds.push_back (yylookaheadNeedLastDeleted);
+ YYCDEBUG << "Restoring last deleted stack as stack #0.\n";
+ clearLastDeleted ();
+ }
+@@ -1102,6 +1106,7 @@ namespace
+ void
+ yyremoveDeletes ()
+ {
++ YYASSERT(yystates.size () == yylookaheadNeeds.size ());
+ size_t newsize = yystates.size ();
+ /* j is the number of live stacks we have seen. */
+ for (size_t i = 0, j = 0; j < newsize; ++i)
+@@ -1160,6 +1165,7 @@ namespace
+
+ /** The last stack we invalidated. */
+ glr_state* yylastDeleted;
++ bool yylookaheadNeedLastDeleted;
+ }; // class glr_state_set
+ } // namespace
+
+--
+2.45.2