The package rpms/coin-or-Cbc.git has added or updated architecture specific content in
its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/coin-or-Cbc.git/commit/?id=aa3c47....
Change:
-%ifnarch %{arm}
Thanks.
Full change:
============
commit aa3c471a9f63cc502f3f4194a3e0c9db95651023
Author: Jerry James <loganjerry(a)gmail.com>
Date: Thu Jun 27 20:17:45 2019 -0600
Update to latest upstream release (bz 1461035).
Also:
- Update project URL.
- Change License from EPL to EPL-1.0.
- Eliminate unnecessary BRs and Rs.
- Add -exception, -overflow, -signed, and -sizeof patches.
- Build with asl and nauty support.
- Eliminate rpath from the library.
- Force libtool to not defeat -Wl,--as-needed.
- Be explicit about library versions as required by latest guidelines.
- Filter out unnecessary Libs values from pkgconfig files.
- Package doxygen tag file to enable cross-linking.
- Run tests on ARM again.
diff --git a/.gitignore b/.gitignore
index dce880f..23f030f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1 @@
-/Cbc-2.8.9.tgz
-/Cbc-2.8.10.tgz
-/Cbc-2.8.12.tgz
-/Cbc-2.9.2.tgz
-/Cbc-2.9.4.tgz
-/Cbc-2.9.5.tgz
-/Cbc-2.9.6.tgz
-/Cbc-2.9.7.tgz
-/Cbc-2.9.8.tgz
+/Cbc-*.tgz
diff --git a/coin-or-Cbc-docdir.patch b/coin-or-Cbc-docdir.patch
index c4d663d..e4a48a9 100644
--- a/coin-or-Cbc-docdir.patch
+++ b/coin-or-Cbc-docdir.patch
@@ -1,16 +1,28 @@
-diff -up Cbc-2.9.4/Makefile.in.orig Cbc-2.9.4/Makefile.in
---- Cbc-2.9.4/Makefile.in.orig 2015-04-12 14:40:29.731876462 -0300
-+++ Cbc-2.9.4/Makefile.in 2015-04-12 14:40:53.497877372 -0300
-@@ -483,7 +483,7 @@ EXTRA_DIST = doc/authors.xml doc/cbcexe.
+diff -up Cbc-2.10.3/configure.orig Cbc-2.10.3/configure
+--- Cbc-2.10.3/configure.orig 2019-06-14 16:04:15.000000000 -0600
++++ Cbc-2.10.3/configure 2019-06-21 11:45:07.466399894 -0600
+@@ -31622,7 +31622,7 @@ echo "${ECHO_T}$doxysrcdir (src)" >&6
+ fi
+ # Not built, fall back to installed tag file
+ if test $doxyfound = no ; then
+- eval doxydir="${datadir}/coin/doc/${proj}/doxydoc"
++ eval doxydir="${datadir}/doc/coin-or-${proj}"
+ # AC_MSG_NOTICE([Considering $doxydir (install)])
+ # AC_MSG_NOTICE([Subdirs: $coin_subdirs)])
+ coin_doxy_tagfiles="$coin_doxy_tagfiles $doxydir/$doxytag=$doxydir/html"
+diff -up Cbc-2.10.3/Makefile.in.orig Cbc-2.10.3/Makefile.in
+--- Cbc-2.10.3/Makefile.in.orig 2019-02-21 14:29:20.000000000 -0700
++++ Cbc-2.10.3/Makefile.in 2019-06-19 14:15:57.293020075 -0600
+@@ -507,7 +507,7 @@ EXTRA_DIST = doc/authors.xml doc/cbcexe.
########################################################################
pkgconfiglibdir = $(libdir)/pkgconfig
pkgconfiglib_DATA = cbc.pc osi-cbc.pc
-addlibsdir = $(DESTDIR)$(datadir)/coin/doc/Cbc
-+addlibsdir = $(DESTDIR)$(datadir)/doc/coin-or-$(PACKAGE_NAME)
++addlibsdir = $(DESTDIR)$(datadir)/doc/coin-or-Cbc
########################################################################
# Maintainer Stuff #
-@@ -493,7 +493,7 @@ CLEANFILES =
+@@ -517,7 +517,7 @@ CLEANFILES =
# Files that are generated and should be cleaned with make distclean
DISTCLEANFILES = $(am__append_3) $(VPATH_DISTCLEANFILES)
DocFiles = README AUTHORS LICENSE
diff --git a/coin-or-Cbc-exception.patch b/coin-or-Cbc-exception.patch
new file mode 100644
index 0000000..8abe2bb
--- /dev/null
+++ b/coin-or-Cbc-exception.patch
@@ -0,0 +1,31 @@
+--- Cbc-2.10.3/src/Cbc_C_Interface.cpp.orig 2019-06-14 04:29:27.000000000 -0600
++++ Cbc-2.10.3/src/Cbc_C_Interface.cpp 2019-06-19 15:09:02.134998459 -0600
+@@ -870,7 +870,7 @@ Cbc_solve(Cbc_Model *model)
+ try {
+
+ CbcMain1((int)argv.size(), &argv[0], *model->model_, NULL,
*model->cbcData);
+- } catch (CoinError e) {
++ } catch (CoinError& e) {
+ printf("%s ERROR: %s::%s, %s\n", prefix,
+ e.className().c_str(), e.methodName().c_str(), e.message().c_str());
+ }
+--- Cbc-2.10.3/test/OsiCbcSolverInterfaceTest.cpp.orig 2019-01-06 16:17:46.000000000
-0700
++++ Cbc-2.10.3/test/OsiCbcSolverInterfaceTest.cpp 2019-06-19 15:09:52.339097536 -0600
+@@ -124,7 +124,7 @@ void OsiCbcSolverInterfaceUnitTest(const
+ try {
+ solver.setObjCoeff(0, 0.0);
+ OSIUNITTEST_ADD_OUTCOME("cbc", "setObjCoeff on empty model",
"should throw exception", OsiUnitTest::TestOutcome::ERROR, false);
+- } catch (CoinError e) {
++ } catch (CoinError& e) {
+ if (OsiUnitTest::verbosity >= 1)
+ std::cout << "Correct throw from setObjCoeff on empty model"
<< std::endl;
+ }
+@@ -138,7 +138,7 @@ void OsiCbcSolverInterfaceUnitTest(const
+ double value[] = { 0.0, 0.0, 0.0, 0.0 };
+ solver.setColSetBounds(index, index + 2, value);
+ OSIUNITTEST_ADD_OUTCOME("cbc", "setColSetBounds on cols not in
model", "should throw exception", OsiUnitTest::TestOutcome::ERROR, false);
+- } catch (CoinError e) {
++ } catch (CoinError& e) {
+ if (OsiUnitTest::verbosity >= 1)
+ std::cout << "Correct throw from setObjCoeff on empty model"
<< std::endl;
+ }
diff --git a/coin-or-Cbc-overflow.patch b/coin-or-Cbc-overflow.patch
new file mode 100644
index 0000000..e2ac162
--- /dev/null
+++ b/coin-or-Cbc-overflow.patch
@@ -0,0 +1,11 @@
+--- Cbc-2.10.3/src/CbcMipStartIO.cpp.orig 2019-02-12 06:05:24.000000000 -0700
++++ Cbc-2.10.3/src/CbcMipStartIO.cpp 2019-06-19 15:16:34.523966230 -0600
+@@ -118,7 +118,7 @@ int computeCompleteSolution(CbcModel *mo
+ for (int i = 0; (i < static_cast< int >(colNames.size())); ++i)
+ colIdx[colNames[i]] = i;
+
+- char printLine[STR_SIZE];
++ char printLine[336];
+ int fixed = 0;
+ int notFound = 0;
+ char colNotFound[256] = "";
diff --git a/coin-or-Cbc-signed.patch b/coin-or-Cbc-signed.patch
new file mode 100644
index 0000000..d3f74c5
--- /dev/null
+++ b/coin-or-Cbc-signed.patch
@@ -0,0 +1,11 @@
+--- Cbc-2.10.3/src/CbcMipStartIO.cpp.orig 2019-06-19 15:16:34.523966230 -0600
++++ Cbc-2.10.3/src/CbcMipStartIO.cpp 2019-06-19 15:21:19.689930857 -0600
+@@ -70,7 +70,7 @@ int readMIPStart(CbcModel *model, const
+ if (colValues.size()) {
+ sprintf(printLine, "MIPStart values read for %d variables.",
static_cast< int >(colValues.size()));
+ model->messageHandler()->message(CBC_GENERAL, model->messages()) <<
printLine << CoinMessageEol;
+- if (colValues.size() < model->getNumCols()) {
++ if (static_cast< int >(colValues.size()) < model->getNumCols()) {
+ int numberColumns = model->getNumCols();
+ OsiSolverInterface *solver = model->solver();
+ vector< pair< string, double > > fullValues;
diff --git a/coin-or-Cbc-sizeof.patch b/coin-or-Cbc-sizeof.patch
new file mode 100644
index 0000000..01c824c
--- /dev/null
+++ b/coin-or-Cbc-sizeof.patch
@@ -0,0 +1,11 @@
+--- Cbc-2.10.3/src/Cbc_ampl.cpp.orig 2019-01-03 14:26:29.000000000 -0700
++++ Cbc-2.10.3/src/Cbc_ampl.cpp 2019-06-19 15:36:26.402969797 -0600
+@@ -597,7 +597,7 @@ int readAmpl(ampl_info *info, int argc,
+ const char *argument = info->arguments[i];
+ for (j = 0; j < sizeof(something) / sizeof(char *); j++) {
+ const char *check = something[j];
+- if (!strncmp(argument, check, sizeof(check))) {
++ if (!strncmp(argument, check, sizeof(something[j]))) {
+ found = (int)(j + 1);
+ } else if (!strncmp(argument, "log", 3)) {
+ foundLog = 1;
diff --git a/coin-or-Cbc-svnversion.patch b/coin-or-Cbc-svnversion.patch
index 13fd63b..dbe634f 100644
--- a/coin-or-Cbc-svnversion.patch
+++ b/coin-or-Cbc-svnversion.patch
@@ -1,14 +1,11 @@
-diff -up Cbc-2.9.4/src/CbcSolver.cpp.orig Cbc-2.9.4/src/CbcSolver.cpp
---- Cbc-2.9.4/src/CbcSolver.cpp.orig 2015-04-12 14:41:21.421878442 -0300
-+++ Cbc-2.9.4/src/CbcSolver.cpp 2015-04-12 14:41:31.088878812 -0300
-@@ -1877,8 +1877,8 @@ int CbcMain1 (int argc, const char *argv
- sprintf(generalPrint + strlen(generalPrint),
- "Build Date: %s \n", __DATE__);
- #ifdef CBC_SVN_REV
-- sprintf(generalPrint + strlen(generalPrint),
-- "Revision Number: %d \n", CBC_SVN_REV);
-+ /*sprintf(generalPrint + strlen(generalPrint),
-+ "Revision Number: %d \n", CBC_SVN_REV);*/
+--- Cbc-2.10.3/src/CbcSolver.cpp.orig 2019-06-13 08:38:38.000000000 -0600
++++ Cbc-2.10.3/src/CbcSolver.cpp 2019-06-19 14:16:42.085682807 -0600
+@@ -1905,7 +1905,7 @@ int CbcMain1(int argc, const char *argv[
+ }
+ sprintf(generalPrint + strlen(generalPrint),
+ "Build Date: %s \n", __DATE__);
+-#ifdef CBC_SVN_REV
++#if 0
+ sprintf(generalPrint + strlen(generalPrint),
+ "Revision Number: %d \n", CBC_SVN_REV);
#endif
- generalMessageHandler->message(CLP_GENERAL, generalMessages)
- << generalPrint
diff --git a/coin-or-Cbc.spec b/coin-or-Cbc.spec
index a3df209..ca0f325 100644
--- a/coin-or-Cbc.spec
+++ b/coin-or-Cbc.spec
@@ -2,26 +2,27 @@
Name: coin-or-%{module}
Summary: Coin-or branch and cut
-Version: 2.9.8
-Release: 10%{?dist}
-License: EPL
-URL:
http://projects.coin-or.org/%{module}
+Version: 2.10.3
+Release: 1%{?dist}
+License: EPL-1.0
+URL:
https://github.com/coin-or/%{module}
Source0:
http://www.coin-or.org/download/pkgsource/%{module}/%{module}-%{version}.tgz
-BuildRequires: gcc-c++
-BuildRequires: atlas-devel
-BuildRequires: blas-devel
-BuildRequires: bzip2-devel
-BuildRequires: coin-or-Clp-devel
BuildRequires: coin-or-Cgl-devel
-BuildRequires: coin-or-CoinUtils-devel
-BuildRequires: coin-or-Osi-devel
+BuildRequires: coin-or-Cgl-doc
+BuildRequires: coin-or-Clp-devel
+BuildRequires: coin-or-Clp-doc
+BuildRequires: coin-or-Data-miplib3
+BuildRequires: coin-or-Data-Netlib
+BuildRequires: coin-or-DyLP-devel
+BuildRequires: coin-or-DyLP-doc
+BuildRequires: coin-or-Vol-devel
+BuildRequires: coin-or-Vol-doc
BuildRequires: doxygen
-BuildRequires: glpk-devel
-BuildRequires: graphviz
-BuildRequires: lapack-devel
-BuildRequires: pkgconfig
-BuildRequires: readline-devel
-BuildRequires: zlib-devel
+BuildRequires: gcc-c++
+BuildRequires: libnauty-devel
+BuildRequires: mp-devel
+BuildRequires: MUMPS-devel
+BuildRequires: openblas-devel
# Install documentation in standard rpm directory
Patch0: %{name}-docdir.patch
@@ -29,6 +30,18 @@ Patch0: %{name}-docdir.patch
# Avoid empty #define if svnversion is available at configure time
Patch1: %{name}-svnversion.patch
+# Do not catch polymorphic exceptions by value
+Patch2: %{name}-exception.patch
+
+# Fix a possible buffer overflow
+Patch3: %{name}-overflow.patch
+
+# Fix a mixed signed/unsigned operation
+Patch4: %{name}-signed.patch
+
+# Fix an incorrect sizeof invocation
+Patch5: %{name}-sizeof.patch
+
%description
Cbc (Coin-or branch and cut) is an open-source mixed integer programming
solver written in C++. It can be used as a callable library or using a
@@ -46,15 +59,20 @@ including:
%package devel
Summary: Development files for %{name}
-Requires: coin-or-CoinUtils-devel
+Requires: coin-or-Cgl-devel%{?_isa}
+Requires: coin-or-Clp-devel%{?_isa}
Requires: %{name}%{?_isa} = %{version}-%{release}
-%description devel
+%description devel
The %{name}-devel package contains libraries and header files for
developing applications that use %{name}.
%package doc
Summary: Documentation files for %{name}
+Requires: coin-or-Cgl-doc
+Requires: coin-or-Clp-doc
+Requires: coin-or-DyLP-doc
+Requires: coin-or-Vol-doc
Requires: %{name} = %{version}-%{release}
BuildArch: noarch
@@ -62,51 +80,87 @@ BuildArch: noarch
This package contains the documentation for %{name}.
%prep
-%setup -q -n %{module}-%{version}
-%patch0 -p1
-%patch1 -p1
-
-# silence doxygen deprecation warnings
-sed -i
's/^\(SYMBOL_CACHE_SIZE\|SHOW_DIRECTORIES\|HTML_ALIGN_MEMBERS\|USE_INLINE_TREES\|DOT_FONTNAME\)/#\1/g'
doxydoc/doxygen.conf.in
+%autosetup -p1 -n %{module}-%{version}
%build
-%configure
-# Kill rpaths
-sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g'
libtool
-sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
-make %{?_smp_mflags} all doxydoc
+%configure \
+ --with-asl-incdir=%{_includedir}/asl \
+ --with-asl-lib=-lasl \
+ --with-blas-incdir=%{_includedir}/openblas \
+ --with-blas-lib=-lopenblas \
+ --with-glpk-incdir=%{_includedir} \
+ --with-glpk-lib=-lglpk \
+ --with-lapack-incdir=%{_includedir}/openblas \
+ --with-lapack-lib=-lopenblas \
+ --with-mumps-incdir=%{_includedir}/MUMPS \
+ --with-mumps-lib=-ldmumps \
+ --with-nauty-incdir=%{_includedir}/nauty \
+ --with-nauty-lib=-lnauty
+
+# Get rid of undesirable hardcoded rpaths; workaround libtool reordering
+# -Wl,--as-needed after all the libraries.
+sed -e 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g'
\
+ -e 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' \
+ -e 's|CC="\(g..\)"|CC="\1 -Wl,--as-needed"|' \
+ -i libtool
+
+%make_build all doxydoc
%install
-make install DESTDIR=%{buildroot}
+%make_install
rm -f %{buildroot}%{_libdir}/*.la
-cp -a doxydoc/html %{buildroot}%{_docdir}/%{name}
-cp -p src/CbcParam.hpp %{buildroot}%{_includedir}/coin/
+rm -f %{buildroot}%{_docdir}/%{name}/{LICENSE,cbc_addlibs.txt}
+cp -a doxydoc/{html,*.tag} %{buildroot}%{_docdir}/%{name}
+
+# The pkgconfig files list transitive dependencies. Those are necessary when
+# using static libraries, but not with shared libraries.
+sed -i 's/ -lnauty.*//' %{buildroot}%{_libdir}/pkgconfig/cbc.pc
-%ifnarch %{arm}
%check
LD_LIBRARY_PATH=%{buildroot}%{_libdir} make test
-%endif
%ldconfig_scriptlets
%files
+%license LICENSE
%dir %{_docdir}/%{name}
-%doc %{_docdir}/%{name}/AUTHORS
-%doc %{_docdir}/%{name}/LICENSE
-%doc %{_docdir}/%{name}/README
-%doc %{_docdir}/%{name}/cbc_addlibs.txt
+%{_docdir}/%{name}/AUTHORS
+%{_docdir}/%{name}/README
%{_bindir}/cbc
-%{_libdir}/*.so.*
+%{_libdir}/libCbc.so.3
+%{_libdir}/libCbc.so.3.*
+%{_libdir}/libCbcSolver.so.3
+%{_libdir}/libCbcSolver.so.3.*
+%{_libdir}/libOsiCbc.so.3
+%{_libdir}/libOsiCbc.so.3.*
%files devel
%{_includedir}/coin/*
-%{_libdir}/*.so
-%{_libdir}/pkgconfig/*
+%{_libdir}/libCbc.so
+%{_libdir}/libCbcSolver.so
+%{_libdir}/libOsiCbc.so
+%{_libdir}/pkgconfig/cbc.pc
+%{_libdir}/pkgconfig/osi-cbc.pc
%files doc
-%doc %{_docdir}/%{name}/html
+%{_docdir}/%{name}/html
+%{_docdir}/%{name}/cbc_doxy.tag
%changelog
+* Thu Jun 27 2019 Jerry James <loganjerry(a)gmail.com> - 2.10.3-1
+- Update to latest upstream release (bz 1461035)
+- Update project URL
+- Change License from EPL to EPL-1.0
+- Eliminate unnecessary BRs and Rs
+- Add -exception, -overflow, -signed, and -sizeof patches
+- Build with asl and nauty support
+- Eliminate rpath from the library
+- Force libtool to not defeat -Wl,--as-needed
+- Be explicit about library versions as required by latest guidelines
+- Filter out unnecessary Libs values from pkgconfig files
+- Package doxygen tag file to enable cross-linking
+- Run tests on ARM again
+
* Thu Jan 31 2019 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.9.8-10
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
diff --git a/sources b/sources
index e93226e..be7dc41 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-dd8e4af284e9231d034e173119a60113 Cbc-2.9.8.tgz
+SHA512 (Cbc-2.10.3.tgz) =
3a8410d15e46cc12c6859fbd73b38bdef41155d1e996563fbf1ef5cbc1acd63b1abeff72bbe590307315f77844c2efa4e1017428ee13b1cf73f0a6f19a1ad046