Add -bagheader patch to work around package build failures on i386.

This commit is contained in:
Jerry James 2021-10-18 16:47:36 -06:00
parent df779ce3da
commit 45d8e5062b
3 changed files with 59 additions and 2 deletions

21
README.md Normal file
View File

@ -0,0 +1,21 @@
# gap
GAP is a system for computational discrete algebra, with particular
emphasis on
[Computational Group Theory](https://www.gap-system.org/Doc/references.html).
GAP provides a
[programming language](https://www.gap-system.org/Manuals/doc/ref/chap4.html),
a library of thousands of functions implementing algebraic algorithms
written in the GAP language as well as large
[data libraries](https://www.gap-system.org/Datalib/datalib.html) of
algebraic objects. See also the
[overview](https://www.gap-system.org/Overview/overview.html) and the
description of the
[mathematical capabilities](https://www.gap-system.org/Overview/Capabilities/capabilities.html).
GAP is used in research and teaching for studying groups and their
representations, rings, vector spaces, algebras, combinatorial
structures, and more.
In July 2008, GAP was awarded the ACM/SIGSAM
[Richard Dimick Jenks Memorial Prize](https://www.sigsam.org/awards/jenks/)
for Excellence in Software Engineering applied to Computer Algebra.

25
gap-bagheader.patch Normal file
View File

@ -0,0 +1,25 @@
--- src/gasman.h.orig 2021-03-02 08:12:10.000000000 -0700
+++ src/gasman.h 2021-10-18 16:14:34.641300191 -0600
@@ -77,12 +77,16 @@ typedef UInt * * Bag;
**
*/
typedef struct {
- uint8_t type : 8;
- uint8_t flags : 8;
- // the following unnamed field ensures that on 32 bit systems,
- // the 'size' field is aligned to a 32 bit boundary
- uint16_t : (sizeof(UInt) == 8) ? 0 : 16;
- uint64_t size : (sizeof(UInt) == 8) ? 48 : 32;
+#if __SIZEOF_INT__ == 8
+ uint64_t type : 8;
+ uint64_t flags : 8;
+ uint64_t size : 48;
+#else
+ uint8_t type;
+ uint8_t flags;
+ uint16_t unused;
+ uint32_t size;
+#endif
#ifdef USE_GASMAN
Bag link;
#endif

View File

@ -31,7 +31,7 @@
Name: gap
Version: 4.11.1
Release: 2%{?dist}
Release: 3%{?dist}
Summary: Computational discrete algebra
%global majver %(cut -d. -f1-2 <<< %{version})
@ -57,6 +57,14 @@ Patch1: %{name}-help.patch
Patch2: %{name}-ref.patch
# Fix paths in gac
Patch3: %{name}-gac.patch
# On i386 only, and with recent versions of gcc only, various parts of the
# compiled code disagree about the size of a BagHeader. Some parts think it
# is 12 bytes, and some parts think it is 16 bytes. This leads to pointers
# pointing 4 bytes off from the actual first byte of a BagHeader, leading to
# weird failure modes. This does not affect 32-bit ARM, so it is not purely
# a 32-bit issue. I do not yet know if this behavior is due to a GCC bug, or
# if the GAP code is in fact wrong, but this patch works around the issue.
Patch4: %{name}-bagheader.patch
BuildRequires: appstream
BuildRequires: desktop-file-utils
@ -70,7 +78,6 @@ BuildRequires: parallel
BuildRequires: perl-generators
BuildRequires: pkgconfig(readline)
BuildRequires: pkgconfig(zlib)
BuildRequires: procps
BuildRequires: tex(color.sty)
BuildRequires: tex(english.ldf)
BuildRequires: tex(enumitem.sty)
@ -194,6 +201,7 @@ Library containing core GAP logic
%patch1
%patch2
%patch3
%patch4
# Get the README
cp -p %{SOURCE1} README.fedora
@ -443,6 +451,9 @@ make check
%{_libdir}/libgap.so
%changelog
* Mon Oct 18 2021 Jerry James <loganjerry@gmail.com> - 4.11.1-3
- Add -bagheader patch to work around package build failures on i386
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 4.11.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild