035e24d
# Upstream doesn't make releases.  We have to check the code out of git.
035e24d
%global owner    berkeley-abc
101e1a3
%global gittag   35280f30504ad16f1d0ab005905883bee883747c
035e24d
%global shorttag %(cut -b -7 <<< %{gittag})
101e1a3
%global gitdate  20190608
a19d415
a19d415
# WARNING: When updating to a newer snapshot, because upstream doesn't do
a19d415
# shared library versioning, run abipkgdiff (from libabigail) against the
a19d415
# old and new binary and debuginfo packages to detect abi changes that would
a19d415
# require bumping the shared library version, e.g.,
6778fa0
#   abipkgdiff --d1 abc-libs-debuginfo-<old>.rpm \
6778fa0
#              --d2 abc-libs-debuginfo-<new>.rpm \
6778fa0
#              --devel1 abc-devel-<old>.rpm \
6778fa0
#              --devel2 abc-devel-<new>.rpm \
6778fa0
#              abc-libs-<old>.rpm abc-libs-<new>.rpm
a19d415
# If the shared library version is bumped, remember to rebuild dependent
a19d415
# packages, finding them using e.g.
a19d415
#   repoquery --whatrequires abc-libs
a19d415
# This should be done for each branch in which abc-libs will be updated.
Jerry James 575c8c7
Jerry James 575c8c7
Name:           abc
Jerry James 575c8c7
Version:        1.01
32e79a0
Release:        23.git%{gitdate}%{?dist}
Jerry James 575c8c7
Summary:        Sequential logic synthesis and formal verification
Jerry James 575c8c7
744413f
License:        MIT
Jerry James 575c8c7
URL:            http://www.eecs.berkeley.edu/~alanmi/abc/abc.htm
035e24d
Source0:        https://github.com/%{owner}/%{name}/archive/%{gittag}/%{name}-%{shorttag}.tar.gz
Jerry James 575c8c7
# Man page created by Jerry James using upstream text; hence, it is covered by
Jerry James 575c8c7
# the same copyright and license as the code.
Jerry James 575c8c7
Source1:        %{name}.1
Jerry James 575c8c7
# Fedora-specific patch: do not use the bundled libraries
Jerry James 575c8c7
Patch0:         %{name}-bundlelib.patch
Jerry James 575c8c7
# Fedora-specific patch: build a shared library instead of a static library
Jerry James 575c8c7
Patch1:         %{name}-sharedlib.patch
d87bf10
# Fix a minor header issue
d87bf10
Patch2:         %{name}-header.patch
101e1a3
# Set an soname on the library
101e1a3
Patch3:         %{name}-build.patch
101e1a3
# Fix sprintf calls that can overflow their buffers
101e1a3
Patch4:         %{name}-format.patch
Jerry James 575c8c7
Jerry James 575c8c7
BuildRequires:  bzip2-devel
101e1a3
BuildRequires:  cmake
438cf10
BuildRequires:  gcc-c++
Jerry James 575c8c7
BuildRequires:  readline-devel
Jerry James 575c8c7
BuildRequires:  zlib-devel
Jerry James 575c8c7
Jerry James 575c8c7
Requires:       %{name}-libs%{?_isa} = %{version}-%{release}
Jerry James 575c8c7
Jerry James 575c8c7
%description
Jerry James 575c8c7
ABC is a growing software system for synthesis and verification of
Jerry James 575c8c7
binary sequential logic circuits appearing in synchronous hardware
Jerry James 575c8c7
designs.  ABC combines scalable logic optimization based on And-Inverter
Jerry James 575c8c7
Graphs (AIGs), optimal-delay DAG-based technology mapping for look-up
Jerry James 575c8c7
tables and standard cells, and innovative algorithms for sequential
Jerry James 575c8c7
synthesis and verification.
Jerry James 575c8c7
Jerry James 575c8c7
ABC provides an experimental implementation of these algorithms and a
Jerry James 575c8c7
programming environment for building similar applications.  Future
Jerry James 575c8c7
development will focus on improving the algorithms and making most of
Jerry James 575c8c7
the packages stand-alone.  This will allow the user to customize ABC for
Jerry James 575c8c7
their needs as if it were a toolbox rather than a complete tool.
Jerry James 575c8c7
Jerry James 575c8c7
%package libs
Jerry James 575c8c7
Summary:        Library for sequential synthesis and verification
101e1a3
# ABC includes a bundled and modified version of CUDD 2.4.2, which is
101e1a3
# incompatible with the Fedora-provided CUDD 3.0.0.
101e1a3
Provides:       bundled(cudd) = 2.4.2
Jerry James 575c8c7
Jerry James 575c8c7
%description libs
Jerry James 575c8c7
This package contains the core functionality of ABC as a shared library.
Jerry James 575c8c7
Jerry James 575c8c7
%package devel
Jerry James 575c8c7
Summary:        Headers and libraries for developing with ABC
Jerry James 575c8c7
Requires:       %{name}-libs%{?_isa} = %{version}-%{release}
Jerry James 575c8c7
Jerry James 575c8c7
%description devel
Jerry James 575c8c7
Headers and libraries for developing applications that use ABC.
Jerry James 575c8c7
Jerry James 575c8c7
%prep
035e24d
%autosetup -p0 -n %{name}-%{gittag}
Jerry James 575c8c7
Jerry James 575c8c7
# Do not use the bundled libraries
d87bf10
rm -fr lib src/misc/{bzlib,zlib}
Jerry James 575c8c7
Jerry James 575c8c7
# Set the version number in the man page
035e24d
sed 's/@VERSION@/%{version} (%{gitdate})/' %{SOURCE1} > %{name}.1
Jerry James 575c8c7
touch -r %{SOURCE1} %{name}.1
Jerry James 575c8c7
Jerry James 575c8c7
%build
101e1a3
export CFLAGS="%{optflags} -DNDEBUG -I%{_includedir}/cudd"
101e1a3
export CXXFLAGS="$CFLAGS"
101e1a3
%cmake -DCMAKE_SKIP_RPATH:BOOL=YES -DCMAKE_SKIP_INSTALL_RPATH:BOOL=YES .
101e1a3
%make_build ABC_MAKE_VERBOSE=1 ABC_USE_STDINT_H=1
Jerry James 575c8c7
Jerry James 575c8c7
%install
Jerry James 575c8c7
# Install the library
Jerry James 575c8c7
mkdir -p %{buildroot}%{_libdir}
Jerry James 575c8c7
install -p -m 0755 lib%{name}.so.0.0.0 %{buildroot}%{_libdir}
Jerry James 575c8c7
ln -s lib%{name}.so.0.0.0 %{buildroot}%{_libdir}/lib%{name}.so.0
Jerry James 575c8c7
ln -s lib%{name}.so.0 %{buildroot}%{_libdir}/lib%{name}.so
Jerry James 575c8c7
Jerry James 575c8c7
# Install the header files
270dae4
pushd src
Jerry James 575c8c7
mkdir -p %{buildroot}%{_includedir}/%{name}
270dae4
tar -cBf - $(find -O3 . -name \*.h) | \
270dae4
  (cd %{buildroot}%{_includedir}/%{name}; tar -xBf -)
270dae4
popd
Jerry James 575c8c7
Jerry James 575c8c7
# Install the binary
Jerry James 575c8c7
mkdir -p %{buildroot}%{_bindir}
Jerry James 575c8c7
install -p -m 0755 %{name} %{buildroot}%{_bindir}
Jerry James 575c8c7
Jerry James 575c8c7
# Install the man page
Jerry James 575c8c7
mkdir -p %{buildroot}%{_mandir}/man1
Jerry James 575c8c7
install -p -m 0644 %{name}.1 %{buildroot}%{_mandir}/man1
Jerry James 575c8c7
Jerry James 575c8c7
%files
035e24d
%doc README.md readmeaig
Jerry James 575c8c7
%{_bindir}/%{name}
Jerry James 575c8c7
%{_mandir}/man1/%{name}*
Jerry James 575c8c7
Jerry James 575c8c7
%files libs
744413f
%license copyright.txt
Jerry James 575c8c7
%{_libdir}/lib%{name}.so.*
Jerry James 575c8c7
Jerry James 575c8c7
%files devel
Jerry James 575c8c7
%{_includedir}/%{name}/
Jerry James 575c8c7
%{_libdir}/lib%{name}.so
Jerry James 575c8c7
Jerry James 575c8c7
%changelog
32e79a0
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-23.git20190608
32e79a0
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
32e79a0
101e1a3
* Wed Jun 12 2019 Jerry James <loganjerry@gmail.com> - 1.01-22.git20190608
101e1a3
- Update to latest git snapshot
101e1a3
- Add -build and -format patches
101e1a3
- Build with cmake
101e1a3
- Enable CUDD support
101e1a3
ba609eb
* Sun Feb 17 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.01-21.git20181121
ba609eb
- Rebuild for readline 8.0
ba609eb
eed2499
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-20.git20181121
eed2499
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
eed2499
6778fa0
* Mon Nov 26 2018 Jerry James <loganjerry@gmail.com> - 1.01-19.git20181121
6778fa0
- Update to latest git snapshot
6778fa0
9c7c239
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-18.git20180708
9c7c239
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
9c7c239
035e24d
* Tue Jul 10 2018 Jerry James <loganjerry@gmail.com> - 1.01-17.git20180708
035e24d
- Update to latest git snapshot
035e24d
438cf10
* Sat Mar  3 2018 Jerry James <loganjerry@gmail.com> - 1.01-16.hg20180228
438cf10
- Update to latest mercurial snapshot
438cf10
- BR gcc-c++ instead of gcc
438cf10
46244d8
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-15.hg20180129
46244d8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
46244d8
d87bf10
* Fri Feb  2 2018 Jerry James <loganjerry@gmail.com> - 1.01-14.hg20180129
d87bf10
- Update to latest mercurial snapshot
d87bf10
bdb2560
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-13.hg20160905
bdb2560
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
bdb2560
9747621
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-12.hg20160905
9747621
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
9747621
c0db3ac
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-11.hg20160905
c0db3ac
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
c0db3ac
Igor Gnatenko 8856bd4
* Thu Jan 12 2017 Igor Gnatenko <ignatenko@redhat.com> - 1.01-10.hg20160905
Igor Gnatenko 8856bd4
- Rebuild for readline 7.x
Igor Gnatenko 8856bd4
a19d415
* Sat Sep 10 2016 Eric Smith <brouhaha@fedoraproject.org> - 1.01-9.hg20160905
a19d415
- Update to latest mercurial snapshot
a19d415
744413f
* Fri Feb  5 2016 Jerry James <loganjerry@gmail.com> - 1.01-8.hg20160203
744413f
- Update to latest mercurial snapshot
744413f
- Drop the python2 subpackage; upstream moved support to a separate project
744413f
4740505
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.01-7.hg20150306
4740505
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
4740505
aeaff1f
* Tue Jun 16 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.01-6.hg20150306
aeaff1f
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
aeaff1f
e28c8ed
* Sat May 02 2015 Kalev Lember <kalevlember@gmail.com> - 1.01-5.hg20150306
e28c8ed
- Rebuilt for GCC 5 C++11 ABI change
e28c8ed
0adf615
* Sat Mar  7 2015 Jerry James <loganjerry@gmail.com> - 1.01-4.hg20150306
0adf615
- Update to latest mercurial snapshot
0adf615
270dae4
* Thu Jan  1 2015 Jerry James <loganjerry@gmail.com> - 1.01-3.hg20150101
270dae4
- Update to latest mercurial snapshot
270dae4
- Fix installation of header files
270dae4
Jerry James 575c8c7
* Wed Dec  3 2014 Jerry James <loganjerry@gmail.com> - 1.01-2.hg20141130
Jerry James 575c8c7
- Drop unnecessary jquery Provides
Jerry James 575c8c7
- Fix file permissions
Jerry James 575c8c7
Jerry James 575c8c7
* Mon Dec  1 2014 Jerry James <loganjerry@gmail.com> - 1.01-1.hg20141130
Jerry James 575c8c7
- Initial RPM