diff --git a/bison-3.8.2-gcc15-glibcxx-assertions.patch b/bison-3.8.2-gcc15-glibcxx-assertions.patch new file mode 100644 index 0000000..245cc84 --- /dev/null +++ b/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 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 diff --git a/bison-license-check.sh b/bison-license-check.sh new file mode 100755 index 0000000..e39c8e9 --- /dev/null +++ b/bison-license-check.sh @@ -0,0 +1,108 @@ +#!/bin/bash + +# Run this in a bison source tree basedir to quickly guess the licensing +# status of various bison source files. e.g. when using +# glibc-maintainer-scripts for package maintenance, this means running it in +# the bison-patches directory. +# We use this because for some reason, fossology is unable to grok bison +# sources for a license analysis. + +for f in $(find . -type f | grep -v '\.git/' | grep -v 'gnulib/'); do + + if file $f | grep -q text; then # Hoping this is true iff the file is a text file + + license="Unknown" + + if head -n50 $f \ + | grep -C50 -i "This.*file is free software; the Free Software Foundation" \ + | grep -C50 -i "unlimited permission to copy and/or distribute it" \ + | grep -C50 -i "with or without" \ + | grep -qi "modifications, as long as this notice is preserved"; then + license="FSFULLR" + fi + + if head -n50 $f \ + | grep -C50 -i "This.*\(program\|file\) is free software" \ + | grep -C50 -i "GNU General Public License" \ + | grep -C50 -i "either version 2" \ + | grep -qi "any later version"; then + license="GPL-2.0-or-later" + fi + + if head -n50 $f \ + | grep -C50 -i "This.*\(program\|file\) is free" \ + | grep -C50 -i "GNU General Public License" \ + | grep -C50 -i "either version 3" \ + | grep -qi "any later version"; then + license="GPL-3.0-or-later" + fi + + # Order of check for v2 and v2.1 is important here; + # "either version 2" will also match "either version 2.1" + if head -n50 $f \ + | grep -C50 -i "This.*\(program\|file\) is free software" \ + | grep -C50 -i "GNU Lesser General Public License" \ + | grep -C50 -i "either version 2" \ + | grep -qi "any later version"; then + license="LGPL-2.0-or-later" + fi + + if head -n50 $f \ + | grep -C50 -i "Th.* is free software" \ + | grep -C50 -i "GNU Lesser General Public" \ + | grep -C50 -i "License" \ + | grep -C50 -i "either" \ + | grep -C50 -i "version 2.1" \ + | grep -qi "any later version"; then + license="LGPL-2.1-or-later" + fi + + if head -n50 $f \ + | grep -C50 -i "This.*\(program\|file\) is free software" \ + | grep -C50 -i "GNU Lesser General Public License" \ + | grep -C50 -i "either version 3" \ + | grep -qi "any later version"; then + license="LGPL-3.0-or-later" + fi + + if head -n50 $f \ + | grep -C50 -i "Permission is granted" \ + | grep -C50 -i "copy, distribute.*modify" \ + | grep -C50 -i "GNU Free Documentation License" \ + | grep -C50 -i "Version 1.3" \ + | grep -qi "any later version"; then + license="GFDL-1.3-or-later" + fi + + if head -n50 $f \ + | grep -C50 -i "Permission is hereby granted, free of charge" \ + | grep -C50 -i "to any person" \ + | grep -C50 -i "the Software without restriction" \ + | grep -C50 -i "use, copy, modify, merge, publish, distribute, sublicense" \ + | grep -qi "X Consortium"; then + license="X11" + fi + + if head -n50 $f \ + | grep -C50 -i "This file is distributed under the same license as" \ + | grep -qi "package"; then + license="Same-as-package-license" + fi + + if head -n50 $f \ + | grep -A20 -i "as .*exception" \ + | grep -qi "2\.2 of bison"; then + license="$license WITH Bison-exception-2.2" + fi + + if head -n50 $f \ + | grep -A20 -i "as .*exception" \ + | grep -A20 -i "distribute" \ + | grep -A20 -i "generated by autoconf" \ + | grep -qi "same distribution terms"; then + license="$license WITH Autoconf-exception-generic-3.0" + fi + + echo $license "("$f")" + fi; +done | sort diff --git a/bison.spec b/bison.spec index 839892c..eabe3b8 100644 --- a/bison.spec +++ b/bison.spec @@ -1,8 +1,12 @@ Summary: A GNU general-purpose parser generator Name: bison -Version: 3.7.6 -Release: 3%{?dist} -License: GPLv3+ +Version: 3.8.2 +Release: 11%{?dist} + +# An SPDX license string check done against bison-3.8.2 found strings +# corresponding to the following licenses across the bison source tree: +License: GPL-3.0-or-later AND GPL-3.0-or-later WITH Autoconf-exception-generic-3.0 AND GPL-3.0-or-later WITH Bison-exception-2.2 AND GPL-2.0-or-later AND GPL-2.0-or-later WITH Autoconf-exception-generic AND LGPL-3.0-or-later AND LGPL-2.1-or-later AND LGPL-2.0-or-later AND FSFULLR AND GFDL-1.3-or-later AND X11 + Source0: https://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz Source1: https://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz.sig # genereted from https://ftp.gnu.org/gnu/gnu-keyring.gpg via: @@ -10,6 +14,9 @@ Source1: https://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz.sig # gpg2 --export --export-options export-minimal 7DF84374B1EE1F9764BBE25D0DDCAA3278D5264E > gpgkey-7DF84374B1EE1F9764BBE25D0DDCAA3278D5264E.gpg Source2: gpgkey-7DF84374B1EE1F9764BBE25D0DDCAA3278D5264E.gpg +# from Gentoo sys-devel/bison +Patch0: bison-3.8.2-gcc15-glibcxx-assertions.patch + # testsuite dependency BuildRequires: gcc-c++ BuildRequires: autoconf @@ -76,7 +83,7 @@ Bison manual section for more information. %prep %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}' -%autosetup +%autosetup -p1 %build %configure @@ -120,6 +127,42 @@ gzip -9nf ${RPM_BUILD_ROOT}%{_infodir}/bison.info* %{_libdir}/liby.a %changelog +* Wed Jul 23 2025 Fedora Release Engineering - 3.8.2-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Thu Jan 16 2025 Fedora Release Engineering - 3.8.2-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Jul 17 2024 Fedora Release Engineering - 3.8.2-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Tue Jan 23 2024 Fedora Release Engineering - 3.8.2-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 3.8.2-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Sep 1 2023 Arjun Shankar - 3.8.2-6 +- Analyse bison sources for license information +- Migrate License field to SPDX identifiers for + https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_2 + (#2222079) + +* Wed Jul 19 2023 Fedora Release Engineering - 3.8.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Jan 18 2023 Fedora Release Engineering - 3.8.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Wed Jul 20 2022 Fedora Release Engineering - 3.8.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed Jan 19 2022 Fedora Release Engineering - 3.8.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Dec 13 2021 Arjun Shankar - 3.8.2-1 +- Update to bison 3.8.2 (#2002074) + * Wed Jul 21 2021 Fedora Release Engineering - 3.7.6-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild diff --git a/plans/ci.fmf b/plans/ci.fmf index 1ad2c12..3fd3ab7 100644 --- a/plans/ci.fmf +++ b/plans/ci.fmf @@ -1,6 +1,5 @@ summary: CI Gating Plan discover: how: fmf - directory: tests execute: - how: beakerlib + how: tmt diff --git a/sources b/sources index 085f270..f3f2816 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (bison-3.7.6.tar.xz) = 6c1c9b825fbd2c94b8903f03a7e68e6832599f7bbd8d3c49864537c11b038c45a15de02fd36128d662af314334c83515bbc132df84e9acc6c651e98649c65bad -SHA512 (bison-3.7.6.tar.xz.sig) = ed01c5355a7f28f3670184ecf15ab08cf5e8aacf87ee5c210d2ca2e6aa0829e443cabb18e4dd146a0d7d84a166623f36dff17b6b5150238da7c857484b2356c6 +SHA512 (bison-3.8.2.tar.xz) = d4d23af6671406e97257892f90651b67f2ab95219831372be032190b7156c10a3435d457857e677445df8b2327aacccc15344acbbc3808a6f332a93cce23b444 +SHA512 (bison-3.8.2.tar.xz.sig) = 8bb7743ca326e81a6c091b1413e3c09bd43c7eabbb80bac0638ccd52bdf7e3395cce300a86acd95f4637a9ec8a1b0e9a4d3d25d95ab0a8f03e57fd82eb87a7ac