diff --git a/.gitignore b/.gitignore index 799c172..dd72b85 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /Singular-*.tar.gz /singular-*.tar.gz /surfex.tar.xz +/Release-*.tar.gz diff --git a/README.md b/README.md new file mode 100644 index 0000000..e729a1d --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +# Singular + +[Singular](https://www.singular.uni-kl.de/) is a computer algebra system for +polynomial computations, with special emphasis on commutative and +non-commutative algebra, algebraic geometry, and singularity theory. It is +free and open-source under the GNU General Public License. diff --git a/Singular-arches.patch b/Singular-arches.patch index 237777c..fa10e3f 100644 --- a/Singular-arches.patch +++ b/Singular-arches.patch @@ -1,34 +1,9 @@ ---- singular-4.1.1/m4/cpu-check.m4.orig 2018-07-31 07:05:52.000000000 -0600 -+++ singular-4.1.1/m4/cpu-check.m4 2018-10-24 08:32:44.713629407 -0600 -@@ -37,6 +37,18 @@ if test "$ac_cv_singcpuname" = ppc; then - AC_DEFINE(SI_CPU_PPC,1,"PPC") - AC_SUBST(SI_CPU_PPC) - fi -+if test "$ac_cv_singcpuname" = arm -o "$ac_cv_singcpuname" = armel; then -+ AC_DEFINE(SI_CPU_ARM,1,"ARM") -+ AC_SUBST(SI_CPU_ARM) -+fi -+if test "$ac_cv_singcpuname" = aarch64; then -+ AC_DEFINE(SI_CPU_AARCH64,1,"AARCH64") -+ AC_SUBST(SI_CPU_AARCH64) -+fi -+if test "$ac_cv_singcpuname" = s390; then -+ AC_DEFINE(SI_CPU_S390,1,"S390") -+ AC_SUBST(SI_CPU_S390) -+fi - - # UNAME and PATH - AC_MSG_CHECKING(uname for Singular) -@@ -65,6 +77,14 @@ dnl testet on: ppc_Linux, 740/750 PowerM - [powerpc*|ppc*], [AC_DEFINE(HAVE_GENERIC_MULT,1,multiplication is fast on the cpu: a*b is with mod otherwise using tables of logartihms)], - dnl the following settings seems to be better on arm processors - [arm*], [], -+dnl FIXME: need to run some tests -+ [aarch64*], [ -+ AC_DEFINE(HAVE_MULT_MOD,1,multiplication is fast on the cpu: a*b is with mod otherwise using tables of logartihms) -+ AC_DEFINE(HAVE_GENERIC_ADD,1,use branch for addition in Z/p otherwise it uses a generic add) -+ AC_DEFINE(HAVE_DIV_MOD,1,division using extend euclidian algorithm otherwise using tables of logartihms) -+ ], +--- Singular-Release-4-2-1p3/m4/cpu-check.m4.orig 2021-12-17 11:35:18.000000000 -0700 ++++ Singular-Release-4-2-1p3/m4/cpu-check.m4 2022-03-03 15:28:43.256747747 -0700 +@@ -69,6 +69,8 @@ dnl the following settings seems to be b + AC_DEFINE(HAVE_INVTABLE,1,division via a table of logarithms) + AC_DEFINE(HAVE_GENERIC_MULT,1,multiplication is fast on the cpu: a*b is with mod otherwise using tables of logartihms) + ], +dnl FIXME: need to run some tests + [s390*], [AC_DEFINE(HAVE_GENERIC_ADD,1,use branch for addition in Z/p otherwise it uses a generic add)], [] diff --git a/Singular-emacs.patch b/Singular-emacs.patch index b0e14a0..4b573bd 100644 --- a/Singular-emacs.patch +++ b/Singular-emacs.patch @@ -1,5 +1,5 @@ ---- singular-4.2.0/emacs/.emacs-singular.orig 2021-04-14 06:26:53.000000000 -0600 -+++ singular-4.2.0/emacs/.emacs-singular 2021-05-25 19:58:16.350688397 -0600 +--- Singular-Release-4-2-1p3/emacs/.emacs-singular.orig 2021-12-17 11:35:18.000000000 -0700 ++++ Singular-Release-4-2-1p3/emacs/.emacs-singular 2022-03-03 15:36:50.506016980 -0700 @@ -185,7 +185,7 @@ "" "/"))) @@ -18,14 +18,14 @@ (add-submenu nil '("Singular" ["Start default" singular t] ---- singular-4.2.0/resources/feResource.cc.orig 2021-04-14 06:26:53.000000000 -0600 -+++ singular-4.2.0/resources/feResource.cc 2021-05-25 19:58:16.351688394 -0600 -@@ -83,7 +83,7 @@ VAR feResourceConfig_s feResourceConfigs +--- Singular-Release-4-2-1p3/resources/feResource.cc.orig 2022-03-03 15:36:50.506016980 -0700 ++++ Singular-Release-4-2-1p3/resources/feResource.cc 2022-03-03 15:37:33.897043556 -0700 +@@ -76,7 +76,7 @@ VAR feResourceConfig_s feResourceConfigs {"RootDir", 'r', feResDir, "SINGULAR_ROOT_DIR", "%b/..", (char *)""}, {"DataDir", 'D', feResDir, "SINGULAR_DATA_DIR", "%b/../share/", (char *)""}, {"DefaultDir",'d', feResDir, "SINGULAR_DEFAULT_DIR", SINGULAR_DEFAULT_DIR, (char *)""}, -- {"InfoFile", 'i', feResFile, "SINGULAR_INFO_FILE", "%D/info/singular.hlp", (char *)""}, -+ {"InfoFile", 'i', feResFile, "SINGULAR_INFO_FILE", "%D/info/singular.hlp.gz", (char *)""}, +- {"InfoFile", 'i', feResFile, "SINGULAR_INFO_FILE", "%D/info/singular.info", (char *)""}, ++ {"InfoFile", 'i', feResFile, "SINGULAR_INFO_FILE", "%D/info/singular.info.gz", (char *)""}, {"IdxFile", 'x', feResFile, "SINGULAR_IDX_FILE", "%D/singular/singular.idx", (char *)""}, {"HtmlDir", 'h', feResDir, "SINGULAR_HTML_DIR", "%D/singular/html", (char *)""}, {"ManualUrl", 'u', feResUrl, "SINGULAR_URL", "https://www.singular.uni-kl.de/Manual/", (char *)""}, diff --git a/Singular-gcc12.patch b/Singular-gcc12.patch new file mode 100644 index 0000000..dc7f9be --- /dev/null +++ b/Singular-gcc12.patch @@ -0,0 +1,10 @@ +--- Singular-Release-4-2-1p3/kernel/oswrapper/vspace.cc.orig 2021-12-17 11:35:18.000000000 -0700 ++++ Singular-Release-4-2-1p3/kernel/oswrapper/vspace.cc 2022-03-03 16:09:04.971209163 -0700 +@@ -555,6 +555,7 @@ int EventSet::wait() { + + } // namespace vspace + #else ++#include + #include + #include + #include diff --git a/Singular.spec b/Singular.spec index eed72a8..092c069 100644 --- a/Singular.spec +++ b/Singular.spec @@ -1,5 +1,5 @@ %global singulardir %{_libdir}/Singular -%global upstreamver 4-2-0 +%global upstreamver 4-2-1 %global downstreamver %(tr - . <<< %{upstreamver}) %global patchver p3 @@ -12,7 +12,7 @@ Name: Singular Version: %{downstreamver}%{?patchver} -Release: 3%{?dist} +Release: 1%{?dist} Summary: Computer Algebra System for polynomial computations # License analysis: # - factory/readcf.cc, Singular/grammar.cc, and Singular/grammar.h are @@ -25,14 +25,7 @@ Summary: Computer Algebra System for polynomial computations # - Everything else is marked either "GPLv2 or GPLv3" or "GPLv2 or later", with # the former more strict than the latter License: GPLv2 or GPLv3 -Source0: http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/SOURCES/%{upstreamver}/singular-%{version}.tar.gz -# Java sources omitted from the source tarball. To recreate this: -# - git clone https://github.com/Singular/Sources.git -# - cd Sources -# - git checkout spielwiese -# - git reset --hard 0dabbb616c7d95f0c9e81e9f51b857e3a0bb9e7c -# - tar cJf surfex.tar.xz Singular/LIB/surfex -Source1: surfex.tar.xz +Source0: https://github.com/Singular/Singular/archive/Release-%{upstreamver}%{?patchver}.tar.gz URL: https://www.singular.uni-kl.de/ BuildRequires: 4ti2 BuildRequires: bison @@ -69,6 +62,7 @@ BuildRequires: pkgconfig(zlib) %if %{with python} BuildRequires: python2-devel %endif +BuildRequires: qepcad-B # Need uudecode for documentation images in tarball BuildRequires: sharutils BuildRequires: surf-geometry @@ -78,6 +72,7 @@ BuildRequires: TOPCOM Requires: %{name}-libs%{?_isa} = %{version}-%{release} Requires: environment(modules) Requires: less +Requires: qepcad-B Requires: surf-geometry Requires: TOPCOM%{_isa} @@ -101,10 +96,12 @@ Patch5: %{name}-parens.patch Patch6: %{name}-gfanlib.patch # Fix code that violates the strict aliasing rules Patch7: %{name}-alias.patch -# Let ESingular read a compressed singular.hlp file +# Let ESingular read a compressed singular.info file Patch8: %{name}-emacs.patch # Adapt to Java 11 Patch9: %{name}-javac.patch +# Adapt to GCC 12 +Patch10: %{name}-gcc12.patch %description Singular is a computer algebra system for polynomial computations, with @@ -197,7 +194,7 @@ This package contains the Singular java interface. %prep -%autosetup -n singular-%{downstreamver} -a 1 -p1 +%autosetup -n Singular-Release-%{upstreamver}%{?patchver} -p1 %if %{with python} # Fix the name of the boost_python library @@ -221,10 +218,10 @@ export CPPFLAGS="-I%{_includedir}/flint -I%{_includedir}/gfanlib" pyincdir=$(python2 -Esc "import sysconfig; print(sysconfig.get_paths()['include'])") CPPFLAGS="$CPPFLAGS -I$pyincdir" %endif -export CFLAGS="%{optflags} -fPIC -fno-delete-null-pointer-checks" -export CXXFLAGS="$CFLAGS" +export CFLAGS="%{build_cflags} -fPIC -fno-delete-null-pointer-checks" +export CXXFLAGS="%{build_cxxflags} -fPIC -fno-delete-null-pointer-checks" # Cannot use RPM_LD_FLAGS, as -Wl,-z,now breaks lazy module loading -export LDFLAGS="-Wl,-z,relro" +export LDFLAGS="-Wl,--as-needed -Wl,-z,relro" module load 4ti2-%{_arch} module load lrcalc-%{_arch} @@ -258,16 +255,18 @@ module load lrcalc-%{_arch} --without-python \ %endif --with-readline \ - --disable-doc \ + --enable-doc \ --with-malloc=system %make_build %make_build -C dox html +make -C Singular libparse +make -C doc -f Makefile-docbuild singular.idx +make -C doc all-local pushd Singular/LIB/surfex ./make_surfex popd - %install %make_install @@ -284,6 +283,12 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/Singular.desktop desktop-file-validate \ %{buildroot}%{_datadir}/applications/Singular-manual.desktop +# Remove unnecessary dependencies from the pkgconfig files +sed -i 's/ -lflint.*//;s/Libs\.private.*/& -lflint -lmpfr -lntl -lgmp/' \ + %{buildroot}%{_libdir}/pkgconfig/factory.pc +sed -i 's/ -lflint.*//;s/Libs\.private.*/& -lflint -lmpfr -lgmp/' \ + %{buildroot}%{_libdir}/pkgconfig/libpolys.pc + # We don't want the libtool files rm -f %{buildroot}%{_libdir}/*.la rm -f %{buildroot}%{_libexecdir}/singular/MOD/*.la @@ -300,7 +305,9 @@ mkdir -p %{buildroot}%{_mandir}/man1 for cmd in ESingular Singular TSingular; do cp -p Singular/$cmd.man %{buildroot}%{_mandir}/man1/$cmd.1 done -cp -p doc/singular.idx %{buildroot}%{_datadir}/singular +cp -a doc/{html,singular.idx} %{buildroot}%{_datadir}/singular +mkdir -p %{buildroot}%{_infodir} +cp -p doc/singular.info %{buildroot}%{_infodir} # remove script that calls surf; we don't ship it rm -f %{buildroot}%{singulardir}/singularsurf @@ -362,7 +369,7 @@ make check %doc README.md %{_bindir}/Singular %{_bindir}/TSingular -%{_infodir}/singular.hlp* +%{_infodir}/singular.info* %{_mandir}/man1/Singular.1* %{_mandir}/man1/TSingular.1* %{_datadir}/applications/Singular.desktop @@ -372,6 +379,7 @@ make check %{_datadir}/singular/singular.idx %docdir %{_datadir}/singular/html/ %{_datadir}/singular/html/ +%dir %{singulardir} %{singulardir}/Singular %{singulardir}/TSingular @@ -380,7 +388,7 @@ make check %license COPYING %license GPL2 %license GPL3 -%{_libdir}/libSingular-4.2.0.so +%{_libdir}/libSingular-%{downstreamver}.so %{_libexecdir}/singular/ %dir %{_datadir}/singular/ %{_datadir}/singular/LIB/ @@ -419,9 +427,9 @@ make check %files -n factory %license factory/COPYING %doc factory/README -%{_libdir}/libfactory-4.2.0.so +%{_libdir}/libfactory-%{downstreamver}.so %{_libdir}/libomalloc-0.9.6.so -%{_libdir}/libsingular_resources-4.2.0.so +%{_libdir}/libsingular_resources-%{downstreamver}.so %files -n factory-devel %doc factory/examples @@ -441,7 +449,7 @@ make check %files libpolys %license libpolys/COPYING %doc libpolys/README -%{_libdir}/libpolys-4.2.0.so +%{_libdir}/libpolys-%{downstreamver}.so %files libpolys-devel %{_bindir}/libpolys-config @@ -456,6 +464,10 @@ make check %changelog +* Thu Mar 17 2022 Jerry James - 4.2.1p3-1 +- Version 4.2.1p3 +- Add patch for GCC 12 + * Sat Feb 05 2022 Jiri Vanek - 4.2.0p3-3 - Rebuilt for java-17-openjdk as system jdk diff --git a/sources b/sources index 32260fb..6156272 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -SHA512 (singular-4.2.0p3.tar.gz) = b9833389b648ec4ba2bd09253f00254b9ae3dc61313fc81c9003b283fc413caab4274e55750de1c342ef24a8fc0ce817643cd31eabbb2999de7f5017dfa1411f -SHA512 (surfex.tar.xz) = a8c5db044bc948f5d783b8efebd51e79839c94c62924ae13db63e0ed3421e15e9812ee19a4caf242fc0d3b5cdcdb4ff8736869a22ba8e7283283732f41d23dcd +SHA512 (Release-4-2-1p3.tar.gz) = 3fca71ead9d3fa190e69f17b342a3321039864b99edfe571d58f9568996c8a25eea2e3f324b78acc37eb14e393a32d856eaf98c366f73f78a586757a68a6be60