52e441f
Name:           libsemigroups
81010bb
Version:        1.0.5
cc0ba2b
Release:        1%{?dist}
52e441f
Summary:        C++ library for semigroups and monoids
52e441f
52e441f
License:        GPLv3+
cc0ba2b
URL:            https://github.com/libsemigroups/libsemigroups
cc0ba2b
Source0:        %{url}/releases/download/v%{version}/%{name}-%{version}.tar.gz
52e441f
52e441f
BuildRequires:  doxygen
52e441f
BuildRequires:  gcc-c++
cc0ba2b
BuildRequires:  libtool
cc0ba2b
BuildRequires:  pkgconfig(fmt)
cc0ba2b
BuildRequires:  python3dist(beautifulsoup4)
cc0ba2b
BuildRequires:  python3dist(breathe)
cc0ba2b
BuildRequires:  python3dist(lxml)
cc0ba2b
BuildRequires:  python3dist(pyyaml)
cc0ba2b
BuildRequires:  python3dist(sphinx)
cc0ba2b
BuildRequires:  python3dist(sphinx-copybutton)
cc0ba2b
BuildRequires:  python3dist(sphinx-rtd-theme)
cc0ba2b
BuildRequires:  python3dist(sphinxcontrib-bibtex)
52e441f
52e441f
%description
52e441f
Libsemigroups is a C++ library for semigroups and monoids; it is partly
52e441f
based on "Algorithms for computing finite semigroups", "Expository
52e441f
Slides", and Semigroupe 2.01 by Jean-Eric Pin.
52e441f
52e441f
The libsemigroups library is used in the Semigroups package for GAP.
52e441f
52e441f
Some of the features of Semigroupe 2.01 are not yet implemented in
52e441f
libsemigroups; this is a work in progress.  Missing features include
52e441f
those for:
52e441f
52e441f
- Green's relations, or classes
52e441f
- finding a zero
52e441f
- minimal ideal, principal left/right ideals, or indeed any ideals
52e441f
- inverses
52e441f
- local submonoids
52e441f
- the kernel
52e441f
- variety tests.
52e441f
These will be included in a future version.
52e441f
52e441f
Libsemigroups performs roughly the same as Semigroupe 2.01 when there is
52e441f
a known upper bound on the size of the semigroup being enumerated, and
52e441f
this is used to initialize the data structures for the semigroup; see
52e441f
libsemigroups::Semigroup::reserve for more details.  Note that in
52e441f
Semigroupe 2.01 it is always necessary to provide such an upper bound,
52e441f
but in libsemigroups it is not.
52e441f
52e441f
Libsemigroups also has some advantages over Semigroupe 2.01:
52e441f
- there is a (hopefully) convenient C++ API, which makes it relatively
52e441f
  easy to create and manipulate semigroups and monoids
52e441f
- there are some multithreaded methods for semigroups and their
52e441f
  congruences
52e441f
- you do not have to know/guess the size of a semigroup or monoid before
52e441f
  you begin
52e441f
- libsemigroups supports more types of elements than Semigroupe 2.01
52e441f
- it is relatively straightforward to add support for further types of
52e441f
  elements and semigroups
52e441f
- it is possible to enumerate a certain number of elements of a
52e441f
  semigroup or monoid (say if you are looking for an element with a
52e441f
  particular property), to stop, and then to start the enumeration again
52e441f
  at a later point
52e441f
- you can instantiate as many semigroups and monoids as you can fit in
52e441f
  memory
52e441f
- it is possible to add more generators after a semigroup or monoid has
52e441f
  been constructed, without losing or having to recompute any
52e441f
  information that was previously known
52e441f
- libsemigroups contains rudimentary implementations of the Todd-Coxeter
52e441f
  and Knuth-Bendix algorithms for finitely presented semigroups, which
52e441f
  can also be used to compute congruences of a (not necessarily finitely
52e441f
  presented) semigroup or monoid.
52e441f
52e441f
%package devel
52e441f
Summary:        Headers files for developing with %{name}
52e441f
Requires:       %{name}%{?_isa} = %{version}-%{release}
cc0ba2b
Requires:       fmt-devel%{?_isa}
52e441f
52e441f
%description devel
52e441f
Header files for developing applications that use %{name}.
52e441f
52e441f
%package doc
52e441f
Summary:        Documentation for %{name}
52e441f
BuildArch:      noarch
cc0ba2b
Requires:       fontawesome-fonts-web
cc0ba2b
Requires:       font(fontawesome)
cc0ba2b
Requires:       font(lato)
cc0ba2b
Requires:       font(robotoslab)
52e441f
52e441f
%description doc
52e441f
Documentation for %{name}.
52e441f
52e441f
%prep
cc0ba2b
%autosetup -p1
52e441f
cc0ba2b
# The 1.0.3 release somehow managed to created nested "docs" directories,
cc0ba2b
# which breaks the paths in the etc scripts.
cc0ba2b
mv docs docs.redundant
cc0ba2b
mv docs.redundant/docs .
cc0ba2b
rmdir docs.redundant
52e441f
cc0ba2b
%build
cc0ba2b
# Hpcombi is an x86-specific library that uses SSE and AVX instructions.
cc0ba2b
# It is not currently available in Fedora, and we cannot assume the
cc0ba2b
# availability of AVX in any case.
cc0ba2b
export CFLAGS="%{optflags} -fwrapv"
cc0ba2b
export CXXFLAGS="$CFLAGS"
81010bb
%configure --disable-silent-rules --disable-static --disable-hpcombi \
81010bb
  --with-external-fmt
cc0ba2b
cc0ba2b
# Get rid of undesirable hardcoded rpaths; workaround libtool reordering
cc0ba2b
# -Wl,--as-needed after all the libraries.
52e441f
sed -e 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' \
52e441f
    -e 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' \
cc0ba2b
    -e 's|CC="\(.*g..\)"|CC="\1 -Wl,--as-needed"|' \
52e441f
    -i libtool
52e441f
52e441f
%make_build
52e441f
%make_build doc
cc0ba2b
rst2html --no-datestamp README.rst README.html
cc0ba2b
rm docs/build/html/.buildinfo
cc0ba2b
cc0ba2b
# Do not bundle fonts into the documentation
cc0ba2b
cd docs/build/html/_static/fonts
cc0ba2b
for suffix in eot svg ttf woff woff2; do
cc0ba2b
  rm fontawesome-webfont.$suffix
cc0ba2b
  ln -s %{_datadir}/fonts/fontawesome/fontawesome-webfont.$suffix .
cc0ba2b
done
cc0ba2b
rm {Lato,RobotoSlab}/*.ttf
cc0ba2b
ln -s %{_datadir}/fonts/lato/Lato-Bold.ttf Lato/lato-bold.ttf
cc0ba2b
ln -s %{_datadir}/fonts/lato/Lato-BoldItalic.ttf Lato/lato-bolditalic.ttf
cc0ba2b
ln -s %{_datadir}/fonts/lato/Lato-Italic.ttf Lato/lato-italic.ttf
cc0ba2b
ln -s %{_datadir}/fonts/lato/Lato-Regular.ttf Lato/lato-regular.ttf
cc0ba2b
ln -s %{_datadir}/fonts/google-roboto-slab/RobotoSlab-Bold.ttf RobotoSlab/roboto-slab-v7-bold.ttf
cc0ba2b
ln -s %{_datadir}/fonts/google-roboto-slab/RobotoSlab-Regular.ttf RobotoSlab/roboto-slab-v7-regular.ttf
cc0ba2b
cd -
52e441f
52e441f
%install
52e441f
%make_install
52e441f
rm -f %{buildroot}%{_libdir}/*.la
52e441f
52e441f
%check
cc0ba2b
LD_LIBRARY_PATH=$PWD/.libs make check
52e441f
52e441f
%files
cc0ba2b
%doc README.html
52e441f
%license LICENSE
52e441f
%{_libdir}/%{name}.so.*
52e441f
52e441f
%files devel
52e441f
%{_includedir}/%{name}/
52e441f
%{_libdir}/%{name}.so
6b464b0
%{_libdir}/pkgconfig/%{name}.pc
52e441f
52e441f
%files doc
cc0ba2b
%doc docs/build/html
52e441f
%license LICENSE
52e441f
52e441f
%changelog
81010bb
* Sat Jan 18 2020 Jerry James <loganjerry@gmail.com> - 1.0.5-1
81010bb
- Version 1.0.5
81010bb
- Drop -unbundle-fmt patch in favor of --with-external-fmt arg to configure
81010bb
cc0ba2b
* Fri Dec 13 2019 Jerry James <loganjerry@gmail.com> - 1.0.3-1
cc0ba2b
- Version 1.0.3
cc0ba2b
- New URLs
cc0ba2b
- Drop -use-after-free patch
cc0ba2b
- Unbundle fmt
cc0ba2b
b72ad53
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.7-2
b72ad53
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
b72ad53
6b464b0
* Tue Apr 23 2019 Jerry James <loganjerry@gmail.com> - 0.6.7-1
6b464b0
- New upstream version
6b464b0
76250f6
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.4-2
76250f6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
76250f6
5b8c2bf
* Mon Oct 22 2018 Jerry James <loganjerry@gmail.com> - 0.6.4-1
5b8c2bf
- New upstream version
5b8c2bf
ed4dffd
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.3-2
ed4dffd
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
ed4dffd
13a8bc6
* Sat Mar 10 2018 Jerry James <loganjerry@gmail.com> - 0.6.3-1
13a8bc6
- New upstream version
13a8bc6
d31ce32
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.2-2
d31ce32
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
d31ce32
2740e45
* Sat Jan 13 2018 Jerry James <loganjerry@gmail.com> - 0.6.2-1
2740e45
- New upstream version
2740e45
fb00c21
* Sat Dec 30 2017 Jerry James <loganjerry@gmail.com> - 0.6.1-1
fb00c21
- New upstream version
fb00c21
- Add -use-after-free patch to fix test failures
fb00c21
9807008
* Tue Dec 12 2017 Jerry James <loganjerry@gmail.com> - 0.6.0-1
9807008
- New upstream version
9807008
e5fdb8a
* Sat Oct  7 2017 Jerry James <loganjerry@gmail.com> - 0.5.2-1
e5fdb8a
- New upstream version
e5fdb8a
1a4a194
* Sat Sep 30 2017 Jerry James <loganjerry@gmail.com> - 0.5.0-1
1a4a194
- New upstream version
1a4a194
4b65c4b
* Mon Sep  4 2017 Jerry James <loganjerry@gmail.com> - 0.3.2-1
4b65c4b
- New upstream version
4b65c4b
52e441f
* Sun Jul 30 2017 Jerry James <loganjerry@gmail.com> - 0.3.1-3
52e441f
- Install the license with the -doc subpackage
52e441f
- Make -doc noarch
52e441f
52e441f
* Sat Jul 29 2017 Jerry James <loganjerry@gmail.com> - 0.3.1-2
52e441f
- Move documentation to a -doc subpackage
52e441f
- Link with libpthread to fix an undefined non-weak symbol
52e441f
- Kill the rpath
52e441f
52e441f
* Thu Jul 27 2017 Jerry James <loganjerry@gmail.com> - 0.3.1-1
52e441f
- Initial RPM