[arch-commits] Commit in pari/trunk (PKGBUILD err_handle.patch)

Gaetan Bisson bisson at archlinux.org
Sat Feb 14 17:19:16 UTC 2015


    Date: Saturday, February 14, 2015 @ 18:19:15
  Author: bisson
Revision: 127692

add err_handle patch for sage-5.6

Added:
  pari/trunk/err_handle.patch
Modified:
  pari/trunk/PKGBUILD

------------------+
 PKGBUILD         |   10 +++--
 err_handle.patch |  105 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 111 insertions(+), 4 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2015-02-14 06:19:35 UTC (rev 127691)
+++ PKGBUILD	2015-02-14 17:19:15 UTC (rev 127692)
@@ -3,7 +3,7 @@
 
 pkgname=pari
 pkgver=2.7.2
-pkgrel=1
+pkgrel=2
 pkgdesc='Computer algebra system designed for fast computations in number theory'
 url='http://pari.math.u-bordeaux.fr/'
 license=('GPL')
@@ -11,13 +11,15 @@
 depends=('gmp' 'readline' 'libx11')
 makedepends=('perl' 'texlive-core')
 optdepends=('perl: gphelp, tex2mail')
-validpgpkeys=('42028EA404A2E9D80AC453148F0E7C2B4522E387')
-source=("http://pari.math.u-bordeaux.fr/pub/pari/unix/${pkgname}-${pkgver}.tar.gz"{,.asc})
-sha1sums=('27ef49c39860055ff97608bc323bff2afda1aa51' 'SKIP')
+source=("http://pari.math.u-bordeaux.fr/pub/pari/unix/${pkgname}-${pkgver}.tar.gz"
+        'err_handle.patch')
+sha1sums=('27ef49c39860055ff97608bc323bff2afda1aa51'
+          '182066ab765eddb0b7fd98b441c158304545f5ec')
 
 prepare() {
 	cd "${srcdir}/${pkgname}-${pkgver}"
 	sed 's/\$addlib64//g' -i config/get_libpth
+	patch -p1 -i ../err_handle.patch # sage-5.6 uses this¸ from upstream trunk
 }
 
 build() {

Added: err_handle.patch
===================================================================
--- err_handle.patch	                        (rev 0)
+++ err_handle.patch	2015-02-14 17:19:15 UTC (rev 127692)
@@ -0,0 +1,105 @@
+Add cb_pari_err_handle() callback
+
+Backported from upstream commits
+e9e659dc9ecb5ca6a8296c7922528a4ecbb89cb0
+26a7ae0f42918407febe9901ded41faf26ef43a6
+
+diff -ru src/src/headers/paricom.h b/src/headers/paricom.h
+--- src/src/headers/paricom.h	2014-03-25 09:59:21.000000000 +0100
++++ b/src/headers/paricom.h	2015-01-13 19:41:47.430885048 +0100
+@@ -81,6 +81,7 @@
+ extern int  (*cb_pari_whatnow)(PariOUT *out, const char *, int);
+ extern void (*cb_pari_sigint)(void);
+ extern int (*cb_pari_handle_exception)(long);
++extern int (*cb_pari_err_handle)(GEN);
+ extern void (*cb_pari_pre_recover)(long);
+ extern void (*cb_pari_err_recover)(long);
+ extern const char *pari_library_path;
+diff -ru src/src/language/init.c b/src/language/init.c
+--- src/src/language/init.c	2015-01-13 19:40:30.643622993 +0100
++++ b/src/language/init.c	2015-01-13 19:41:47.431884833 +0100
+@@ -87,6 +87,7 @@
+ 
+ void (*cb_pari_ask_confirm)(const char *);
+ int  (*cb_pari_handle_exception)(long);
++int  (*cb_pari_err_handle)(GEN);
+ int  (*cb_pari_whatnow)(PariOUT *out, const char *, int);
+ void (*cb_pari_sigint)(void);
+ void (*cb_pari_pre_recover)(long);
+@@ -732,6 +733,8 @@
+ static void
+ dflt_err_recover(long errnum) { (void) errnum; pari_exit(); }
+ 
++static int pari_err_display(GEN err);
++
+ /* initialize PARI data. Initialize [new|old]fun to NULL for default set. */
+ void
+ pari_init_opts(size_t parisize, ulong maxprime, ulong init_opts)
+@@ -739,6 +742,8 @@
+   ulong u;
+ 
+   cb_pari_whatnow = NULL;
++  cb_pari_handle_exception = NULL;
++  cb_pari_err_handle = pari_err_display;
+   cb_pari_pre_recover = NULL;
+   cb_pari_sigint = dflt_sigint_fun;
+   if (init_opts&INIT_JMPm) cb_pari_err_recover = dflt_err_recover;
+@@ -887,9 +892,6 @@
+   evalstate_reset();
+   killallfiles();
+   pari_init_errcatch();
+-  out_puts(pariErr, "\n");
+-  pariErr->flush();
+-
+   cb_pari_err_recover(numerr);
+ }
+ 
+@@ -1266,21 +1268,22 @@
+   return NULL; /*NOT REACHED*/
+ }
+ 
+-static void
++static int
+ pari_err_display(GEN err)
+ {
+   long numerr=err_get_num(err);
++  err_init();
+   if (numerr==e_SYNTAX)
+   {
+     const char *msg = GSTR(gel(err,2));
+     const char *s     = (const char *) gmael(err,3,1);
+     const char *entry = (const char *) gmael(err,3,2);
+     print_errcontext(pariErr, msg, s, entry);
+-    return;
+   }
+   else
+   {
+     char *s = pari_err2str(err);
++    closure_err(0);
+     err_init_msg(numerr, e_USER);
+     pariErr->puts(s);
+     if (numerr==e_NOTFUNC)
+@@ -1295,6 +1298,8 @@
+     }
+     pari_free(s);
+   }
++  out_term_color(pariErr, c_NONE);
++  pariErr->flush(); return 0;
+ }
+ 
+ void
+@@ -1315,12 +1320,9 @@
+   global_err_data = E;
+   if (*iferr_env) longjmp(*iferr_env, numerr);
+   mt_err_recover(numerr);
+-  err_init();
+-  if (numerr != e_SYNTAX) closure_err(0);
+-  pari_err_display(E);
+-  out_term_color(pariErr, c_NONE);
+   va_end(ap);
+-  pariErr->flush();
++  if (cb_pari_err_handle &&
++      cb_pari_err_handle(E)) return;
+   if (cb_pari_handle_exception &&
+       cb_pari_handle_exception(numerr)) return;
+   err_recover(numerr);



More information about the arch-commits mailing list