SHA256
1
0
forked from pool/gap
gap/gap.spec

539 lines
17 KiB
RPMSpec

#
# spec file for package gap
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: gap
Version: 4.8.8
Release: 0
Summary: System for Computational Discrete Algebra
License: GPL-2.0+
Group: Productivity/Scientific/Math
Url: http://gap-system.org/
Source: https://www.gap-system.org/pub/gap/gap4core/gap4r8p8_nopackages.zip
Source2: %name-rpmlintrc
Patch1: gap-final-dir.diff
Patch2: gap-multiarch.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if 0%{?suse_version}
BuildRequires: fdupes
%endif
BuildRequires: gmp-devel
BuildRequires: libtool
BuildRequires: ncurses-devel
BuildRequires: readline-devel
BuildRequires: unzip
%if 0%{?suse_version}
BuildRequires: fastjar
%endif
Requires: gap-core
Requires: gap-devel
Requires: gap-doc
%define gap_sitelib_anchor %_datadir/%name
%define gap_sitearch_anchor %_libexecdir/%name
%define gapdir %gap_sitearch_anchor
%define gapdatadir %gap_sitelib_anchor
%description
GAP is a system for computational discrete algebra, with particular
emphasis on Computational Group Theory. GAP provides a programming
language, a library of thousands of functions implementing algebraic
algorithms written in the GAP language as well as large data
libraries of algebraic objects. GAP is used in research and teaching
for studying groups and their representations, rings, vector spaces,
algebras, combinatorial structures, and more.
This package is for a medium GAP installation: core, documentation
and development. See gap-full if you want everything of the GAP
distribution.
%package core
Summary: Runtime for GAP (System for Computational Discrete Algebra)
Group: Productivity/Scientific/Math
Requires: gap-data = %version
Requires: gap-gapdoc >= 1.5.1
%description core
GAP is a system for computational discrete algebra, with particular
emphasis on Computational Group Theory. GAP provides a programming
language, a library of thousands of functions implementing algebraic
algorithms written in the GAP language as well as large data
libraries of algebraic objects. GAP is used in research and teaching
for studying groups and their representations, rings, vector spaces,
algebras, combinatorial structures, and more.
This package only pulls in the GAP core.
%package data
Summary: Data files for GAP (System for Computational Discrete Algebra)
Group: Productivity/Scientific/Math
%if 0%{?suse_version} >= 1120
BuildArch: noarch
%endif
%description data
GAP is a system for computational discrete algebra, with particular
emphasis on Computational Group Theory.
This subpackage contains arch-independent supplementary data for GAP.
%package devel
Summary: Development environment for GAP
Group: Development/Tools/Other
Requires: gap-core = %version
%description devel
GAP is a system for computational discrete algebra, with particular
emphasis on Computational Group Theory.
This package will pull in the current version of the GAP compiler and
utilities required to build GAP packages that need compilation.
%package doc
Summary: Documentation for GAP
Group: Documentation/Other
%if 0%{?suse_version} >= 1120
BuildArch: noarch
%endif
%description doc
GAP is a system for computational discrete algebra, with particular
emphasis on Computational Group Theory.
This subpackage contains the documentation to GAP.
%package full
Summary: Metapackage to cause installation of the GAP Distribution
Group: Productivity/Scientific/Math
BuildArch: noarch
Requires: gap >= %version
Requires: gap-4ti2interface >= 2017.01.05
Requires: gap-ace >= 5.2
# gap-aclib-1.2 has no license attached: cannot ship that
#Requires: gap-aclib >= 1.2
Requires: gap-alnuth >= 3.0.0
# gap-anupq-3.1.5 has no license attached: cannot ship that
#Requires: gap-anupq >= 3.1.5
Requires: gap-atlasrep >= 1.5.1
Requires: gap-autodoc >= 2016.12.04
Requires: gap-automata >= 1.13
Requires: gap-automgrp >= 1.3
Requires: gap-autpgrp >= 1.8
Requires: gap-browse >= 1.8.7
# gap-cap-2017.07.25 has no license attached: cannot ship that
#Requires: gap-cap >= 2017.07.25
# depends on unfinished carat
#Requires: gap-carat >= 2.1.6
Requires: gap-circle >= 1.5.4
Requires: gap-cohomolo >= 1.6.4
Requires: gap-congruence >= 1.1.1
Requires: gap-convex >= 2013.12.05
Requires: gap-corelg >= 1.20
Requires: gap-crime >= 1.4
Requires: gap-crisp >= 1.4.4
Requires: gap-cryst >= 4.1.12
Requires: gap-crystcat >= 1.1.6
Requires: gap-ctbllib >= 1.2.2
# depends on grpconst (which is unfree)
#Requires: gap-cubefree >= 1.16
Requires: gap-cvec >= 2.5.7
Requires: gap-design >= 1.6
Requires: gap-digraphs >= 0.10.1
Requires: gap-edim >= 1.3.2
Requires: gap-example >= 3.5.1
Requires: gap-examplesforhomalg >= 2017.05.25
Requires: gap-factint >= 1.5.4
Requires: gap-fga >= 1.3.1
Requires: gap-fining >= 1.3.3
Requires: gap-float >= 0.7.6
# gap-format-1.3 has no license attached: cannot ship that
#Requires: gap-format >= 1.3
Requires: gap-forms >= 1.2.3
# gap-fplsa-1.1 has no license attached: cannot ship that
#Requires: gap-fplsa >= 1.1
Requires: gap-fr >= 2.4.1
# gap-fwtree-1.0 has no license attached: cannot ship that
#Requires: gap-fwtree >= 1.0
Requires: gap-gapdoc >= 1.6
Requires: gap-gauss >= 2017.06.14
Requires: gap-gaussforhomalg >= 2015.11.06
Requires: gap-gbnp >= 1.0.3
# gap-generalizedmorphismsforcap-2017.07.25 has no license attached: cannot ship that
#Requires: gap-generalizedmorphismsforcap >= 2017.07.25
Requires: gap-genss >= 1.6.4
Requires: gap-gradedmodules >= 2017.05.10
Requires: gap-gradedringforhomalg >= 2017.05.26
Requires: gap-grape >= 4.7
Requires: gap-groupoids >= 1.51
# gap-grpconst-2.5 has no license attached: cannot ship that
#Requires: gap-grpconst >= 2.5
Requires: gap-guarana >= 0.94
Requires: gap-guava >= 3.13
# Proscribed hap 1.11.15 tarball that should come with gap 4.8.8 is awol
Requires: gap-hap >= 1.11.13
# depends on polymake (not ready)
#Requires: gap-hapcryst >= 0.1.11
Requires: gap-happrime >= 0.6
Requires: gap-hecke >= 1.4
Requires: gap-help >= 3.1
Requires: gap-homalg >= 2017.05.10
Requires: gap-homalgtocas >= 2017.08.01
Requires: gap-idrel >= 2.34
Requires: gap-intpic >= 0.2.1
Requires: gap-io >= 4.4.6
Requires: gap-io_forhomalg >= 2017.07.01
Requires: gap-irredsol >= 1.4
# gap-itc-1.4 has no license attached: cannot ship that
#Requires: gap-itc >= 1.4
Requires: gap-json >= 1.1.0
Requires: gap-kan >= 1.27
Requires: gap-kbmag >= 1.5.4
Requires: gap-laguna >= 3.7.0
# gap-liealgdb-2.1 has no license attached: cannot ship that
#Requires: gap-liealgdb >= 2.1
Requires: gap-liepring >= 1.8
Requires: gap-liering >= 2.3
# not ready
#Requires: gap-linboxing >= 0.5.2
# gap-linearalgebraforcap-2017.07.25: no license attached; cannot ship
#Requires: gap-linearalgebraforcap >= 2017.07.25
Requires: gap-localizeringforhomalg >= 2017.07.17
Requires: gap-loops >= 3.3.0
Requires: gap-lpres >= 0.4.1
Requires: gap-mapclass >= 1.2
Requires: gap-matgrp >= 0.4
Requires: gap-matricesforhomalg >= 2017.08.02
# gap-modisom-2.3.2 not OSI compliant: cannot ship:
# permits distribution and use, but not modification.
#Requires: gap-modisom >= 2.3.3
# gap-modulepresentationsforcap requires a non-existant gap-complexesandfilteredobjectsforgap
#Requires: gap-modulepresentationsforcap >= 2017.07.25
Requires: gap-modules >= 2017.07.17
Requires: gap-nilmat >= 1.2
Requires: gap-normalizinterface >= 0.9.8
Requires: gap-nq >= 2.5.3
Requires: gap-numericalsgps >= 1.0.1
Requires: gap-openmath >= 11.4.2
Requires: gap-orb >= 4.7.6
#Needs separate gap-core built with openmpi and update-alternatives
#Requires: gap-pargap >= 1.4.0
# gap-patternclass-2.3 has no license attached: cannot ship that
#Requires: gap-patternclass >= 2.3
# depends on gap-format which is not ready
#Requires: gap-permut >= 1.03
Requires: gap-polenta >= 1.3.7
Requires: gap-polycyclic >= 2.11
# polymake not ready
#Requires: gap-polymakeinterface >= 2015.01.26
#Requires: gap-polymaking >= 0.8.1
# gap-profiling-1.3.0: no license on "first-party" code (bundled thirdparty code is ok tho..)
#Requires: gap-profiling >= 1.3.0
Requires: gap-qaos >= 1.5
Requires: gap-qpa >= 1.26
Requires: gap-quagroup >= 1.8
Requires: gap-radiroot >= 2.7
# depends on grape which is not ready
#Requires: gap-rcwa >= 4.5.1
Requires: gap-rds >= 1.6
Requires: gap-recog >= 1.2.5
Requires: gap-recogbase >= 1.2.5
# gap-repsn-3.2 has no license attached: cannot ship that
#Requires: gap-repsn >= 3.0.2
Requires: gap-resclasses >= 4.6.0
Requires: gap-ringsforhomalg >= 2017.08.02
Requires: gap-sco >= 2015.11.06
Requires: gap-scscp >= 2.2.2
Requires: gap-semigroups >= 2.8.0
# gap-sglppow-2.0 not OSI compliant: cannot ship
# permits distribution, but not use (how stupid), nor modification
#Requires: gap-sglppow >= 2.0
Requires: gap-sgpviz >= 0.998
Requires: gap-simpcomp >= 2.1.6
# gap-singular-12.04.28 has no license attached: cannot ship
#Requires: gap-singular >= 12.04.28
Requires: gap-sla >= 1.2
Requires: gap-smallsemi >= 0.6.11
Requires: gap-sonata >= 2.8
# gap-sophus-1.23 has no license attached: cannot ship
#Requires: gap-sophus >= 1.23
Requires: gap-spinsym >= 1.5
Requires: gap-symbcompcc >= 1.2
# gap-tomlib-1.2.6 has no license attached: cannot ship
#Requires: gap-tomlib >= 1.2.6
Requires: gap-toolsforhomalg >= 2017.05.10
Requires: gap-toric >= 1.9.4
Requires: gap-toricvarieties >= 2012.12.22
# gap-unipot-1.2 has no license attached: cannot ship
#Requires: gap-unipot >= 1.2
Requires: gap-unitlib >= 3.2.0
Requires: gap-utils >= 0.46
Requires: gap-wedderga >= 4.7.3
# gap-xgap-4.24 has no license attached: cannot ship
#Requires: gap-xgap >= 4.26
Requires: gap-xmod >= 2.62
Requires: gap-xmodalg >= 1.12
%description full
GAP is a system for computational discrete algebra, with particular
emphasis on Computational Group Theory.
This subpackage will pull in all contributed packages of the GAP
distribution.
%package prim-groups
Summary: GAP: Database of primitive groups
Group: Productivity/Scientific/Math
%if 0%{?suse_version} >= 1120
BuildArch: noarch
%endif
%description prim-groups
GAP is a system for computational discrete algebra, with particular
emphasis on Computational Group Theory.
This subpackage contains the database of primitive groups.
%package rpm-devel
Summary: RPM macros for building GAP packages
# Not noarch: contains arch-specific paths in RPM macros
Group: Development/Tools/Other
%description rpm-devel
GAP is a system for computational discrete algebra, with particular
emphasis on Computational Group Theory.
This subpackage provides RPM macros for use with packaging simple GAP
modules that do not require the presence of GAP itself.
%package small-groups
Summary: GAP: Database of small groups
Group: Productivity/Scientific/Math
%if 0%{?suse_version} >= 1120
BuildArch: noarch
%endif
%description small-groups
GAP is a system for computational discrete algebra, with particular
emphasis on Computational Group Theory.
This subpackage contains the database of small groups.
%package trans-groups
Summary: GAP: Database of transitive groups
Group: Productivity/Scientific/Math
%if 0%{?suse_version} >= 1120
BuildArch: noarch
%endif
%description trans-groups
GAP is a system for computational discrete algebra, with particular
emphasis on Computational Group Theory.
This subpackage contains the database of transitive groups.
%prep
%setup -qn gap4r8
%patch -P 1 -P 2 -p1
%build
rm -f bin/*.bat
pushd extern/
find . -type f ! -name "Makefile*" -print -delete
popd
pushd cnf/
make
popd
%if 0%{?suse_version} == 1110
# odd breakage:
# checking for trunc... no
# ./configure: line 10014: syntax error near unexpected token `fi'
# ./configure: line 10014: `fi'
# make: *** [bin/i686-suse-linux-gnu-gcc-default32/config.status] Error 2
autoreconf -fi
%endif
#
# Having $GAParch (for example with <gapdir>/bin/$GAParch) is practically useless,
# because <gapdir>/sysinfo.gap is already arch-specific and needs to reside in an
# arch-specific directory.
#
%configure --with-gmp=system --target="%_host" --with-gapdir="%gapdir" \
COPTS="%optflags"
#
# See what fancy tuple they brought us and rerun configure so we can tell it
# the _real_ path of gapbindir. (Using $PWD/`pwd` in configure is absolutely
# hostile to distros.)
#
cat sysinfo.gap;
. ./sysinfo.gap;
%configure --with-gmp=system --target="%_host" --with-gapdir="%gapdir" \
--with-gapbindir="%gapdir/bin/$GAParch" COPTS="%optflags"
# And now, another configure run.
make config;
# Actual compile
make %{?_smp_mflags} compile
# Someone screwed up permissions bigtime.
# Resolve rpmlint: W: spurious-executable-perm
# Resolve rpmlint: W: script-without-shebang
find . -type f "(" \
-name "*.c" -o -name "*.fp" -o -name "*.g" -o -name "*.gd" -o \
-name "*.gi" -o -name "*.grp" -o -name "*.ind" -o -name "*.tex" -o \
-name "*.tst" -o -name "*.xml" \
")" -exec chmod a-x "{}" "+";
# Do not let these be installed.
find . -type f -name "*.orig" -print -delete
%install
b="%buildroot"
# Move doc into FHS
mkdir -p "$b/%_docdir";
mv doc "$b/%_docdir/%name";
ln -s "%_docdir/%name" "doc";
# Move data into FHS
rm -f tst/remake.sh doc/test/re;
mkdir -p "$b/%gapdatadir/pkg" "$b/%gapdir/pkg";
dirs="grp lib prim small trans tst";
mv $dirs "$b/%gapdatadir";
for i in $dirs; do
ln -s "%gapdatadir/$i" "$i";
done;
# Populate FHS bindir
. ./sysinfo.gap
mkdir -p "$b/%_bindir"
cp -aH bin/gap.sh "$b/%_bindir/gap-%version"
rm -f bin/gap*.sh
ln -s "%gapdir/bin/$GAParch/gac" "$b/%_bindir/gac-%version"
ln -s "gap-%version" "$b/%_bindir/gap"
ln -s "gac-%version" "$b/%_bindir/gac"
# Move compiled things into place (lack of a `make install` target).
# Throw out autogenerated objects, but keep source (3rd-party pkgs make use of it).
mkdir -p "$b/%gapdir";
cp -a . "$b/%gapdir";
rm -Rf "$b/%gapdir"/{autom4*,cnf,configu*,.hgignore,.travis.yml}
# RPM extras
mkdir -p "$b/%_sysconfdir/rpm"
cp "%_sourcedir/macros.gap" "$b/%_sysconfdir/rpm/"
cat >>"$b/%_sysconfdir/rpm/macros.gap" <<-EOF
# Anchor directory for %%files list
%%gap_sitelib_anchor %gap_sitelib_anchor
%%gap_sitearch_anchor %gap_sitearch_anchor
# The GAP runtime directory (GAPPATH)
%%gapdir %gapdir
# Directory for modules extending the core
%%gap_sitelib %gapdatadir/pkg
%%gap_sitearch %%gapdir/pkg
EOF
%if 0%{?fdupes:1}
%fdupes %buildroot/%_prefix
%endif
%files
%defattr(-,root,root)
# Dummy entry
%dir %gap_sitelib_anchor/
%files core
%defattr(-,root,root)
%_bindir/gap
%_bindir/gap-*
%dir %gapdir/
%gapdir/CITATION
%dir %gapdir/bin/
%gapdir/bin/cygwin.ver
%gapdir/bin/gapicon*
%gapdir/bin/gaprxvt*
%dir %gapdir/bin/%_host-*/
%gapdir/bin/%_host-*/gap
%gapdir/doc
%gapdir/etc/
%gapdir/gap.ini
%gapdir/gap.shi
%gapdir/grp
%gapdir/lib
%gapdir/pkg/
%gapdir/prim
%gapdir/small
%gapdir/sysinfo*
%gapdir/trans
%gapdir/tst
%gapdir/appveyor.yml
%files data
%defattr(-,root,root)
%dir %gap_sitelib_anchor/
%gapdatadir/lib/
%gapdatadir/grp/
%gapdatadir/pkg/
%gapdatadir/tst/
%files devel
%defattr(-,root,root)
%_bindir/gac
%_bindir/gac-*
%dir %gapdir/
%gapdir/*.md
%gapdir/LICENSE
%gapdir/Makefile*
%dir %gapdir/bin/
%gapdir/bin/%_host-*
%gapdir/bin/BuildPackages.sh
%exclude %gapdir/bin/%_host-*/gap
%gapdir/config*
%gapdir/extern/
%gapdir/src/
%files doc
%defattr(-,root,root)
%_docdir/%name/
%files full
%defattr(-,root,root)
# Dummy entry
%dir %gap_sitelib_anchor/
%files prim-groups
%defattr(-,root,root)
%dir %gap_sitelib_anchor/
%gapdatadir/prim/
%files rpm-devel
%defattr(-,root,root)
%config %_sysconfdir/rpm/
%files small-groups
%defattr(-,root,root)
%dir %gap_sitelib_anchor/
%gapdatadir/small/
%files trans-groups
%defattr(-,root,root)
%dir %gap_sitelib_anchor/
%gapdatadir/trans/
%changelog