Your message dated Thu, 20 Dec 2018 00:19:34 +0000
with message-id <[email protected]>
and subject line Bug#916640: fixed in gap 4r10p0-3
has caused the Debian Bug report #916640,
regarding Changes to GAP necessary for sagemath
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
916640: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916640
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: src:gap
Version: 4r10p0-2
Severity: wishlist
Tags: sid buster patch
Control: block 912980 by -1

Hi Bill,

the sagemath developers managed to get sagemath to work with gap 4.10 [1], 
however they require some changes to GAP. I'm filing this bug in order to 
discuss how we can get a gap in Debian before the buster freeze that works with 
sagemath. I updated the sagemath package in git and it works fine when I apply 
the attached patch to gap. This debdiff applies three patches and installs 
libgap to /usr/lib/triplet, so that it can be found.

The three patches all have corresponding pull requests, one of them is already 
merged:

0001-a-version-of-the-writeandcheck.patch-from-Sage-that-.patch - 
https://github.com/gap-system/gap/pull/3102 (open)
0002-kernel-add-helper-function-for-writing-error-message.patch - 
https://github.com/gap-system/gap/pull/3043 (merged)
0003-Prototype-for-GAP_Enter-Leave-macros-to-bracket-use-.patch - 
https://github.com/gap-system/gap/pull/3096 (open)

Please let me know how we can proceed with this.

Best,
Tobias

[1] https://trac.sagemath.org/ticket/22626
diff -Nru gap-4r10p0/debian/changelog gap-4r10p0/debian/changelog
--- gap-4r10p0/debian/changelog 2018-12-03 20:53:59.000000000 +0100
+++ gap-4r10p0/debian/changelog 2018-12-16 15:06:41.000000000 +0100
@@ -1,3 +1,11 @@
+gap (4r10p0-2.2) experimental; urgency=medium
+
+  * Non-maintainer upload.
+  * Include three patches from sagemath.
+  * Install libgap to /usr/lib/triplet.
+
+ -- Tobias Hansen <[email protected]>  Sun, 16 Dec 2018 14:06:41 +0000
+
 gap (4r10p0-2) experimental; urgency=medium
 
   * New patch fix-test-bigendian: fix test on bigendian systems.
diff -Nru 
gap-4r10p0/debian/patches/0001-a-version-of-the-writeandcheck.patch-from-Sage-that-.patch
 
gap-4r10p0/debian/patches/0001-a-version-of-the-writeandcheck.patch-from-Sage-that-.patch
--- 
gap-4r10p0/debian/patches/0001-a-version-of-the-writeandcheck.patch-from-Sage-that-.patch
   1970-01-01 01:00:00.000000000 +0100
+++ 
gap-4r10p0/debian/patches/0001-a-version-of-the-writeandcheck.patch-from-Sage-that-.patch
   2018-12-07 16:20:32.000000000 +0100
@@ -0,0 +1,74 @@
+From 163b8aae99b1b206e5ae85763e21f47b7651f9c4 Mon Sep 17 00:00:00 2001
+From: "Erik M. Bray" <[email protected]>
+Date: Tue, 4 Dec 2018 12:44:23 +0000
+Subject: [PATCH 1/3] a version of the writeandcheck.patch from Sage that works
+ against 4.10
+
+---
+ src/sysfiles.c | 18 +++++++++++++-----
+ 1 file changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/src/sysfiles.c b/src/sysfiles.c
+index 2250784..45b4347 100644
+--- a/src/sysfiles.c
++++ b/src/sysfiles.c
+@@ -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, size_t len)
+ 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;
+ }
+ 
+-- 
+1.9.1
+
diff -Nru 
gap-4r10p0/debian/patches/0002-kernel-add-helper-function-for-writing-error-message.patch
 
gap-4r10p0/debian/patches/0002-kernel-add-helper-function-for-writing-error-message.patch
--- 
gap-4r10p0/debian/patches/0002-kernel-add-helper-function-for-writing-error-message.patch
   1970-01-01 01:00:00.000000000 +0100
+++ 
gap-4r10p0/debian/patches/0002-kernel-add-helper-function-for-writing-error-message.patch
   2018-12-07 16:20:43.000000000 +0100
@@ -0,0 +1,122 @@
+From 0cecb79ff97c73a24acacf8afdc3edba93507661 Mon Sep 17 00:00:00 2001
+From: "Erik M. Bray" <[email protected]>
+Date: Thu, 22 Nov 2018 10:53:31 +0100
+Subject: [PATCH 2/3] kernel: add helper function for writing error messages to
+ the file/stream referenced by the ERROR_OUTPUT global variable
+
+---
+ src/error.c   | 42 ++++++++++++++++++++++++++++++++++++++++++
+ src/error.h   |  8 ++++++++
+ src/scanner.c |  3 ++-
+ 3 files changed, 52 insertions(+), 1 deletion(-)
+
+diff --git a/src/error.c b/src/error.c
+index 9bb3be8..d43347d 100644
+--- a/src/error.c
++++ b/src/error.c
+@@ -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 * module)
+     InitHdlrFuncsFromTable(GVarFuncs);
+ 
+     ImportFuncFromLibrary("ErrorInner", &ErrorInner);
++    ImportFuncFromLibrary("IsOutputStream", &IsOutputStream);
++    ImportGVarFromLibrary("ERROR_OUTPUT", &ERROR_OUTPUT);
+ 
+     // return success
+     return 0;
+diff --git a/src/error.h b/src/error.h
+index 31af256..1f5ee5d 100644
+--- a/src/error.h
++++ b/src/error.h
+@@ -32,6 +32,14 @@ Int RegisterBreakloopObserver(intfunc func);
+ 
+ /****************************************************************************
+ **
++*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;
+diff --git a/src/scanner.c b/src/scanner.c
+index 4db17b3..071c0e3 100644
+--- a/src/scanner.c
++++ b/src/scanner.c
+@@ -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 Char * msg, UInt 
error)
+     if (STATE(NrErrLine) == 0) {
+ 
+         // open error output
+-        OpenOutput("*errout*");
++        OpenErrorOutput();
+ 
+         // print the message ...
+         if (error)
+-- 
+1.9.1
+
diff -Nru 
gap-4r10p0/debian/patches/0003-Prototype-for-GAP_Enter-Leave-macros-to-bracket-use-.patch
 
gap-4r10p0/debian/patches/0003-Prototype-for-GAP_Enter-Leave-macros-to-bracket-use-.patch
--- 
gap-4r10p0/debian/patches/0003-Prototype-for-GAP_Enter-Leave-macros-to-bracket-use-.patch
   1970-01-01 01:00:00.000000000 +0100
+++ 
gap-4r10p0/debian/patches/0003-Prototype-for-GAP_Enter-Leave-macros-to-bracket-use-.patch
   2018-12-16 15:02:21.000000000 +0100
@@ -0,0 +1,269 @@
+From 798756448180195a6ce020565a5c1d160e491e98 Mon Sep 17 00:00:00 2001
+From: "Erik M. Bray" <[email protected]>
+Date: Thu, 6 Dec 2018 16:11:35 +0000
+Subject: [PATCH 3/3] Prototype for GAP_Enter/Leave macros to bracket use of
+ libgap and stack local GAP objects in code which embeds libgap
+
+There are two parts to this:
+
+First, the outer-most GAP_Enter() must set the StackBottom variable for GASMAN,
+without which objects tracked by GASMAN that are allocated on the stack are
+properly tracked (see #3089).
+
+Second, the outer-most GAP_Enter() call should set a jump point for longjmps to
+STATE(ReadJmpError).  Code within the GAP kernel may reset this, but we should
+set it here in case any unexpected errors occur within the GAP kernel that are
+not already handled appropriately by a TRY_IF_NO_ERROR.
+
+For the first issue, we add GAP_EnterStack() and GAP_LeaveStack() macros which
+implement *just* the StackBottom handling without any other error handling.  We
+also add a function to gasman.c called _MarkStackBottomBags which just updates
+the StackBottom variable.  Then the macro called MarkStackBottomBags (same name
+without underscore) can be used within a function to set StackBottom to
+somewhere at or near the beginning of that function's stack frame.  This uses
+GCC's __builtin_frame_address, but supported is probably needed for other
+platforms that don't have this.
+
+The state variable STATE(EnterStackCount) is used to track recursive calls into
+GAP_EnterStack().  We only want to set StackBottom on the outer-most call.  The
+count is decremented on GAP_LeaveStack().  Some functions are provided for
+manipulating the counter from the API without directly exposing the GAP state,
+but I'm not sure if this is necessary or desirable, especially since it means
+EnterStackCount isn't updated atomically.  My hope was to avoid exposing too
+many GAP internals, but it may be necessary in order to implement these as
+macros.
+
+For setting the STATE(ReadJmpError) jump buffer we provide a macro called
+GAP_Error_Setjmp() which is fairly straightforward, except that it needs to be
+written in such a way that it can be used in concert correctly with
+GAP_EnterStack().  In particular, if returning to the site of a
+GAP_Error_Setjmp() call we do not want to accidentally re-increment the
+EnterStackCount.
+
+Finally, the higher-level GAP_Enter() and GAP_Leave() macros are provided: The
+latter is just an alias for GAP_LeaveStack(), but the former carefully combines
+*both* GAP_Error_Setjmp() and GAP_EnterStack().  Although called like a
+function, the GAP_Enter() macro expands to a compound statement (necessary for
+both GAP_EnterStack() and GAP_Error_Setjmp() to work properly).  The order of
+expansion is also deliberate so that this can be used like:
+
+    jmp_retval = GAP_Enter();
+
+so that the return value of the setjmp call can be stored in a variable while
+using GAP_Enter(), and can be checked to see whether an error occurred.
+However, this requires some care to ensure that the following GAP_EnterStack()
+doesn't increment the EnterStackCount following a return to this point via a
+longjmp.
+
+Conflicts:
+       src/libgap-api.h
+---
+ src/gapstate.h   |  3 ++
+ src/gasman.c     |  6 ++++
+ src/gasman.h     | 15 ++++++++++
+ src/libgap-api.c | 27 +++++++++++++++++
+ src/libgap-api.h | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 5 files changed, 137 insertions(+), 2 deletions(-)
+
+diff --git a/src/gapstate.h b/src/gapstate.h
+index 72ec4c3..7a2a663 100644
+--- a/src/gapstate.h
++++ b/src/gapstate.h
+@@ -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
+diff --git a/src/gasman.c b/src/gasman.c
+index 13c0b1e..4d2ab3d 100644
+--- a/src/gasman.c
++++ b/src/gasman.c
+@@ -1193,6 +1193,12 @@ void SetExtraMarkFuncBags(TNumExtraMarkFuncBags func)
+ }
+ 
+ 
++
++void _MarkStackBottomBags(void* StackBottom) {
++    StackBottomBags = StackBottom;
++}
++
++
+ void            InitBags (
+     UInt                initial_size,
+     Bag *               stack_bottom,
+diff --git a/src/gasman.h b/src/gasman.h
+index 236eb8b..55e057a 100644
+--- a/src/gasman.h
++++ b/src/gasman.h
+@@ -982,6 +982,21 @@ extern  void            InitCollectFuncBags (
+ 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
+diff --git a/src/libgap-api.c b/src/libgap-api.c
+index 82cc441..e75b0e2 100644
+--- a/src/libgap-api.c
++++ b/src/libgap-api.c
+@@ -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;
++}
+diff --git a/src/libgap-api.h b/src/libgap-api.h
+index e45d6fc..55fcd05 100644
+--- a/src/libgap-api.h
++++ b/src/libgap-api.h
+@@ -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
++
++
++#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(); \
++    }
++
+ 
+-// Initialisation and finalization
++#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,
+-- 
+1.9.1
+
diff -Nru gap-4r10p0/debian/patches/series gap-4r10p0/debian/patches/series
--- gap-4r10p0/debian/patches/series    2018-12-03 11:21:48.000000000 +0100
+++ gap-4r10p0/debian/patches/series    2018-12-07 16:20:54.000000000 +0100
@@ -1,3 +1,6 @@
+0001-a-version-of-the-writeandcheck.patch-from-Sage-that-.patch
+0002-kernel-add-helper-function-for-writing-error-message.patch
+0003-Prototype-for-GAP_Enter-Leave-macros-to-bracket-use-.patch
 fix-test-bigendian
 fix-convert.pl
 convert.pl-repro
diff -Nru gap-4r10p0/debian/rules gap-4r10p0/debian/rules
--- gap-4r10p0/debian/rules     2018-12-03 17:34:09.000000000 +0100
+++ gap-4r10p0/debian/rules     2018-12-16 15:06:41.000000000 +0100
@@ -103,9 +103,10 @@
        install -m 755 doc/manualindex debian/gap-core/usr/share/gap/etc
        dh_install -p gap-core sysinfo.gap usr/lib/gap
        dh_install -p gap-core sysinfo.gap ${gaptriplet}
-       make install-libgap DESTDIR=$(CURDIR)/debian/gap-core/ 
libdir=/${gaptriplet} $(SILENT)
-       rm debian/gap-core/${gaptriplet}/libgap.la
+       make install-libgap DESTDIR=$(CURDIR)/debian/gap-core/ 
libdir=/usr/lib/${triplet} $(SILENT)
+       rm debian/gap-core/usr/lib/${triplet}/libgap.la
        install -m 755 -d debian/gap-core/${gaptriplet}
+       install -m 755 -d debian/gap-core/usr/lib/${triplet}
        install -m 755 bin/*/gap debian/gap-core/${gaptriplet}
        install -m 755 libtool debian/gap-core/${gaptriplet}
        install -m 755 debian/gap.debian debian/gap-core/usr/bin/gap

--- End Message ---
--- Begin Message ---
Source: gap
Source-Version: 4r10p0-3

We believe that the bug you reported is fixed in the latest version of
gap, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Bill Allombert <[email protected]> (supplier of updated gap package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 1.8
Date: Thu, 20 Dec 2018 00:22:26 +0100
Source: gap
Binary: gap gap-core gap-libs gap-dev gap-online-help gap-doc
Architecture: source amd64 all
Version: 4r10p0-3
Distribution: unstable
Urgency: medium
Maintainer: Bill Allombert <[email protected]>
Changed-By: Bill Allombert <[email protected]>
Description:
 gap        - computer algebra system for Groups, Algorithms and Programming
 gap-core   - GAP computer algebra system, core components
 gap-dev    - GAP computer algebra system, compiler and development files
 gap-doc    - GAP computer algebra system, documentation
 gap-libs   - GAP computer algebra system, essential GAP libraries
 gap-online-help - GAP computer algebra system, online help
Closes: 915061 916640
Changes:
 gap (4r10p0-3) unstable; urgency=medium
 .
   * New patches
     - fix-make_doc: from upstream: added
     - sage-2-kernel-add-helper: from upstream: for sage support
     - sage-3-Prototype-for-GAP: for sage support. Closes: #916640
   * debian/watch: use dversionmangle. Closes: #915061
   * debian/gap2deb: install manual.lab
   * gap-dev: remove circular symlink
      /usr/lib/gap/src -> /usr/include/gap
   * debian/rules: add support for DEB_BUILD_OPTIONS terse
Checksums-Sha1:
 b6da1fa0515115def48f6314ea0879e0a364cc75 2195 gap_4r10p0-3.dsc
 ffd62cba2f7bc151be383625efe526bc2759ca48 31176 gap_4r10p0-3.debian.tar.xz
 e97ab6feab06fd79e7794d739997f1d2dcd2d3d6 6450404 
gap-core-dbgsym_4r10p0-3_amd64.deb
 2f3f59daa21fd6871a69150ccef4c108aa518d59 974556 gap-core_4r10p0-3_amd64.deb
 c102a61e3ecac680f4afbfa081a3fb9eef017c83 3761412 gap-dev_4r10p0-3_amd64.deb
 fdb2e017a22d9e3a12cf4188b18fc6037e5c8c5c 6510620 gap-doc_4r10p0-3_all.deb
 56dac9002a40dfe43111b6b1607e419601b639ca 4015116 gap-libs_4r10p0-3_all.deb
 c39508fa39bc728368cbdabe72adc40cf320b70e 1294916 
gap-online-help_4r10p0-3_all.deb
 8a7b238bcee23bf56a25743ba8fb9a3c1e0ed258 12752 gap_4r10p0-3_all.deb
 fe2e47736c33bc5bcf1cb890ea1b1733fa9272f2 10522 gap_4r10p0-3_amd64.buildinfo
Checksums-Sha256:
 4e6126eeb47c0ce9eb42e9a0862fef9eeeb73067e79eef8ff73b9dfb4dc3d34c 2195 
gap_4r10p0-3.dsc
 c89c6b77f084de06151efba292d2e21bfeb05b3e5de68876f1a651fe98f4de21 31176 
gap_4r10p0-3.debian.tar.xz
 15c594d3e339b29ff1357c3b9968c86e74ad7cec058a494faa8e9d001563c5f2 6450404 
gap-core-dbgsym_4r10p0-3_amd64.deb
 f8e4a0b65d3ae871b61250da56fa07a96e7cc5eb14b66a94b893ee792b78735e 974556 
gap-core_4r10p0-3_amd64.deb
 1d88813d85f163234f3b9922b19b94fa8b472cf17a0657c30730bf4119238814 3761412 
gap-dev_4r10p0-3_amd64.deb
 89f71f06adf7221b4f107d834091f001f584bed7bb217e3554dad9768a7a3443 6510620 
gap-doc_4r10p0-3_all.deb
 5f44544f457f6d4c3b46cd55d89f8de1812650e93484933d351011b3230f6ac4 4015116 
gap-libs_4r10p0-3_all.deb
 84fa21ec2061530518b70982f4e44d16d0b4a8cd83e70f65c35aa705e3d267a5 1294916 
gap-online-help_4r10p0-3_all.deb
 0a2027d53a7574ccc991881ef1a8df5085c98804687f611aaed33dc59d9834fb 12752 
gap_4r10p0-3_all.deb
 b159ef71728ec891bdfc5a733d8d429678a828ce6d87c830c5ce751e806f0e92 10522 
gap_4r10p0-3_amd64.buildinfo
Files:
 9846db1fdd1dcb79bac952b08756b76d 2195 math optional gap_4r10p0-3.dsc
 5a9b0c6edb4e50e7b9c6d3ca695d17f6 31176 math optional gap_4r10p0-3.debian.tar.xz
 366f3a674e69456122f2f9edf23f1004 6450404 debug optional 
gap-core-dbgsym_4r10p0-3_amd64.deb
 40ffed3b1f701741cfe1b2bc8cd0fa51 974556 math optional 
gap-core_4r10p0-3_amd64.deb
 1f9bec2d20a61acc37635f24e45bccc5 3761412 devel optional 
gap-dev_4r10p0-3_amd64.deb
 66dc929171251db01ec2cb2d649dd026 6510620 doc optional gap-doc_4r10p0-3_all.deb
 aa9c16fbe704b630887deac6f87f0eec 4015116 math optional 
gap-libs_4r10p0-3_all.deb
 8b1afe5bc4b3ca0ff0c1627a6cb87068 1294916 math optional 
gap-online-help_4r10p0-3_all.deb
 2416c02cc0ec7660e81ac77db8210d3c 12752 math optional gap_4r10p0-3_all.deb
 109fc7fe2d116e11b775a42729e215c3 10522 math optional 
gap_4r10p0-3_amd64.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEQgKOpASi6dgKxFMUjw58K0Ui44cFAlwa1/gACgkQjw58K0Ui
44dE2xAAob2bEuBWCaT/31HHBd2+BRnCSEpQeSiRurYmqzBi0Wr2Eoh+BtGeE1M1
ZRxKnQJErv7Lfx1htRUCQwYpCPzN0+TCvFpUz86AnMplW7v6sLDNcT1E0pttdeY2
+okqXRBF8ASs+BHAO1oPzoNYyrAokResfMLdDo3LmTXC0SrmRFh0IwJ23fgEiQWr
R+eo93OBxT+dfdaK6hs9Vj/V9s61FvYmbOxjzWXNwQlXnZkiG4lgnTpzPxtN5cAb
oTz8rKl+piqK9A1FOlJqFwzQTlfcvgjx9mzDYEvnf2RaXQ5Xsa36oLEfZtpqMjuX
AHqZSCMHzpVObnCHHZH9fX5/JAZD1pK24efCT32VgSeGoBqkRdiqFI9TerAX7l5v
euHoYxDGCtANeS2jsc3/468kziDUIJWt5yDzdUAg8cbJZjZ55LZrHSmVWy/tzvQ0
Q6tvr4uVOjN3tEpAAJ1MSR3DRtSz7ZF5tKHrU1iG0BlA3pfkRpuyYClUbYHBl33S
2S1RE4SJjS4GTbPB4XJtL81g8GpGvXnv06A/TPNiSRp0YIctD4OJyRBY+SAsLObb
9UvwRK2mzGcLTCCUnhdqRlwzI2Sga8MlUJhGHCJHwxTP5+4Zvyka3+IVEJO02kGi
0Vw975fM8kyIRcgDRokgTqvm72Z5FVRLQiVNAHNNJmshc5z7skw=
=qJqJ
-----END PGP SIGNATURE-----

--- End Message ---

Reply via email to