Blob Blame History Raw
Name:           normaliz
Version:        2.12.1
Release:        1%{?dist}
Summary:        A tool for mathematical computations

License:        GPLv3+
URL:            http://www.mathematik.uni-osnabrueck.de/normaliz/
# Warning: This zip-ball contains .jar binaries, source only zip-ball not
# available
Source0:        http://www.mathematik.uni-osnabrueck.de/normaliz/Normaliz%{version}/Normaliz%{version}.zip

BuildRequires:  ant
BuildRequires:  apache-commons-exec
BuildRequires:  apache-commons-exec-javadoc
BuildRequires:  appframework
BuildRequires:  boost-devel
BuildRequires:  chrpath
BuildRequires:  cmake
BuildRequires:  gmp-devel
BuildRequires:  java-devel >= 1:1.6.0
BuildRequires:  javasysmon
BuildRequires:  jpackage-utils

Requires:       lib%{name}%{?_isa} = %{version}-%{release}

%global nopatchver %(cut -d. -f1-2 <<< %{version})

%description
Normaliz is a tool for computations in affine monoids, vector
configurations, lattice polytopes, and rational cones.

Documentation and examples can be found in %{?_pkgdocdir}%{!?_pkgdocdir:%{_docdir}/%{name}-%{version}},
in particular you may find Normaliz%{version}Documentation.pdf useful.  

%package -n libnormaliz
Summary:        Normaliz internals as a library

%description -n libnormaliz
This package contains the normaliz internals as a library, often called
libnormaliz.

%package -n libnormaliz-devel
Summary:        Developer files for libnormaliz
Requires:       lib%{name}%{?_isa} = %{version}-%{release}

%description -n libnormaliz-devel
Header files and library links to develop applications that use the
Normaliz internals as a library (libnormaliz).

%package -n jnormaliz
Summary:        Graphical interface for Normaliz
Requires:       %{name} = %{version}-%{release}
Requires:       apache-commons-exec
Requires:       appframework
Requires:       java >= 1:1.6.0
Requires:       javasysmon
Requires:       jpackage-utils
BuildArch:      noarch

%description -n jnormaliz
JNormaliz is a graphic interface for Normaliz, written in Java.

%package -n jnormaliz-javadoc
Summary:        Javadoc documentation for jNormaliz
Requires:       jnormaliz = %{version}-%{release}
Requires:       apache-commons-exec-javadoc
Requires:       jpackage-utils
BuildArch:      noarch

%description -n jnormaliz-javadoc
Javadoc documentation for jNormaliz

%prep
%setup -q -n Normaliz%{nopatchver}

# Remove prebuilt class files, jars, and javadocs, except for one netbeans jar
# used for building only (no runtime dependencies).
find . -name \*.jar -a \! -name \*copylibstask.jar | xargs rm -f
rm -fr source/jNormaliz/build

# Use system jars instead of bundled jars
ln -s %{_javadir}/appframework.jar lib/appframework-1.0.3.jar
ln -s %{_javadir}/commons-exec.jar lib/commons-exec-1.0.1.jar
ln -s %{_javadir}/javasysmon.jar lib/javasysmon.jar

pushd source/jNormaliz/lib
ln -s %{_javadir}/commons-exec.jar commons-exec-1.0.1/commons-exec-1.0.1.jar
ln -s %{_javadocdir}/apache-commons-exec commons-exec-1.0.1/apidocs
ln -s %{_javadir}/javasysmon.jar javasysmon.jar
ln -s %{_javadir}/junit.jar junit_4/junit-4.5.jar
ln -s %{_javadir}/appframework.jar swing-app-framework/appframework-1.0.3.jar
popd

# Don't add a Class-Path to the jar
sed -i '/Class-Path/d' source/jNormaliz/nbproject/build-impl.xml

# Use our compiler flags
sed -i '/funroll-loops/d' source/CMakeLists.txt

# Fix the library path
if [ "%{_libdir}" = "%{_prefix}/lib64" ]; then
  sed -i "s,/lib,/lib64," source/CMakeLists.txt
fi

%build
# Build the C library and the binaries
mkdir build
pushd build
export LDFLAGS="-Wl,--as-needed $RPM_LD_FLAGS"
%cmake ../source
make %{?_smp_mflags} VERBOSE=1

# Build the Java interface and documentation
cd ../source/jNormaliz
ant jar
ant javadoc
popd

mkdir -p docs/example

# Correct the end of line encodings for use on Linux
pushd example
for file in *.out *.in 
do
    sed 's/\r//' "$file" > "../docs/example/$file"
    touch -r "$file" "../docs/example/$file"
done
popd

%install
# Install the library, binary, and headers
pushd build
make install DESTDIR=%{buildroot}
popd

# Remove spurious rpaths
chrpath -d %{buildroot}%{_libdir}/libnormaliz.so.%{version}
chrpath -d %{buildroot}%{_bindir}/normaliz

# Install the jar
mkdir -p %{buildroot}%{_javadir}
cp -p source/jNormaliz/dist/jNormaliz.jar %{buildroot}%{_javadir}

# Install the javadoc
mkdir -p %{buildroot}%{_javadocdir}
cp -a source/jNormaliz/dist/javadoc %{buildroot}%{_javadocdir}/jnormaliz

%post -n libnormaliz -p /sbin/ldconfig

%postun -n libnormaliz -p /sbin/ldconfig

%files
%doc docs/* doc/Algorithms*.pdf doc/Challenging*.pdf doc/Computing*.pdf
%doc doc/Normaliz.pdf doc/The*.pdf
%{_bindir}/normaliz

%files -n libnormaliz
%license source/COPYING
%{_libdir}/libnormaliz.so.*

%files -n libnormaliz-devel
%doc source/libnormaliz/README
%{_libdir}/libnormaliz.so
%{_includedir}/libnormaliz/

%files -n jnormaliz
%doc doc/jNormaliz_*.pdf
%{_javadir}/jNormaliz.jar

%files -n jnormaliz-javadoc
%{_javadocdir}/jnormaliz

%changelog
* Mon Nov 10 2014 Jerry James <loganjerry@gmail.com> - 2.12.1-1
- New upstream release

* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.11.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild

* Tue Aug  5 2014 Jerry James <loganjerry@gmail.com> - 2.11.2-1
- New upstream release
- Build now uses cmake
- Drop upstreamed patch
- Fix license handling

* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.10.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild

* Thu May 22 2014 Petr Machata <pmachata@redhat.com> - 2.10.1-3
- Rebuild for boost 1.55.0

* Wed Jan 15 2014 Jerry James <loganjerry@gmail.com> - 2.10.1-2
- Fix thinko in -devel dependencies

* Tue Jan 14 2014 Jerry James <loganjerry@gmail.com> - 2.10.1-1
- New upstream release
- Package libnormaliz and jNormaliz separately

* Wed Aug 21 2013 Ville Skyttä <ville.skytta@iki.fi> - 2.7-8
- Adjust for unversioned %%{_docdir_fmt} (#994006).

* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.7-7.2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild

* Tue Jul 30 2013 Petr Machata <pmachata@redhat.com> - 2.7-6.2
- Rebuild for boost 1.54.0

* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.7-5.2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild

* Fri Jul 20 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.7-4.2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild

* Tue Feb 28 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.7-3.2
- Rebuilt for c++ ABI breakage

* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.7-2.2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild

* Wed Oct 26 2011 Marcela Mašláňová <mmaslano@redhat.com> - 2.7-1.2
- rebuild with new gmp without compat lib

* Wed Oct 12 2011 Peter Schiffer <pschiffe@redhat.com> - 2.7-1.1
- rebuild with new gmp

* Fri May 27 2011 Rex Dieter <rdieter@fedoraproject.org> 2.7-1
- 2.7

* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.2-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild

* Thu Feb 25 2010 Mark Chappell <tremble@fedoraproject.org> - 2.2-3
- Preserve timestamps on examples
- Ensure that the first command in install is to wipe the buildroot
- Tweak to description

* Thu Feb 25 2010 Mark Chappell <tremble@fedoraproject.org> - 2.2-2
- Move examples into a subdirectory
- Correct inconsistant use of macros
- Provide a reference to the documentation in the description

* Wed Feb 24 2010 Mark Chappell <tremble@fedoraproject.org> - 2.2-1
- Initial build