%global commit 9fdb5147068f3b719999210e56b493327f1ca5e7 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %if 0%{?fedora} %global with_jacop 1 %global with_gecode 1 %else %global with_jacop 0 %global with_gecode 1 %endif %if 0%{?rhel} %global cmake_ver 34 %endif Name: mp Version: 3.0.1 Release: 0.2%{?dist} License: MIT and BSD Summary: An open-source library for mathematical programming URL: https://github.com/ampl/mp Source0: https://github.com/ampl/mp/archive/%{commit}.zip#/%{name}-%{commit}.zip Source1: mp.module.in Patch0: mp-strtod.patch Requires: environment(modules) BuildRequires: atlas-devel %if 0%{?rhel} BuildRequires: cmake%{cmake_ver} %else BuildRequires: cmake %endif %if %{with_gecode} BuildRequires: gecode-devel %endif %if %{with_jacop} BuildRequires: jacop BuildRequires: java-devel %endif # Need git to satisfy a cmake test if building modules (gsl) BuildRequires: git BuildRequires: chrpath BuildRequires: gsl-devel BuildRequires: doxygen BuildRequires: python-sphinx BuildRequires: python-virtualenv #BuildRequires: python-sphinx-latex BuildRequires: unixODBC-devel %description An open-source library for mathematical programming. Features * Reusable high-performance .nl reader * Efficient type-safe C++ API for connecting solvers to AMPL and other systems: source * Interfaces to solvers supporting AMPL extensions for logic and constraint programming: * IBM ILOG CPLEX and CPLEX CP Optimizer (ilogcp) * Gecode * JaCoP * Interfaces to the following solvers: * LocalSolver * Sulum * Interfaces to other solvers via AMPL Solver Library * Cross-platform build support with CMake and continuous integration systems. This includes third-party solvers and libraries (COIN-OR solvers with CMake support are available in the ampl/coin repository). * AMPLGSL, an AMPL function library providing access to the GNU Scientific Library (GSL) functions. See the AMPLGSL documentation. * Database support on Linux and MacOS X. See Database and spreadsheet connection guide. * SMPSWriter, a converter from deterministic equivalent of a two-stage stochastic programming (SP) problem written in AMPL to an SP problem in SMPS format. %package devel Summary: Development files for %{name} Group: Development/Libraries Requires: %{name}%{?_isa} = %{version}-%{release} %description devel This package contains the header files and development documentation for %{name}. %prep %setup -q -n %{name}-%{commit} %patch0 -p1 %if %{with_jacop} ln -s %{_javadir}/jacop/jacop.jar thirdparty/jacop/jacop-`rpm -q --qf "%%{VERSION}" jacop`.jar %endif %build %if 0%{?fedora} > 20 || 0%{?rhel} > 6 export LIBS="-lgsl -L%{_libdir}/atlas -lsatlas" %else export LIBS="-lgsl -L%{_libdir}/atlas -lcblas -latlas" %endif mkdir build pushd build %if %{with_gecode} BUILD="gecode" %endif %if %{with_jacop} BUILD="$BUILD,jacop" %endif BUILD="$BUILD,gsl,smpswriter" %if 0%{?rhel} export CXXFLAGS="%{optflags} -Wl,-z,relro -fPIC -pie -Wl,-z,now" export LDFLAGS="%{__global_ldflags} -fPIC -pie -Wl,-z,now" %cmake34 -DCMAKE_INSTALL_PREFIX:PATH=%{_libdir}/%{name} \ -DCMAKE_SHARED_LINKER_FLAGS="%{__global_ldflags} -Wl,-z,now -fPIC -pie -Wl,--as-needed" \ -DCMAKE_SKIP_INSTALL_RPATH:BOOL=YES \ -DCMAKE_SKIP_RPATH:BOOL=NO \ -DBUILD_SHARED_LIBS=ON -DBUILD=$BUILD .. %else #export CXXFLAGS="$(echo "%%{optflags}" | sed -e 's/-O2//')" %cmake -DCMAKE_INSTALL_PREFIX:PATH=%{_libdir}/%{name} \ -DCMAKE_SHARED_LINKER_FLAGS="%{__global_ldflags} -Wl,--as-needed" \ -DCMAKE_SKIP_INSTALL_RPATH:BOOL=YES \ -DCMAKE_SKIP_RPATH:BOOL=NO \ -DBUILD_SHARED_LIBS=ON -DBUILD=$BUILD .. %endif make %{?_smp_mflags} ## Documentation needs online connection to upstream ## and Sphinx 1.1.3 #make doc popd %install #m%%ake_install mkdir -p %{buildroot}%{_datadir}/Modules/modulefiles sed 's#@BINDIR@#'%{_libdir}/%{name}'#g;' < %{SOURCE1} > \ %{buildroot}%{_datadir}/Modules/modulefiles/%{name}-%{_arch} mkdir -p %{buildroot}%{_libdir}/%{name}/bin mkdir -p %{buildroot}%{_includedir}/asl cp -a include %{buildroot}%{_prefix} install -pm 644 src/asl/*.h %{buildroot}%{_includedir}/asl install -pm 644 src/asl/solvers/*.h build/src/asl/*.h %{buildroot}%{_includedir}/asl # Required by coin-or-Couenne install -pm 644 src/asl/solvers/{opcode,r_opn}.hd %{buildroot}%{_includedir}/asl install -pm 755 build/bin/libasl.so* %{buildroot}%{_libdir} install -pm 755 build/bin/libmp.so* %{buildroot}%{_libdir} install -pm 755 build/bin/amplgsl.dll %{buildroot}%{_libdir}/%{name}/bin install -pm 755 build/bin/ampltabl.dll %{buildroot}%{_libdir}/%{name}/bin install -pm 755 build/bin/arithchk %{buildroot}%{_libdir}/%{name}/bin install -pm 755 build/bin/cp.dll %{buildroot}%{_libdir}/%{name}/bin install -pm 755 build/bin/fullbit.dll %{buildroot}%{_libdir}/%{name}/bin install -pm 755 build/bin/gecode %{buildroot}%{_libdir}/%{name}/bin install -pm 755 build/bin/gjh %{buildroot}%{_libdir}/%{name}/bin %if %{with_jacop} %ifnarch %{arm} aarch64 install -pm 755 build/bin/jacop %{buildroot}%{_libdir}/%{name}/bin %endif %endif install -pm 755 build/bin/smpswriter %{buildroot}%{_libdir}/%{name}/bin install -pm 755 build/bin/simpbit.dll %{buildroot}%{_libdir}/%{name}/bin install -pm 755 build/bin/tableproxy%{__isa_bits} %{buildroot}%{_libdir}/%{name}/bin ## Fix symbolic links ln -srf %{_libdir}/libasl.so.%{version} %{buildroot}%{_libdir}/libasl.so.3 ln -srf %{_libdir}/libasl.so.3 %{buildroot}%{_libdir}/libasl.so ln -srf %{_libdir}/libmp.so.%{version} %{buildroot}%{_libdir}/libmp.so.3 ln -srf %{_libdir}/libmp.so.3 %{buildroot}%{_libdir}/libmp.so chrpath --delete %{buildroot}%{_libdir}/libasl.so.%{version} chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/amplgsl.dll chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/ampltabl.dll chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/arithchk chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/cp.dll chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/fullbit.dll chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/gecode chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/gjh %if %{with_jacop} %ifnarch %{arm} aarch64 chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/jacop %endif %endif chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/smpswriter chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/simpbit.dll chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/tableproxy%{__isa_bits} %check pushd build %if 0%{?rhel} ctest%{cmake_ver} --force-new-ctest-process %else ctest --force-new-ctest-process %endif %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %doc README.rst %license LICENSE.rst %{_libdir}/%{name}/ %{_libdir}/*.so.* %{_datadir}/Modules/modulefiles/%{name}-%{_arch} %files devel %{_libdir}/*.so %{_includedir}/asl %{_includedir}/mp %changelog * Wed Mar 16 2016 pcpa - 3.0.1-0.2 - Avoid incorrect system detection and use of strtod_ASL wrapper - Install extra headers required by coin-or-Couenne * Fri Mar 04 2016 Antonio Trande - 3.0.1-0.1 - Update to 3.0.1 prerelease (commit #9fdb514) * Thu Mar 03 2016 Antonio Trande - 3.0.0-1 - Update to 3.0.0 * Wed Mar 02 2016 Antonio Trande - 2.1.1-0.2 - Built with cmake3 on EPEL * Tue Mar 01 2016 Antonio Trande - 2.1.1-0.1 - Update to 2.1.0 - Dropped old patches for 1.3.0 - Jacop support disabled on EPEL - Patched for GCC6 - Patched for GSL-2.1 - fpinit patched for ARM * Mon Feb 22 2016 Orion Poplawski - 1.3.0-10 - Rebuild for gsl 2.1 * Thu Feb 04 2016 Fedora Release Engineering - 1.3.0-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild * Wed Jan 6 2016 Orion Poplawski - 1.3.0-8 - Require environment(modules) * Wed Jun 17 2015 Fedora Release Engineering - 1.3.0-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild * Sun Jun 14 2015 pcpa - 1.3.0-6 - Rebuild for new gecode. * Sat May 02 2015 Kalev Lember - 1.3.0-5 - Rebuilt for GCC 5 C++11 ABI change * Sun Feb 22 2015 pcpa - 1.3.0-4 - Add recomended extra libs for gsl. * Wed Jan 28 2015 pcpa - 1.3.0-3 - Enable the jacop interface. - Use a better patch for non x86 fpinit (#1186162) - Correct check on bigendian. * Fri Jan 23 2015 pcpa - 1.3.0-2 - Use the license macro for the LICENSE.rst file (#1181793#c3) - environment-modules is a Requires not BuildRequires (#1181793#c3) * Tue Jan 13 2015 pcpa - 1.3.0-1 - Update package to use new 1.3.0 release * Mon Dec 22 2014 pcpa - v20141006-4 - Update to version that works with rawide gecode - Add jacop support, works but disabled, missing from rawhide - Build smpswriter * Fri Dec 19 2014 pcpa - v20141006-3 - Switch to newer git commit as base of package - Add conditional to build gecode - Build documentation * Wed Dec 17 2014 pcpa - v20141006-2 - Use environment-modules to follow upstream conventions. * Sat Dec 13 2014 pcpa - v20141006-1 - Initial mp spec.