Package: pari-gp
Version: 2.7.2-1
Severity: wishlist
While trying to use the debian package in sagemath, it turned out two
things were lacking to make it work:
- they use anal.h ;
- they also have backported patches to add cb_pari_err_handle from
upstream's repository (see end of this mail).
Can we get those in debian too?
Snark on #debian-science
PS: their cb_pari_err_handle.patch looks like:
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);
--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org