%global pkgname scscp
%global PKGNAME SCSCP
%global usrname gapd
Name: gap-pkg-%{pkgname}
Version: 2.2.2
Release: 1%{?dist}
Summary: Symbolic Computation Software Composability Protocol in GAP
License: GPLv2+
URL: https://gap-packages.github.io/scscp/
Source0: https://github.com/gap-packages/%{pkgname}/releases/download/v%{version}/%{PKGNAME}-%{version}.tar.gz
Source1: %{usrname}.sh
Source2: gap-scscp.service
Source3: %{usrname}.logrotate
Source4: %{usrname}.conf
Source5: %{usrname}.h2m
Source6: server.g
BuildArch: noarch
BuildRequires: gap-devel
BuildRequires: GAPDoc-latex
BuildRequires: gap-pkg-io
BuildRequires: gap-pkg-openmath
BuildRequires: help2man
BuildRequires: systemd
%{?systemd_requires}
Requires(pre): shadow-utils
Requires(postun): shadow-utils
Requires: gap-core
Requires: gap-pkg-io
Requires: gap-pkg-openmath
%description
This package implements the Symbolic Computation Software Composability
Protocol (SCSCP) for the GAP system in accordance with the SCSCP
specification, described at http://www.symbolic-computing.org/scscp, and
OpenMath dictionaries scscp1 and scscp2.
%prep
%setup -q -n %{PKGNAME}-%{version}
%build
# Link to main GAP documentation
ln -s %{_gap_dir}/doc ../../doc
mkdir ../pkg
ln -s ../%{PKGNAME}-%{version} ../pkg/%{PKGNAME}
gap -l "$PWD/..;%{_gap_dir}" makedoc.g
rm -fr ../../doc ../pkg
%install
mkdir -p %{buildroot}%{_gap_dir}/pkg
cp -a ../%{PKGNAME}-%{version} %{buildroot}%{_gap_dir}/pkg/%{PKGNAME}
rm -f %{buildroot}%{_gap_dir}/pkg/%{PKGNAME}/{GPL,README.md,todo.txt}
rm -f %{buildroot}%{_gap_dir}/pkg/%{PKGNAME}/doc/*.{aux,bbl,blg,brf,idx,ilg,ind,log,out,pnr,tex,toc}
# Replace upstream's launcher script with our own.
cp -p %{SOURCE1} %{buildroot}%{_gap_dir}/pkg/%{PKGNAME}
# Install the systemd unit
mkdir -p %{buildroot}%{_unitdir}
cp -p %{SOURCE2} %{buildroot}%{_unitdir}
# Install the logrotate script
mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d
cp -p %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
# Install the daemon config file
mkdir -p %{buildroot}%{_sysconfdir}
cp -p %{SOURCE4} %{buildroot}%{_sysconfdir}
# Install the man page
mkdir -p %{buildroot}%{_mandir}/man8
help2man -m "GAP SCSCP package" -S "GAP SCSCP (Fedora %{version}-%{release})" \
-n "GAP Daemon" -I %{SOURCE5} -o %{buildroot}%{_mandir}/man8/%{usrname}.8 \
-N -s 8 %{SOURCE1}
# Move the config files to their new home
mkdir -p %{buildroot}%{_sysconfdir}/scscp/gap
cp -p %{SOURCE6} %{buildroot}%{_sysconfdir}/scscp/gap
mv %{buildroot}%{_gap_dir}/pkg/%{PKGNAME}/config.g \
%{buildroot}%{_gap_dir}/pkg/%{PKGNAME}/configpar.g \
%{buildroot}%{_sysconfdir}/scscp/gap
# Tell the package where to look for its configuration
sed -e 's,ReadPackage("scscp/\(config\.g\)"),Read("/etc/scscp/gap/\1"),' \
-e 's,ReadPackage("scscp/\(configpar\.g\)"),Read("/etc/scscp/gap/\1"),' \
-i %{buildroot}%{_gap_dir}/pkg/%{PKGNAME}/init.g
touch -r init.g %{buildroot}%{_gap_dir}/pkg/%{PKGNAME}/init.g
%check
# We only run the offline test as the others require network access and two
# servers to be setup and running.
mkdir ../pkg
ln -s ../%{PKGNAME}-%{version} ../pkg/%{PKGNAME}
pushd tst
gap -l "$PWD/../..;%{_gap_dir}" << EOF 2>&1 | tee log
LoadPackage("scscp");
Test("offline.tst", rec(compareFunction := "uptowhitespace") );
EOF
grep -Fvq 'Errors detected' log
rm -f log
popd
rm -fr ../pkg
%pre
getent passwd _%{usrname} >/dev/null || \
useradd -c "GAP SCSCP server daemon" -d %{_sharedstatedir}/%{usrname}/ \
-m -r -s /sbin/nologin -U _%{usrname} 2&>1 /dev/null || :
%preun
%systemd_preun gap-scscp.service
%post
%systemd_post gap-scscp.service
%postun
%systemd_postun gap-scscp.service
%files
%doc README.md todo.txt
%license GPL
%docdir %{_gap_dir}/pkg/%{PKGNAME}/demo
%docdir %{_gap_dir}/pkg/%{PKGNAME}/doc
%docdir %{_gap_dir}/pkg/%{PKGNAME}/example
%docdir %{_gap_dir}/pkg/%{PKGNAME}/htm
%{_gap_dir}/pkg/%{PKGNAME}/
%{_mandir}/man8/%{usrname}.8*
%{_unitdir}/gap-scscp.service
%dir %{_sysconfdir}/scscp/
%dir %{_sysconfdir}/scscp/gap/
%config(noreplace) %{_sysconfdir}/scscp/gap/config.g
%config(noreplace) %{_sysconfdir}/scscp/gap/configpar.g
%config(noreplace) %{_sysconfdir}/scscp/gap/server.g
%config(noreplace) %{_sysconfdir}/%{usrname}.conf
%dir %{_sysconfdir}/logrotate.d/
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%changelog
* Sat Apr 1 2017 Jerry James <loganjerry@gmail.com> - 2.2.2-1
- New upstream version
- New URLs
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.4-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Wed Jul 20 2016 Jerry James <loganjerry@gmail.com> - 2.1.4-3
- Own the logrotate directory
- Do not delete the user in postun
* Thu May 26 2016 Jerry James <loganjerry@gmail.com> - 2.1.4-2
- Improved service integration
* Fri Apr 22 2016 Jerry James <loganjerry@gmail.com> - 2.1.4-1
- Initial RPM