mirror of
https://github.com/flatcar/scripts.git
synced 2026-02-19 22:52:32 +01:00
sys-devel/bison: Sync with Gentoo
It's from Gentoo commit bebb08842689ea39ed4806947fcdc03c21c4e33b.
This commit is contained in:
parent
eacff8ff95
commit
871f12e086
109
sdk_container/src/third_party/portage-stable/sys-devel/bison/bison-3.8.2-r3.ebuild
vendored
Normal file
109
sdk_container/src/third_party/portage-stable/sys-devel/bison/bison-3.8.2-r3.ebuild
vendored
Normal file
@ -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
|
||||
}
|
||||
@ -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
|
||||
Loading…
x
Reference in New Issue
Block a user