[NLopt/el5] Initial import (#1004209)
by Björn 'besser82' Esser
commit d52c609e82233fd34fbf6324cd6766d79fd41fc3
Author: Björn Esser <bjoern.esser(a)gmail.com>
Date: Fri Sep 27 23:34:42 2013 +0200
Initial import (#1004209)
.gitignore | 4 +
NLopt.spec | 395 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sources | 1 +
3 files changed, 400 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..4a406bf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,4 @@
+*~
+*.rpm
+*.tar*
+results_*/
diff --git a/NLopt.spec b/NLopt.spec
new file mode 100644
index 0000000..c9829f4
--- /dev/null
+++ b/NLopt.spec
@@ -0,0 +1,395 @@
+# Needed stuff for Octave.
+%global octpkg %{name}
+
+%if 0%{?fedora} || 0%{?rhel} >= 7
+# We don't want provides for libs in private dirs.
+%global __provides_exclude_from ^%{python2_sitearch}/.*\\.so
+%else
+# These are not defined on <= el6.
+#
+# Octave binary API provided
+%global octave_api %(octave-config -p API_VERSION || echo 0)}
+
+# Octave Package Directories
+%global octshareprefix %{_datadir}/octave
+%global octprefix %{octshareprefix}/packages
+%global octarchprefix %{_libdir}/octave/packages
+
+%global octpkgdir %{octshareprefix}/%{octpkg}-%{version}
+%global octpkglibdir %{octarchprefix}/%{octpkg}-%{version}
+%endif
+
+# Needed stuff for Guile.
+%{!?el5:%global guile_pkgconf %(pkg-config --list-all | grep guile | sed -e 's! .*$!!g')}
+%{!?el5:%global guile_sitedir %(pkg-config --variable=sitedir %{guile_pkgconf})}
+
+# This is a post-release with lot's of improvements.
+%global commit 35e63778654f55baafbdf554de58ac3c20220c33
+%global shortcommit %(c=%{commit}; echo ${c:0:7})
+%global commitdate 20130903
+%global gitrelease .git%{commitdate}.%{shortcommit}
+
+%global lc_name nlopt
+
+Name: NLopt
+Version: 2.4
+Release: 1%{gitrelease}%{?dist}
+Summary: Open-Source library for nonlinear optimization
+%{?el5:Group: System Environment/Libraries}
+
+# The detailed license-breakdown of the sources is:
+#
+# BSD (2 clause)
+# --------------
+# util/mt19937ar.c
+#
+#
+# BSD (3 clause)
+# --------------
+# slsqp/*
+#
+#
+# LGPL (v2 or later)
+# ------------------
+# luksan/*
+#
+# MIT/X11 (BSD like)
+# ------------------
+# api/* auglag/* bobyqa/* cdirect/* cobyla/*
+# cquad/* crs/* direct/* esch/* isres/*
+# mlsl/* mma/* neldermead/* newuoa/* octave/*
+# stogo/* tensor/* test/* util/* (ex. util/mt19937ar.c)
+#
+#
+# Public Domain
+# -------------
+# praxis/* subplex/*
+#
+License: BSD and LGPLv2+ and MIT and Public Domain
+URL: http://ab-initio.mit.edu/nlopt
+Source0: https://github.com/stevengj/%{lc_name}/archive/%{commit}/%{name}-%{versio...
+
+%{?el5:BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)}
+BuildRequires: libtool
+BuildRequires: ncurses-devel
+BuildRequires: octave-devel
+%if 0%{?fedora} || 0%{?rhel} >= 6
+BuildRequires: guile-devel
+BuildRequires: pkgconfig
+BuildRequires: swig
+%endif
+%if 0%{?fedora} || 0%{?rhel} >= 7
+BuildRequires: numpy
+BuildRequires: python2-devel
+BuildRequires: python3-devel
+BuildRequires: python3-numpy
+%endif
+
+# The "gnulib" is a copylib and has a wildcard-permission from FPC.
+# See: https://fedorahosted.org/fpc/ticket/174
+Provides: bundled(gnulib)
+Provides: %{lc_name} = %{version}-%{release}
+Provides: %{lc_name}%{?_isa} = %{version}-%{release}
+
+%description
+NLopt is a library for nonlinear local and global optimization, for
+functions with and without gradient information. It is designed as
+as simple, unified interface and packaging of several free/open-source
+nonlinear optimization libraries.
+
+It features bindings for GNU Guile, Octave and Python. This build has
+been made with C++-support enabled.
+
+
+%package devel
+Summary: Development files for %{name}
+%{?el5:Group: Development/Libraries}
+
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+Provides: %{lc_name}-devel = %{version}-%{release}
+Provides: %{lc_name}-devel%{?_isa} = %{version}-%{release}
+
+%description devel
+This package contains development files for %{name}.
+
+
+%package doc
+Summary: Documentation files for %{name}
+%{?el5:Group: Documentation}
+
+%{?!el5:BuildArch: noarch}
+Provides: %{lc_name}-doc = %{version}-%{release}
+
+%description doc
+This package contains documentation files for %{name}.
+
+
+%if 0%{?fedora} || 0%{?rhel} >= 6
+%package -n guile-%{name}
+Summary: Guile bindings for %{name}
+
+Requires: guile%{?_isa}
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+Provides: guile-%{lc_name} = %{version}-%{release}
+Provides: guile-%{lc_name}%{?_isa} = %{version}-%{release}
+
+%description -n guile-%{name}
+This package contains Guile bindings for %{name}.
+
+
+%package -n guile-%{name}-devel
+Summary: Development files of Guile bindings for %{name}
+
+Requires: guile-%{name}%{?_isa} = %{version}-%{release}
+Requires: %{name}-devel%{?_isa} = %{version}-%{release}
+
+Provides: guile-%{lc_name}-devel = %{version}-%{release}
+Provides: guile-%{lc_name}-devel%{?_isa} = %{version}-%{release}
+
+%description -n guile-%{name}-devel
+This package contains Development files
+of Guile bindings for %{name}.
+%endif
+
+
+%package -n octave-%{name}
+Summary: Octave bindings for %{name}
+%{?el5:Group: System Environment/Libraries}
+
+Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: octave(api) = %{octave_api}
+Requires(post): octave
+Requires(postun): octave
+
+Provides: octave-%{lc_name} = %{version}-%{release}
+Provides: octave-%{lc_name}%{?_isa} = %{version}-%{release}
+
+%description -n octave-%{name}
+This package contains the Octave bindings for %{name}.
+
+
+%if 0%{?fedora} || 0%{?rhel} >= 7
+%package -n python-%{name}
+Summary: Python bindings for %{name}
+
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+Provides: python-%{lc_name} = %{version}-%{release}
+Provides: python-%{lc_name}%{?_isa} = %{version}-%{release}
+
+%description -n python-%{name}
+This package contains Python bindings for %{name}.
+
+
+%package -n python3-%{name}
+Summary: Python3 bindings for %{name}
+
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+Provides: python3-%{lc_name} = %{version}-%{release}
+Provides: python3-%{lc_name}%{?_isa} = %{version}-%{release}
+
+%description -n python3-%{name}
+This package contains Python3 bindings for %{name}.
+%endif
+
+
+%prep
+%setup -qn %{lc_name}-%{commit}
+
+# Move all %%doc to topdir and append their belonging.
+mv -f README.md README
+_topdir="`pwd`"
+for _dir in `find . -type d | \
+ sed -e "/\.libs/d" -e "s/\.\///g" -e "/\./d" | sort -u`
+do
+ pushd ${_dir}
+ for _file in 'AUTHOR*' 'COPY*' 'README*' '*[Pp][Dd][Ff]'
+ do
+ for _doc in `find . -name "${_file}"`
+ do
+ mv -f ${_doc} ${_topdir}/${_doc}.`echo ${_dir} | sed -e "s/\//_/g"`
+ done
+ done
+ popd
+done
+
+# Get rid of obsoleted autotools-macros for el6+.
+%{?!el5:sed -i -e 's!^AC_PROG_LIBTOOL!LT_INIT!g' configure.ac}
+
+# On el5 we need to exclude anything SWIG-related.
+%{?el5:sed -i -e 's!swig!!g' Makefile.am}
+
+# Bootstrapping once before we create a copy in %%{py3dir}.
+touch swig/nlopt.scm.in
+autoreconf -fiv
+
+%if 0%{?fedora} || 0%{?rhel} >= 7
+# Creating a copy for building the Python3-plugin.
+rm -rf %{py3dir}
+cp -a . %{py3dir}
+%endif
+
+
+%build
+%configure \
+ --enable-shared \
+ --enable-maintainer-mode \
+ --with-cxx \
+%if 0%{?fedora} || 0%{?rhel} >= 7
+ PYTHON=%{__python} \
+%endif
+ OCT_INSTALL_DIR=%{octpkglibdir}
+
+# Parallel-build might fail because of some race-condition
+#make %{?_smp_mflags}
+make
+
+%if 0%{?fedora} || 0%{?rhel} >= 7
+pushd %{py3dir}
+%configure \
+ --enable-shared \
+ --enable-maintainer-mode \
+ --with-cxx \
+ PYTHON=%{__python3} \
+ OCT_INSTALL_DIR=%{octpkglibdir}
+
+# Parallel-build might fail because of some race-condition
+#make %{?_smp_mflags}
+make
+%endif
+
+
+%install
+%{?el5:rm -rf %{buildroot}}
+make install DESTDIR=%{buildroot}
+
+%if 0%{?fedora} || 0%{?rhel} >= 7
+pushd %{py3dir}
+make install DESTDIR=%{buildroot}
+popd
+%endif
+
+# We don't want these static-libs and libtool-dumplings
+find %{buildroot} -depth -name '*.*a' -print0 | xargs -0 rm -f
+
+# Python bits need to be arched, but some end-up in %%{python_sitelib}.
+%if 0%{?fedora} || 0%{?rhel} >= 7
+[[ "%{python2_sitearch}" != "%{python2_sitelib}" ]] && \
+ mv -f %{buildroot}%{python2_sitelib}/* %{buildroot}%{python2_sitearch}
+[[ "%{python3_sitearch}" != "%{python3_sitelib}" ]] && \
+ mv -f %{buildroot}%{python3_sitelib}/* %{buildroot}%{python3_sitearch}
+%endif
+
+# Setup octave stuff properly.
+mkdir -p %{buildroot}%{octpkgdir}/packinfo
+mv %{buildroot}%{octpkglibdir}/*.m %{buildroot}%{octpkgdir}
+chmod 0755 %{buildroot}%{octpkglibdir}/*.oct
+install -pm 0644 COPYING %{buildroot}%{octpkgdir}/packinfo
+
+cat > %{buildroot}%{octpkgdir}/packinfo/DESCRIPTION << EOF
+NLopt is a library for nonlinear local and global optimization, for
+functions with and without gradient information. It is designed as
+as simple, unified interface and packaging of several free/open-source
+nonlinear optimization libraries.
+EOF
+
+cat > %{buildroot}%{octpkgdir}/packinfo/on_uninstall.m << EOF
+function on_uninstall (desc)
+ error ('Can not uninstall %s installed by the redhat package manager', desc.name);
+endfunction
+EOF
+
+
+%check
+pushd test
+make check
+popd
+
+%if 0%{?fedora} || 0%{?rhel} >= 7
+pushd %{py3dir}/test
+make check
+popd
+%endif
+
+
+%clean
+%{?el5:rm -rf %{buildroot}}
+
+
+%post -p /sbin/ldconfig
+%postun -p /sbin/ldconfig
+
+%if 0%{?fedora} || 0%{?rhel} >= 6
+%post -n guile-%{name} -p /sbin/ldconfig
+%postun -n guile-%{name} -p /sbin/ldconfig
+%endif
+
+%if 0%{?fedora} || 0%{?rhel} >= 7
+%post -n octave-%{name}
+%octave_cmd pkg rebuild
+
+%preun -n octave-%{name}
+%octave_pkg_preun
+
+%postun -n octave-%{name}
+%octave_cmd pkg rebuild
+%else
+%post -n octave-%{name}
+octave -H -q --no-window-system --no-site-file --eval "pkg rebuild"
+
+%preun -n octave-%{name}
+rm -f %{octpkgdir}/packinfo/on_uninstall.m
+if [ -e %{octpkgdir}/packinfo/on_uninstall.m.orig ]
+then
+ mv -f %{octpkgdir}/packinfo/on_uninstall.m.orig %{octpkgdir}/packinfo/on_uninstall.m
+ cd %{octpkgdir}/packinfo
+ octave -H -q --no-window-system --no-site-file --eval "l=pkg('list');on_uninstall(l{cellfun((a)(x)strcmp(x.name,'%{octpkg}'),l)});"
+fi
+
+%postun -n octave-%{name}
+octave -H -q --no-window-system --no-site-file --eval "pkg rebuild"
+%endif
+
+
+%files
+%doc ChangeLog COPY* NEWS
+%{_libdir}/lib%{lc_name}_cxx.so.*
+
+%files devel
+%doc %{_mandir}/man3/*
+%{_includedir}/*
+%{_libdir}/lib%{lc_name}_cxx.so
+%{_libdir}/pkgconfig/%{lc_name}.pc
+
+%files doc
+%doc AUTHOR* ChangeLog COPY* NEWS README* TODO *.[Pp][Dd][Ff].*
+
+%if 0%{?fedora} || 0%{?rhel} >= 6
+%files -n guile-%{name}
+%{_libdir}/lib%{lc_name}_cxx_guile.so.*
+%{guile_sitedir}/*
+
+%files -n guile-%{name}-devel
+%{_libdir}/lib%{lc_name}_cxx_guile.so
+%endif
+
+%files -n octave-%{name}
+%{octpkglibdir}
+%{octpkgdir}
+
+%if 0%{?fedora} || 0%{?rhel} >= 7
+%files -n python-%{name}
+%{python2_sitearch}/*
+
+%files -n python3-%{name}
+%{python3_sitearch}/*.so*
+%{python3_sitearch}/*.py*
+%{python3_sitearch}/__pycache__/*.py*
+%endif
+
+%changelog
+* Thu Sep 19 2013 Björn Esser <bjoern.esser(a)gmail.com> - 2.4-1.git20130903.35e6377
+- Initial rpm release (#1004209)
diff --git a/sources b/sources
index e69de29..cdbc9e8 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+2d516a7862c34ab0ec8468cb27172a59 NLopt-2.4-35e6377.tar.gz