qepcad-B/qepcad-B.spec
Jerry James 4dc2f4cc66 Fix total lockup (bz 1257471).
This consists of two separate changes:
- Run Singular in a separate session so it doesn't steal the TTY.
- Don't send data to bash through the (supposedly) Singular pipe.
2015-09-03 20:03:08 -06:00

156 lines
5.2 KiB
RPMSpec

Name: qepcad-B
Version: 1.69
Release: 11%{?dist}
Summary: Quantifier elimination tool
License: MIT
URL: http://www.usna.edu/CS/qepcadweb/INSTALL/IQ.html
Source0: http://www.usna.edu/CS/qepcadweb/INSTALL/%{name}.%{version}.tar.gz
# Don't require users to set the "qe" or "SINGULARPATH" environment variables.
# Not for upstream.
Patch0: %{name}-env.patch
# Add gcc attributes for better efficiency and warnings. Upstream: 20 Nov 2013.
Patch1: %{name}-attr.patch
# Fix use of uninitialized variables. Upstream: 20 Nov 2013.
Patch2: %{name}-uninit.patch
# Fix a non-void function where control can fall off the end. Upstream:
# 20 Nov 2013.
Patch3: %{name}-return.patch
# Fix abstract base classes with non-virtual destructors. Upstream:
# 20 Nov 2013.
Patch4: %{name}-destructor.patch
# Add parentheses to disambiguate mixed boolean operators. Upstream:
# 20 Nov 2013.
Patch5: %{name}-parens.patch
# Fix some mixed signed/unsigned operations. Upstream: 20 Nov 2013.
Patch6: %{name}-signed.patch
# Fix syntactically incorrect expressions. Upstream: 20 Nov 2013.
Patch7: %{name}-syntax.patch
# Remove unused variables and static functions.
Patch8: %{name}-unused.patch
# Tell Singular not to steal the TTY (bz 1257471)
Patch9: %{name}-tty.patch
BuildRequires: freeglut-devel
BuildRequires: readline-devel
BuildRequires: saclib-devel
# Subprocesses are spawned to run executables from these packages
Requires: bash
Requires: coreutils
Requires: Singular
%description
QEPCAD is an implementation of quantifier elimination by partial
cylindrical algebraic decomposition due originally to Hoon Hong, and
subsequently added on to by many others. It is an interactive
command-line program written in C/C++, and based on the SACLIB library.
This is QEPCAD B version 1.x, the "B" designating a substantial
departure from the original QEPCAD and distinguishing it from any
development of the original that may proceed in a different direction.
%prep
%setup -q -n qesource
%patch0
%patch1
%patch2
%patch3
%patch4
%patch5
%patch6
%patch7
%patch8
%patch9
# Adapt to the Fedora saclib package
sed -i 's,\${saclib}/lib/saclib.\.a,-lsaclib,' source/Makefile cad2d/Makefile
# Embed the library path
sed -i 's,@LIBDIR@,%{_libdir},' source/main/BEGINQEPCAD.c
# Use the right build flags
sed -i "s|-O4|%{optflags} -Wno-unused-label $RPM_LD_FLAGS|" plot2d/Makefile
%build
# FIXME: %%{?_smp_mflags} doesn't work
export saclib=%{_prefix}
export qe=$PWD
export CC=g++
export CCo=g++
export FLAGS="%{optflags} -I%{_includedir}/saclib -Wno-unused-label"
export FLAGSo="$FLAGS"
export SPECIFLAGS="-I%{_includedir}/saclib"
export SPECLFLAGS="$RPM_LD_FLAGS"
make -C extensions/sfext
make -C extensions/adj2d
make -C extensions/rend
make -C extensions/newadj
make -C extensions/lift2D
make -C source opt FLAGSo="$FLAGS"
make -C plot2d
make -C cad2d opt FLAGSo="$FLAGS"
%install
#Install the binaries
mkdir -p %{buildroot}%{_bindir}
install -p -m 0755 source/qepcad %{buildroot}%{_bindir}
install -p -m 0755 plot2d/ADJ2D_plot %{buildroot}%{_bindir}
install -p -m 0755 cad2d/cad2d %{buildroot}%{_bindir}
# Install the default settings file
mkdir -p %{buildroot}%{_datadir}/qepcad
sed 's,^#S.*,SINGULAR %{_libdir}/Singular,' default.qepcadrc > \
%{buildroot}%{_datadir}/qepcad/default.qepcadrc
touch -r default.qepcadrc %{buildroot}%{_datadir}/qepcad/default.qepcadrc
# Install qepcad.help and the expected symbolic links
mkdir -p %{buildroot}%{_datadir}/qepcad/bin
cp -p source/qepcad.help %{buildroot}%{_datadir}/qepcad/bin
ln -s %{_bindir}/ADJ2D_plot %{buildroot}%{_datadir}/qepcad/bin
ln -s %{_bindir}/cad2d %{buildroot}%{_datadir}/qepcad/bin
ln -s %{_bindir}/qepcad %{buildroot}%{_datadir}/qepcad/bin
%files
%doc LOG
%license LICENSE
%{_bindir}/qepcad
%{_bindir}/ADJ2D_plot
%{_bindir}/cad2d
%{_datadir}/qepcad/
%changelog
* Thu Sep 3 2015 Jerry James <loganjerry@gmail.com> - 1.69-11
- Run Singular in a separate session so it doesn't steal the TTY (bz 1257471)
- Don't send data to bash through the (supposedly) Singular pipe
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.69-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Mon May 4 2015 Jerry James <loganjerry@gmail.com> - 1.69-9
- Rebuild for C++ ABI change
* Wed Jan 7 2015 Jerry James <loganjerry@gmail.com> - 1.69-8
- Update URLs
- Use license macro
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.69-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.69-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Mon Mar 31 2014 Jerry James <loganjerry@gmail.com> - 1.69-5
- Fix default.qepcadrc so that it requires Singular on all architectures
* Thu Mar 20 2014 Jerry James <loganjerry@gmail.com> - 1.69-4
- Singular is now available for all architectures
* Sat Feb 15 2014 Jerry James <loganjerry@gmail.com> - 1.69-3
- Singular is currently available for x86 architectures only
* Thu Feb 13 2014 Jerry James <loganjerry@gmail.com> - 1.69-2
- Install qepcad.help
* Thu Nov 21 2013 Jerry James <loganjerry@gmail.com> - 1.69-1
- Initial RPM