The package rpms/gap.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/gap.git/commit/?id=ac34d6a95cf8d2....
Change:
+%ifarch s390x
Thanks.
Full change:
============
commit ac34d6a95cf8d22267f9314fb0d7ef44ac5d65ef
Author: Jerry James <loganjerry(a)gmail.com>
Date: Tue Apr 23 18:32:28 2019 -0600
Fix expected test outputs on big endian architectures.
diff --git a/gap.spec b/gap.spec
index cc258fd..087aee5 100644
--- a/gap.spec
+++ b/gap.spec
@@ -370,6 +370,16 @@ fi
%if %{without bootstrap}
%check
+%ifarch s390x
+# Some test results depend on the results of a hash algorithm. The algorithm
+# output depends on the exact order of the bytes fed into it. We feed in the
+# same bytes, but in different orders, on little and big endian machines.
+# However, the test checks for the little endian output. Fix that on big
+# endian machines.
+sed -e 's/260581/402746/;s/773594/109657/;s/567548/351540/' \
+ -i tst/testinstall/pperm.tst
+%endif
+
export LC_ALL=C.UTF-8
sed -e "s|GAP_DIR=.*|GAP_DIR=$PWD|" \
-e "s|GAP_EXE=.*|GAP_EXE=$PWD|" \
commit b852397bba5c5b0a98f0e405b641958e18def9f0
Author: Jerry James <loganjerry(a)gmail.com>
Date: Tue Apr 23 14:36:59 2019 -0600
New upstream release. Drop upstreamed sagemath patches.
diff --git a/gap-enterleave.patch b/gap-enterleave.patch
deleted file mode 100644
index de7db12..0000000
--- a/gap-enterleave.patch
+++ /dev/null
@@ -1,189 +0,0 @@
---- src/gapstate.h.orig 2018-11-01 16:56:12.000000000 -0600
-+++ src/gapstate.h 2019-02-07 13:15:02.178599668 -0700
-@@ -97,6 +97,9 @@ typedef struct GAPState {
-
- UInt1 StateSlots[STATE_SLOTS_SIZE];
-
-+ /* For libgap-api.c */
-+ Int EnterStackCount;
-+
- /* Allocation */
- #if !defined(USE_GASMAN)
- #define MAX_GC_PREFIX_DESC 4
---- src/gasman.c.orig 2018-11-01 16:56:12.000000000 -0600
-+++ src/gasman.c 2019-02-07 13:15:02.181599631 -0700
-@@ -1193,6 +1193,12 @@ void SetExtraMarkFuncBags(TNumExtraMarkF
- }
-
-
-+
-+void _MarkStackBottomBags(void* StackBottom) {
-+ StackBottomBags = StackBottom;
-+}
-+
-+
- void InitBags (
- UInt initial_size,
- Bag * stack_bottom,
---- src/gasman.h.orig 2018-11-01 16:56:12.000000000 -0600
-+++ src/gasman.h 2019-02-07 13:15:02.182599619 -0700
-@@ -982,6 +982,21 @@ extern void InitCollectFuncB
- typedef void (*TNumExtraMarkFuncBags)(void);
- extern void SetExtraMarkFuncBags(TNumExtraMarkFuncBags func);
-
-+
-+#ifdef __GNUC__
-+#define MarkStackBottomBags() \
-+ _MarkStackBottomBags(__builtin_frame_address(0));
-+/*
-+#else
-+ * TODO: Detect the best stack frame detection technique at configure time
-+ *
-+#define MarkStackBottomBags() \
-+ register void* rbp asm("rbp"); \
-+ _MarkStackBottomBags(rbp);
-+*/
-+#endif
-+extern void _MarkStackBottomBags(void* StackBottom);
-+
- /****************************************************************************
- **
- *F InitBags(...) . . . . . . . . . . . . . . . . . . . . . initialize Gasman
---- src/libgap-api.c.orig 2018-11-01 16:56:12.000000000 -0600
-+++ src/libgap-api.c 2019-02-07 13:15:02.183599607 -0700
-@@ -10,6 +10,8 @@
- #include "lists.h"
- #include "streams.h"
- #include "stringobj.h"
-+#include "system.h"
-+
-
- //
- // Setup and initialisation
-@@ -60,3 +62,28 @@ Obj GAP_EvalString(const char * cmd)
- res = READ_ALL_COMMANDS(instream, False, True, viewObjFunc);
- return res;
- }
-+
-+inline syJmp_buf * _GAP_GetReadJmpError(void)
-+{
-+ return &(STATE(ReadJmpError));
-+}
-+
-+inline Int _GAP_GetEnterStackCount(void)
-+{
-+ return STATE(EnterStackCount);
-+}
-+
-+inline void _GAP_IncEnterStackCount(void)
-+{
-+ STATE(EnterStackCount)++;
-+}
-+
-+inline void _GAP_DecEnterStackCount(void)
-+{
-+ STATE(EnterStackCount)--;
-+}
-+
-+inline void _GAP_SetEnterStackCount(Int count)
-+{
-+ STATE(EnterStackCount) = count;
-+}
---- src/libgap-api.h.orig 2018-11-01 16:56:12.000000000 -0600
-+++ src/libgap-api.h 2019-02-07 13:15:02.183599607 -0700
-@@ -5,9 +5,93 @@
-
- #include "gap.h"
-
--typedef void (*CallbackFunc)(void);
-+#ifdef __GNUC__
-+#define unlikely(x) __builtin_expect(!!(x), 0)
-+#else
-+#define unlikely(x) (x)
-+#endif
-
--// Initialisation and finalization
-+
-+#ifndef GAP_ENTER_DEBUG
-+#define GAP_ENTER_DEBUG 0
-+#endif
-+
-+
-+extern syJmp_buf * _GAP_GetReadJmpError(void);
-+extern Int _GAP_GetEnterStackCount(void);
-+extern void _GAP_IncEnterStackCount(void);
-+extern void _GAP_DecEnterStackCount(void);
-+extern void _GAP_SetEnterStackCount(Int count);
-+
-+
-+#if GAP_ENTER_DEBUG
-+#define GAP_ENTER_DEBUG_MESSAGE(message, file, line) \
-+ fprintf(stderr, "%s: %d; %s:%d\n", message, _GAP_EnterStackCount, file,
line);
-+#else
-+#define GAP_ENTER_DEBUG_MESSAGE(message, file, line)
-+#endif
-+
-+
-+#define GAP_EnterStack() \
-+ GAP_ENTER_DEBUG_MESSAGE("EnterStack", __FILE__, __LINE__); \
-+ Int _gap_tmp_enter_stack_count = _GAP_GetEnterStackCount(); \
-+ if (_gap_tmp_enter_stack_count < 0) { \
-+ _GAP_SetEnterStackCount(-_gap_tmp_enter_stack_count); \
-+ } else { \
-+ if (_gap_tmp_enter_stack_count == 0) { \
-+ MarkStackBottomBags(); \
-+ } \
-+ _GAP_IncEnterStackCount(); \
-+ }
-+
-+
-+#define GAP_LeaveStack() \
-+ _GAP_DecEnterStackCount(); \
-+ GAP_ENTER_DEBUG_MESSAGE("LeaveStack", __FILE__, __LINE__);
-+
-+
-+static inline int _GAP_Error_Prejmp(const char* file, int line) {
-+#if GAP_ENTER_DEBUG
-+ GAP_ENTER_DEBUG_MESSAGE("Error_Prejmp", file, line);
-+#endif
-+ if (_GAP_GetEnterStackCount() > 0) {
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+
-+static inline int _GAP_Error_Postjmp(int JumpRet)
-+{
-+ if (unlikely(JumpRet != 0)) {
-+ /* This only should have been called from the outer-most
-+ * GAP_EnterStack() call so make sure it resets the EnterStackCount; We
-+ * set EnterStackCount to its negative which indicates to
-+ * GAP_EnterStack that we just returned from a long jump and should
-+ * reset EnterStackCount to its value at the return point rather than
-+ * increment it again */
-+ Int tmp_count = _GAP_GetEnterStackCount();
-+ if (tmp_count > 0) {
-+ _GAP_SetEnterStackCount(-tmp_count);
-+ }
-+ return 0;
-+ }
-+
-+ return 1;
-+}
-+
-+#define GAP_Error_Setjmp() (_GAP_Error_Prejmp(__FILE__, __LINE__) || \
-+ _GAP_Error_Postjmp(sySetjmp(*_GAP_GetReadJmpError())))
-+
-+
-+#define GAP_Enter() GAP_Error_Setjmp(); GAP_EnterStack()
-+#define GAP_Leave() GAP_LeaveStack()
-+
-+
-+////
-+//// Setup and initialisation
-+////
-+typedef void (*CallbackFunc)(void);
-
- void GAP_Initialize(int argc,
- char ** argv,
diff --git a/gap-erroroutput.patch b/gap-erroroutput.patch
deleted file mode 100644
index 035daf7..0000000
--- a/gap-erroroutput.patch
+++ /dev/null
@@ -1,101 +0,0 @@
---- src/error.c.orig 2018-11-01 16:56:12.000000000 -0600
-+++ src/error.c 2019-02-07 13:12:12.925660213 -0700
-@@ -33,6 +33,8 @@
-
-
- static Obj ErrorInner;
-+static Obj ERROR_OUTPUT = NULL;
-+static Obj IsOutputStream;
-
-
- /****************************************************************************
-@@ -40,6 +42,44 @@ static Obj ErrorInner;
- *F * * * * * * * * * * * * * * error functions * * * * * * * * * * * * * * *
- */
-
-+/****************************************************************************
-+**
-+*F OpenErrorOutput() . . . . . . . open the file or stream assigned to the
-+** ERROR_OUTPUT global variable defined in
-+** error.g, or "*errout*" otherwise
-+*/
-+UInt OpenErrorOutput( void )
-+{
-+ /* Try to print the output to stream. Use *errout* as a fallback. */
-+ UInt ret = 0;
-+
-+ if (ERROR_OUTPUT != NULL) {
-+ if (IsStringConv(ERROR_OUTPUT)) {
-+ ret = OpenOutput(CSTR_STRING(ERROR_OUTPUT));
-+ }
-+ else {
-+ if (CALL_1ARGS(IsOutputStream, ERROR_OUTPUT) == True) {
-+ ret = OpenOutputStream(ERROR_OUTPUT);
-+ }
-+ }
-+ }
-+
-+ if (!ret) {
-+ /* It may be we already tried and failed to open *errout* above but
-+ * but this is an extreme case so it can't hurt to try again
-+ * anyways */
-+ ret = OpenOutput("*errout*");
-+ if (ret) {
-+ Pr("failed to open error stream\n", 0, 0);
-+ }
-+ else {
-+ Panic("failed to open *errout*");
-+ }
-+ }
-+
-+ return ret;
-+}
-+
-
- /****************************************************************************
- **
-@@ -615,6 +655,8 @@ static Int InitKernel(StructInitInfo * m
- InitHdlrFuncsFromTable(GVarFuncs);
-
- ImportFuncFromLibrary("ErrorInner", &ErrorInner);
-+ ImportFuncFromLibrary("IsOutputStream", &IsOutputStream);
-+ ImportGVarFromLibrary("ERROR_OUTPUT", &ERROR_OUTPUT);
-
- // return success
- return 0;
---- src/error.h.orig 2018-11-01 16:56:12.000000000 -0600
-+++ src/error.h 2019-02-07 13:12:12.926660201 -0700
-@@ -32,6 +32,14 @@ Int RegisterBreakloopObserver(intfunc fu
-
- /****************************************************************************
- **
-+*F OpenErrorOutput() . . . . . . . open the file or stream assigned to the
-+** ERROR_OUTPUT global variable defined in
-+** error.g, or "*errout*" otherwise
-+*/
-+extern UInt OpenErrorOutput();
-+
-+/****************************************************************************
-+**
- *F ErrorQuit( <msg>, <arg1>, <arg2> ) . . . . . . . . . . . print
and quit
- */
- extern void ErrorQuit(const Char * msg, Int arg1, Int arg2) NORETURN;
---- src/scanner.c.orig 2018-11-01 16:56:12.000000000 -0600
-+++ src/scanner.c 2019-02-07 13:12:12.929660164 -0700
-@@ -16,6 +16,7 @@
-
- #include "scanner.h"
-
-+#include "error.h"
- #include "gapstate.h"
- #include "gaputils.h"
- #include "io.h"
-@@ -42,7 +43,7 @@ static void SyntaxErrorOrWarning(const C
- if (STATE(NrErrLine) == 0) {
-
- // open error output
-- OpenOutput("*errout*");
-+ OpenErrorOutput();
-
- // print the message ...
- if (error)
diff --git a/gap-stat.patch b/gap-stat.patch
index 4184838..17efa89 100644
--- a/gap-stat.patch
+++ b/gap-stat.patch
@@ -1,6 +1,6 @@
---- src/integer.c.orig 2018-11-01 16:56:12.000000000 -0600
-+++ src/integer.c 2019-01-21 09:40:09.127695999 -0700
-@@ -583,6 +583,41 @@ Obj ObjInt_UInt8( UInt8 i )
+--- src/integer.c.orig 2019-02-23 15:43:33.000000000 -0700
++++ src/integer.c 2019-03-12 13:39:47.357775303 -0600
+@@ -567,6 +567,41 @@ Obj ObjInt_UInt8( UInt8 i )
#endif
}
@@ -42,8 +42,8 @@
/**************************************************************************
**
** Convert GAP Integers to various C types -- see header file
---- src/integer.h.orig 2018-11-01 16:56:12.000000000 -0600
-+++ src/integer.h 2019-01-21 09:32:37.988860343 -0700
+--- src/integer.h.orig 2019-02-23 15:43:33.000000000 -0700
++++ src/integer.h 2019-03-12 13:39:47.358775285 -0600
@@ -135,6 +135,8 @@ extern Obj ObjInt_Int(Int i);
extern Obj ObjInt_UInt(UInt i);
extern Obj ObjInt_Int8(Int8 i);
diff --git a/gap-terminal.patch b/gap-terminal.patch
deleted file mode 100644
index 928592d..0000000
--- a/gap-terminal.patch
+++ /dev/null
@@ -1,59 +0,0 @@
---- src/sysfiles.c.orig 2018-11-01 16:56:12.000000000 -0600
-+++ src/sysfiles.c 2019-02-07 13:07:58.554757018 -0700
-@@ -159,21 +159,23 @@ SYS_SY_BUFFER syBuffers[32];
- /* utility to check return value of 'write' */
- ssize_t echoandcheck(int fid, const char *buf, size_t count) {
- int ret;
-+ static int depth = 0;
-+ depth++;
- if (syBuf[fid].type == gzip_socket) {
- ret = gzwrite(syBuf[fid].gzfp, buf, count);
-- if (ret < 0)
-+ if (ret < 0 && depth == 1)
- ErrorQuit(
- "Could not write to compressed file, see
'LastSystemError();'\n",
- 0L, 0L);
- }
- else {
- ret = write(syBuf[fid].echo, buf, count);
-- if (ret < 0)
-+ if (ret < 0 && depth == 1)
- ErrorQuit("Could not write to file descriptor %d, see "
- "'LastSystemError();'\n",
- syBuf[fid].fp, 0L);
- }
--
-+ depth--;
- return ret;
- }
-
-@@ -1636,21 +1638,27 @@ Int SyWrite(Int fid, const void * ptr, s
- static ssize_t SyWriteandcheck(Int fid, const void * buf, size_t count)
- {
- int ret;
-+ static int depth = 0;
-+ depth++;
- if (syBuf[fid].type == gzip_socket) {
- ret = gzwrite(syBuf[fid].gzfp, buf, count);
-- if (ret < 0)
-+ if (ret < 0 && depth == 1) {
- ErrorQuit(
- "Cannot write to compressed file, see
'LastSystemError();'\n",
- 0L, 0L);
-+ }
- }
- else {
- ret = write(syBuf[fid].fp, buf, count);
-- if (ret < 0)
-+ if (ret < 0 && depth == 1) {
- ErrorQuit("Cannot write to file descriptor %d, see "
- "'LastSystemError();'\n",
- syBuf[fid].fp, 0L);
-+ }
- }
-
-+ depth--;
-+
- return ret;
- }
-
diff --git a/gap.spec b/gap.spec
index d149cbc..cc258fd 100644
--- a/gap.spec
+++ b/gap.spec
@@ -14,7 +14,7 @@
%global gapcpu %{_build}
%endif
%endif
-%global gaparch %{gapcpu}-%{gapbits}
+%global gaparch %{gapcpu}-%{gapbits}-kv3
# When bootstrapping a new architecture, there are no GAPDoc, gap-pkg-primgrp,
# gap-pkg-smallgrp, or gap-pkg-transgrp packages yet, but the gap binary
@@ -30,8 +30,8 @@
%bcond_with bootstrap
Name: gap
-Version: 4.10.0
-Release: 2%{?dist}
+Version: 4.10.1
+Release: 1%{?dist}
Summary: Computational discrete algebra
%global majver %(cut -d. -f1-2 <<< %{version})
@@ -50,29 +50,23 @@ Source8: update-gap-workspace.1
Source9: gap.vim
# Patch applied in bootstrap mode to break circular dependencies.
Patch0: %{name}-bootstrap.patch
-# Sagemath patch to prevent infinite recursion on failure to write to terminal
-Patch1: %{name}-terminal.patch
-# Sagemath patch to add a helper function for writing error messages
-Patch2: %{name}-erroroutput.patch
-# Sagemath patch to bracket use of libgap and stack local GAP objects
-Patch3: %{name}-enterleave.patch
# This patch applies a change from Debian to allow help files to be in gzip
# compressed DVI files, and also adds support for viewing with xdg-open.
-Patch4: %{name}-help.patch
+Patch1: %{name}-help.patch
# Add conversions from long long and unsigned long long values to GAP integers.
# This is needed in gap-pkg-io to convert stat information to internal form on
# 32-bit systems with the 64-bit stat interface.
-Patch5: %{name}-stat.patch
+Patch2: %{name}-stat.patch
# Fix escapes in manualindex
-Patch6: %{name}-escape.patch
+Patch3: %{name}-escape.patch
# Fix broken references in the reference manual's lab file
-Patch7: %{name}-ref.patch
+Patch4: %{name}-ref.patch
# Add symbols wanted by other packages to the reference manual
-Patch8: %{name}-doc.patch
+Patch5: %{name}-doc.patch
# Fix paths in gac
-Patch9: %{name}-gac.patch
+Patch6: %{name}-gac.patch
# Ctbl code tries to change an immutable object
-Patch10: %{name}-immutable.patch
+Patch7: %{name}-immutable.patch
BuildRequires: desktop-file-utils
BuildRequires: gcc-c++
@@ -211,9 +205,6 @@ Headers and library links for libgap.
%patch5
%patch6
%patch7
-%patch8
-%patch9
-%patch10
# Get the README
cp -p %{SOURCE1} README.fedora
@@ -231,6 +222,7 @@ sed -e
's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' \
-i libtool
make %{?_smp_mflags} V=1
+make %{?_smp_mflags} libgap.la
# Prepare to build packages
sed -i "s|@gaparch@|%{gaparch}|" bin/%{gaparch}/gac
@@ -258,11 +250,20 @@ cat > macros.%{name} << EOF
EOF
%install
+# Install the headers
+mkdir -p %{buildroot}%{_includedir}/gap/hpc
+cp -p src/*.h %{buildroot}%{_includedir}/gap
+cp -p src/hpc/*.h %{buildroot}%{_includedir}/gap/hpc
+
# Install libgap
-%make_install
+mkdir -p %{buildroot}%{_libdir}
+libtool --mode=install %{_bindir}/install -c libgap.la %{buildroot}%{_libdir}
rm -f %{buildroot}%{_libdir}/*.la
-# Install update-gap-workspace
+# Install the binaries
+mkdir -p %{buildroot}%{_bindir}
+install -p -m755 gap %{buildroot}%{_bindir}
+install -p -m755 gac %{buildroot}%{_bindir}
install -p -m755 %{SOURCE2} %{buildroot}%{_bindir}
# Install the data
@@ -299,9 +300,13 @@ cp -a bin %{buildroot}%{gapdir}
# Fix symlinks to the binary and source directory
pushd %{buildroot}%{gapdir}/bin/%{gaparch}
-rm -f gap src
+rm -f gap gac src
ln -s %{_bindir}/gap gap
+ln -s %{_bindir}/gac gac
ln -s %{_includedir}/gap src
+cd ../..
+ln -s %{_bindir}/gap gap
+ln -s %{_bindir}/gac gac
popd
# Make an empty directory to hold the GAP packages
@@ -370,7 +375,7 @@ sed -e "s|GAP_DIR=.*|GAP_DIR=$PWD|" \
-e "s|GAP_EXE=.*|GAP_EXE=$PWD|" \
-i bin/gap.sh
sed -i "s|80 -r|& -l $PWD|" Makefile.rules
-make testinstall
+make check
%endif
%files
@@ -379,6 +384,7 @@ make testinstall
%{gapdir}/bin/gap.sh
%dir %{gapdir}/bin/%{gaparch}/
%{gapdir}/bin/%{gaparch}/gap
+%{gapdir}/gap
%{_mandir}/man1/gap.1*
%{_datadir}/appdata/gap.appdata.xml
%{_datadir}/applications/gap.desktop
@@ -424,6 +430,7 @@ make testinstall
%{gapdir}/bin/%{gaparch}/extern/
%{gapdir}/bin/%{gaparch}/src
%{gapdir}/etc/
+%{gapdir}/gac
%{gapdir}/gen/
%{gapdir}/src
%{gapdir}/tst/
@@ -445,6 +452,10 @@ make testinstall
%{_libdir}/libgap.so
%changelog
+* Wed Mar 20 2019 Jerry James <loganjerry(a)gmail.com> - 4.10.1-1
+- New upstream release
+- Drop upstreamed sagemath patches
+
* Sun Feb 17 2019 Jerry James <loganjerry(a)gmail.com> - 4.10.0-2
- Build in non-bootstrap mode
diff --git a/sources b/sources
index 11a832f..6e844ca 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (gap-4.10.0.tar.bz2) =
137d904ee516f56c14863ca9943627054a20bf31efbfb68e6cca19052e28f608d1b6da5ad84f394c3cfd77b8103c17772e6653b792ee98b3cc9acd6833c5982f
+SHA512 (gap-4.10.1.tar.bz2) =
699794e21a4fbbc188d3649453c1709fce8f28a4b2cb14243cc72a4bfb7ba3aeb281564f34ad9aff0bf3b1743a7e24455669fd0c80bbb134e051b84676898714