a02f33e
#%#undefine _hardened_build
2f1adea
%global singulardir	%{_libdir}/Singular
75c3e97
%global upstreamver	3-1-7
2f1adea
Jerry James 7a725dc
%if 0%{?fedora}
b15edac
%global ntl8 1
Rex Dieter f482723
%endif
Rex Dieter f482723
Jerry James b510381
# If a library used by both polymake and Singular is updated, neither can be
Jerry James b510381
# rebuilt, because each BRs the other and both are linked against the old
Jerry James b510381
# version of the library.  Use this to rebuild Singular without polymake
Jerry James b510381
# support, rebuild polymake, then build Singular again with polymake support.
3b780f3
%bcond_without polymake
Jerry James b510381
2f1adea
Name:		Singular
Jerry James c86e3c1
Version:	%(tr - . <<<%{upstreamver})
75c3e97
Release:	1%{?dist}
2f1adea
Summary:	Computer Algebra System for polynomial computations
2f1adea
Group:		Applications/Engineering
2f1adea
License:	BSD and LGPLv2+ and GPLv2+
Jerry James c86e3c1
Source0:	http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/SOURCES/%{upstreamver}/%{name}-%{upstreamver}.tar.gz
Jerry James cce1b6b
# TEMPORARY: Remove this once Singular ships an updated version
Jerry James cce1b6b
Source1:	normaliz.lib
2f1adea
URL:		http://www.singular.uni-kl.de/
75c3e97
BuildRequires:	bison
Rex Dieter 31b36bd
BuildRequires:	cddlib-devel
2f1adea
BuildRequires:	emacs
2f1adea
BuildRequires:	flex
Rex Dieter 31b36bd
BuildRequires:	flint-devel
75c3e97
BuildRequires:	gcc-c++
2f1adea
BuildRequires:	gmp-devel
Rex Dieter 31b36bd
BuildRequires:	libxml2-devel
2f1adea
BuildRequires:	ncurses-devel
b15edac
BuildRequires:	ntl-devel%{?ntl8: >= 8.0}
Jerry James b510381
%if %{with polymake}
Rex Dieter 31b36bd
BuildRequires:	polymake-devel
Jerry James b510381
%endif
2f1adea
BuildRequires:	readline-devel
2f1adea
# Need uudecode for documentation images in tarball
2f1adea
BuildRequires:	sharutils
75c3e97
BuildRequires:	texinfo-tex
2f1adea
BuildRequires:	tex(latex)
Rex Dieter 31b36bd
BuildRequires:	zlib-devel
Rex Dieter d9f73c5
Requires:	factory-gftables = %{version}-%{release}
Rex Dieter 31b36bd
Requires:	less
872f6f8
Requires:	surf-geometry
82a436c
2f1adea
# Use destdir in install targets
82a436c
Patch1:		Singular-destdir.patch
2f1adea
# Find headers in source tree
82a436c
Patch2:		Singular-headers.patch
2f1adea
# Find and link to generated libraries
82a436c
Patch3:		Singular-link.patch
2f1adea
# Do not attempt to load non existing modules, do not even run
2f1adea
# the binary in DESTDIR when building the documentation
82a436c
Patch4:		Singular-doc.patch
2f1adea
# Correct koji error:
2f1adea
# ** ERROR: No build ID note found in /builddir/build/BUILDROOT/Singular-3.1.3-1.fc16.x86_64/usr/lib64/Singular/dbmsr.so
82a436c
Patch5:		Singular-builddid.patch
Rex Dieter 31b36bd
# Correct undefined symbols in libsingular
2f1adea
# This patch removes a hack to avoid duplicated symbols in tesths.cc
2f1adea
# when calling mp_set_memory_functions, what is a really a bad idea on
2f1adea
# a shared library.
82a436c
Patch6:		Singular-undefined.patch
82a436c
Jerry James c86e3c1
# Add missing #include directives in the semaphore code
Jerry James c86e3c1
Patch11:	Singular-semaphore.patch
Rex Dieter 31b36bd
# Support ARM and S390(x) architectures
Rex Dieter 31b36bd
Patch13:	Singular-arches.patch
Jerry James 7a725dc
# Adapt to new template code in NTL 8
Jerry James 7a725dc
Patch15:	Singular-ntl8.patch
Jerry James c86e3c1
3a0e2a5
# Previous perl warning is now an error
3a0e2a5
Patch17:	Singular-perl-5.22.patch
75c3e97
# Fix a broken boolean expression
75c3e97
Patch18:	Singular-boolean.patch
a02f33e
2f1adea
%description
2f1adea
Singular is a computer algebra system for polynomial computations, with
2f1adea
special emphasis on commutative and non-commutative algebra, algebraic
2f1adea
geometry, and singularity theory. It is free and open-source under the
2f1adea
GNU General Public Licence.
2f1adea
2f1adea
%package	devel
2f1adea
Summary:	Singular development files
2f1adea
Group:		Development/Libraries
2f1adea
Requires:	factory-devel
2f1adea
Requires:	libfac-devel
2f1adea
Requires:	%{name}%{?_isa} = %{version}-%{release}
2f1adea
2f1adea
%description	devel
2f1adea
This package contains the Singular development files.
2f1adea
2f1adea
%package	-n factory-devel
2f1adea
Summary:	C++ class library for multivariate polynomial data
2f1adea
Group:		Development/Libraries
2f1adea
Requires:	gmp-devel
2f1adea
Obsoletes:	factory-static < %{version}-%{release}
2f1adea
Provides:	factory-static = %{version}-%{release}
2f1adea
2f1adea
%description	-n factory-devel 
2f1adea
Factory is a C++ class library that implements a recursive representation
2f1adea
of multivariate polynomial data.
2f1adea
Rex Dieter d9f73c5
%package	-n factory-gftables
Rex Dieter 31b36bd
Summary:	Factory addition tables
Rex Dieter d9f73c5
Group:		Applications/Engineering
Rex Dieter d9f73c5
BuildArch: noarch
Rex Dieter d9f73c5
Rex Dieter d9f73c5
%description -n	factory-gftables
Rex Dieter d9f73c5
Factory uses addition tables to calculate in GF(p^n) in an efficient way.
Rex Dieter d9f73c5
Rex Dieter d9f73c5
2f1adea
%package	-n libfac-devel
2f1adea
Summary:	An extension to Singular-factory
2f1adea
Group:		Development/Libraries
2f1adea
Obsoletes:	libfac-static < %{version}-%{release}
2f1adea
Provides:	libfac-static = %{version}-%{release}
2f1adea
2f1adea
%description	-n libfac-devel
2f1adea
Singular-libfac is an extension to Singular-factory which implements
2f1adea
factorization of polynomials over finite fields and algorithms for
2f1adea
manipulation of polynomial ideals via the characteristic set methods
2f1adea
(e.g., calculating the characteristic set and the irreducible
2f1adea
characteristic series).
2f1adea
2f1adea
%package	examples
2f1adea
Summary:	Singular example files
2f1adea
Group:		Applications/Engineering
2f1adea
Requires:	%{name}%{?_isa} = %{version}-%{release}
2f1adea
2f1adea
%description	examples
2f1adea
This package contains the Singular example files.
2f1adea
2f1adea
%package	doc
2f1adea
Summary:	Singular documentation files
2f1adea
Group:		Applications/Engineering
2f1adea
Requires:	%{name}%{?_isa} = %{version}-%{release}
2f1adea
2f1adea
%description	doc
2f1adea
This package contains the Singular documentation files.
2f1adea
2f1adea
%package	surfex
2f1adea
Summary:	Singular java interface
2f1adea
Group:		Applications/Engineering
2f1adea
Requires:	java
2f1adea
Requires:	%{name}%{?_isa} = %{version}-%{release}
2f1adea
2f1adea
%description	surfex
2f1adea
This package contains the Singular java interface.
2f1adea
2f1adea
%package	emacs
2f1adea
Summary:	Emacs mode for Singular
2f1adea
Group:		Applications/Engineering
2f1adea
Requires:	emacs-common
2f1adea
Requires:	%{name}%{?_isa} = %{version}-%{release}
2f1adea
2f1adea
%description	emacs
2f1adea
Emacs mode for Singular.
2f1adea
2f1adea
%prep
Jerry James c86e3c1
%setup -q -n %{name}-%{upstreamver}
Rex Dieter 31b36bd
%patch1 -p1 -b .destdir
Rex Dieter 31b36bd
%patch2 -p1 -b .headers
Rex Dieter 31b36bd
%patch3 -p1 -b .link
2f1adea
%patch4 -p1
Rex Dieter 31b36bd
%patch5 -p1 -b .builddid
Rex Dieter 31b36bd
%patch6 -p1 -b .undefined
82a436c
Jerry James c86e3c1
%patch11 -p1
Rex Dieter 31b36bd
%patch13 -p1
Jerry James 7a725dc
%if 0%{?ntl8:1}
Jerry James 7a725dc
%patch15 -p1
Jerry James 7a725dc
%endif
3a0e2a5
%patch17 -p1
75c3e97
%patch18 -p1
8613226
2f1adea
sed -i -e "s|gftabledir=.*|gftabledir='%{singulardir}/LIB/gftables'|"	\
2f1adea
    -e "s|explicit_gftabledir=.*|explicit_gftabledir='%{singulardir}/LIB/gftables'|" \
Rex Dieter 31b36bd
    factory/configure.in factory/configure
2f1adea
Jerry James c86e3c1
# Build the debug libfactory with the right CFLAGS
75c3e97
sed -i '/FLINT/s/\($(CPPFLAGS)\)$/\1 $(CFLAGS)/' factory/GNUmakefile.in
Jerry James c86e3c1
Rex Dieter 31b36bd
# Build the debug kernel with the right CFLAGS
Rex Dieter 31b36bd
sed -ri 's/(C(XX)?FLAGS)(.*= )-g/\1\3$(\1)/' kernel/Makefile.in
Rex Dieter 31b36bd
Rex Dieter 31b36bd
# Build libparse with the right CFLAGS
Rex Dieter 31b36bd
sed -r 's/(\$\{CXX\})[[:blank:]]+(-O2[[:blank:]]+)?(\$\{CPPFLAGS\})/\1 $\{CXXFLAGS\} \3/' \
Rex Dieter 31b36bd
    -i Singular/Makefile.in
Rex Dieter 31b36bd
75c3e97
# Fix permissions and preserve timestamps
75c3e97
sed -e 's,${INSTALL_PROGRAM} libsingular.h,${INSTALL_DATA} libsingular.h,' \
75c3e97
    -e 's/cp /&-p /' \
75c3e97
    -i Singular/Makefile.in
Jerry James 6bfa5e4
2f1adea
# Force use of system ntl
2f1adea
rm -fr ntl
2f1adea
Rex Dieter 31b36bd
# Adapt to the Fedora flint package
Jerry James 2975815
mkdir -p flint/include
Jerry James 2975815
ln -s %{_includedir}/flint flint/include/flint
Rex Dieter 31b36bd
ln -s %{_libdir} flint/lib
Rex Dieter 31b36bd
sed -i 's/lmpir/lgmp/' factory/configure Singular/configure
Rex Dieter 31b36bd
Jerry James 6bfa5e4
# Unbreak the (call)gfanlib/callpolymake installs
Rex Dieter 31b36bd
sed -i '/^install:/iinstall-libsingular:\n' \
Jerry James 6bfa5e4
    gfanlib/Makefile.in callgfanlib/Makefile.in
Jerry James 6bfa5e4
sed -e '/^install /iinstall-libsingular:\n' \
Jerry James 6bfa5e4
    -e 's/mkdir/mkdir -p/' \
Jerry James 6bfa5e4
    -i callpolymake/Makefile.in
Rex Dieter 31b36bd
sed -ri 's/@(prefix|exec_prefix|libdir|includedir)@/$(DESTDIR)&/g' \
Rex Dieter 31b36bd
    gfanlib/Makefile.in
Rex Dieter 31b36bd
Jerry James b510381
# Fix the default paths
Jerry James b510381
sed -e 's/"S_UNAME"/Singular/' \
Jerry James b510381
    -e 's/"S_UNAME/Singular"/' \
75c3e97
    -e 's/S_VERSION1/ &/' \
Jerry James b510381
    -e 's,%b/\.\.,%b,' \
Jerry James b510381
    -e 's,S_ROOT_DIR,"%{_libdir}",' \
Jerry James b510381
    -i.orig kernel/feResource.cc
Jerry James b510381
touch -r kernel/feResource.cc.orig kernel/feResource.cc
Jerry James b510381
75c3e97
%if 0%{?fedora}
Jerry James cce1b6b
# TEMPORARY: Remove this once Singular ships an updated version
Jerry James cce1b6b
cp -p %{SOURCE1} Singular/LIB
Rex Dieter 19a904e
%endif
Jerry James cce1b6b
2f1adea
%build
75c3e97
export CFLAGS="%{optflags} -fPIC -fsigned-char -fno-delete-null-pointer-checks -I%{_includedir}/cddlib -I%{_includedir}/flint"
2f1adea
export CXXFLAGS=$CFLAGS
Rex Dieter 31b36bd
export LDFLAGS="$RPM_LD_FLAGS -Wl,--as-needed -L$PWD/gfanlib"
Jerry James c86e3c1
export LIBS="-lpthread -ldl"
2f1adea
2f1adea
# build components in specific order to not need to build & install
2f1adea
# in a single make command
2f1adea
%configure \
2f1adea
	--bindir=%{singulardir} \
2f1adea
	--with-apint=gmp \
Rex Dieter 31b36bd
	--with-flint=$PWD/flint \
2f1adea
	--with-gmp=%{_prefix} \
2f1adea
	--with-ntl=%{_prefix} \
2f1adea
	--with-NTL \
2f1adea
	--without-MP \
2f1adea
	--without-lex \
2f1adea
	--without-bison \
2f1adea
	--without-Boost \
2f1adea
	--enable-gmp=%{_prefix} \
2f1adea
	--enable-Singular \
2f1adea
	--enable-factory \
2f1adea
	--enable-libfac \
2f1adea
	--enable-IntegerProgramming \
Rex Dieter 31b36bd
	--enable-gfanlib \
Jerry James b510381
%if %{with polymake}
Rex Dieter 31b36bd
	--enable-polymake \
Jerry James b510381
%endif
2f1adea
	--disable-doc \
2f1adea
	--with-malloc=system
82a436c
# remove bogus -L/usr/kernel from linker command line and
82a436c
# do not put standard library in linker command line to avoid
82a436c
# linking with a system wide libsingcf or libfacf
82a436c
sed -i 's|-L%{_prefix}/kernel||g;s|-L%{_libdir}||g' Singular/Makefile
2f1adea
make %{?_smp_mflags} Singular
2f1adea
# factory needs omalloc built
2f1adea
make %{?_smp_mflags} -C omalloc
Jerry James b510381
%if %{with polymake}
Rex Dieter 31b36bd
# polymake interface needs gfanlib built
Rex Dieter 31b36bd
make %{?_smp_mflags} -C gfanlib
Jerry James b510381
%endif
2f1adea
2f1adea
pushd factory
75c3e97
CFLAGS="%{optflags} -fPIC -fsigned-char -fno-delete-null-pointer-checks -I%{_includedir}/cddlib -I%{_includedir}/flint"
Jerry James 7a725dc
CXXFLAGS=$CFLAGS
Jerry James 7a725dc
LDFLAGS="$RPM_LD_FLAGS -Wl,--as-needed -L$PWD/gfanlib"
Jerry James 7a725dc
LIBS="-lpthread -ldl"
Jerry James 7a725dc
2f1adea
%configure \
2f1adea
	--bindir=%{singulardir} \
2f1adea
	--includedir=%{_includedir}/factory \
2f1adea
	--with-apint=gmp \
Rex Dieter 31b36bd
	--with-flint=$PWD/../flint \
2f1adea
	--with-gmp=%{_prefix} \
2f1adea
	--with-ntl=%{_prefix} \
2f1adea
	--with-NTL \
2f1adea
	--with-Singular \
2f1adea
	--enable-gmp=%{_prefix}
2f1adea
    make %{?_smp_mflags}
2f1adea
popd
2f1adea
2f1adea
# kernel needs factory built
2f1adea
make %{?_smp_mflags} -C kernel
2f1adea
2f1adea
# libfac needs factory built
2f1adea
pushd libfac
2f1adea
%configure \
2f1adea
	--bindir=%{singulardir} \
2f1adea
	--with-apint=gmp \
Rex Dieter 31b36bd
	--with-flint=$PWD/../flint \
2f1adea
	--with-gmp=%{_prefix} \
2f1adea
	--with-ntl=%{_prefix} \
2f1adea
	--with-NTL \
2f1adea
	--enable-factory \
2f1adea
	--enable-libfac \
2f1adea
	--enable-omalloc \
2f1adea
	--enable-gmp=%{_prefix}
2f1adea
    make %{?_smp_mflags}
2f1adea
    # not built by default
2f1adea
    make libfac.a
2f1adea
popd
2f1adea
2f1adea
# target required to rebuild documentation
2f1adea
make %{?_smp_mflags} -C Singular libparse
2f1adea
2f1adea
%install
2f1adea
make \
2f1adea
	DESTDIR=$RPM_BUILD_ROOT \
2f1adea
	install_prefix=$RPM_BUILD_ROOT%{singulardir} \
82a436c
	slibdir=%{singulardir}/LIB \
2f1adea
	install \
2f1adea
	install-libsingular \
2f1adea
	install-sharedist
2f1adea
Rex Dieter d9f73c5
# dup gftables data
Rex Dieter d9f73c5
GF_DIR=%{_datadir}/factory/gftables
Rex Dieter d9f73c5
mkdir -p $RPM_BUILD_ROOT${GF_DIR}
Rex Dieter d9f73c5
pushd $RPM_BUILD_ROOT%{singulardir}/LIB/gftables
Rex Dieter d9f73c5
for file in * ; do
Rex Dieter d9f73c5
 new_file="gftable.$(head -2 ${file} | tail -1 | cut -d' ' -f1,2 | sed -e 's| |.|')"
Rex Dieter d9f73c5
 ## absolute
Rex Dieter d9f73c5
 #mv ${file} $RPM_BUILD_ROOT${GF_DIR}/${new_file}
Rex Dieter d9f73c5
 #ln -s ${GF_DIR}/${new_file} ${file}
Rex Dieter d9f73c5
 ## relative
Rex Dieter d9f73c5
 mv ${file} ../../../../share/factory/gftables/${new_file}
Rex Dieter d9f73c5
 ln -s ../../../../share/factory/gftables/${new_file} ${file}
Rex Dieter d9f73c5
done
Rex Dieter d9f73c5
popd
Rex Dieter d9f73c5
2f1adea
# does not need to be in top directory
Rex Dieter 31b36bd
mkdir $RPM_BUILD_ROOT%{_includedir}/gfanlib
Rex Dieter 31b36bd
mv $RPM_BUILD_ROOT%{_includedir}/gfanlib*.h \
Rex Dieter 31b36bd
    $RPM_BUILD_ROOT%{_includedir}/gfanlib
2f1adea
mv $RPM_BUILD_ROOT%{_includedir}/{my,om}limits.h \
2f1adea
    $RPM_BUILD_ROOT%{_includedir}/singular
2f1adea
2f1adea
# also installed in libdir
2f1adea
rm -f $RPM_BUILD_ROOT%{_bindir}/*.so
2f1adea
rm -f $RPM_BUILD_ROOT%{singulardir}/libsingular.so
Rex Dieter 31b36bd
rm -f $RPM_BUILD_ROOT%{singulardir}/polymake.so
2f1adea
2f1adea
# already linked to libsingular.so; do not distribute static libraries
2f1adea
# or just compiled objects.
2f1adea
rm -f $RPM_BUILD_ROOT%{_libdir}/*.a $RPM_BUILD_ROOT%{_libdir}/*.o
2f1adea
2f1adea
# avoid poluting libdir with dynamic modules
2f1adea
pushd $RPM_BUILD_ROOT%{_libdir}
2f1adea
    mkdir -p Singular
2f1adea
    mv dbmsr.so p_Procs*.so Singular
2f1adea
popd
2f1adea
75c3e97
# remove script that calls surf; we don't ship it
75c3e97
rm -f $RPM_BUILD_ROOT%{singulardir}/singularsurf
75c3e97
2f1adea
# create a script also setting SINGULARPATH
2f1adea
mkdir -p $RPM_BUILD_ROOT%{_bindir}
2f1adea
cat > $RPM_BUILD_ROOT%{_bindir}/Singular << EOF
3a0e2a5
#!/bin/bash -i
2f1adea
872f6f8
module load surf-geometry-%{_arch}
Jerry James c86e3c1
SINGULARPATH=%{singulardir} %{singulardir}/Singular-%{upstreamver} "\$@"
2f1adea
EOF
2f1adea
chmod +x $RPM_BUILD_ROOT%{_bindir}/Singular
2f1adea
2f1adea
# TSingular
2f1adea
cat > $RPM_BUILD_ROOT%{_bindir}/TSingular << EOF
3a0e2a5
#!/bin/bash -i
2f1adea
872f6f8
module load surf-geometry-%{_arch}
2f1adea
%{singulardir}/TSingular --singular %{_bindir}/Singular "\$@"
2f1adea
EOF
2f1adea
chmod +x $RPM_BUILD_ROOT%{_bindir}/TSingular
2f1adea
2f1adea
# remove some wrong executable permissions
2f1adea
chmod 644 $RPM_BUILD_ROOT%{singulardir}/LIB/*.lib
2f1adea
2f1adea
# surfex
2f1adea
cat > $RPM_BUILD_ROOT%{_bindir}/surfex << EOF
3a0e2a5
#!/bin/bash -i
2f1adea
872f6f8
module load surf-geometry-%{_arch}
2f1adea
%{singulardir}/surfex %{singulardir}/LIB/surfex "\$@"
2f1adea
EOF
2f1adea
chmod +x $RPM_BUILD_ROOT%{_bindir}/surfex
2f1adea
mkdir -p $RPM_BUILD_ROOT%{singulardir}/LIB/surfex/doc
2f1adea
install -m644 Singular/LIB/surfex/doc/surfex_doc_linux.pdf \
2f1adea
    $RPM_BUILD_ROOT%{singulardir}/LIB/surfex/doc/surfex_doc_linux.pdf
2f1adea
2f1adea
# referenced in xemacs setup
2f1adea
install -m644 emacs/singular.xpm $RPM_BUILD_ROOT%{_emacs_sitelispdir}/singular
2f1adea
2f1adea
# remove suggested preferences
2f1adea
rm -f $RPM_BUILD_ROOT%{_emacs_sitelispdir}/singular/.emacs-general
2f1adea
2f1adea
# emacs autostart
2f1adea
sed -i "s|<your-singular-emacs-home-directory>|%{_emacs_sitelispdir}/singular|" \
2f1adea
    $RPM_BUILD_ROOT%{_emacs_sitelispdir}/singular/.emacs-singular
2f1adea
mkdir -p $RPM_BUILD_ROOT%{_emacs_sitestartdir}
2f1adea
mv $RPM_BUILD_ROOT%{_emacs_sitelispdir}/singular/.emacs-singular \
2f1adea
     $RPM_BUILD_ROOT%{_emacs_sitestartdir}/singular-init.el
2f1adea
2f1adea
# ESingular
2f1adea
cat > $RPM_BUILD_ROOT%{_bindir}/ESingular << EOF
3a0e2a5
#!/bin/bash -i
2f1adea
872f6f8
module load surf-geometry-%{_arch}
2f1adea
export ESINGULAR_EMACS_LOAD=%{_emacs_sitestartdir}/singular-init.el
2f1adea
export ESINGULAR_EMACS_DIR=%{_emacs_sitelispdir}/singular
2f1adea
%{singulardir}/ESingular --singular %{_bindir}/Singular "\$@"
2f1adea
EOF
2f1adea
chmod +x $RPM_BUILD_ROOT%{_bindir}/ESingular
2f1adea
2f1adea
pushd libfac
2f1adea
    make DESTDIR=$RPM_BUILD_ROOT install
2f1adea
    # not installed by default
2f1adea
    install -m 644 libfac.a $RPM_BUILD_ROOT%{_libdir}/libfac.a
2f1adea
popd
2f1adea
2f1adea
pushd factory
2f1adea
    make DESTDIR=$RPM_BUILD_ROOT install
2f1adea
# make a version without singular defined
2f1adea
    make clean
75c3e97
    CFLAGS="%{optflags} -fPIC -fsigned-char -fno-delete-null-pointer-checks -I%{_includedir}/cddlib -I%{_includedir}/flint"
Jerry James 7a725dc
    CXXFLAGS=$CFLAGS
Jerry James 7a725dc
    LDFLAGS="$RPM_LD_FLAGS -Wl,--as-needed -L$PWD/gfanlib"
Jerry James 7a725dc
    LIBS="-lpthread -ldl"
Jerry James 7a725dc
2f1adea
%configure \
2f1adea
	--bindir=%{singulardir} \
2f1adea
	--includedir=%{_includedir}/factory \
2f1adea
	--with-apint=gmp \
Rex Dieter 31b36bd
	--with-flint=$PWD/../flint \
2f1adea
	--with-gmp=%{_prefix} \
2f1adea
	--with-ntl=%{_prefix} \
2f1adea
	--with-NTL \
2f1adea
	--without-Singular \
2f1adea
	--enable-gmp=%{_prefix}
2f1adea
    # avoid missing "print" symbols not used elsewhere
Rex Dieter 31b36bd
    make CPPFLAGS="-I%{_includedir}/flint -DNOSTREAMIO=1" %{?_smp_mflags}
2f1adea
    # not built by default
2f1adea
    make libcfmem.a
2f1adea
    # do not run make install again, just install non singular factory files
2f1adea
    install -m 644 libcf.a $RPM_BUILD_ROOT%{_libdir}
2f1adea
    install -m 644 libcfmem.a $RPM_BUILD_ROOT%{_libdir}
2f1adea
popd
2f1adea
75b2024
# incorrect factory includedir
75b2024
sed -e 's|<\(cf_gmp.h>\)|
75b2024
    -i $RPM_BUILD_ROOT%{_includedir}/singular/si_gmp.h
75b2024
2f1adea
%files
2f1adea
%{_bindir}/Singular
2f1adea
%{_bindir}/TSingular
2f1adea
%doc %{singulardir}/COPYING
2f1adea
%doc %{singulardir}/GPL2
2f1adea
%doc %{singulardir}/GPL3
2f1adea
%doc %{singulardir}/NEWS
2f1adea
%doc %{singulardir}/README
2f1adea
%dir %{singulardir}
2f1adea
%dir %{singulardir}/LIB
2f1adea
%doc %{singulardir}/LIB/COPYING
2f1adea
%{singulardir}/LIB/*.lib
2f1adea
%{singulardir}/LIB/help.cnf
2f1adea
%{singulardir}/LIB/gftables
2f1adea
%{singulardir}/doc
2f1adea
%{singulardir}/info
2f1adea
%{singulardir}/change_cost
2f1adea
%{singulardir}/gen_test
2f1adea
%{singulardir}/libparse
2f1adea
%{singulardir}/LLL
2f1adea
%{singulardir}/Singular*
2f1adea
%{singulardir}/solve_IP
2f1adea
%{singulardir}/toric_ideal
2f1adea
%{singulardir}/TSingular
2f1adea
%{singulardir}/*.so
2f1adea
%{_libdir}/libsingular.so
Jerry James b510381
%if %{with polymake}
Jerry James 6bfa5e4
%{singulardir}/MOD/
Jerry James b510381
%endif
2f1adea
2f1adea
%files		devel
Rex Dieter 31b36bd
%{_includedir}/gfanlib
2f1adea
%{_includedir}/libsingular.h
2f1adea
%{_includedir}/omalloc.h
2f1adea
%{_includedir}/singular
2f1adea
Rex Dieter d9f73c5
%files		-n factory-gftables
Rex Dieter d9f73c5
%dir %{_datadir}/factory/
Rex Dieter d9f73c5
%{_datadir}/factory/gftables/
Rex Dieter d9f73c5
2f1adea
%files		-n factory-devel
2f1adea
%doc factory/ChangeLog
2f1adea
%doc factory/NEWS
2f1adea
%doc factory/README
2f1adea
%{_includedir}/factory
2f1adea
%{_libdir}/libcf.a
2f1adea
%{_libdir}/libcfmem.a
2f1adea
%{_libdir}/libsingcf*.a
2f1adea
2f1adea
%files		-n libfac-devel
2f1adea
%doc libfac/00README
2f1adea
%doc libfac/ChangeLog
2f1adea
%doc libfac/COPYING
2f1adea
%{_includedir}/factor.h
2f1adea
%{_libdir}/libfac.a
2f1adea
%{_libdir}/libsingfac*.a
2f1adea
2f1adea
%files		examples
2f1adea
%{singulardir}/examples
2f1adea
2f1adea
%files		doc
2f1adea
%doc %{singulardir}/html
2f1adea
%doc %{singulardir}/*.html
2f1adea
2f1adea
%files		surfex
2f1adea
%{_bindir}/surfex
2f1adea
%{singulardir}/surfex
2f1adea
%{singulardir}/LIB/surfex
2f1adea
2f1adea
%files		emacs
2f1adea
%{_bindir}/ESingular
2f1adea
%{singulardir}/ESingular
2f1adea
%{_emacs_sitelispdir}/singular
2f1adea
%{_emacs_sitestartdir}/singular-init.el
2f1adea
2f1adea
%changelog
75c3e97
* Sat Feb 20 2016 Jerry James <loganjerry@gmail.com> - 3.1.7-1
75c3e97
- Update to 3.1.7; fixes FTBFS (bz 1307301)
75c3e97
- Drop upstreamed -flint24 and -gcc5 patches
75c3e97
- Add -boolean patch to fix a malformed boolean expression
75c3e97
ed557ba
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.6-21
ed557ba
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
ed557ba
b15edac
* Fri Dec  4 2015 Jerry James <loganjerry@gmail.com> - 3.1.6-20
b15edac
- Rebuild for ntl 9.6.2
b15edac
- Drop obsolete ntl6 patch
b15edac
eff8de0
* Fri Oct 16 2015 Jerry James <loganjerry@gmail.com> - 3.1.6-19
eff8de0
- Rebuild for ntl 9.4.0
eff8de0
3b780f3
* Sat Oct  3 2015 Jerry James <loganjerry@gmail.com> - 3.1.6-18
3b780f3
- Rebuild with polymake support
3b780f3
5ae2915
* Sat Sep 19 2015 Jerry James <loganjerry@gmail.com> - 3.1.6-17
5ae2915
- Rebuild for flint 2.5.2 and ntl 9.3.0
5ae2915
cc95810
* Sun Jul 19 2015 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 3.1.6-16
cc95810
- Disable polymake due to broken dependency cycle
3a0e2a5
- Correct previous perl warning that is now an error
3a0e2a5
- Use interactive bash on wrappers to work with other login shells (#1243580)
cc95810
a60597d
* Tue Jun 16 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.6-15
a60597d
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
a60597d
34abad5
* Mon May 18 2015 Jerry James <loganjerry@gmail.com> - 3.1.6-14
34abad5
- Rebuild for ntl 9.1.1 and cddlib-094h
34abad5
6d9816a
* Sat May  9 2015 Jerry James <loganjerry@gmail.com> - 3.1.6-13
6d9816a
- Rebuild for ntl 9.1.0
6d9816a
90662c5
* Sun Apr 26 2015 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 3.1.6-12
90662c5
- Update arches patch to support aarch64 (#1213484)
90662c5
a02f33e
* Thu Apr  2 2015 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 3.1.6-11
a02f33e
- Rebuild for rawhide gcc5 and c++ string and list abi
a02f33e
Jerry James 33f05a4
* Mon Feb  2 2015 Jerry James <loganjerry@gmail.com> - 3.1.6-10
Jerry James 33f05a4
- Rebuild for ntl 8.1.2
Jerry James 33f05a4
Jerry James 7a725dc
* Thu Jan 15 2015 Jerry James <loganjerry@gmail.com> - 3.1.6-9
Jerry James 7a725dc
- Rebuild for ntl 8.1.0
Jerry James 7a725dc
- Add Singular-ntl8.patch to adapt
Jerry James 7a725dc
Jerry James 2975815
* Tue Oct 28 2014 Jerry James <loganjerry@gmail.com> - 3.1.6-8
Jerry James 2975815
- Rebuild for ntl 6.2.1
Jerry James 2975815
8651ce4
* Thu Sep 11 2014 Jerry James <loganjerry@gmail.com> - 3.1.6-7
8651ce4
- Rebuild for polymake -2.13-8.git20140811
8651ce4
26ab7f8
* Fri Aug 15 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.6-6
26ab7f8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
26ab7f8
Jerry James abbd0b8
* Tue Jun 17 2014 Jerry James <loganjerry@gmail.com> - 3.1.6-5
Jerry James abbd0b8
- Update Singular-ntl6.patch to instantiate more missing functions
Jerry James abbd0b8
05d844f
* Fri Jun 06 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.6-4
05d844f
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
05d844f
Jerry James 6bfa5e4
* Thu May 29 2014 Jerry James <loganjerry@gmail.com> - 3.1.6-3
Jerry James 6bfa5e4
- Rebuild with polymake support
Jerry James 6bfa5e4
- Fix libsingular.h permissions
Jerry James 6bfa5e4
9e80a9f
* Sun May 18 2014 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 3.1.6-2
9e80a9f
- Merge with RFE 3.1.6 update (#1074590)
9e80a9f
- Remove patches applied upstream
9e80a9f
- Disable polymake to allow interface rebootstrap
9e80a9f
ac4625b
* Tue Apr 29 2014 Jerry James <loganjerry@gmail.com> - 3.1.5-14
ac4625b
- Rebuild for polymake-2.13
ac4625b
54433c9
* Wed Apr  2 2014 Jerry James <loganjerry@gmail.com> - 3.1.5-13
54433c9
- Rebuild for polymake-2.12-15.svn20140326
54433c9
Jerry James b510381
* Wed Apr  2 2014 Jerry James <loganjerry@gmail.com> - 3.1.5-12
Jerry James b510381
- Rebuild for NTL 6.1.0
Jerry James b510381
- Fix default paths
Jerry James b510381
- Add ability to rebuild without polymake
Jerry James b510381
9e80a9f
* Mon Mar 10 2014 Rex Dieter <rdieter@fedoraproject.org> - 3.1.6-1
9e80a9f
- 3.1.6
9e80a9f
Rex Dieter 31b36bd
* Mon Mar 10 2014 Rex Dieter <rdieter@fedoraproject.org> - 3.1.5-11
Rex Dieter 31b36bd
- fix/workaround char=unsigned char assumptions
Rex Dieter 31b36bd
- (more) consistently use RPM_OPT_FLAGS
Rex Dieter 31b36bd
- --with-flint --with-polymake
Rex Dieter 31b36bd
Jerry James cce1b6b
* Tue Jan 14 2014 Jerry James <loganjerry@gmail.com> - 3.1.5-10
Jerry James cce1b6b
- Update normaliz interface for normaliz 2.8 and later
Jerry James cce1b6b
Rex Dieter de8f909
* Mon Nov 25 2013 Rex Dieter <rdieter@fedoraproject.org> - 3.1.5-9
Rex Dieter de8f909
- ExclusiveArch: %%ix86 x86_64
Rex Dieter de8f909
def158d
* Fri Aug 16 2013 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 3.1.5-8
def158d
- Correct underlink problem (#991920#c1)
def158d
Rex Dieter 5ba908f
* Thu Aug 01 2013 Rex Dieter <rdieter@fedoraproject.org> - 3.1.5-7
Rex Dieter 5ba908f
- rebuild
Rex Dieter 5ba908f
Rex Dieter d9f73c5
* Tue May 21 2013 Rex Dieter <rdieter@fedoraproject.org> - 3.1.5-6
Rex Dieter d9f73c5
- factory-gftables.noarch subpkg (#965655)
Rex Dieter d9f73c5
Jerry James c86e3c1
* Mon May  6 2013 Jerry James <loganjerry@gmail.com> - 3.1.5-5
Jerry James c86e3c1
- Rebuild for ntl 6.0.0
Jerry James c86e3c1
- Fix semaphore code
Jerry James c86e3c1
- Fix underlinked library
Jerry James c86e3c1
15c5126
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.5-4
15c5126
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
15c5126
dd6ad1d
* Sun Nov 11 2012 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 3.1.5-3
dd6ad1d
- Rebuild to have factory include path patch in rawhide package
dd6ad1d
82a436c
* Tue Aug 7 2012 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 3.1.5-2
82a436c
- Do not build conflicts with factory-devel neither libfac-devel (#842407)
82a436c
82a436c
* Sat Aug 4 2012 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 3.1.5-1
82a436c
- Update to Singular 3.1.5, based on sagemath trac ticket #13237
82a436c
- Remove already applied patches from sagemath Singular spkg
82a436c
- Rediff Fedora rpm build patches
82a436c
- Rediff factory and libfac patches for Macaulay2
82a436c
8613226
* Thu Jul 19 2012 Rex Dieter <rdieter@fedoraproject.org> - 3.1.3-8
8613226
- macaulay2 patches for libfac/factory
8613226
- omit duplicate %%description sections
8613226
14f9cd1
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.3-7
14f9cd1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
14f9cd1
2f1adea
* Sun Jul 8 2012 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 3.1.3-6
2f1adea
- Update license field to match valid values.
2f1adea
- Provide newer libfac-devel matching Singular version (#819264).
2f1adea
- Provide newer factory-devel matching Singular version (#819264).
2f1adea
- Remove platform specific factoryconf.h file as only platform specific
2f1adea
  contents it has is "#define INT64 long long int" what is not really correct,
2f1adea
  neither completely wrong...
2f1adea
2f1adea
* Sun Jul 1 2012 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 3.1.3-5
2f1adea
- Do not conflict Singular-devel with libfac-devel.
2f1adea
2f1adea
* Sun Jul 1 2012 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 3.1.3-4
2f1adea
- Update license information to match COPYING information.
2f1adea
2f1adea
* Wed May 9 2012 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 3.1.3-3
2f1adea
- Correct unresolved mmInit symbol in libsingular.so.
2f1adea
2f1adea
* Sun May 6 2012 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 3.1.3-2
2f1adea
- Install singular factory headers in singular devel directory.
2f1adea
- Tag singular-doc files as documentation.
2f1adea
2f1adea
* Sat May 5 2012 pcpa <paulo.cesar.pereira.de.andrade@gmail.com> - 3.1.3-1
2f1adea
- Initial Singular spec.