forked from Singular/Singular
-
Notifications
You must be signed in to change notification settings - Fork 0
GAP libsing in Sage with patches
mohamed-barakat edited this page Aug 28, 2012
·
2 revisions
-
Install gap-4.5.5 in Sage, if needed (see Sage trac #13211). That just amounts to
sage -i http://www.stp.dias.ie/~vbraun/Sage/spkg/gap-4.5.5.spkg sage -i http://www.stp.dias.ie/~vbraun/Sage/spkg/gap_packages-4.5.5.spkg sage -i http://www.stp.dias.ie/~vbraun/Sage/spkg/database_gap-4.5.5.spkg
-
Install a modified version of the Singular-3-1-5 spkg from Sage trac #13237. Here, you have to apply two patches to the Sage library. Then download the spkg, and open it:
tar -xjf singular-3-1-5.p0.spkg
Then, create a new file
singular-3-1-5.p0/patches/install_table.patch
with the following content:--- src/Singular/Makefile.in 2012-07-11 11:00:13.000000000 +0100 +++ src/Singular/Makefile.in 2012-08-27 16:22:26.013159361 +0100 @@ -599,7 +599,7 @@ ${INSTALL_PROGRAM} $$file ${libdir}; \ done ${INSTALL_PROGRAM} libsingular.h ${includedir} - for file in subexpr.h tok.h grammar.h ipid.h lists.h ipshell.h attrib.h; do \ + for file in subexpr.h tok.h grammar.h ipid.h lists.h ipshell.h attrib.h table.h; do \ sed -e "s:<kernel/:<singular/:" < $$file |sed -e "s:<Singular/:<singular/:"|sed -e "s:<omalloc/:<:"|sed -e "s:<factory/:<:" >${includedir}/singular/$$file ;\ done
Pack the package again:
tar -cjf singular-3-1-5.p1.spkg singular-3-1-5.p0
Install it and rebuild Sage:
sage -i singular-3-1-5.p1.spkg sage -b
-
Open a Sage shell (
sage -sh
) -
Issue the commands
cd $SAGE_LOCAL/gap-newest/pkg hg clone ssh://[email protected]/libsingular cd libsingular
-
Issue the commands
export LDFLAGS="-L$SAGE_LOCAL/lib -ldl -lpthread" export CFLAGS="-I$SAGE_LOCAL/include" export CPPFLAGS="-I$SAGE_LOCAL/include"
-
Edit
$SAGE_LOCAL/gap-newest/src/gmpints.h
, comment out the lines 54-58:#ifndef __GNU_MP_RELEASE #if __GMP_MP_RELEASE < 50002 #error Aborting compile: GAP requires GMP 5.0.2 or newer #endif #endif
-
Modify the sources according to the following diff:
diff --git a/SINGULARVERSION b/SINGULARVERSION deleted file mode 100644 --- a/SINGULARVERSION +++ /dev/null @@ -1,1 +0,0 @@ -3-1-5 diff --git a/src/Makefile.am b/src/Makefile.am --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,19 +1,17 @@ BINARCHDIR = bin/$(GAPARCH) GAPINSTALLLIB = $(abs_top_srcdir)/$(BINARCHDIR)/libsing.so -SINGULARNAME = Singular-`cat ../SINGULARVERSION` -SINGARCHNAME = `cat ../SINGARCHNAME` lib_LTLIBRARIES = libsing.la bin_PROGRAMS = gentableforGAP gentableforGAP_SOURCES = gentableforGAP.cc -gentableforGAP_CPPFLAGS = -I../${SINGULARNAME} -I../${SINGULARNAME}/Singular -gentableforGAP_LDFLAGS = -R${abs_top_srcdir}/${SINGULARNAME}/Singular -L${abs_top_srcdir}/${SINGULARNAME}/Singular -R${abs_top_srcdir}/${SINGULARNAME}/${SINGARCHNAME}/lib -lsingular -lpthread +gentableforGAP_CPPFLAGS = +gentableforGAP_LDFLAGS = -lsingular -lpthread libsing_la_SOURCES = libsing.c libsing.h cxxfuncs.cc -libsing_la_LDFLAGS = -module -avoid-version -R${abs_top_srcdir}/${SINGULARNAME}/Singular -L${abs_top_srcdir}/${SINGULARNAME}/Singular -R${abs_top_srcdir}/${SINGULARNAME}/${SINGARCHNAME}/lib -lsingular -lpthread +libsing_la_LDFLAGS = -module -avoid-version -lsingular -lpthread libsing_la_LIBADD = -libsing_la_CPPFLAGS = $(GAP_CPPFLAGS) -I../${SINGULARNAME}/${SINGARCHNAME}/include +libsing_la_CPPFLAGS = $(GAP_CPPFLAGS) # Change it so that make all also does a make install (to build the .so) # and then copies it to the correct bin directory diff --git a/src/Makefile.in b/src/Makefile.in --- a/src/Makefile.in +++ b/src/Makefile.in @@ -251,16 +251,14 @@ top_srcdir = @top_srcdir@ BINARCHDIR = bin/$(GAPARCH) GAPINSTALLLIB = $(abs_top_srcdir)/$(BINARCHDIR)/libsing.so -SINGULARNAME = Singular-`cat ../SINGULARVERSION` -SINGARCHNAME = `cat ../SINGARCHNAME` lib_LTLIBRARIES = libsing.la gentableforGAP_SOURCES = gentableforGAP.cc -gentableforGAP_CPPFLAGS = -I../${SINGULARNAME} -I../${SINGULARNAME}/Singular -gentableforGAP_LDFLAGS = -R${abs_top_srcdir}/${SINGULARNAME}/Singular -L${abs_top_srcdir}/${SINGULARNAME}/Singular -R${abs_top_srcdir}/${SINGULARNAME}/${SINGARCHNAME}/lib -lsingular -lpthread +gentableforGAP_CPPFLAGS = +gentableforGAP_LDFLAGS = -lsingular -lpthread libsing_la_SOURCES = libsing.c libsing.h cxxfuncs.cc -libsing_la_LDFLAGS = -module -avoid-version -R${abs_top_srcdir}/${SINGULARNAME}/Singular -L${abs_top_srcdir}/${SINGULARNAME}/Singular -R${abs_top_srcdir}/${SINGULARNAME}/${SINGARCHNAME}/lib -lsingular -lpthread +libsing_la_LDFLAGS = -module -avoid-version -lsingular -lpthread libsing_la_LIBADD = -libsing_la_CPPFLAGS = $(GAP_CPPFLAGS) -I../${SINGULARNAME}/${SINGARCHNAME}/include +libsing_la_CPPFLAGS = $(GAP_CPPFLAGS) all: pkgconfig.h $(MAKE) $(AM_MAKEFLAGS) all-am diff --git a/src/gentableforGAP.cc b/src/gentableforGAP.cc --- a/src/gentableforGAP.cc +++ b/src/gentableforGAP.cc @@ -14,9 +14,9 @@ #include <time.h> #include <unistd.h> -#include <Singular/mod2.h> -#include <Singular/tok.h> -#include <Singular/grammar.h> +#include <singular/mod2.h> +#include <singular/tok.h> +#include <singular/grammar.h> // to produce convert_table.texi for doc: //#define CONVERT_TABLE 1 @@ -112,7 +112,7 @@ #define IPCONV #define IPASSIGN -#include "table.h" +#include "singular/table.h" const char * Tok2Cmdname(int tok) {
-
Issue the commands
autoreconf -v ./configure --with-gaproot=$SAGE_LOCAL/gap-newest make
-
Run some example, such as the one in
$SAGE_LOCAL/gap-newest/pkg/libsingular/example
.