[Singular] Rebuild for ntl 8.1.0.

Jerry James jjames at fedoraproject.org
Thu Jan 15 21:11:51 UTC 2015


commit 7a725dcb13754b5ed755956f874a16e1b3ad286a
Author: Jerry James <jamesjer at betterlinux.com>
Date:   Thu Jan 15 13:51:37 2015 -0700

    Rebuild for ntl 8.1.0.
    
    Also:
    - Add Singular-ntl8.patch to adapt.

 Singular-ntl8.patch |   84 +++++++++++++++++++++++++++++++++++++++++++++++++++
 Singular.spec       |   31 ++++++++++++++++--
 2 files changed, 111 insertions(+), 4 deletions(-)
---
diff --git a/Singular-ntl8.patch b/Singular-ntl8.patch
new file mode 100644
index 0000000..28a27d7
--- /dev/null
+++ b/Singular-ntl8.patch
@@ -0,0 +1,84 @@
+--- Singular-3-1-6/factory/NTLconvert.cc.orig	2012-12-19 14:01:16.000000000 -0700
++++ Singular-3-1-6/factory/NTLconvert.cc	2015-01-12 20:00:00.000000000 -0700
+@@ -55,6 +55,63 @@
+ NTL_CLIENT
+ #endif
+ 
++// Needed explicit template instantiations for NTL 8.x.x
++template mat_zz_p::Mat(const mat_zz_p&);
++template mat_zz_pE::Mat(const mat_zz_pE&);
++
++template class Vec<Pair<GF2X, long> >;
++template class Vec<Pair<GF2EX, long> >;
++template class Vec<Pair<zz_pX, long> >;
++template class Vec<Pair<zz_pEX, long> >;
++template class Vec<Pair<ZZ_pX, long> >;
++template class Vec<Pair<ZZ_pEX, long> >;
++template class Vec<Pair<ZZX, long> >;
++template class Vec<Vec<zz_p> >;
++template class Vec<Vec<zz_pE> >;
++template class Vec<zz_p>;
++template class Vec<zz_pEX>;
++
++template long operator==<zz_p>(const vec_zz_p&, const vec_zz_p&);
++
++template void BlockConstruct<Pair<GF2X, long> >(Pair<GF2X, long>* p, long n);
++template void BlockConstruct<Pair<GF2EX, long> >(Pair<GF2EX, long>* p, long n);
++template void BlockConstruct<Pair<zz_pX, long> >(Pair<zz_pX, long>* p, long n);
++template void BlockConstruct<Pair<zz_pEX, long> >(Pair<zz_pEX, long>* p, long n);
++template void BlockConstruct<Pair<ZZ_pX, long> >(Pair<ZZ_pX, long>* p, long n);
++template void BlockConstruct<Pair<ZZ_pEX, long> >(Pair<ZZ_pEX, long>* p, long n);
++template void BlockConstruct<Pair<ZZX, long> >(Pair<ZZX, long>* p, long n);
++template void BlockConstruct<Vec<zz_p> >(Vec<zz_p>* p, long n);
++template void BlockConstruct<Vec<zz_pE> >(Vec<zz_pE>* p, long n);
++template void BlockConstruct<zz_pEX>(zz_pEX* p, long n);
++
++template void BlockConstructFromVec<Pair<GF2X, long> >(Pair<GF2X, long>* p, long n, const Pair<GF2X, long>* q);
++template void BlockConstructFromVec<Pair<GF2EX, long> >(Pair<GF2EX, long>* p, long n, const Pair<GF2EX, long>* q);
++template void BlockConstructFromVec<Pair<zz_pX, long> >(Pair<zz_pX, long>* p, long n, const Pair<zz_pX, long>* q);
++template void BlockConstructFromVec<Pair<zz_pEX, long> >(Pair<zz_pEX, long>* p, long n, const Pair<zz_pEX, long>* q);
++template void BlockConstructFromVec<Pair<ZZ_pX, long> >(Pair<ZZ_pX, long>* p, long n, const Pair<ZZ_pX, long>* q);
++template void BlockConstructFromVec<Pair<ZZ_pEX, long> >(Pair<ZZ_pEX, long>* p, long n, const Pair<ZZ_pEX, long>* q);
++template void BlockConstructFromVec<Pair<ZZX, long> >(Pair<ZZX, long>* p, long n, const Pair<ZZX, long>* q);
++template void BlockConstructFromVec<Vec<zz_p> >(Vec<zz_p>* p, long n, const Vec<zz_p>* q);
++template void BlockConstructFromVec<Vec<zz_pE> >(Vec<zz_pE>* p, long n, const Vec<zz_pE>* q);
++template void BlockConstructFromVec<zz_p>(zz_p* p, long n, const zz_p* q);
++template void BlockConstructFromVec<zz_pE>(zz_pE* p, long n, const zz_pE* q);
++template void BlockConstructFromVec<zz_pEX>(zz_pEX* p, long n, const zz_pEX* q);
++
++template void BlockConstructFromObj<Pair<GF2X, long> >(Pair<GF2X, long>* p, long n, const Pair<GF2X, long>& q);
++template void BlockConstructFromObj<Pair<GF2EX, long> >(Pair<GF2EX, long>* p, long n, const Pair<GF2EX, long>& q);
++template void BlockConstructFromObj<Pair<zz_pX, long> >(Pair<zz_pX, long>* p, long n, const Pair<zz_pX, long>& q);
++template void BlockConstructFromObj<Pair<zz_pEX, long> >(Pair<zz_pEX, long>* p, long n, const Pair<zz_pEX, long>& q);
++template void BlockConstructFromObj<Pair<ZZ_pX, long> >(Pair<ZZ_pX, long>* p, long n, const Pair<ZZ_pX, long>& q);
++template void BlockConstructFromObj<Pair<ZZ_pEX, long> >(Pair<ZZ_pEX, long>* p, long n, const Pair<ZZ_pEX, long>& q);
++template void BlockConstructFromObj<Pair<ZZX, long> >(Pair<ZZX, long>* p, long n, const Pair<ZZX, long>& q);
++template void BlockConstructFromObj<Vec<zz_p> >(Vec<zz_p>* p, long n, const Vec<zz_p>& q);
++template void BlockConstructFromObj<Vec<zz_pE> >(Vec<zz_pE>* p, long n, const Vec<zz_pE>& q);
++template void BlockConstructFromObj<zz_pEX>(zz_pEX* p, long n, const zz_pEX& q);
++
++template SmartPtr<GF2EInfoT> MakeSmart<GF2EInfoT, GF2X>(const GF2X &ptr);
++template SmartPtr<zz_pEInfoT> MakeSmart<zz_pEInfoT, zz_pX>(const zz_pX &ptr);
++template SmartPtr<ZZ_pInfoT> MakeSmart<ZZ_pInfoT, ZZ>(const ZZ &ptr);
++
+ ////////////////////////////////////////////////////////////////////////////////
+ // NAME: convertFacCF2NTLZZpX                                                 //
+ //                                                                            //
+@@ -511,7 +568,7 @@
+   }
+   else
+   {
+-    long sizeofrep= ((long *) a.rep) [1];
++    long sizeofrep= ((long *) &a) [1];
+     bool lessZero= false;
+     if (sizeofrep < 0)
+     {
+@@ -529,7 +586,7 @@
+       cf_stringtemp_l= sizeofrep*sizeof(mp_limb_t)*2;
+       cf_stringtemp= (unsigned char*) Alloc (cf_stringtemp_l);
+     }
+-    int cc= mpn_get_str (cf_stringtemp, 16, (mp_limb_t *) (((long *) (a.rep)) + 2), sizeofrep);
++    int cc= mpn_get_str (cf_stringtemp, 16, (mp_limb_t *) (((long *) &a) + 2), sizeofrep);
+ 
+     char* cf_stringtemp2;
+     if (lessZero)
diff --git a/Singular.spec b/Singular.spec
index 079f721..77ad034 100644
--- a/Singular.spec
+++ b/Singular.spec
@@ -1,8 +1,12 @@
 %global singulardir	%{_libdir}/Singular
 %global upstreamver	3-1-6
 
-%if 0%{?fedora} > 18
-%define ntl6 1
+%if 0%{?fedora} > 20
+%global ntl8 1
+%else
+%if 0%{?fedora}
+%global ntl6 1
+%endif
 %endif
 
 # If a library used by both polymake and Singular is updated, neither can be
@@ -13,7 +17,7 @@
 
 Name:		Singular
 Version:	%(tr - . <<<%{upstreamver})
-Release:	8%{?dist}
+Release:	9%{?dist}
 Summary:	Computer Algebra System for polynomial computations
 Group:		Applications/Engineering
 License:	BSD and LGPLv2+ and GPLv2+
@@ -28,7 +32,7 @@ BuildRequires:	flint-devel
 BuildRequires:	gmp-devel
 BuildRequires:	libxml2-devel
 BuildRequires:	ncurses-devel
-BuildRequires:	ntl-devel%{?ntl6: >= 6.0}
+BuildRequires:	ntl-devel%{?ntl8: >= 8.0}%{?ntl6: >= 6.0}
 %if %{with polymake}
 BuildRequires:	polymake-devel
 %endif
@@ -68,6 +72,8 @@ Patch12:	Singular-ntl6.patch
 Patch13:	Singular-arches.patch
 # Adapt to changes in flint 2.4
 Patch14:	Singular-flint24.patch
+# Adapt to new template code in NTL 8
+Patch15:	Singular-ntl8.patch
 
 ## Macaulay2 patches
 Patch20: Singular-M2_factory.patch
@@ -172,6 +178,9 @@ Emacs mode for Singular.
 %endif
 %patch13 -p1
 %patch14 -p1 -b .flint24
+%if 0%{?ntl8:1}
+%patch15 -p1
+%endif
 
 #patch20 -p1 -b .M2_factory
 #patch21 -p1 -b .M2_memutil_debuggging
@@ -270,6 +279,11 @@ make %{?_smp_mflags} -C gfanlib
 %endif
 
 pushd factory
+CFLAGS="%{optflags} -fPIC -fsigned-char -I%{_includedir}/cddlib -I%{_includedir}/flint"
+CXXFLAGS=$CFLAGS
+LDFLAGS="$RPM_LD_FLAGS -Wl,--as-needed -L$PWD/gfanlib"
+LIBS="-lpthread -ldl"
+
 %configure \
 	--bindir=%{singulardir} \
 	--includedir=%{_includedir}/factory \
@@ -421,6 +435,11 @@ pushd factory
     make DESTDIR=$RPM_BUILD_ROOT install
 # make a version without singular defined
     make clean
+    CFLAGS="%{optflags} -fPIC -fsigned-char -I%{_includedir}/cddlib -I%{_includedir}/flint"
+    CXXFLAGS=$CFLAGS
+    LDFLAGS="$RPM_LD_FLAGS -Wl,--as-needed -L$PWD/gfanlib"
+    LIBS="-lpthread -ldl"
+
 %configure \
 	--bindir=%{singulardir} \
 	--includedir=%{_includedir}/factory \
@@ -520,6 +539,10 @@ sed -e 's|<\(cf_gmp.h>\)|<factory/\1|' \
 %{_emacs_sitestartdir}/singular-init.el
 
 %changelog
+* Thu Jan 15 2015 Jerry James <loganjerry at gmail.com> - 3.1.6-9
+- Rebuild for ntl 8.1.0
+- Add Singular-ntl8.patch to adapt
+
 * Tue Oct 28 2014 Jerry James <loganjerry at gmail.com> - 3.1.6-8
 - Rebuild for ntl 6.2.1
 


More information about the scm-commits mailing list