Blob Blame History Raw
%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