Architecture specific change in rpms/coin-or-lemon.git
by githook-noreply@fedoraproject.org
The package rpms/coin-or-lemon.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-lemon.git/commit/?id=d17c....
Change:
+ExcludeArch: %{ix86}
Thanks.
Full change:
============
commit d17cadced81423dacbfebd942d7c326c31a7dad0
Author: Jerry James <loganjerry(a)gmail.com>
Date: Wed Jan 31 16:08:56 2024 -0700
Build with SoPlex support
- Convert License tag to SPDX
- Stop building for 32-bit x86
diff --git a/coin-or-lemon.spec b/coin-or-lemon.spec
index 022b982..78cdc0c 100644
--- a/coin-or-lemon.spec
+++ b/coin-or-lemon.spec
@@ -1,9 +1,9 @@
Name: coin-or-lemon
Version: 1.3.1
-Release: 29%{?dist}
+Release: 30%{?dist}
Summary: A C++ template library providing many common graph algorithms
-License: Boost and BSD
+License: BSL-1.0 AND BSD-3-Clause
URL: http://lemon.cs.elte.hu/trac/lemon
Source0: http://lemon.cs.elte.hu/pub/sources/lemon-%{version}.tar.gz
@@ -21,6 +21,12 @@ Patch2: lemon-%{version}-template.patch
# out of scope.
Patch3: lemon-%{version}-test.patch
+# Adapt to recent versions of SoPlex
+Patch4: lemon-%{version}-soplex.patch
+
+# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
+ExcludeArch: %{ix86}
+
BuildRequires: bzip2-devel
BuildRequires: cmake
BuildRequires: coin-or-Cbc-devel
@@ -28,6 +34,7 @@ BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: glpk-devel
BuildRequires: help2man
+BuildRequires: libsoplex-devel
BuildRequires: make
BuildRequires: zlib-devel
@@ -79,8 +86,9 @@ sed -i 's/libemon\.a/libemon.so/' cmake/LEMONConfig.cmake.in
%build
+export CXXFLAGS='%{build_cxxflags} -I%{_includedir}/soplex'
-# CPLEX (aka ILOG) and SOPLEX are non-free, so don't try to detect them.
+# CPLEX (aka ILOG) is non-free, so don't try to detect it.
#
# We suppress detection of ghostscript, doxygen, and python to make
# the build behave the same way with and without them installed -- we
@@ -92,7 +100,7 @@ sed -i 's/libemon\.a/libemon.so/' cmake/LEMONConfig.cmake.in
-DLEMON_ENABLE_COIN:BOOL=YES \
-DLEMON_ENABLE_GLPK:BOOL=YES \
-DLEMON_ENABLE_ILOG:BOOL=NO \
- -DLEMON_ENABLE_SOPLEX:BOOL=NO
+ -DLEMON_ENABLE_SOPLEX:BOOL=YES
%cmake_build
@@ -153,6 +161,11 @@ cp -a AUTHORS NEWS README doc/html %{buildroot}%{_docdir}/%{name}
%changelog
+* Wed Jan 31 2024 Jerry James <loganjerry(a)gmail.com> - 1.3.1-30
+- Build with SoPlex support
+- Convert License tag to SPDX
+- Stop building for 32-bit x86
+
* Wed Jan 24 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.1-29
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git a/lemon-1.3.1-soplex.patch b/lemon-1.3.1-soplex.patch
new file mode 100644
index 0000000..2040807
--- /dev/null
+++ b/lemon-1.3.1-soplex.patch
@@ -0,0 +1,377 @@
+diff -up lemon-1.3.1/lemon/soplex.cc.orig lemon-1.3.1/lemon/soplex.cc
+--- lemon-1.3.1/lemon/soplex.cc.orig 2014-07-07 08:40:24.967315818 -0600
++++ lemon-1.3.1/lemon/soplex.cc 2023-02-11 15:36:36.030959514 -0700
+@@ -19,7 +19,6 @@
+ #include <iostream>
+ #include <lemon/soplex.h>
+
+-#include <soplex.h>
+ #include <spxout.h>
+
+
+@@ -41,7 +40,7 @@ namespace lemon {
+ cols = lp.cols;
+
+ soplex = new soplex::SoPlex;
+- (*static_cast<soplex::SPxLP*>(soplex)) = *(lp.soplex);
++ *soplex = *(lp.soplex);
+
+ _col_names = lp._col_names;
+ _col_names_ref = lp._col_names_ref;
+@@ -73,22 +72,22 @@ namespace lemon {
+ soplex::LPCol c;
+ c.setLower(-soplex::infinity);
+ c.setUpper(soplex::infinity);
+- soplex->addCol(c);
++ soplex->addColReal(c);
+
+ _col_names.push_back(std::string());
+
+- return soplex->nCols() - 1;
++ return soplex->numCols() - 1;
+ }
+
+ int SoplexLp::_addRow() {
+ soplex::LPRow r;
+ r.setLhs(-soplex::infinity);
+ r.setRhs(soplex::infinity);
+- soplex->addRow(r);
++ soplex->addRowReal(r);
+
+ _row_names.push_back(std::string());
+
+- return soplex->nRows() - 1;
++ return soplex->numRows() - 1;
+ }
+
+ int SoplexLp::_addRow(Value l, ExprIterator b, ExprIterator e, Value u) {
+@@ -97,16 +96,16 @@ namespace lemon {
+ v.add(it->first, it->second);
+ }
+ soplex::LPRow r(l, v, u);
+- soplex->addRow(r);
++ soplex->addRowReal(r);
+
+ _row_names.push_back(std::string());
+
+- return soplex->nRows() - 1;
++ return soplex->numRows() - 1;
+ }
+
+
+ void SoplexLp::_eraseCol(int i) {
+- soplex->removeCol(i);
++ soplex->removeColReal(i);
+ _col_names_ref.erase(_col_names[i]);
+ _col_names[i] = _col_names.back();
+ _col_names_ref[_col_names.back()] = i;
+@@ -114,7 +113,7 @@ namespace lemon {
+ }
+
+ void SoplexLp::_eraseRow(int i) {
+- soplex->removeRow(i);
++ soplex->removeRowReal(i);
+ _row_names_ref.erase(_row_names[i]);
+ _row_names[i] = _row_names.back();
+ _row_names_ref[_row_names.back()] = i;
+@@ -176,16 +175,16 @@ namespace lemon {
+
+
+ void SoplexLp::_setRowCoeffs(int i, ExprIterator b, ExprIterator e) {
+- for (int j = 0; j < soplex->nCols(); ++j) {
+- soplex->changeElement(i, j, 0.0);
++ for (int j = 0; j < soplex->numCols(); ++j) {
++ soplex->changeElementReal(i, j, 0.0);
+ }
+ for(ExprIterator it = b; it != e; ++it) {
+- soplex->changeElement(i, it->first, it->second);
++ soplex->changeElementReal(i, it->first, it->second);
+ }
+ }
+
+ void SoplexLp::_getRowCoeffs(int i, InsertIterator b) const {
+- const soplex::SVector& vec = soplex->rowVector(i);
++ const soplex::SVector& vec = soplex->rowVectorRealInternal(i);
+ for (int k = 0; k < vec.size(); ++k) {
+ *b = std::make_pair(vec.index(k), vec.value(k));
+ ++b;
+@@ -193,16 +192,16 @@ namespace lemon {
+ }
+
+ void SoplexLp::_setColCoeffs(int j, ExprIterator b, ExprIterator e) {
+- for (int i = 0; i < soplex->nRows(); ++i) {
+- soplex->changeElement(i, j, 0.0);
++ for (int i = 0; i < soplex->numRows(); ++i) {
++ soplex->changeElementReal(i, j, 0.0);
+ }
+ for(ExprIterator it = b; it != e; ++it) {
+- soplex->changeElement(it->first, j, it->second);
++ soplex->changeElementReal(it->first, j, it->second);
+ }
+ }
+
+ void SoplexLp::_getColCoeffs(int i, InsertIterator b) const {
+- const soplex::SVector& vec = soplex->colVector(i);
++ const soplex::SVector& vec = soplex->colVectorRealInternal(i);
+ for (int k = 0; k < vec.size(); ++k) {
+ *b = std::make_pair(vec.index(k), vec.value(k));
+ ++b;
+@@ -210,65 +209,65 @@ namespace lemon {
+ }
+
+ void SoplexLp::_setCoeff(int i, int j, Value value) {
+- soplex->changeElement(i, j, value);
++ soplex->changeElementReal(i, j, value);
+ }
+
+ SoplexLp::Value SoplexLp::_getCoeff(int i, int j) const {
+- return soplex->rowVector(i)[j];
++ return soplex->rowVectorRealInternal(i)[j];
+ }
+
+ void SoplexLp::_setColLowerBound(int i, Value value) {
+ LEMON_ASSERT(value != INF, "Invalid bound");
+- soplex->changeLower(i, value != -INF ? value : -soplex::infinity);
++ soplex->changeLowerReal(i, value != -INF ? value : -soplex::infinity);
+ }
+
+ SoplexLp::Value SoplexLp::_getColLowerBound(int i) const {
+- double value = soplex->lower(i);
++ double value = soplex->lowerReal(i);
+ return value != -soplex::infinity ? value : -INF;
+ }
+
+ void SoplexLp::_setColUpperBound(int i, Value value) {
+ LEMON_ASSERT(value != -INF, "Invalid bound");
+- soplex->changeUpper(i, value != INF ? value : soplex::infinity);
++ soplex->changeUpperReal(i, value != INF ? value : soplex::infinity);
+ }
+
+ SoplexLp::Value SoplexLp::_getColUpperBound(int i) const {
+- double value = soplex->upper(i);
++ double value = soplex->upperReal(i);
+ return value != soplex::infinity ? value : INF;
+ }
+
+ void SoplexLp::_setRowLowerBound(int i, Value lb) {
+ LEMON_ASSERT(lb != INF, "Invalid bound");
+- soplex->changeRange(i, lb != -INF ? lb : -soplex::infinity, soplex->rhs(i));
++ soplex->changeRangeReal(i, lb != -INF ? lb : -soplex::infinity, soplex->rhsReal(i));
+ }
+
+ SoplexLp::Value SoplexLp::_getRowLowerBound(int i) const {
+- double res = soplex->lhs(i);
++ double res = soplex->lhsReal(i);
+ return res == -soplex::infinity ? -INF : res;
+ }
+
+ void SoplexLp::_setRowUpperBound(int i, Value ub) {
+ LEMON_ASSERT(ub != -INF, "Invalid bound");
+- soplex->changeRange(i, soplex->lhs(i), ub != INF ? ub : soplex::infinity);
++ soplex->changeRangeReal(i, soplex->lhsReal(i), ub != INF ? ub : soplex::infinity);
+ }
+
+ SoplexLp::Value SoplexLp::_getRowUpperBound(int i) const {
+- double res = soplex->rhs(i);
++ double res = soplex->rhsReal(i);
+ return res == soplex::infinity ? INF : res;
+ }
+
+ void SoplexLp::_setObjCoeffs(ExprIterator b, ExprIterator e) {
+- for (int j = 0; j < soplex->nCols(); ++j) {
+- soplex->changeObj(j, 0.0);
++ for (int j = 0; j < soplex->numCols(); ++j) {
++ soplex->changeObjReal(j, 0.0);
+ }
+ for (ExprIterator it = b; it != e; ++it) {
+- soplex->changeObj(it->first, it->second);
++ soplex->changeObjReal(it->first, it->second);
+ }
+ }
+
+ void SoplexLp::_getObjCoeffs(InsertIterator b) const {
+- for (int j = 0; j < soplex->nCols(); ++j) {
+- Value coef = soplex->obj(j);
++ for (int j = 0; j < soplex->numCols(); ++j) {
++ Value coef = soplex->objReal(j);
+ if (coef != 0.0) {
+ *b = std::make_pair(j, coef);
+ ++b;
+@@ -277,11 +276,11 @@ namespace lemon {
+ }
+
+ void SoplexLp::_setObjCoeff(int i, Value obj_coef) {
+- soplex->changeObj(i, obj_coef);
++ soplex->changeObjReal(i, obj_coef);
+ }
+
+ SoplexLp::Value SoplexLp::_getObjCoeff(int i) const {
+- return soplex->obj(i);
++ return soplex->objReal(i);
+ }
+
+ SoplexLp::SolveExitStatus SoplexLp::_solve() {
+@@ -304,7 +303,7 @@ namespace lemon {
+
+ SoplexLp::Value SoplexLp::_getPrimal(int i) const {
+ if (_primal_values.empty()) {
+- _primal_values.resize(soplex->nCols());
++ _primal_values.resize(soplex->numCols());
+ soplex::Vector pv(_primal_values.size(), &_primal_values.front());
+ soplex->getPrimal(pv);
+ }
+@@ -313,7 +312,7 @@ namespace lemon {
+
+ SoplexLp::Value SoplexLp::_getDual(int i) const {
+ if (_dual_values.empty()) {
+- _dual_values.resize(soplex->nRows());
++ _dual_values.resize(soplex->numRows());
+ soplex::Vector dv(_dual_values.size(), &_dual_values.front());
+ soplex->getDual(dv);
+ }
+@@ -321,11 +320,11 @@ namespace lemon {
+ }
+
+ SoplexLp::Value SoplexLp::_getPrimalValue() const {
+- return soplex->objValue();
++ return soplex->objValueReal();
+ }
+
+ SoplexLp::VarStatus SoplexLp::_getColStatus(int i) const {
+- switch (soplex->getBasisColStatus(i)) {
++ switch (soplex->basisColStatus(i)) {
+ case soplex::SPxSolver::BASIC:
+ return BASIC;
+ case soplex::SPxSolver::ON_UPPER:
+@@ -343,7 +342,7 @@ namespace lemon {
+ }
+
+ SoplexLp::VarStatus SoplexLp::_getRowStatus(int i) const {
+- switch (soplex->getBasisRowStatus(i)) {
++ switch (soplex->basisRowStatus(i)) {
+ case soplex::SPxSolver::BASIC:
+ return BASIC;
+ case soplex::SPxSolver::ON_UPPER:
+@@ -362,18 +361,18 @@ namespace lemon {
+
+ SoplexLp::Value SoplexLp::_getPrimalRay(int i) const {
+ if (_primal_ray.empty()) {
+- _primal_ray.resize(soplex->nCols());
++ _primal_ray.resize(soplex->numCols());
+ soplex::Vector pv(_primal_ray.size(), &_primal_ray.front());
+- soplex->getDualfarkas(pv);
++ soplex->getDualFarkas(pv);
+ }
+ return _primal_ray[i];
+ }
+
+ SoplexLp::Value SoplexLp::_getDualRay(int i) const {
+ if (_dual_ray.empty()) {
+- _dual_ray.resize(soplex->nRows());
++ _dual_ray.resize(soplex->numRows());
+ soplex::Vector dv(_dual_ray.size(), &_dual_ray.front());
+- soplex->getDualfarkas(dv);
++ soplex->getDualFarkas(dv);
+ }
+ return _dual_ray[i];
+ }
+@@ -407,18 +406,18 @@ namespace lemon {
+ void SoplexLp::_setSense(Sense sense) {
+ switch (sense) {
+ case MIN:
+- soplex->changeSense(soplex::SPxSolver::MINIMIZE);
++ soplex->setIntParam(soplex::SoPlex::OBJSENSE, soplex::SoPlex::OBJSENSE_MINIMIZE);
+ break;
+ case MAX:
+- soplex->changeSense(soplex::SPxSolver::MAXIMIZE);
++ soplex->setIntParam(soplex::SoPlex::OBJSENSE, soplex::SoPlex::OBJSENSE_MAXIMIZE);
+ }
+ }
+
+ SoplexLp::Sense SoplexLp::_getSense() const {
+- switch (soplex->spxSense()) {
+- case soplex::SPxSolver::MAXIMIZE:
++ switch (soplex->intParam(soplex::SoPlex::OBJSENSE)) {
++ case soplex::SoPlex::OBJSENSE_MAXIMIZE:
+ return MAX;
+- case soplex::SPxSolver::MINIMIZE:
++ case soplex::SoPlex::OBJSENSE_MINIMIZE:
+ return MIN;
+ default:
+ LEMON_ASSERT(false, "Wrong sense.");
+@@ -427,7 +426,8 @@ namespace lemon {
+ }
+
+ void SoplexLp::_clear() {
+- soplex->clear();
++ soplex->clearLPReal();
++ soplex->clearBasis();
+ _col_names.clear();
+ _col_names_ref.clear();
+ _row_names.clear();
+@@ -458,7 +458,7 @@ namespace lemon {
+ }
+
+ void SoplexLp::_applyMessageLevel() {
+- soplex::Param::setVerbose(_message_level);
++ soplex->setIntParam(soplex::SoPlex::VERBOSITY, _message_level);
+ }
+
+ } //namespace lemon
+diff -up lemon-1.3.1/lemon/soplex.h.orig lemon-1.3.1/lemon/soplex.h
+--- lemon-1.3.1/lemon/soplex.h.orig 2014-07-07 08:40:24.968315824 -0600
++++ lemon-1.3.1/lemon/soplex.h 2023-02-11 11:42:25.891042371 -0700
+@@ -26,11 +26,7 @@
+ #include <string>
+
+ #include <lemon/lp_base.h>
+-
+-// Forward declaration
+-namespace soplex {
+- class SoPlex;
+-}
++#include <soplex.h>
+
+ namespace lemon {
+
+diff -up lemon-1.3.1/test/CMakeLists.txt.orig lemon-1.3.1/test/CMakeLists.txt
+--- lemon-1.3.1/test/CMakeLists.txt.orig 2014-07-07 08:40:24.971315841 -0600
++++ lemon-1.3.1/test/CMakeLists.txt 2023-02-11 15:04:46.842624883 -0700
+@@ -63,7 +63,7 @@ IF(LEMON_HAVE_LP)
+ ADD_EXECUTABLE(lp_test EXCLUDE_FROM_ALL lp_test.cc)
+ ENDIF()
+
+- SET(LP_TEST_LIBS lemon)
++ SET(LP_TEST_LIBS lemon mpfr gmp)
+
+ IF(LEMON_HAVE_GLPK)
+ SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${GLPK_LIBRARIES})
+diff -up lemon-1.3.1/test/lp_test.cc.orig lemon-1.3.1/test/lp_test.cc
+--- lemon-1.3.1/test/lp_test.cc.orig 2014-07-07 08:40:24.981315897 -0600
++++ lemon-1.3.1/test/lp_test.cc 2023-02-11 14:09:44.594993043 -0700
+@@ -18,7 +18,6 @@
+
+ #include <sstream>
+ #include <lemon/lp_skeleton.h>
+-#include "test_tools.h"
+ #include <lemon/tolerance.h>
+
+ #include <lemon/config.h>
+@@ -33,6 +32,7 @@
+
+ #ifdef LEMON_HAVE_SOPLEX
+ #include <lemon/soplex.h>
++#undef check
+ #endif
+
+ #ifdef LEMON_HAVE_CLP
+@@ -42,6 +42,9 @@
+ #ifdef LEMON_HAVE_LP
+ #include <lemon/lp.h>
+ #endif
++
++#include "test_tools.h"
++
+ using namespace lemon;
+
+ int countCols(LpBase & lp) {
3 months
Architecture specific change in rpms/mp.git
by githook-noreply@fedoraproject.org
The package rpms/mp.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/mp.git/commit/?id=bf8b690a9fc85e1....
Change:
+ExcludeArch: %{ix86}
Thanks.
Full change:
============
commit bf8b690a9fc85e1d19838a4af75b8d98c8719d7d
Author: Jerry James <loganjerry(a)gmail.com>
Date: Wed Feb 7 16:23:12 2024 -0700
Update to latest release, with new version scheme
- Unbundle asl
- Stop building documentation
- Drop support for Fedora < 37
- Build with support for HiGHS and SCIP
- Remove unused ODBC dependency
- Remove unnecessary environment module; install to libexec instead
- Stop building for 32-bit x86
diff --git a/mp-enum-cast.patch b/mp-enum-cast.patch
new file mode 100644
index 0000000..342a09c
--- /dev/null
+++ b/mp-enum-cast.patch
@@ -0,0 +1,32 @@
+Fixes this error:
+
+/builddir/build/BUILD/mp-34afbd381c72af810c4313e5f4ee182dec93682e/src/asl/aslbuilder.cc: In function ‘void mp::asl::internal::Convert(const mp::NLHeader&, Edaginfo&)’:
+/builddir/build/BUILD/mp-34afbd381c72af810c4313e5f4ee182dec93682e/src/asl/aslbuilder.cc:83:54: error: invalid conversion from ‘int’ to ‘mp::arith::Kind’ [-fpermissive]
+ 83 | arith::IsIEEE(arith_kind) && arith::IsIEEE(h.arith_kind)) {
+ | ~~^~~~~~~~~~
+ | |
+ | int
+In file included from /builddir/build/BUILD/mp-34afbd381c72af810c4313e5f4ee182dec93682e/include/mp/common.h:30,
+ from /builddir/build/BUILD/mp-34afbd381c72af810c4313e5f4ee182dec93682e/include/mp/problem-builder.h:32,
+ from /builddir/build/BUILD/mp-34afbd381c72af810c4313e5f4ee182dec93682e/src/asl/aslbuilder.h:30:
+/builddir/build/BUILD/mp-34afbd381c72af810c4313e5f4ee182dec93682e/include/mp/nl-header.h:122:32: note: initializing argument 1 of ‘bool mp::arith::IsIEEE(Kind)’
+ 122 | inline bool IsIEEE(arith::Kind k) {
+ | ~~~~~~~~~~~~^
+
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/src/asl/aslbuilder.cc.orig 2024-02-06 20:09:02.731522049 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/src/asl/aslbuilder.cc 2024-02-06 21:09:24.523829332 -0700
+@@ -77,10 +77,11 @@ namespace internal {
+
+ void Convert(const NLHeader &h, Edaginfo &info) {
+ info.binary_nl_ = h.format;
+- if (h.arith_kind != arith::UNKNOWN) {
++ arith::Kind h_kind = static_cast<arith::Kind>(h.arith_kind);
++ if (h_kind != arith::UNKNOWN) {
+ arith::Kind arith_kind = arith::GetKind();
+- if (arith_kind != h.arith_kind &&
+- arith::IsIEEE(arith_kind) && arith::IsIEEE(h.arith_kind)) {
++ if (arith_kind != h_kind &&
++ arith::IsIEEE(arith_kind) && arith::IsIEEE(h_kind)) {
+ info.binary_nl_ = h.arith_kind << 1;
+ info.iadjfcn = info.dadjfcn = bswap_ASL;
+ }
diff --git a/mp-fix_gcc14.patch b/mp-fix_gcc14.patch
deleted file mode 100644
index 21a0379..0000000
--- a/mp-fix_gcc14.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/src/asl/solvers/fpinit.origin.c 2020-03-04 07:39:58.000000000 +0100
-+++ b/src/asl/solvers/fpinit.c 2024-02-03 22:12:13.957313958 +0100
-@@ -140,7 +140,7 @@
- __fpu_control = 0x27f;
- _FPU_SETCW(__fpu_control);
- #elif defined(FE_ALL_EXCEPT)
-- fedisableexcept(FE_ALL_EXCEPT);
-+ feraiseexcept(FE_ALL_EXCEPT);
- #else
- !!!! How does this system work?
- !!!! Either figure it out (and modify this text),
diff --git a/mp-jvm-destructor.patch b/mp-jvm-destructor.patch
deleted file mode 100644
index f4235b0..0000000
--- a/mp-jvm-destructor.patch
+++ /dev/null
@@ -1,64 +0,0 @@
---- mp-7fd4828c934fccf7367499c9e01cc9a1e90a2093/solvers/jacop/java.cc.orig 2020-03-03 23:39:58.000000000 -0700
-+++ mp-7fd4828c934fccf7367499c9e01cc9a1e90a2093/solvers/jacop/java.cc 2021-01-15 14:48:04.231938853 -0700
-@@ -119,7 +119,7 @@ std::string RegKey::GetStrValue(fmt::CSt
-
- namespace mp {
-
--JVM JVM::instance_;
-+JVM *JVM::instance_;
-
- void Env::Throw(jthrowable exception, const char *method_name) {
- env_->ExceptionClear();
-@@ -190,8 +190,16 @@ JVM::~JVM() {
- jvm_->DestroyJavaVM();
- }
-
-+void JVM::cleanup_jvm()
-+{
-+ if (instance_) {
-+ delete instance_;
-+ instance_ = nullptr;
-+ }
-+}
-+
- Env JVM::env(const char *const *options) {
-- if (!instance_.jvm_) {
-+ if (!instance_) {
- #ifdef _WIN32
- std::string runtime_lib_path;
- bool exists = false;
-@@ -251,15 +259,19 @@ Env JVM::env(const char *const *options)
- }
- vm_args.nOptions = static_cast<jint>(jvm_options.size());
- vm_args.options = &jvm_options[0];
-+ instance_ = new JVM();
- void *envp = 0;
-- jint result = JNI_CreateJavaVM(&instance_.jvm_, &envp, &vm_args);
-+ jint result = JNI_CreateJavaVM(&instance_->jvm_, &envp, &vm_args);
- if (result != JNI_OK) {
-+ delete instance_;
-+ instance_ = nullptr;
- throw JavaError(fmt::format(
- "Java VM initialization failed, error code = {}", result));
- }
-- instance_.env_ = Env(static_cast<JNIEnv*>(envp));
-+ instance_->env_ = Env(static_cast<JNIEnv*>(envp));
-+ std::atexit(cleanup_jvm);
- }
-- return instance_.env_;
-+ return instance_->env_;
- }
-
- ClassBase::~ClassBase() {}
---- mp-7fd4828c934fccf7367499c9e01cc9a1e90a2093/solvers/jacop/java.h.orig 2020-03-03 23:39:58.000000000 -0700
-+++ mp-7fd4828c934fccf7367499c9e01cc9a1e90a2093/solvers/jacop/java.h 2021-01-15 14:33:39.263164981 -0700
-@@ -215,7 +215,8 @@ class JVM {
- private:
- JavaVM *jvm_;
- Env env_;
-- static JVM instance_;
-+ static JVM *instance_;
-+ static void cleanup_jvm();
-
- JVM() : jvm_() {}
- ~JVM();
diff --git a/mp-probleminfo.patch b/mp-probleminfo.patch
new file mode 100644
index 0000000..57efbee
--- /dev/null
+++ b/mp-probleminfo.patch
@@ -0,0 +1,202 @@
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/src/asl/aslbuilder.cc.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/src/asl/aslbuilder.cc 2024-02-06 20:09:02.731522049 -0700
+@@ -344,9 +344,9 @@ void ASLBuilder::InitASL(const NLHeader
+ Convert(h, asl_->i);
+ }
+
+-void ASLBuilder::SetInfo(const ProblemInfo &pi) {
++void ASLBuilder::SetInfo(const NLProblemInfo &pi) {
+ NLHeader header = NLHeader();
+- ProblemInfo &header_pi = header;
++ NLProblemInfo &header_pi = header;
+ header_pi = pi;
+ InitASL(header);
+
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/src/asl/aslbuilder.h.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/src/asl/aslbuilder.h 2024-02-06 20:09:20.267284215 -0700
+@@ -315,7 +315,7 @@ class ASLBuilder {
+
+ // Sets problem information.
+ // Throws ASLError on error.
+- void SetInfo(const ProblemInfo &pi);
++ void SetInfo(const NLProblemInfo &pi);
+
+ // Ends building the ASL object.
+ void EndBuild();
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/test/asl/aslexpr-test.cc.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/test/asl/aslexpr-test.cc 2024-02-06 20:09:47.785910978 -0700
+@@ -218,7 +218,7 @@ class ExprTest : public ::testing::Test
+
+ public:
+ ExprTest() {
+- mp::ProblemInfo info = mp::ProblemInfo();
++ mp::NLProblemInfo info = mp::NLProblemInfo();
+ info.num_vars = NUM_VARS;
+ info.num_objs = 1;
+ info.num_funcs = 2;
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/test/asl/aslproblem-test.cc.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/test/asl/aslproblem-test.cc 2024-02-06 20:10:30.394333063 -0700
+@@ -463,14 +463,14 @@ TEST(ProblemTest, AddVar) {
+
+ class TestASLBuilder : public asl::internal::ASLBuilder {
+ private:
+- static mp::ProblemInfo MakeProblemInfo() {
+- mp::ProblemInfo info = mp::ProblemInfo();
++ static mp::NLProblemInfo MakeProblemInfo() {
++ mp::NLProblemInfo info = mp::NLProblemInfo();
+ info.num_vars = info.num_objs = 1;
+ return info;
+ }
+
+ public:
+- explicit TestASLBuilder(mp::ProblemInfo info = MakeProblemInfo()) {
++ explicit TestASLBuilder(mp::NLProblemInfo info = MakeProblemInfo()) {
+ set_flags(asl::internal::ASL_STANDARD_OPCODES);
+ SetInfo(info);
+ }
+@@ -518,7 +518,7 @@ TEST(ProblemTest, ReadFunctionWithoutLib
+ }
+
+ TEST(ProblemTest, Proxy) {
+- mp::ProblemInfo info = mp::ProblemInfo();
++ mp::NLProblemInfo info = mp::NLProblemInfo();
+ info.num_vars = 42;
+ info.num_objs = 1;
+ TestASLBuilder builder(info);
+@@ -577,7 +577,7 @@ struct MockValueVisitor {
+ };
+
+ TEST_P(SuffixTest, VisitValues) {
+- mp::ProblemInfo info = mp::ProblemInfo();
++ mp::NLProblemInfo info = mp::NLProblemInfo();
+ info.num_vars = info.num_objs = info.num_algebraic_cons = 3;
+ TestASLBuilder builder(info);
+ builder.set_flags(ASL_keep_all_suffixes);
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/test/solvers/nl-solver-test.h.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/test/solvers/nl-solver-test.h 2024-02-06 20:11:32.641488808 -0700
+@@ -103,7 +103,7 @@ class NLSolverTest : public ::testing::T
+ }
+
+ void SetInfo(ProblemBuilder &pb) {
+- auto info = mp::ProblemInfo();
++ auto info = mp::NLProblemInfo();
+ info.num_vars = info.num_nl_integer_vars_in_objs = 1;
+ info.num_objs = info.num_nl_objs = 1;
+ pb.SetInfo(info);
+@@ -352,7 +352,7 @@ class NLSolverTest : public ::testing::T
+ handler.AddArg(args[i]);
+ }
+
+- virtual void SetInfo(ProblemBuilder &pb, mp::ProblemInfo &info) {
++ virtual void SetInfo(ProblemBuilder &pb, mp::NLProblemInfo &info) {
+ pb.SetInfo(info);
+ }
+
+@@ -390,7 +390,7 @@ EvalResult NLSolverTest::Solve(
+ const LogicalExprFactory &factory,
+ int var1, int var2, int var3, bool need_result) {
+ ProblemBuilder pb(solver_);
+- auto info = mp::ProblemInfo();
++ auto info = mp::NLProblemInfo();
+ info.num_vars = info.num_nl_integer_vars_in_cons = 4;
+ info.num_logical_cons = 1;
+ pb.SetInfo(info);
+@@ -407,7 +407,7 @@ EvalResult NLSolverTest::Solve(
+ EvalResult NLSolverTest::Eval(
+ const NumericExprFactory &factory, int var1, int var2, int var3) {
+ ProblemBuilder pb(solver_);
+- auto info = mp::ProblemInfo();
++ auto info = mp::NLProblemInfo();
+ info.num_vars = info.num_nl_integer_vars_in_cons = 4;
+ info.num_algebraic_cons = info.num_nl_cons = 1;
+ info.num_con_nonzeros = 1;
+@@ -466,7 +466,7 @@ TEST_F(NLSolverTest, Maximize) {
+ template <typename ProblemBuilder>
+ void MakeTSP(ProblemBuilder &pb) {
+ int n = MP_TSP_SIZE;
+- auto info = mp::ProblemInfo();
++ auto info = mp::NLProblemInfo();
+ info.num_vars = info.num_linear_binary_vars = n * n;
+ info.num_objs = 1;
+ info.num_algebraic_cons = 2 * n;
+@@ -526,7 +526,7 @@ TEST_F(NLSolverTest, NumericConstant) {
+
+ TEST_F(NLSolverTest, Variable) {
+ ProblemBuilder pb(solver_);
+- auto info = mp::ProblemInfo();
++ auto info = mp::NLProblemInfo();
+ info.num_vars = info.num_nl_integer_vars_in_objs = 1;
+ info.num_objs = info.num_nl_objs = 1;
+ pb.SetInfo(info);
+@@ -866,7 +866,7 @@ TEST_F(NLSolverTest, PLTerm) {
+
+ TEST_F(NLSolverTest, Call) {
+ ProblemBuilder pb(solver_);
+- auto info = mp::ProblemInfo();
++ auto info = mp::NLProblemInfo();
+ info.num_vars = info.num_linear_integer_vars = 1;
+ info.num_objs = info.num_nl_objs = 1;
+ info.num_funcs = 2;
+@@ -1201,7 +1201,7 @@ TEST_F(NLSolverTest, LinearCommonExpr) {
+
+ TEST_F(NLSolverTest, OptimalSolveCode) {
+ ProblemBuilder pb(solver_);
+- auto info = mp::ProblemInfo();
++ auto info = mp::NLProblemInfo();
+ info.num_vars = info.num_linear_integer_vars = info.num_objs = 1;
+ info.num_obj_nonzeros = 1;
+ pb.SetInfo(info);
+@@ -1213,7 +1213,7 @@ TEST_F(NLSolverTest, OptimalSolveCode) {
+
+ TEST_F(NLSolverTest, FeasibleSolveCode) {
+ ProblemBuilder pb(solver_);
+- auto info = mp::ProblemInfo();
++ auto info = mp::NLProblemInfo();
+ info.num_vars = info.num_linear_integer_vars = info.num_algebraic_cons = 1;
+ pb.SetInfo(info);
+ pb.AddVar(0, 0, mp::var::INTEGER);
+@@ -1223,7 +1223,7 @@ TEST_F(NLSolverTest, FeasibleSolveCode)
+
+ TEST_F(NLSolverTest, InfeasibleSolveCode) {
+ ProblemBuilder pb(solver_);
+- auto info = mp::ProblemInfo();
++ auto info = mp::NLProblemInfo();
+ info.num_vars = info.num_linear_integer_vars = info.num_algebraic_cons = 1;
+ pb.SetInfo(info);
+ pb.AddVar(0, 0, mp::var::INTEGER);
+@@ -1335,7 +1335,7 @@ struct SolutionCounter : TestSolutionHan
+ // Makes a test problem with a single constraint alldiff(x0, x1, x2).
+ template <typename ProblemBuilder>
+ void MakeAllDiffProblem(ProblemBuilder &pb) {
+- auto info = mp::ProblemInfo();
++ auto info = mp::NLProblemInfo();
+ info.num_vars = info.num_nl_integer_vars_in_cons = 3;
+ info.num_logical_cons = 1;
+ pb.SetInfo(info);
+@@ -1451,7 +1451,7 @@ TEST_F(NLSolverTest, IgnoreObjNo) {
+ template <typename Solver>
+ EvalResult SolveMultiObjTestProblem(Solver &solver, bool multiobj = false) {
+ typename Solver::ProblemBuilder pb(solver);
+- auto info = mp::ProblemInfo();
++ auto info = mp::NLProblemInfo();
+ info.num_vars = info.num_nl_integer_vars_in_objs = 1;
+ info.num_objs = info.num_nl_objs = multiobj ? 2 : 1;
+ pb.SetInfo(info);
+@@ -1481,7 +1481,7 @@ struct TestOutputHandler : public mp::Ou
+ // Test that providing an initial dual value doesn't cause an error.
+ TEST_F(NLSolverTest, InitialDualValue) {
+ ProblemBuilder pb(solver_);
+- auto info = mp::ProblemInfo();
++ auto info = mp::NLProblemInfo();
+ info.num_vars = info.num_algebraic_cons = 1;
+ pb.SetInfo(info);
+ auto con = pb.AddCon(0, 0);
+@@ -1492,7 +1492,7 @@ TEST_F(NLSolverTest, InitialDualValue) {
+ TEST_F(NLSolverTest, ZeroUB) {
+ if (!HasFeature(feature::FLOAT_CONST)) return;
+ ProblemBuilder pb(solver_);
+- auto info = mp::ProblemInfo();
++ auto info = mp::NLProblemInfo();
+ info.num_vars = info.num_objs = 1;
+ pb.SetInfo(info);
+ pb.AddVar(-INFINITY, 0, var::CONTINUOUS);
diff --git a/mp-python3.patch b/mp-python3.patch
index eff34f0..3690638 100644
--- a/mp-python3.patch
+++ b/mp-python3.patch
@@ -1,18 +1,6 @@
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/doc/CMakeLists.txt.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/doc/CMakeLists.txt
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/doc/CMakeLists.txt.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/doc/CMakeLists.txt 2020-02-13 15:45:51.942114727 -0700
-@@ -48,7 +48,7 @@ endif ()
- add_prefix(doc_deps ../ ${MP_HEADERS})
-
- add_custom_target(doc
-- COMMAND python ${BUILD_DOCS}
-+ COMMAND python3 ${BUILD_DOCS}
- DEPENDS conf.py ${doc_deps} ${amplgsl_docs})
-
- install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ampl.github.io/
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap-linux.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap-linux.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap-linux.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap-linux.py 2020-02-13 15:22:47.654450099 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap-linux.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap-linux.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap-linux.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap-linux.py 2024-01-31 12:09:14.818754065 -0700
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
@@ -28,9 +16,9 @@ diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap
from subprocess import check_call, Popen, PIPE
if __name__ == '__main__':
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap-osx.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap-osx.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap-osx.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap-osx.py 2020-02-13 15:22:24.535839893 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap-osx.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap-osx.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap-osx.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap-osx.py 2024-01-31 12:09:14.818754065 -0700
@@ -1,8 +1,7 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
@@ -42,9 +30,9 @@ diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap
import glob, os, sys, tempfile
from subprocess import call, check_call
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap.py 2020-02-13 15:21:39.224603644 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap.py 2024-01-31 12:09:14.818754065 -0700
@@ -1,6 +1,5 @@
# Common bootstrap functionality.
@@ -52,9 +40,9 @@ diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap
import glob, os, platform, re, shutil, sys
import tarfile, tempfile, uuid, zipfile
from contextlib import closing
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap-windows.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap-windows.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap-windows.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap-windows.py 2020-02-13 15:23:25.110818565 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap-windows.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap-windows.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap-windows.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/bootstrap-windows.py 2024-01-31 12:09:14.819754052 -0700
@@ -1,8 +1,7 @@
# Set up build environment on 64-bit Windows.
@@ -65,18 +53,18 @@ diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/bootstrap
from glob import glob
from subprocess import check_call, check_output
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/create-ubuntu-image.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/create-ubuntu-image.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/create-ubuntu-image.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/bootstrap/create-ubuntu-image.py 2020-02-13 15:11:03.171308668 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/create-ubuntu-image.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/create-ubuntu-image.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/create-ubuntu-image.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/bootstrap/create-ubuntu-image.py 2024-01-31 12:09:14.819754052 -0700
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
"""
Create a base docker image for Ubuntu Lucid.
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/build-docs.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/build-docs.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/build-docs.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/build-docs.py 2020-02-14 10:11:07.288162263 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/build-docs.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/build-docs.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/build-docs.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/build-docs.py 2024-01-31 12:09:14.819754052 -0700
@@ -1,12 +1,11 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
@@ -177,9 +165,9 @@ diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/build-docs.py.orig
returncode = p.returncode
if returncode == 0:
# Pass the MP version via environment variables rather than command-line
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/create-demo-packages.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/create-demo-packages.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/create-demo-packages.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/create-demo-packages.py 2020-02-13 15:25:54.934292448 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/create-demo-packages.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/create-demo-packages.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/create-demo-packages.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/create-demo-packages.py 2024-01-31 12:09:14.819754052 -0700
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
@@ -213,9 +201,9 @@ diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/create-demo-package
return cached_path
# Extract files from amplcml.zip.
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/create-packages.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/create-packages.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/create-packages.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/create-packages.py 2020-02-13 15:24:36.877608531 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/create-packages.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/create-packages.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/create-packages.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/create-packages.py 2024-01-31 12:09:14.819754052 -0700
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
@@ -230,9 +218,9 @@ diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/create-packages.py.
import docopt, fileutil, os, re, shutil, subprocess, tempfile, zipfile
project = "ampl"
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/create-solver-package.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/create-solver-package.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/create-solver-package.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/create-solver-package.py 2020-02-13 15:26:12.420997611 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/create-solver-package.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/create-solver-package.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/create-solver-package.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/create-solver-package.py 2024-01-31 12:09:14.819754052 -0700
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
@@ -247,9 +235,9 @@ diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/create-solver-packa
import docopt, os, zipfile
mp_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/ctxtimer.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/ctxtimer.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/ctxtimer.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/ctxtimer.py 2020-02-13 15:21:20.295922221 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/ctxtimer.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/ctxtimer.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/ctxtimer.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/ctxtimer.py 2024-01-31 12:09:14.820754039 -0700
@@ -1,6 +1,5 @@
# A with statement context based timer.
@@ -257,9 +245,9 @@ diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/ctxtimer.py.orig mp
from contextlib import contextmanager
import sys, timeit
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/docopt.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/docopt.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/docopt.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/docopt.py 2020-02-13 15:20:13.337049167 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/docopt.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/docopt.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/docopt.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/docopt.py 2024-01-31 12:09:14.820754039 -0700
@@ -81,7 +81,7 @@ def transform(pattern):
while groups:
children = groups.pop(0)
@@ -322,9 +310,9 @@ diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/docopt.py.orig mp-5
else:
o = Option(similar[0].short, similar[0].long,
similar[0].argcount, similar[0].value)
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/download.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/download.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/download.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/download.py 2020-02-13 15:27:21.146838851 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/download.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/download.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/download.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/download.py 2024-01-31 12:09:14.820754039 -0700
@@ -1,6 +1,6 @@
# A file downloader.
@@ -355,9 +343,9 @@ diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/download.py.orig mp
print('Failed to open url', url)
continue
length = f.headers.get('content-length')
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/fileutil.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/fileutil.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/fileutil.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/fileutil.py 2020-02-13 15:23:52.255360892 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/fileutil.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/fileutil.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/fileutil.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/fileutil.py 2024-01-31 12:09:14.820754039 -0700
@@ -1,6 +1,5 @@
# File utils.
@@ -374,18 +362,18 @@ diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/fileutil.py.orig mp
zip.writestr(zipinfo, os.readlink(path))
else:
zip.write(path, path)
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/get-options.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/get-options.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/get-options.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/get-options.py 2020-02-13 15:11:03.187308399 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/get-options.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/get-options.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/get-options.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/get-options.py 2024-01-31 12:09:14.820754039 -0700
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# This scripts extract options from solvers and formats them in HTML.
import errno, os, sys
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/travis-build.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/travis-build.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/travis-build.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/travis-build.py 2020-02-13 15:21:02.537221108 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/travis-build.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/travis-build.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/travis-build.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/travis-build.py 2024-01-31 12:09:14.820754039 -0700
@@ -1,7 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
@@ -395,27 +383,27 @@ diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/travis-build.py.ori
import os, re, shutil, tarfile, tempfile
from bootstrap import bootstrap
from contextlib import closing
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/update-dependencies.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/update-dependencies.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/update-dependencies.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/update-dependencies.py 2020-02-13 15:11:03.177308567 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/update-dependencies.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/update-dependencies.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/update-dependencies.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/update-dependencies.py 2024-01-31 12:09:14.821754026 -0700
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# Updates dependencies integrated into the source tree such as C++ Format.
import download, os, re, shutil, zipfile, fileutil
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/update-netlib-branch.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/update-netlib-branch.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/update-netlib-branch.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/support/update-netlib-branch.py 2020-02-13 15:11:03.176308584 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/update-netlib-branch.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/update-netlib-branch.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/update-netlib-branch.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/support/update-netlib-branch.py 2024-01-31 12:09:14.821754026 -0700
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
# This script updates the "netlib" branch from the AMPL Solver Library
# repository at rsync ampl.com::ampl/
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/test/generate-nl-files.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/test/generate-nl-files.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/test/generate-nl-files.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/test/generate-nl-files.py 2020-02-13 15:17:56.691348963 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/test/generate-nl-files.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/test/generate-nl-files.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/test/generate-nl-files.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/test/generate-nl-files.py 2024-01-31 12:09:14.821754026 -0700
@@ -1,11 +1,11 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
@@ -430,9 +418,9 @@ diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/test/generate-nl-files.py.o
if key == 'code':
code = value
else:
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/test/support/util.py.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/test/support/util.py
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/test/support/util.py.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/test/support/util.py 2020-02-13 15:18:38.826639813 -0700
+diff -up mp-34afbd381c72af810c4313e5f4ee182dec93682e/test/support/util.py.orig mp-34afbd381c72af810c4313e5f4ee182dec93682e/test/support/util.py
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/test/support/util.py.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/test/support/util.py 2024-01-31 12:09:14.821754026 -0700
@@ -1,5 +1,5 @@
import sys
-from cStringIO import StringIO
diff --git a/mp-redundant-move.patch b/mp-redundant-move.patch
new file mode 100644
index 0000000..2295a8d
--- /dev/null
+++ b/mp-redundant-move.patch
@@ -0,0 +1,35 @@
+Fixes this warning:
+
+/builddir/build/BUILD/mp-34afbd381c72af810c4313e5f4ee182dec93682e/include/mp/flat/problem_flattener.h:421:29: warning: redundant move in initialization [-Wredundant-move]
+/builddir/build/BUILD/mp-34afbd381c72af810c4313e5f4ee182dec93682e/include/mp/flat/problem_flattener.h:421:29: note: remove ‘std::move’ call
+
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/include/mp/flat/problem_flattener.h.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/include/mp/flat/problem_flattener.h 2024-02-07 14:03:59.946671592 -0700
+@@ -418,11 +418,11 @@ protected:
+ if (lhs.is_affine()) // no QP terms
+ return AssignResult2Args( // add conditional linear constraint
+ ConditionalConstraint< LinConRhs<comp_kind> >
+- { { std::move(lhs.GetLinTerms()),
++ { { lhs.GetLinTerms(),
+ -lhs.constant_term() } } );
+ return AssignResult2Args( // add conditional quadratic constraint
+ ConditionalConstraint< QuadConRhs<comp_kind> >
+- { { std::move(lhs.GetAlgConBody()),
++ { { lhs.GetAlgConBody(),
+ -lhs.constant_term() } } );
+ }
+
+@@ -461,11 +461,11 @@ protected:
+ auto eq = (lhs.is_affine()) ? // no QP terms
+ AssignResult2Args( // add conditional linear constraint
+ ConditionalConstraint< LinConRhs<0> >
+- { { std::move(lhs.GetLinTerms()),
++ { { lhs.GetLinTerms(),
+ -lhs.constant_term() } } ) :
+ AssignResult2Args( // add conditional quadratic constraint
+ ConditionalConstraint< QuadConRhs<0> >
+- { { std::move(lhs.GetAlgConBody()),
++ { { lhs.GetAlgConBody(),
+ -lhs.constant_term() } } );
+ assert(eq.is_variable());
+ return AssignResult2Args(
diff --git a/mp-strtod.patch b/mp-strtod.patch
deleted file mode 100644
index 8659026..0000000
--- a/mp-strtod.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/include/mp/posix.h.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/include/mp/posix.h
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/include/mp/posix.h.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/include/mp/posix.h 2020-02-13 14:10:43.502102892 -0700
-@@ -28,6 +28,7 @@
- #endif
-
- #include "format.h"
-+#undef strtod
-
- #ifndef FMT_POSIX
- # if defined(_WIN32) && !defined(__MINGW32__)
-diff -up mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/src/asl/solvers/asl.h.orig mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/src/asl/solvers/asl.h
---- mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/src/asl/solvers/asl.h.orig 2019-12-09 11:21:17.000000000 -0700
-+++ mp-51aeb2c386342ed4f48cc78d3df9e4e57a70f667/src/asl/solvers/asl.h 2020-02-13 13:29:55.934445155 -0700
-@@ -1103,17 +1103,7 @@ QPinfo {
- extern void xunkno_(VOID);
- extern void zero_div_ASL(ASL*, real, const char*);
-
--#ifndef No_dtoa
-- extern double strtod_ASL(Const char*, char**);
--#ifndef strtod /* if not set by previous funcadd.h */
--#define strtod strtod_ASL
--#endif
--extern void ACQUIRE_DTOA_LOCK(unsigned int);
--extern void FREE_DTOA_LOCK(unsigned int);
--extern int dtoa_get_threadno(void);
--extern void init_dtoa_locks(void);
--extern void set_max_dtoa_threads(unsigned int);
--#endif
-+#undef strtod
-
- #ifdef __cplusplus
- }
diff --git a/mp-unbundle-asl.patch b/mp-unbundle-asl.patch
new file mode 100644
index 0000000..df0a097
--- /dev/null
+++ b/mp-unbundle-asl.patch
@@ -0,0 +1,71 @@
+--- mp-34afbd381c72af810c4313e5f4ee182dec93682e/src/asl/CMakeLists.txt.orig 2024-01-15 05:21:22.000000000 -0700
++++ mp-34afbd381c72af810c4313e5f4ee182dec93682e/src/asl/CMakeLists.txt 2024-01-31 12:06:48.836671821 -0700
+@@ -4,12 +4,6 @@ set(build_asl ${build_asl} PARENT_SCOPE)
+ if (NOT build_asl)
+ return()
+ endif ()
+-# Check if an asl target is already available (in case mp is used as a submodule
+-# or we have an imported library). If not, build it.
+-if(NOT TARGET asl)
+- add_subdirectory(${CMAKE_SOURCE_DIR}/thirdparty/asl
+- ${CMAKE_CURRENT_BINARY_DIR}/asl)
+-endif()
+
+ include(CheckSymbolExists)
+ include(CheckLibraryExists)
+@@ -22,41 +16,25 @@ set(ASL_HEADERS aslbuilder.h aslexpr.h a
+ # asl.h asl_pfg.h asl_pfgh.h avltree.h funcadd.h getstub.h jacpdim.h nlp.h
+ # nlp2.h psinfo.h errchk.h jac2dim.h obj_adj.h)
+ set(ASL_SOURCES aslbuilder.cc aslexpr.cc aslproblem.cc aslinterface.cc)
+-check_symbol_exists(mkstemps stdlib.h HAVE_MKSTEMPS)
+-if (NOT HAVE_MKSTEMPS)
+- set(ASL_SOURCES ${ASL_SOURCES} mkstemps.c)
+-endif ()
+
+-add_mp_library(aslmp STATIC ${ASL_SOURCES} ${ASL_HEADERS}
++add_mp_library(aslmp SHARED ${ASL_SOURCES} ${ASL_HEADERS}
+ LIBRARIES mp asl
+- INCLUDE_DIRECTORIES ${ASL1_INCLUDE_DIRS}
++ INCLUDE_DIRECTORIES /usr/include/asl
+ ${PROJECT_SOURCE_DIR}/src)
++set_target_properties(aslmp PROPERTIES
++ POSITION_INDEPENDENT_CODE ON VERSION ${MP_VERSION} SOVERSION ${MP_VERSION_MAJOR})
+
+ if (NOT WIN32)
+ target_link_libraries(aslmp m)
+ endif ()
+
+-if (BUILD_SHARED_LIBS)
+- add_library(asl-shared $<TARGET_OBJECTS:asl>)
+- set_target_properties(asl-shared PROPERTIES
+- VERSION ${MP_VERSION} SOVERSION ${MP_VERSION_MAJOR})
+- set_target_properties(asl-shared PROPERTIES OUTPUT_NAME asl)
+- target_link_libraries(asl-shared asl)
+- install(TARGETS asl-shared DESTINATION lib RUNTIME DESTINATION bin)
+-endif ()
+-
+-check_symbol_exists(mkstemps stdlib.h HAVE_MKSTEMPS)
+-if (HAVE_MKSTEMPS)
+- target_compile_definitions(asl PRIVATE MP_HAVE_MKSTEMPS=1)
+-endif ()
+-
+ include(CheckFunctionExists)
+ check_function_exists(getrusage HAVE_GETRUSAGE)
+ if (NOT HAVE_GETRUSAGE)
+ target_compile_definitions(aslmp PRIVATE NO_RUSAGE)
+ endif ()
+
+-target_link_libraries(aslmp ${CMAKE_DL_LIBS})
++target_link_libraries(aslmp ${CMAKE_DL_LIBS} asl)
+
+ find_package(MATLAB)
+ if (MATLAB_FOUND AND MATLAB_BUILD)
+@@ -80,7 +58,5 @@ if (MATLAB_FOUND AND MATLAB_BUILD)
+ DESTINATION ${mex_install_dir})
+ endforeach ()
+ endif ()
+-install(FILES ${ASL_HEADERS} ${CMAKE_CURRENT_BINARY_DIR}/arith.h
+- solvers/opcode.hd solvers/r_opn.hd
+- DESTINATION include/asl)
++install(FILES ${ASL_HEADERS} DESTINATION include/asl)
+ install(TARGETS aslmp DESTINATION lib RUNTIME DESTINATION bin)
diff --git a/mp.module.in b/mp.module.in
deleted file mode 100644
index 2b69caf..0000000
--- a/mp.module.in
+++ /dev/null
@@ -1,5 +0,0 @@
-#%Module 1.0
-#
-# mp module for use with 'environment-modules' package:
-#
-prepend-path PATH @BINDIR@
diff --git a/mp.spec b/mp.spec
index c2ad3fa..35a965a 100644
--- a/mp.spec
+++ b/mp.spec
@@ -1,12 +1,12 @@
-%global __cmake_in_source_build 1
-
-%if 0%{?fedora} && 0%{?fedora} > 36
+%if 0%{?fedora}
%ifarch %{java_arches}
%global with_jacop 1
%else
%global with_jacop 0
%endif
%global with_gecode 1
+%global with_highs 1
+%global with_scip 1
%endif
%if 0%{?rhel}
@@ -16,6 +16,8 @@
%else
%global with_gecode 0
%endif
+%global with_highs 0
+%global with_scip 0
%endif
%if 0%{?fedora} || 0%{?rhel} >= 9
@@ -24,43 +26,42 @@
%global blaslib openblas
%endif
-%if 0%{?rhel} && 0%{?rhel} < 8
-%{!?_modulesdir: %global _modulesdir %{_datadir}/Modules/modulefiles}
-%endif
-
-%global commit 7fd4828c934fccf7367499c9e01cc9a1e90a2093
-%global date 20200303
-%global shortcommit %(c=%{commit}; echo ${c:0:7})
+# Upstream has stopped tagging releases. For a list of recent releases, see
+# CHANGES.mp.md.
+%global commit 34afbd381c72af810c4313e5f4ee182dec93682e
+%global date 20240115
+%global forgeurl https://github.com/ampl/mp
Name: mp
-Version: 3.1.0
-Release: 45.%{date}git%{shortcommit}%{?dist}
-License: SMLNJ AND BSD-2-Clause AND BSD-3-Clause
+Version: 20240115
Summary: An open-source library for mathematical programming
-URL: https://github.com/ampl/mp
-Source0: https://github.com/ampl/%{name}/archive/%{commit}/%{name}-%{commit}.tar.gz
-Source1: %{name}.module.in
-# The documentation building step wants this. It is a git checkout of
-# https://github.com/ampl/ampl.github.io.git, dated 21 Mar 2019,
-# commit ccf1ff9f109d09ea0d42c60b6f26323312a99c42
-Source2: ampl.github.io.tar.xz
-Patch0: %{name}-strtod.patch
+
+%forgemeta
+
+# SMLNJ: the project as a whole
+# BSD-2-Clause: src/{format,rstparser}.cc,
+# include/mp/{format,rstparser,safeint}.h
+# GPL-2.0-or-later: src/asl/mkstemps.c (not included in the binary RPM)
+# GPL-3.0-or-later: src/gsl/default.c (not included in the binary RPM)
+License: SMLNJ AND BSD-2-Clause
+Release: 1%{?dist}
+URL: https://mp.ampl.com/
+Source0: %{forgesource}
+# Unbundle asl
+Patch0: %{name}-unbundle-asl.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1333344
-Patch1: %{name}-%{version}-jni.patch
+Patch1: %{name}-3.1.0-jni.patch
# Adapt to python 3
Patch2: %{name}-python3.patch
-# Avoid crashes due to ambiguous order of destructor execution
-# https://bugzilla.redhat.com/show_bug.cgi?id=1858054
-Patch3: %{name}-jvm-destructor.patch
+# Remove redundant calls to std::move
+Patch3: %{name}-redundant-move.patch
+# Complete an incomplete name change from ProblemInfo to NLProblemInfo
+Patch4: %{name}-probleminfo.patch
+# Fix use of an int where a member of an enum is needed
+Patch5: %{name}-enum-cast.patch
-# Fix compatibility with GCC-14
-Patch4: %{name}-fix_gcc14.patch
-
-%if 0%{?rhel} && 0%{?rhel} <= 7
-Requires: config(environment-modules)
-%else
-Requires: environment(modules)
-%endif
+# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
+ExcludeArch: %{ix86}
%if 0%{?with_jacop}
Requires: jacop
@@ -70,13 +71,11 @@ Requires: jacop
# significantly since then, so porting is nontrivial.
Provides: bundled(fmt) = 3.0.1
-%if 0%{?rhel} && 0%{?rhel} <= 7
-BuildRequires: config(environment-modules)
-%else
-BuildRequires: environment(modules)
+BuildRequires: asl-devel
+BuildRequires: cmake
+%if 0%{?with_scip}
+BuildRequires: cmake(scip)
%endif
-BuildRequires: chrpath
-BuildRequires: cmake3
BuildRequires: doxygen
BuildRequires: gcc-c++
%if 0%{?fedora} || 0%{?rhel} >= 8
@@ -95,16 +94,15 @@ BuildRequires: java-devel
BuildRequires: make
%endif
BuildRequires: %{blaslib}-devel
-BuildRequires: pkgconfig(gsl)
-%if 0%{?fedora}
-BuildRequires: pkgconfig(odbc)
-%endif
-%if 0%{?fedora} || 0%{?rhel} == 7
-BuildRequires: python%{python3_pkgversion}-breathe
-BuildRequires: python%{python3_pkgversion}-sphinx
+%if 0%{?with_highs}
+BuildRequires: pkgconfig(highs)
%endif
+BuildRequires: pkgconfig(gsl)
BuildRequires: python3-devel
+# This can be removed when F43 reaches EOL
+Obsoletes: %{name}-doc < 20240115
+
%global majver %(cut -d. -f1 <<< %{version})
%description
@@ -138,185 +136,123 @@ Features
%package devel
Summary: Development files for %{name}
Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: asl-devel%{?_isa}
%description devel
This package contains the header files for %{name}.
-%package doc
-Summary: Documentation for %{name}
-
-%description doc
-This package contains the developer documentation for %{name}.
-
%prep
-%autosetup -n %{name}-%{commit} -a 2 -p1
+%forgeautosetup -p1
%if 0%{?with_jacop}
jacopver=$(sed -n 's,^ <version>\(.*\)</version>,\1,p' %{_mavenpomdir}/jacop/jacop.pom)
ln -s %{_javadir}/jacop/jacop.jar thirdparty/jacop/jacop-$jacopver.jar
%endif
-fixtimestamp() {
- touch -r $1.orig $1
- rm -f $1.orig
-}
-
-# Fix end of line and character encodings
-for fil in $(find ampl.github.io/models -type f); do
- type=$(file $fil)
- if [[ "$type" =~ "with CRLF" ]]; then
- sed -i.orig 's/\r//' $fil
- fixtimestamp $fil
- fi
- if [[ "$type" =~ "ISO-8859" ]]; then
- mv $fil $fil.orig
- iconv -f ISO8859-1 -t UTF-8 $fil.orig > $fil
- fixtimestamp $fil
- fi
-done
-
-# Fix the invocation name for sphinx
-%if 0%{?rhel} == 7
-sed -i 's,sphinx-build,&-3.6,' support/build-docs.py
+# Fix library installation location
+if [ '%{_lib}' != 'lib' ]; then
+ sed -i 's/\(DESTINATION \)lib/\1%{_lib}/' CMakeLists.txt src/asl/CMakeLists.txt
+fi
+
+# Install the AMPL function libraries in libexec
+sed -i 's,\(AMPL_LIBRARY_DIR \)bin,\1libexec/mp,' CMakeLists.txt
+
+# Link with an optimized blas library
+sed -i 's/gslcblas/%{blaslib}/' src/gsl/CMakeLists.txt
+
+# Enable the gsl interface
+sed -i '/add_subdirectory(solvers)/i\\tadd_subdirectory(src/gsl)' CMakeLists.txt
+
+# Link the HiGHS interface with the actual HiGHS library
+%if 0%{?with_highs}
+sed -i '/target_link_libraries/s/\${RT_LIBRARY}/& -lhighs/' CMakeLists.txt
%endif
-# python-breathe is broken in EPEL 7 and absent in EPEL 8, so skip building
-# sphinx docs for those distributions.
-%if 0%{?rhel}
-sed -i 's,returncode == 0,False,' support/build-docs.py
+# Link the SCIP interface with the actual SCIP library
+%if 0%{?with_scip}
+sed -i '/target_link_libraries/s/\${RT_LIBRARY}/& -lscip/' CMakeLists.txt
%endif
%build
-export LIBS="-lgsl -l%{blaslib}"
-mkdir -p build && pushd build
-BUILD="asl,gsl,smpswriter"
+BUILD='asl,smpswriter'
%if 0%{?with_gecode}
BUILD="gecode,$BUILD"
%endif
%if 0%{?with_jacop}
BUILD="jacop,$BUILD"
%endif
-export CPPFLAGS="-I$PWD/src/asl/solvers"
-export CFLAGS="%{optflags} -DNDEBUG"
-export CXXFLAGS="%{optflags} -DNDEBUG"
-# Let cmake create rpaths, so the jacop-using files can find libjvm.so.
-# We strip out the ones we don't want with chrpath at install time.
-%cmake3 -DCMAKE_INSTALL_PREFIX:PATH=%{_libdir}/%{name} \
+%if 0%{?with_highs}
+BUILD="highsmp,$BUILD"
+%endif
+%if 0%{?with_scip}
+BUILD="scipmp,$BUILD"
+%endif
+commonflags="-I%{_includedir}/asl -I$PWD/src/asl/solvers -I%{_includedir}/highs -I%{_includedir}/scip -DNDEBUG"
+export CFLAGS="%{build_cflags} $commonflags"
+export CXXFLAGS="%{build_cxxflags} $commonflags"
+%cmake \
-DCMAKE_SHARED_LINKER_FLAGS:STRING="$LDFLAGS" \
-DCMAKE_CXX_FLAGS_RELEASE:STRING="$CXXFLAGS" \
-DCMAKE_C_FLAGS_RELEASE:STRING="$CFLAGS" \
-DCMAKE_SKIP_INSTALL_RPATH:BOOL=NO \
-DCMAKE_SKIP_RPATH:BOOL=NO \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=YES \
- -DGENERATE_ARITH:BOOL=YES \
-DBUILD_SHARED_LIBS:BOOL=YES \
- -DBUILD:STRING=$BUILD ..
-%make_build
-make doc
-rm doc/ampl.github.io/models/*/.depend
-popd
+ -DBUILD:STRING=$BUILD
+%cmake_build
%install
-mkdir -p %{buildroot}%{_modulesdir}
-sed 's#@BINDIR@#'%{_libdir}/%{name}'#g;' < %{SOURCE1} > \
- %{buildroot}%{_modulesdir}/%{name}-%{_arch}
-
-mkdir -p %{buildroot}%{_libdir}/%{name}/bin/lib
-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
+%cmake_install
-# Required by coin-or-Couenne
-install -pm 644 src/asl/solvers/{opcode,r_opn}.hd %{buildroot}%{_includedir}/asl
+# We install the license file elsewhere
+rm -rf %{buildroot}%{_datadir}
-%if 0%{?with_jacop}
-jacopver=$(sed -n 's,^ <version>\(.*\)</version>,\1,p' %{_mavenpomdir}/jacop/jacop.pom)
-install -pm 644 build/bin/ampljacop.jar %{buildroot}%{_libdir}/%{name}/bin
-install -pm 755 build/bin/jacop %{buildroot}%{_libdir}/%{name}/bin
-ln -s %{_javadir}/jacop/jacop.jar %{buildroot}%{_libdir}/%{name}/bin/lib/jacop-$jacopver.jar
-install -pm 755 build/bin/libampljacop.so %{buildroot}%{_libdir}/%{name}/bin
-%endif
-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
-%if 0%{?with_gecode}
-install -pm 755 build/bin/gecode %{buildroot}%{_libdir}/%{name}/bin
-install -pm 755 build/bin/libamplgecode.so %{buildroot}%{_libdir}/%{name}/bin
-%endif
-install -pm 755 build/bin/gen-expr-info %{buildroot}%{_libdir}/%{name}/bin
-install -pm 755 build/bin/gjh %{buildroot}%{_libdir}/%{name}/bin
-install -pm 755 build/bin/gsl-info %{buildroot}%{_libdir}/%{name}/bin
-install -pm 755 build/bin/libamplsmpswriter.so %{buildroot}%{_libdir}/%{name}/bin
-install -pm 755 build/bin/simpbit.dll %{buildroot}%{_libdir}/%{name}/bin
-install -pm 755 build/bin/smpswriter %{buildroot}%{_libdir}/%{name}/bin
-install -pm 755 build/bin/tableproxy%{__isa_bits} %{buildroot}%{_libdir}/%{name}/bin
-
-## Fix symbolic links
-install -pm 755 build/bin/libasl.so* %{buildroot}%{_libdir}
-ln -sf libasl.so.%{version} %{buildroot}%{_libdir}/libasl.so.%{majver}
-ln -sf libasl.so.%{majver} %{buildroot}%{_libdir}/libasl.so
-
-install -pm 755 build/bin/libmp.so* %{buildroot}%{_libdir}
-ln -sf libmp.so.%{version} %{buildroot}%{_libdir}/libmp.so.%{majver}
-ln -sf libmp.so.%{majver} %{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
-%if 0%{?with_gecode}
-chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/gecode
-chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/libamplgecode.so
-%endif
-chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/gen-expr-info
-chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/gjh
-chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/gsl-info
-%if 0%{?with_jacop}
-rpath=$(dirname $(find %{_jvmdir}/jre/lib -name libjvm.so))
-chrpath --replace $rpath %{buildroot}%{_libdir}/%{name}/bin/jacop
-chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/libampljacop.so
-%endif
-chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/libamplsmpswriter.so
-chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/simpbit.dll
-chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/smpswriter
-chrpath --delete %{buildroot}%{_libdir}/%{name}/bin/tableproxy%{__isa_bits}
-##
-
-%check
-pushd build
+# There are numerous tests that no longer match the behavior of the code.
+# Upstream appears to have allowed the test suite to bitrot. Do not run
+# the tests until upstream gets them back in shape.
+#%%check
# Some of the tests use the SAME FILENAME to store temporary results, so
# running the tests in parallel leads to intermittent test failures, generally
# in either os-test or solver-test. Do not pass the parallel flags to ctest.
-ctest --force-new-ctest-process -j1
-popd
-
-%ldconfig_scriptlets
+#%%ctest -j1
%files
%doc README.rst
%license LICENSE.rst
-%dir %{_libdir}/%{name}
-%{_libdir}/%{name}/bin/
-%{_libdir}/libasl.so.3*
+%if 0%{?with_gecode}
+%{_bindir}/gecode
+%endif
+%if 0%{?with_highs}
+%{_bindir}/highsmp
+%endif
+%if 0%{?with_jacop}
+%{_bindir}/jacop
+%endif
+%if 0%{?with_jacop}
+%{_bindir}/scipmp
+%endif
+%{_bindir}/smpswriter
+%{_libdir}/libaslmp.so.3*
%{_libdir}/libmp.so.3*
-%{_modulesdir}/%{name}-%{_arch}
+%{_libexecdir}/mp/
%files devel
-%{_libdir}/libasl.so
+%{_libdir}/libaslmp.so
%{_libdir}/libmp.so
%{_includedir}/asl
%{_includedir}/mp
-%files doc
-%license LICENSE.rst
-%doc build/doc/ampl.github.io/*
-
%changelog
+* Wed Feb 7 2024 Jerry James <loganjerry(a)gmail.com> - 20240115-1
+- Update to latest release, with new version scheme
+- Unbundle asl
+- Stop building documentation
+- Drop support for Fedora < 37
+- Build with support for HiGHS and SCIP
+- Remove unused ODBC dependency
+- Remove unnecessary environment module; install to libexec instead
+- Stop building for 32-bit x86
+
* Sat Feb 03 2024 Antonio Trande <sagitter(a)fedoraproject.org.com> - 3.1.0-45.20200303git7fd4828
- Patched for GCC-14 (rhbz#2261393)
- Switch to SPDX
diff --git a/sources b/sources
index 5fdfd13..b0369e6 100644
--- a/sources
+++ b/sources
@@ -1,2 +1 @@
-SHA512 (ampl.github.io.tar.xz) = a908c151b61ebd0a50fdef6ecec9537fa6749a79f2bb1b9cb72baa1578855a60e500d31d66497ced6b581509e15d08d6c9b3c275df73ab5e639dfe6d8d8f5b65
-SHA512 (mp-7fd4828c934fccf7367499c9e01cc9a1e90a2093.tar.gz) = 7b4545c3aaa212e1dffb2f6007c59cffba56da47896cfc50431e9e6717b30a2d8d3313245e310b0e4c2a02be962670468ec6127582035c79ed88154d9da0b2c5
+SHA512 (mp-34afbd381c72af810c4313e5f4ee182dec93682e.tar.gz) = b0718a80d0e6c691962880df1e31022072f68532b535f1755d73bc8a4a365faea95a381a11e0b4be18b7318c6c840577615abed70ce86cb976b2a8416cb3fba8
3 months
Architecture specific change in rpms/tomcatjss.git
by githook-noreply@fedoraproject.org
The package rpms/tomcatjss.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/tomcatjss.git/commit/?id=0cc9cb54....
Change:
-ExclusiveArch: %{java_arches} noarch
Thanks.
Full change:
============
commit 0cc9cb54a384d6c081394cfb48071c3d7a3d3310
Author: Endi S. Dewata <edewata(a)redhat.com>
Date: Mon Feb 26 10:06:40 2024 -0600
Merged into JSS
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index f6a0b4b..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,41 +0,0 @@
-tomcatjss-1.2.0.tar.gz
-/tomcatjss-2.0.0.tar.gz
-/tomcatjss-2.1.1.tar.gz
-/tomcatjss-6.0.0.tar.gz
-/tomcatjss-6.0.1.tar.gz
-/tomcatjss-6.0.2.tar.gz
-/tomcatjss-7.0.0.tar.gz
-/tomcatjss-7.1.0.tar.gz
-/tomcatjss-7.1.1.tar.gz
-/tomcatjss-7.1.2.tar.gz
-/tomcatjss-7.1.3.tar.gz
-/tomcatjss-7.1.4.tar.gz
-/tomcatjss-7.2.0.tar.gz
-/tomcatjss-7.2.1.tar.gz
-/tomcatjss-7.2.2.tar.gz
-/tomcatjss-7.2.3.tar.gz
-/tomcatjss-7.2.4.tar.gz
-/tomcatjss-7.3.0.tar.gz
-/tomcatjss-7.3.1.tar.gz
-/tomcatjss-7.3.2.tar.gz
-/tomcatjss-7.3.3.tar.gz
-/tomcatjss-7.3.4.tar.gz
-/tomcatjss-7.3.5.tar.gz
-/tomcatjss-7.3.6.tar.gz
-/tomcatjss-7.3.7.tar.gz
-/tomcatjss-7.4.0.tar.gz
-/tomcatjss-7.4.1.tar.gz
-/tomcatjss-7.5.0-a1.tar.gz
-/tomcatjss-7.5.0-b2.tar.gz
-/tomcatjss-7.5.0.tar.gz
-/tomcatjss-7.6.0.tar.gz
-/tomcatjss-7.6.1.tar.gz
-/tomcatjss-8.0.0-alpha1.tar.gz
-/tomcatjss-8.0.0-alpha2.tar.gz
-/tomcatjss-8.0.0.tar.gz
-/tomcatjss-8.1.0.tar.gz
-/tomcatjss-8.2.0-beta1.tar.gz
-/tomcatjss-8.2.0-beta2.tar.gz
-/tomcatjss-8.2.0.tar.gz
-/tomcatjss-8.3.0.tar.gz
-/tomcatjss-8.4.1.tar.gz
diff --git a/.packit.yaml b/.packit.yaml
deleted file mode 100644
index da18414..0000000
--- a/.packit.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
----
-# See the documentation for more information:
-# https://packit.dev/docs/configuration/
-specfile_path: tomcatjss.spec
-
-# add or remove files that should be synced
-files_to_sync:
- - tomcatjss.spec
- - .packit.yaml
-
-# Allow dist git reactions on packit and ckelley commits and PRs
-allowed_pr_authors:
- - packit
- - ckelleyRH
-allowed_committers:
- - packit
- - ckelleyRH
-
-upstream_package_name: tomcatjss
-# downstream (Fedora/CentOS) RPM package name
-downstream_package_name: tomcatjss
-# see: https://packit.dev/docs/configuration/#upstream_tag_template
-upstream_tag_template: "v{version}"
-
-jobs:
- - job: propose_downstream
- trigger: release
- dist_git_branches:
- - fedora-development
-# - centos-stream-9-x86_64 # When Packit integration with CentOS is avaiable, enable this
diff --git a/README.packit b/README.packit
deleted file mode 100644
index 07bc213..0000000
--- a/README.packit
+++ /dev/null
@@ -1,3 +0,0 @@
-This repository is maintained by packit.
-https://packit.dev/
-The file was generated using packit 0.76.0.post10+g0dcb396.
diff --git a/copr-build.sh b/copr-build.sh
deleted file mode 100755
index 156c705..0000000
--- a/copr-build.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-REPO=$1
-
-if [ "$REPO" == "" ]; then
- REPO="pki-10.6"
-fi
-
-fedpkg copr-build --nowait $REPO
diff --git a/dead.package b/dead.package
new file mode 100644
index 0000000..49d9aa8
--- /dev/null
+++ b/dead.package
@@ -0,0 +1 @@
+Merged into JSS
diff --git a/sources b/sources
deleted file mode 100644
index 556ecd2..0000000
--- a/sources
+++ /dev/null
@@ -1 +0,0 @@
-SHA512 (tomcatjss-8.4.1.tar.gz) = c1a8709871e89de184f88e7da0728760ca4ac8f127d7ac2c2f916621100e56c836ad97a93fafcc232f8d8c49bb52ae10284d90b5df47828c65c89774213ce2f7
diff --git a/sources-update.sh b/sources-update.sh
deleted file mode 100755
index 96129ca..0000000
--- a/sources-update.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-SOURCE=$1
-TARGET=`basename $1`
-
-cp $SOURCE $TARGET
-sha512sum --tag $TARGET > sources
diff --git a/tomcatjss.spec b/tomcatjss.spec
deleted file mode 100644
index 3e611c9..0000000
--- a/tomcatjss.spec
+++ /dev/null
@@ -1,230 +0,0 @@
-################################################################################
-Name: tomcatjss
-################################################################################
-
-%global product_id dogtag-tomcatjss
-
-# Upstream version number:
-%global major_version 8
-%global minor_version 4
-%global update_version 1
-
-# Downstream release number:
-# - development/stabilization (unsupported): 0.<n> where n >= 1
-# - GA/update (supported): <n> where n >= 1
-%global release_number 1
-
-# Development phase:
-# - development (unsupported): alpha<n> where n >= 1
-# - stabilization (unsupported): beta<n> where n >= 1
-# - GA/update (supported): <none>
-#global phase
-
-%undefine timestamp
-%undefine commit_id
-
-Summary: JSS Connector for Apache Tomcat
-URL: https://github.com/dogtagpki/tomcatjss
-License: LGPL-2.1-or-later
-Version: 8.4.1
-Release: 3%{?dist}
-
-# To generate the source tarball:
-# $ git clone https://github.com/dogtagpki/tomcatjss.git
-# $ cd tomcatjss
-# $ git archive \
-# --format=tar.gz \
-# --prefix tomcatjss-VERSION/ \
-# -o tomcatjss-VERSION.tar.gz \
-# <version tag>
-Source: https://github.com/dogtagpki/tomcatjss/archive/v%{version}%{?phase:-}%{?p...
-
-# To create a patch for all changes since a version tag:
-# $ git format-patch \
-# --stdout \
-# <version tag> \
-# > tomcatjss-VERSION-RELEASE.patch
-# Patch: tomcatjss-VERSION-RELEASE.patch
-
-BuildArch: noarch
-ExclusiveArch: %{java_arches} noarch
-
-################################################################################
-# Java
-################################################################################
-
-%define java_devel java-17-openjdk-devel
-%define java_headless java-17-openjdk-headless
-%define java_home %{_jvmdir}/jre-17-openjdk
-
-################################################################################
-# Build Dependencies
-################################################################################
-
-# jpackage-utils requires versioning to meet both build and runtime requirements
-# jss requires versioning to meet both build and runtime requirements
-# tomcat requires versioning to meet both build and runtime requirements
-
-# Java
-BuildRequires: ant
-BuildRequires: apache-commons-lang3
-BuildRequires: %{java_devel}
-BuildRequires: jpackage-utils >= 0:1.7.5-15
-
-# SLF4J
-BuildRequires: slf4j
-BuildRequires: slf4j-jdk14
-
-# JSS
-BuildRequires: jss = 5.4
-
-# Tomcat
-BuildRequires: tomcat >= 1:9.0.7
-
-%description
-JSS Connector for Apache Tomcat, installed via the tomcatjss package,
-is a Java Secure Socket Extension (JSSE) module for Apache Tomcat that
-uses Java Security Services (JSS), a Java interface to Network Security
-Services (NSS).
-
-################################################################################
-%package -n %{product_id}
-################################################################################
-
-Summary: JSS Connector for Apache Tomcat
-
-# Java
-Requires: apache-commons-lang3
-Requires: %{java_headless}
-Requires: jpackage-utils >= 0:1.7.5-15
-
-# SLF4J
-Requires: slf4j
-Requires: slf4j-jdk14
-
-# JSS
-Requires: jss = 5.4
-
-# Tomcat
-Requires: tomcat >= 1:9.0.7
-
-Obsoletes: tomcatjss < %{version}-%{release}
-Provides: tomcatjss = %{version}-%{release}
-Provides: tomcatjss = %{major_version}.%{minor_version}
-Provides: %{product_id} = %{major_version}.%{minor_version}
-
-# PKI
-Conflicts: pki-base < 10.10.0
-
-
-%if 0%{?rhel}
-# For EPEL, override the '_sharedstatedir' macro on RHEL
-%define _sharedstatedir /var/lib
-%endif
-
-%description -n %{product_id}
-JSS Connector for Apache Tomcat, installed via the tomcatjss package,
-is a Java Secure Socket Extension (JSSE) module for Apache Tomcat that
-uses Java Security Services (JSS), a Java interface to Network Security
-Services (NSS).
-
-################################################################################
-%prep
-################################################################################
-
-%autosetup -n tomcatjss-%{version}%{?phase:-}%{?phase} -p 1
-
-################################################################################
-%build
-################################################################################
-
-export JAVA_HOME=%{java_home}
-
-./build.sh \
- %{?_verbose:-v} \
- --name=%{product_id} \
- --work-dir=%{_vpath_builddir} \
- --version=%{version} \
- --jni-dir=%{_jnidir} \
- dist
-
-################################################################################
-%install
-################################################################################
-
-./build.sh \
- %{?_verbose:-v} \
- --name=%{product_id} \
- --work-dir=%{_vpath_builddir} \
- --version=%{version} \
- --java-dir=%{_javadir} \
- --doc-dir=%{_docdir} \
- --install-dir=%{buildroot} \
- install
-
-################################################################################
-%files -n %{product_id}
-################################################################################
-
-%license LICENSE
-
-%defattr(-,root,root)
-%doc README
-%doc LICENSE
-%{_javadir}/*
-
-################################################################################
-%changelog
-* Sat Jan 27 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 8.4.1-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
-
-* Sat Jul 22 2023 Fedora Release Engineering <releng(a)fedoraproject.org> - 8.4.1-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
-
-* Fri Jun 16 2023 Packit <hello(a)packit.dev> - 8.4.1-1
-- Updating version to v8.4.1 (Chris Kelley)
-- Updating version to v8.4.1.. (Chris Kelley)
-- Introduce Packit configuration file for tomcatjss (Chris Kelley)
-
-* Tue Feb 07 2023 Dogtag PKI Team <devel(a)lists.dogtagpki.org> - 8.3.0-1
-- Rebase to Tomcat JSS 8.3.0
-
-* Sat Jan 21 2023 Fedora Release Engineering <releng(a)fedoraproject.org> - 8.2.0-1.3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
-
-* Sat Jul 23 2022 Fedora Release Engineering <releng(a)fedoraproject.org> - 8.2.0-1.2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
-
-* Fri Jul 08 2022 Jiri Vanek <jvanek(a)redhat.com> - 8.2.0-1.1
-- Rebuilt for Drop i686 JDKs
-
-* Thu Jun 30 2022 Dogtag PKI Team <devel(a)lists.dogtagpki.org> - 8.2.0-1
-- Rebase to Tomcat JSS 8.2.0
-
-* Thu Apr 28 2022 Dogtag PKI Team <devel(a)lists.dogtagpki.org> - 8.2.0-0.3.beta2
-- Rebase to Tomcat JSS 8.2.0-beta2
-- Rename packages to dogtag-tomcatjss
-
-* Mon Apr 18 2022 Dogtag PKI Team <devel(a)lists.dogtagpki.org> - 8.2.0-0.2.beta1
-- Rebase to Tomcat JSS 8.2.0-beta1
-
-* Mon Feb 14 2022 Dogtag PKI Team <devel(a)lists.dogtagpki.org> - 8.1.0-1
-- Rebase to Tomcat JSS 8.1.0
-
-* Sat Feb 05 2022 Jiri Vanek <jvanek(a)redhat.com> - 8.0.0-3
-- Rebuilt for java-17-openjdk as system jdk
-
-* Sat Jan 22 2022 Fedora Release Engineering <releng(a)fedoraproject.org> - 8.0.0-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
-
-* Thu Sep 30 2021 Dogtag PKI Team <devel(a)lists.dogtagpki.org> - 8.0.0-1
-- Rebase to Tomcat JSS 8.0.0
-
-* Thu Aug 12 2021 Dogtag PKI Team <devel(a)lists.dogtagpki.org> - 8.0.0-0.3.alpha2
-- Rebase to Tomcat JSS 8.0.0-alpha1
-
-* Fri Jul 23 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 8.0.0-0.2.alpha1
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
-
-* Tue Jun 22 2021 Dogtag PKI Team <devel(a)lists.dogtagpki.org> - 8.0.0-0.1.alpha1
-- Rebase to Tomcat JSS 8.0.0-alpha1
3 months
Architecture specific change in rpms/coin-or-Cbc.git
by githook-noreply@fedoraproject.org
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=d6483b....
Change:
+%ifnarch %{ix86}
Thanks.
Full change:
============
commit d6483b6084d270ace2c9327575cdfb8c25421993
Author: Jerry James <loganjerry(a)gmail.com>
Date: Wed Jan 31 14:04:40 2024 -0700
Version 2.10.11
- Change License from EPL-1.0 to EPL-2.0 AND EPL-1.0
- Verify that license is valid SPDX
- BR asl-devel instead of mp-devel
- Add coin-or-HiGHS support except on 32-bit x86
- Drop support for Fedora < 33
diff --git a/coin-or-Cbc-docdir.patch b/coin-or-Cbc-docdir.patch
index a14ce4f..4f1494f 100644
--- a/coin-or-Cbc-docdir.patch
+++ b/coin-or-Cbc-docdir.patch
@@ -1,7 +1,7 @@
-diff -up Cbc-releases-2.10.4/Cbc/configure.orig Cbc-releases-2.10.4/Cbc/configure
---- Cbc-releases-2.10.4/Cbc/configure.orig 2020-01-31 04:34:18.000000000 -0700
-+++ Cbc-releases-2.10.4/Cbc/configure 2020-02-20 11:55:45.461075049 -0700
-@@ -31667,7 +31667,7 @@ echo "${ECHO_T}$doxysrcdir (src)" >&6
+diff -up Cbc-releases-2.10.11/Cbc/configure.orig Cbc-releases-2.10.11/Cbc/configure
+--- Cbc-releases-2.10.11/Cbc/configure.orig 2023-10-25 12:14:19.000000000 -0600
++++ Cbc-releases-2.10.11/Cbc/configure 2023-10-27 13:42:18.261244376 -0600
+@@ -31676,7 +31676,7 @@ echo "${ECHO_T}$doxysrcdir (src)" >&6
fi
# Not built, fall back to installed tag file
if test $doxyfound = no ; then
@@ -10,10 +10,10 @@ diff -up Cbc-releases-2.10.4/Cbc/configure.orig Cbc-releases-2.10.4/Cbc/configur
# 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-releases-2.10.4/Cbc/Makefile.in.orig Cbc-releases-2.10.4/Cbc/Makefile.in
---- Cbc-releases-2.10.4/Cbc/Makefile.in.orig 2020-01-31 04:34:18.000000000 -0700
-+++ Cbc-releases-2.10.4/Cbc/Makefile.in 2020-02-20 11:55:45.461075049 -0700
-@@ -508,7 +508,7 @@ EXTRA_DIST = doc/authors.xml doc/cbcexe.
+diff -up Cbc-releases-2.10.11/Cbc/Makefile.in.orig Cbc-releases-2.10.11/Cbc/Makefile.in
+--- Cbc-releases-2.10.11/Cbc/Makefile.in.orig 2023-10-25 12:14:19.000000000 -0600
++++ Cbc-releases-2.10.11/Cbc/Makefile.in 2023-10-27 13:42:18.261244376 -0600
+@@ -507,7 +507,7 @@ EXTRA_DIST = doc/authors.xml doc/cbcexe.
########################################################################
pkgconfiglibdir = $(libdir)/pkgconfig
pkgconfiglib_DATA = cbc.pc osi-cbc.pc
@@ -22,10 +22,10 @@ diff -up Cbc-releases-2.10.4/Cbc/Makefile.in.orig Cbc-releases-2.10.4/Cbc/Makefi
########################################################################
# Maintainer Stuff #
-@@ -518,7 +518,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
+ DocFiles = README README.md AUTHORS AUTHORS.md LICENSE LICENSE.md
-DocInstallDir = $(datadir)/coin/doc/$(PACKAGE_NAME)
+DocInstallDir = $(datadir)/doc/coin-or-$(PACKAGE_NAME)
COIN_HAS_DOXYGEN = @COIN_HAS_DOXYGEN_TRUE@TRUE
diff --git a/coin-or-Cbc-overflow.patch b/coin-or-Cbc-overflow.patch
deleted file mode 100644
index f7cda25..0000000
--- a/coin-or-Cbc-overflow.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up Cbc-releases-2.10.4/Cbc/src/CbcMipStartIO.cpp.orig Cbc-releases-2.10.4/Cbc/src/CbcMipStartIO.cpp
---- Cbc-releases-2.10.4/Cbc/src/CbcMipStartIO.cpp.orig 2020-01-31 04:34:18.000000000 -0700
-+++ Cbc-releases-2.10.4/Cbc/src/CbcMipStartIO.cpp 2020-02-20 11:59:12.954568084 -0700
-@@ -119,7 +119,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-register.patch b/coin-or-Cbc-register.patch
new file mode 100644
index 0000000..2713943
--- /dev/null
+++ b/coin-or-Cbc-register.patch
@@ -0,0 +1,68 @@
+diff -up Cbc-releases-2.10.11/Cbc/src/CbcSymmetry.cpp.orig Cbc-releases-2.10.11/Cbc/src/CbcSymmetry.cpp
+--- Cbc-releases-2.10.11/Cbc/src/CbcSymmetry.cpp.orig 2023-10-25 12:14:19.000000000 -0600
++++ Cbc-releases-2.10.11/Cbc/src/CbcSymmetry.cpp 2023-10-27 13:48:41.867896805 -0600
+@@ -41,7 +41,7 @@ void CbcSymmetry::Node::node(int i, doub
+ sign = s;
+ }
+
+-inline bool CbcSymmetry::compare(register Node &a, register Node &b) const
++inline bool CbcSymmetry::compare(Node &a, Node &b) const
+ {
+ if (a.get_code() == b.get_code())
+ if (a.get_coeff() == b.get_coeff())
+diff -up Cbc-releases-2.10.11/Cbc/src/CbcSymmetry.hpp.orig Cbc-releases-2.10.11/Cbc/src/CbcSymmetry.hpp
+--- Cbc-releases-2.10.11/Cbc/src/CbcSymmetry.hpp.orig 2023-10-25 12:14:19.000000000 -0600
++++ Cbc-releases-2.10.11/Cbc/src/CbcSymmetry.hpp 2023-10-27 13:51:26.121563870 -0600
+@@ -80,7 +80,7 @@ class CbcSymmetry {
+
+ public:
+ void node(int, double, double, double, int, int);
+- inline void color_vertex(register int k) { color = k; }
++ inline void color_vertex(int k) { color = k; }
+ inline int get_index() const { return index; }
+ inline double get_coeff() const { return coeff; }
+ inline double get_lb() const { return lb; }
+@@ -88,7 +88,7 @@ class CbcSymmetry {
+ inline int get_color() const { return color; }
+ inline int get_code() const { return code; }
+ inline int get_sign() const { return sign; }
+- inline void bounds(register double a, register double b)
++ inline void bounds(double a, double b)
+ {
+ lb = a;
+ ub = b;
+@@ -96,7 +96,7 @@ class CbcSymmetry {
+ };
+
+ struct myclass0 {
+- inline bool operator()(register const Node &a, register const Node &b)
++ inline bool operator()(const Node &a, const Node &b)
+ {
+
+ return ((a.get_code() < b.get_code()) || ((a.get_code() == b.get_code() && ((a.get_coeff() < b.get_coeff() - COUENNE_HACKED_EPS_SYMM) || ((fabs(a.get_coeff() - b.get_coeff()) < COUENNE_HACKED_EPS_SYMM) && ((a.get_lb() < b.get_lb() - COUENNE_HACKED_EPS_SYMM) || ((fabs(a.get_lb() - b.get_lb()) < COUENNE_HACKED_EPS_SYMM) && ((a.get_ub() < b.get_ub() - COUENNE_HACKED_EPS_SYMM) || ((fabs(a.get_ub() - b.get_ub()) < COUENNE_HACKED_EPS_SYMM) && ((a.get_index() < b.get_index())))))))))));
+@@ -104,14 +104,14 @@ class CbcSymmetry {
+ };
+
+ struct myclass {
+- inline bool operator()(register const Node &a, register const Node &b)
++ inline bool operator()(const Node &a, const Node &b)
+ {
+ return (a.get_index() < b.get_index());
+ }
+ };
+
+ struct less_than_str {
+- inline bool operator()(register const char *a, register const char *b) const
++ inline bool operator()(const char *a, const char *b) const
+ {
+ return strcmp(a, b) < 0;
+ }
+@@ -186,7 +186,7 @@ public:
+ void adjustStats(const CbcSymmetry * other);
+ inline int numberColumns() const
+ { return numberColumns_;}
+- inline bool compare(register Node &a, register Node &b) const;
++ inline bool compare(Node &a, Node &b) const;
+ CbcNauty *getNtyInfo() { return nauty_info_; }
+
+ // bool node_sort ( Node a, Node b);
diff --git a/coin-or-Cbc-signed.patch b/coin-or-Cbc-signed.patch
deleted file mode 100644
index 3d95222..0000000
--- a/coin-or-Cbc-signed.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up Cbc-releases-2.10.4/Cbc/src/CbcMipStartIO.cpp.orig Cbc-releases-2.10.4/Cbc/src/CbcMipStartIO.cpp
---- Cbc-releases-2.10.4/Cbc/src/CbcMipStartIO.cpp.orig 2020-02-20 11:59:12.954568084 -0700
-+++ Cbc-releases-2.10.4/Cbc/src/CbcMipStartIO.cpp 2020-02-20 11:59:41.954077964 -0700
-@@ -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-test.patch b/coin-or-Cbc-test.patch
new file mode 100644
index 0000000..4b8a2b3
--- /dev/null
+++ b/coin-or-Cbc-test.patch
@@ -0,0 +1,19 @@
+diff -up Cbc-releases-2.10.11/Cbc/test/OsiCbcSolverInterfaceTest.cpp.orig Cbc-releases-2.10.11/Cbc/test/OsiCbcSolverInterfaceTest.cpp
+--- Cbc-releases-2.10.11/Cbc/test/OsiCbcSolverInterfaceTest.cpp.orig 2023-10-27 13:44:56.032074331 -0600
++++ Cbc-releases-2.10.11/Cbc/test/OsiCbcSolverInterfaceTest.cpp 2023-10-27 13:52:39.209521269 -0600
+@@ -121,6 +121,7 @@ void OsiCbcSolverInterfaceUnitTest(const
+ // Test some catches
+ if (!OsiCbcHasNDEBUG()) {
+ OsiCbcSolverInterface solver;
++#ifndef NDEBUG
+ try {
+ solver.setObjCoeff(0, 0.0);
+ OSIUNITTEST_ADD_OUTCOME("cbc", "setObjCoeff on empty model", "should throw exception", OsiUnitTest::TestOutcome::ERROR, false);
+@@ -128,6 +129,7 @@ void OsiCbcSolverInterfaceUnitTest(const
+ if (OsiUnitTest::verbosity >= 1)
+ std::cout << "Correct throw from setObjCoeff on empty model" << std::endl;
+ }
++#endif
+
+ std::string fn = mpsDir + "exmip1";
+ solver.readMps(fn.c_str(), "mps");
diff --git a/coin-or-Cbc.spec b/coin-or-Cbc.spec
index df4c224..0a5ead1 100644
--- a/coin-or-Cbc.spec
+++ b/coin-or-Cbc.spec
@@ -1,6 +1,6 @@
%global module Cbc
-%if 0%{?fedora} >= 33
+%if 0%{?fedora}
%global blaslib flexiblas
%else
%global blaslib openblas
@@ -8,9 +8,12 @@
Name: coin-or-%{module}
Summary: Coin-or branch and cut
-Version: 2.10.5
-Release: 16%{?dist}
-License: EPL-1.0
+Version: 2.10.11
+Release: 1%{?dist}
+
+# The project as a whole is licensed EPL-2.0. However, many source files still
+# claim to be licensed EPL-1.0. This is probably an upstream oversight.
+License: EPL-2.0 AND EPL-1.0
URL: https://github.com/coin-or/%{module}
Source0: %{url}/archive/releases/%{version}/%{module}-%{version}.tar.gz
BuildRequires: coin-or-Cgl-doc
@@ -20,7 +23,7 @@ BuildRequires: coin-or-Vol-doc
BuildRequires: doxygen
BuildRequires: gcc-c++
BuildRequires: make
-BuildRequires: mp-devel
+BuildRequires: asl-devel
BuildRequires: MUMPS-devel
BuildRequires: %{blaslib}-devel
BuildRequires: pkgconfig(cgl)
@@ -28,6 +31,9 @@ BuildRequires: pkgconfig(clp)
BuildRequires: pkgconfig(coindatamiplib3)
BuildRequires: pkgconfig(coindatanetlib)
BuildRequires: pkgconfig(dylp)
+%ifnarch %{ix86}
+BuildRequires: pkgconfig(highs)
+%endif
BuildRequires: pkgconfig(nauty)
BuildRequires: pkgconfig(vol)
@@ -40,13 +46,18 @@ 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 non-C99 code in the configure script
+Patch3: %{name}-configure-c99.patch
-# Fix a mixed signed/unsigned operation
-Patch4: %{name}-signed.patch
+# ISO C++17 does not allow 'register' storage class specifier
+# https://github.com/coin-or/Cbc/commit/a5b95995f8347e90c72a197224def415e43...
+# https://github.com/coin-or/Cbc/commit/583acba8c6052d711f58d51294de61461a5...
+Patch4: %{name}-register.patch
-Patch5: coin-or-Cbc-configure-c99.patch
+# One test relies on Clp having been compiled without -DNDEBUG, so that it
+# throws an exception. We compiled with -DNDEBUG, so the test segfaults.
+# Skip that test.
+Patch5: %{name}-test.patch
%description
Cbc (Coin-or branch and cut) is an open-source mixed integer programming
@@ -93,7 +104,9 @@ This package contains the documentation for %{name}.
sed -i 's/ @CBCLIB_PCLIBS@/\nLibs.private:&/' Cbc/cbc.pc.in
%build
+export CPPFLAGS='-DNDEBUG'
%configure \
+ --enable-cbc-parallel \
--with-asl-incdir=%{_includedir}/asl \
--with-asl-lib=-lasl \
--with-blas-incdir=%{_includedir}/%{blaslib} \
@@ -120,18 +133,16 @@ sed -e 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' \
%make_install
rm -f %{buildroot}%{_libdir}/*.la
rm -f %{buildroot}%{_docdir}/%{name}/{LICENSE,cbc_addlibs.txt}
-cp -a doxydoc/{html,*.tag} %{buildroot}%{_docdir}/%{name}
+cp -a README.md doxydoc/{html,*.tag} %{buildroot}%{_docdir}/%{name}
%check
LD_LIBRARY_PATH=%{buildroot}%{_libdir} make test
-%ldconfig_scriptlets
-
%files
%license LICENSE
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/AUTHORS
-%{_docdir}/%{name}/README
+%{_docdir}/%{name}/README.md
%{_bindir}/cbc
%{_libdir}/libCbc.so.3
%{_libdir}/libCbc.so.3.*
@@ -153,6 +164,14 @@ LD_LIBRARY_PATH=%{buildroot}%{_libdir} make test
%{_docdir}/%{name}/cbc_doxy.tag
%changelog
+* Wed Jan 31 2024 Jerry James <loganjerry(a)gmail.com> - 2.10.11-1
+- Version 2.10.11
+- Change License from EPL-1.0 to EPL-2.0 AND EPL-1.0
+- Verify that license is valid SPDX
+- BR asl-devel instead of mp-devel
+- Add coin-or-HiGHS support except on 32-bit x86
+- Drop support for Fedora < 33
+
* Wed Jan 24 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 2.10.5-16
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git a/sources b/sources
index 1c4571c..44827a1 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (Cbc-2.10.5.tar.gz) = 114ee23ee6e53c337d17bc0930f62d4438e761115e0bf48a04b67732cd82f63dbcc51c3e5b8069bc99bd2e1197b5116ec0be0c2a0a897619c5b79bc1d1751a4e
+SHA512 (Cbc-2.10.11.tar.gz) = 6e7aeff17a364f52c9c7c2015f0dc09298ee4920059b8154ed1eea058f45a9436edc296959b4a94a7a4eed71a4ecd3218bc7f60d4a95a4fe620e7b01cf40eb01
3 months
Architecture specific change in rpms/gfan.git
by githook-noreply@fedoraproject.org
The package rpms/gfan.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/gfan.git/commit/?id=e1ed7d02da4e6....
Change:
+ExcludeArch: %{ix86}
Thanks.
Full change:
============
commit c12b8f2732405e2953668450cb8bfcfabfdd80af
Author: Jerry James <loganjerry(a)gmail.com>
Date: Fri Feb 23 08:15:53 2024 -0700
Update standard to C++14 to fix FTBFS
diff --git a/gfan-shared.patch b/gfan-shared.patch
index e5ff486..b691cde 100644
--- a/gfan-shared.patch
+++ b/gfan-shared.patch
@@ -5,7 +5,7 @@
#OPTFLAGS = -DGMPRATIONAL -Wuninitialized -fno-omit-frame-pointer -O3 -mavx -msse2 -ftree-vectorizer-verbose=2 -ffast-math #-DNDEBUG
-CFLAGS = $(OPTFLAGS) $(GPROFFLAG) $(STACTDUMP_OPTIONS) $(ADDITIONALINCLUDEOPTIONS) -std=c++0x -g $(CDDDEFINE_PREFIX) #-pedantic
-+CFLAGS = $(OPTFLAGS) $(GPROFFLAG) $(STACTDUMP_OPTIONS) $(ADDITIONALINCLUDEOPTIONS) -std=c++11 -g $(CDDDEFINE_PREFIX) #-pedantic
++CFLAGS = $(OPTFLAGS) $(GPROFFLAG) $(STACTDUMP_OPTIONS) $(ADDITIONALINCLUDEOPTIONS) -std=c++14 -g $(CDDDEFINE_PREFIX) #-pedantic
#CFLAGS = $(OPTFLAGS) $(GPROFFLAG) $(STACTDUMP_OPTIONS) $(ADDITIONALINCLUDEOPTIONS) -D_GLIBCXX_DEBUG -std=c++0x -g $(CDDDEFINE_PREFIX) #-pedantic
CCFLAGS = $(CFLAGS)
FFLAGS = $(OPTFLAGS)
diff --git a/gfan-soplex.patch b/gfan-soplex.patch
index c317758..7ff1bec 100644
--- a/gfan-soplex.patch
+++ b/gfan-soplex.patch
@@ -1,15 +1,13 @@
--- src/lp_soplexcdd.cpp.orig 2017-06-20 08:47:37.000000000 -0600
-+++ src/lp_soplexcdd.cpp 2023-02-06 20:46:19.639810995 -0700
-@@ -1,37 +1,31 @@
++++ src/lp_soplexcdd.cpp 2024-02-23 07:25:18.562252440 -0700
+@@ -1,37 +1,11 @@
#include "lp_soplexcdd.h"
-#include "printer.h"
-
-#include "spxdefines.h"
-#include "spxsolver.h"
-+#include <soplex/spxdefines.h>
-+#include <soplex/spxsolver.h>
-
+-
-#include "timer.h"
-#include "spxpricer.h"
-//#include "spxdefaultpr.h"
@@ -34,24 +32,7 @@
-#include "spxvectorst.h"
-#include "slufactor.h"
-#include "soplex.h"
-+#include <soplex/timer.h>
-+#include <soplex/spxpricer.h>
-+#include <soplex/spxparmultpr.h>
-+#include <soplex/spxdevexpr.h>
-+#include <soplex/spxhybridpr.h>
-+#include <soplex/spxsteeppr.h>
-+#include <soplex/spxweightpr.h>
-+#include <soplex/spxratiotester.h>
-+#include <soplex/spxharrisrt.h>
-+#include <soplex/spxdefaultrt.h>
-+#include <soplex/spxfastrt.h>
-+#include <soplex/spxsimplifier.h>
-+#include <soplex/spxscaler.h>
-+#include <soplex/spxequilisc.h>
-+#include <soplex/spxsumst.h>
-+#include <soplex/spxweightst.h>
-+#include <soplex/spxvectorst.h>
-+#include <soplex/slufactor.h>
++#include <soplex/spxdefines.h>
+#include <soplex.h>
#include "continuedfractions.h"
#include "matrix.h"
@@ -60,7 +41,7 @@
#include "log.h"
using namespace soplex;
-@@ -42,81 +36,47 @@ using namespace soplex;
+@@ -42,81 +16,47 @@ using namespace soplex;
class MySoPlex : public SoPlex
{
private:
@@ -166,7 +147,7 @@
{
int width=g.size()-1;
int height=i->v.size();
-@@ -141,22 +101,23 @@ public:
+@@ -141,22 +81,23 @@ public:
cols.add(obj,lower,c1,upper);
}
}
@@ -199,7 +180,7 @@
{
int width=n;
int nInequalities=inequalities.size();
-@@ -192,27 +153,29 @@ public:
+@@ -192,27 +133,29 @@ public:
LPRowSet rows(height,width*height);
DSVector r1(width);
@@ -237,7 +218,7 @@
static void printLP(SPxLP &w)
{
std::cout << "LP has "
-@@ -272,10 +235,9 @@ static void printLP(SPxLP &w)
+@@ -272,10 +215,9 @@ static void printLP(SPxLP &w)
std::cout<<toint(R.lhs())<<" "<<toint(R.rhs())<<" "<<R.type()<<std::endl;
}
}
@@ -250,7 +231,7 @@
static bool isFeasibleSolution(IntegerVector const &solution, int denominator, IntegerVectorList const &g, IntegerVectorList::const_iterator i)
{
-@@ -308,7 +270,7 @@ static bool isInfeasibilityCertificate(I
+@@ -308,7 +250,7 @@ static bool isInfeasibilityCertificate(I
/* for(IntegerVectorList::const_iterator j=g.begin();j!=g.end();j++)
{
/* double prod=0;
@@ -259,7 +240,7 @@
{prod+=(*j)[i]*certificate[i];
// fprintf(stderr,"%f \n",prod);
}
-@@ -357,17 +319,13 @@ static bool isInfeasibilityCertificateTy
+@@ -357,17 +299,13 @@ static bool isInfeasibilityCertificateTy
bool LpSolverSoPlexCddGmp::isFacet(const IntegerVectorList &g, IntegerVectorList::const_iterator I)
{
@@ -279,7 +260,7 @@
// std::cerr<< work;
work.solve();
-@@ -377,19 +335,19 @@ bool LpSolverSoPlexCddGmp::isFacet(const
+@@ -377,19 +315,19 @@ bool LpSolverSoPlexCddGmp::isFacet(const
{
case SPxSolver::OPTIMAL:
{
@@ -304,7 +285,7 @@
if(isFeasibleSolution(s,denominator,g,I))
{
-@@ -407,19 +365,19 @@ bool LpSolverSoPlexCddGmp::isFacet(const
+@@ -407,19 +345,19 @@ bool LpSolverSoPlexCddGmp::isFacet(const
break;
case SPxSolver::INFEASIBLE:
{
@@ -329,7 +310,7 @@
if(isInfeasibilityCertificate(c,g,I))
{
-@@ -462,17 +420,13 @@ bool LpSolverSoPlexCddGmp::isFacet(const
+@@ -462,17 +400,13 @@ bool LpSolverSoPlexCddGmp::isFacet(const
bool LpSolverSoPlexCddGmp::hasHomogeneousSolution(int n, const IntegerVectorList &inequalities, const IntegerVectorList &equations)
{
@@ -349,7 +330,7 @@
// std::cerr<< work;
// assert(0);
-@@ -484,19 +438,19 @@ bool LpSolverSoPlexCddGmp::hasHomogeneou
+@@ -484,19 +418,19 @@ bool LpSolverSoPlexCddGmp::hasHomogeneou
{
case SPxSolver::OPTIMAL:
{
@@ -374,7 +355,7 @@
// AsciiPrinter(Stderr).printVector(s);
if(isFeasibleSolutionType2(s,inequalities,equations))
-@@ -512,7 +466,7 @@ if(0) {
+@@ -512,7 +446,7 @@ if(0) {
{
double S=0;
assert(i->size()==solution.size());
@@ -383,7 +364,7 @@
if(S>-0.000001 && S<0.000001)A.push_back(*i);
}
FieldMatrix temp=integerMatrixToFieldMatrix(rowsToIntegerMatrix(A,solution.size()),Q);
-@@ -538,7 +492,7 @@ if(0) {
+@@ -538,7 +472,7 @@ if(0) {
*/
log2 fprintf(Stderr,"Solution failed (Type2).\n");
@@ -392,7 +373,7 @@
{
std::cerr<<solution[i]<<',';
}
-@@ -558,19 +512,19 @@ if(0) {
+@@ -558,19 +492,19 @@ if(0) {
break;
case SPxSolver::INFEASIBLE:
{
commit e1ed7d02da4e60bba16785e447be42e9b37f9c4a
Author: Jerry James <loganjerry(a)gmail.com>
Date: Thu Feb 22 21:13:44 2024 -0700
Build with SoPlex support
- Stop building for 32-bit x86
diff --git a/gfan-soplex.patch b/gfan-soplex.patch
new file mode 100644
index 0000000..c317758
--- /dev/null
+++ b/gfan-soplex.patch
@@ -0,0 +1,419 @@
+--- src/lp_soplexcdd.cpp.orig 2017-06-20 08:47:37.000000000 -0600
++++ src/lp_soplexcdd.cpp 2023-02-06 20:46:19.639810995 -0700
+@@ -1,37 +1,31 @@
+ #include "lp_soplexcdd.h"
+
+-#include "printer.h"
+-
+-#include "spxdefines.h"
+-#include "spxsolver.h"
++#include <soplex/spxdefines.h>
++#include <soplex/spxsolver.h>
+
+-#include "timer.h"
+-#include "spxpricer.h"
+-//#include "spxdefaultpr.h"
+-#include "spxparmultpr.h"
+-#include "spxdevexpr.h"
+-#include "spxhybridpr.h"
+-#include "spxsteeppr.h"
+-#include "spxweightpr.h"
+-#include "spxratiotester.h"
+-#include "spxharrisrt.h"
+-#include "spxdefaultrt.h"
+-#include "spxfastrt.h"
+-#include "spxsimplifier.h"
+-//#include "spxaggregatesm.h"
+-//#include "spxredundantsm.h"
+-//#include "spxrem1sm.h"
+-//#include "spxgeneralsm.h"
+-#include "spxscaler.h"
+-#include "spxequilisc.h"
+-#include "spxsumst.h"
+-#include "spxweightst.h"
+-#include "spxvectorst.h"
+-#include "slufactor.h"
+-#include "soplex.h"
++#include <soplex/timer.h>
++#include <soplex/spxpricer.h>
++#include <soplex/spxparmultpr.h>
++#include <soplex/spxdevexpr.h>
++#include <soplex/spxhybridpr.h>
++#include <soplex/spxsteeppr.h>
++#include <soplex/spxweightpr.h>
++#include <soplex/spxratiotester.h>
++#include <soplex/spxharrisrt.h>
++#include <soplex/spxdefaultrt.h>
++#include <soplex/spxfastrt.h>
++#include <soplex/spxsimplifier.h>
++#include <soplex/spxscaler.h>
++#include <soplex/spxequilisc.h>
++#include <soplex/spxsumst.h>
++#include <soplex/spxweightst.h>
++#include <soplex/spxvectorst.h>
++#include <soplex/slufactor.h>
++#include <soplex.h>
+ #include "continuedfractions.h"
+ #include "matrix.h"
+ #include "linalg.h"
++#include "printer.h"
+
+ #include "log.h"
+ using namespace soplex;
+@@ -42,81 +36,47 @@ using namespace soplex;
+ class MySoPlex : public SoPlex
+ {
+ private:
+- SLUFactor m_slu;
++ SLUFactor<Real> m_slu;
+
+ public:
+ /// default constructor
+- MySoPlex(SPxSolver::Type p_type = SPxSolver::LEAVE, SPxSolver::Representation p_rep = SPxSolver::COLUMN)
+- : SoPlex(p_type, p_rep)
++ MySoPlex() : SoPlexBase<Real>()
+ {
++ NameSet rownames;
++ NameSet colnames;
++ Real epsilon = DEFAULT_EPS_ZERO;
++ SPxOut::Verbosity verbose = SPxOut::Verbosity::ERROR;
++ SLUFactor<Real>::UpdateType update = SLUFactor<Real>::FOREST_TOMLIN;
++ Real timelimit = 1.0;
+
++ Param::setEpsilon(epsilon);
++ spxout.setVerbosity(verbose);
+
++ //options -p4 -t2 -g1 -s0 -c0
++ setUtype(update);
+
+- bool print_solution = false;
+- bool print_quality = false;
+- NameSet rownames;
+- NameSet colnames;
+- SPxStarter* starter = 0;
+- SPxSolver::Type type = SPxSolver::LEAVE;
+- SPxSolver::Representation representation = SPxSolver::COLUMN;
+- int precision;
+- Real delta = DEFAULT_BND_VIOL;
+- Real epsilon = DEFAULT_EPS_ZERO;
+- int verbose = 0;
+- SLUFactor::UpdateType update = SLUFactor::FOREST_TOMLIN;
+- Real timelimit = 1.0;-1.0;
+- SPxPricer* pricer = 0;
+- SPxRatioTester* ratiotester = 0;
+- SPxScaler* scaler = 0;
+- SPxSimplifier* simplifier = 0;
+-
+- precision = int(-log10(delta)) + 1;
+-
+- Param::setEpsilon(epsilon);
+- Param::setVerbose(verbose);
+-
+-
+-
+- //options -p4 -t2 -g1 -s0 -c0
+- setUtype(update);
+- setTerminationTime(timelimit);
+- setDelta(delta);
+-
+- assert(isConsistent());
+-
+- pricer = new SPxSteepPR;
+- setPricer(pricer);
+- assert(isConsistent());
++ setRealParam(TIMELIMIT, timelimit);
++ assert(isConsistent());
+
+- ratiotester = new SPxFastRT;
+- setTester(ratiotester);
+- assert(isConsistent());
++ setIntParam(PRICER, PRICER_STEEP);
++ assert(isConsistent());
+
+- /* scaler = new SPxEquili(representation == SoPlex::COLUMN, true);
+- setScaler(scaler);
+- assert(isConsistent());
+- */
+- setSimplifier(simplifier);
+- assert(isConsistent());
++ setIntParam(RATIOTESTER, RATIOTESTER_FAST);
++ assert(isConsistent());
+
+- setStarter(starter);
+- assert(isConsistent());
+- }
++ setIntParam(SIMPLIFIER, SIMPLIFIER_OFF);
++ assert(isConsistent());
+
+- virtual bool terminate()
+- {
+- /* if (iteration() % 100 == 0)
+- std::cout << iteration() << ":\t" << value() << std::endl;
+- */
+- return SoPlex::terminate();
++ setIntParam(STARTER, STARTER_OFF);
++ assert(isConsistent());
+ }
+
+- void setUtype(SLUFactor::UpdateType tp)
++ void setUtype(SLUFactor<Real>::UpdateType tp)
+ {
+ m_slu.setUtype(tp);
+ }
+
+- void build(const IntegerVectorList &g, IntegerVectorList::const_iterator i)
++ void build(const IntegerVectorList &g, IntegerVectorList::const_iterator i)
+ {
+ int width=g.size()-1;
+ int height=i->v.size();
+@@ -141,22 +101,23 @@ public:
+ cols.add(obj,lower,c1,upper);
+ }
+ }
+-
++
+ LPRowSet rows(height,width*height);
+ DSVector r1(width);
+-
++
+ //Change Rows
+ for(int t=0;t<height;t++)
+ rows.add(i->v[t],r1,i->v[t]);
+-
+- addRows(rows);
+- addCols(cols);
+-
+- changeSense(SPxLP::MINIMIZE);
+-
++
++ addRowsReal(rows);
++ addColsReal(cols);
++
++ setIntParam(OBJSENSE, OBJSENSE_MINIMIZE);
++
+ assert(isConsistent());
+ }
+- void buildType2(int n, const IntegerVectorList &inequalities, const IntegerVectorList &equations)
++
++ void buildType2(int n, const IntegerVectorList &inequalities, const IntegerVectorList &equations)
+ {
+ int width=n;
+ int nInequalities=inequalities.size();
+@@ -192,27 +153,29 @@ public:
+
+ LPRowSet rows(height,width*height);
+ DSVector r1(width);
+-
++
+ //Change Rows
+ for(int t=0;t<nInequalities;t++)
+ rows.add(0,r1,infinity);
+ for(int t=nInequalities;t<height;t++)
+ rows.add(0,r1,0);
+-
+- addRows(rows);
+- addCols(cols);
+-
+- changeSense(SPxLP::MINIMIZE);
+-
++
++ addRowsReal(rows);
++ addColsReal(cols);
++
++ setIntParam(OBJSENSE, OBJSENSE_MINIMIZE);
++
+ assert(isConsistent());
+ }
+ };
+
+ static int toint(float r)
+ {
+- return *((int*)&r);
++ int *theInt = reinterpret_cast<int *>(&r);
++ return *theInt;
+ }
+
++#if 0
+ static void printLP(SPxLP &w)
+ {
+ std::cout << "LP has "
+@@ -272,10 +235,9 @@ static void printLP(SPxLP &w)
+ std::cout<<toint(R.lhs())<<" "<<toint(R.rhs())<<" "<<R.type()<<std::endl;
+ }
+ }
++#endif
+
+-
+-MySoPlex work(SPxSolver::LEAVE, SPxSolver::COLUMN);
+-
++static MySoPlex work;
+
+ static bool isFeasibleSolution(IntegerVector const &solution, int denominator, IntegerVectorList const &g, IntegerVectorList::const_iterator i)
+ {
+@@ -308,7 +270,7 @@ static bool isInfeasibilityCertificate(I
+ /* for(IntegerVectorList::const_iterator j=g.begin();j!=g.end();j++)
+ {
+ /* double prod=0;
+- for(int i=0;i<work.nRows();i++)
++ for(int i=0;i<work.numRows();i++)
+ {prod+=(*j)[i]*certificate[i];
+ // fprintf(stderr,"%f \n",prod);
+ }
+@@ -357,17 +319,13 @@ static bool isInfeasibilityCertificateTy
+
+ bool LpSolverSoPlexCddGmp::isFacet(const IntegerVectorList &g, IntegerVectorList::const_iterator I)
+ {
+- SPxSolver::Type type = SPxSolver::LEAVE;
+- SPxSolver::Representation representation = SPxSolver::COLUMN;
+-
+ int lp_status=0;
+
+- work.clear();
++ work.clearLPReal();
++ work.clearBasis();
+
+ work.build(g,I);
+
+- retry:
+-
+ // std::cerr<< work;
+ work.solve();
+
+@@ -377,19 +335,19 @@ bool LpSolverSoPlexCddGmp::isFacet(const
+ {
+ case SPxSolver::OPTIMAL:
+ {
+- DVector objx(work.nCols());
++ DVector objx(work.numCols());
+
+- if( work.getPrimal(objx) != SPxSolver::ERROR )
++ if( work.getPrimal(objx) )
+ {
+- vector<double> solution(work.nCols());
+- for(int i=0;i<work.nCols();i++)
++ vector<double> solution(work.numCols());
++ for(int i=0;i<work.numCols();i++)
+ solution[i]=objx[i];
+
+ vector<int> solutionNum;
+ int denominator;
+ doubleVectorToFractions(solution,solutionNum,denominator);
+ IntegerVector s(solution.size());
+- for(int i=0;i<s.size();i++)s[i]=solutionNum[i];
++ for(size_t i=0;i<s.size();i++)s[i]=solutionNum[i];
+
+ if(isFeasibleSolution(s,denominator,g,I))
+ {
+@@ -407,19 +365,19 @@ bool LpSolverSoPlexCddGmp::isFacet(const
+ break;
+ case SPxSolver::INFEASIBLE:
+ {
+- DVector farkasx(work.nRows());
++ DVector farkasx(work.numRows());
+
+- if( work.getDualfarkas(farkasx) != SPxSolver::ERROR )
++ if( work.getDualFarkas(farkasx) )
+ {
+- vector<double> certificate(work.nRows());
+- for(int i=0;i<work.nRows();i++)
++ vector<double> certificate(work.numRows());
++ for(int i=0;i<work.numRows();i++)
+ certificate[i]=farkasx[i];
+
+ vector<int> certificateNum;
+ int denominator;
+ doubleVectorToFractions(certificate,certificateNum,denominator);
+ IntegerVector c(certificate.size());
+- for(int i=0;i<c.size();i++)c[i]=certificateNum[i];
++ for(size_t i=0;i<c.size();i++)c[i]=certificateNum[i];
+
+ if(isInfeasibilityCertificate(c,g,I))
+ {
+@@ -462,17 +420,13 @@ bool LpSolverSoPlexCddGmp::isFacet(const
+
+ bool LpSolverSoPlexCddGmp::hasHomogeneousSolution(int n, const IntegerVectorList &inequalities, const IntegerVectorList &equations)
+ {
+- SPxSolver::Type type = SPxSolver::LEAVE;
+- SPxSolver::Representation representation = SPxSolver::COLUMN;
+-
+ int lp_status=0;
+
+- work.clear();
++ work.clearLPReal();
++ work.clearBasis();
+
+ work.buildType2(n,inequalities,equations);
+
+- retry:
+-
+ // std::cerr<< work;
+
+ // assert(0);
+@@ -484,19 +438,19 @@ bool LpSolverSoPlexCddGmp::hasHomogeneou
+ {
+ case SPxSolver::OPTIMAL:
+ {
+- DVector objx(work.nCols());
++ DVector objx(work.numCols());
+
+- if( work.getPrimal(objx) != SPxSolver::ERROR )
++ if( work.getPrimal(objx) )
+ {
+- vector<double> solution(work.nCols());
+- for(int i=0;i<work.nCols();i++)
++ vector<double> solution(work.numCols());
++ for(int i=0;i<work.numCols();i++)
+ solution[i]=objx[i];
+
+ vector<int> solutionNum;
+ int denominator;
+ doubleVectorToFractions(solution,solutionNum,denominator);
+ IntegerVector s(solution.size());
+- for(int i=0;i<s.size();i++)s[i]=solutionNum[i];
++ for(size_t i=0;i<s.size();i++)s[i]=solutionNum[i];
+
+ // AsciiPrinter(Stderr).printVector(s);
+ if(isFeasibleSolutionType2(s,inequalities,equations))
+@@ -512,7 +466,7 @@ if(0) {
+ {
+ double S=0;
+ assert(i->size()==solution.size());
+- for(int j=0;j<i->size();j++)S+=solution[j]*(*i)[j];
++ for(size_t j=0;j<i->size();j++)S+=solution[j]*(*i)[j];
+ if(S>-0.000001 && S<0.000001)A.push_back(*i);
+ }
+ FieldMatrix temp=integerMatrixToFieldMatrix(rowsToIntegerMatrix(A,solution.size()),Q);
+@@ -538,7 +492,7 @@ if(0) {
+ */
+ log2 fprintf(Stderr,"Solution failed (Type2).\n");
+
+- /* for(int i=0;i<work.nCols();i++)
++ /* for(int i=0;i<work.numCols();i++)
+ {
+ std::cerr<<solution[i]<<',';
+ }
+@@ -558,19 +512,19 @@ if(0) {
+ break;
+ case SPxSolver::INFEASIBLE:
+ {
+- DVector farkasx(work.nRows());
++ DVector farkasx(work.numRows());
+
+- if( work.getDualfarkas(farkasx) != SPxSolver::ERROR )
++ if( work.getDualFarkas(farkasx) )
+ {
+- vector<double> certificate(work.nRows());
+- for(int i=0;i<work.nRows();i++)
++ vector<double> certificate(work.numRows());
++ for(int i=0;i<work.numRows();i++)
+ certificate[i]=farkasx[i];
+
+ vector<int> certificateNum;
+ int denominator;
+ doubleVectorToFractions(certificate,certificateNum,denominator);
+ IntegerVector c(certificate.size());
+- for(int i=0;i<c.size();i++)c[i]=certificateNum[i];
++ for(size_t i=0;i<c.size();i++)c[i]=certificateNum[i];
+
+ if(isInfeasibilityCertificateType2(c,n,inequalities,equations))
+ {
diff --git a/gfan.spec b/gfan.spec
index 65c6a39..4fa3b04 100644
--- a/gfan.spec
+++ b/gfan.spec
@@ -1,6 +1,6 @@
Name: gfan
Version: 0.6.2
-Release: 18%{?dist}
+Release: 19%{?dist}
Summary: Software for Computing Gröbner Fans and Tropical Varieties
License: GPL-2.0-or-later
URL: https://math.au.dk/~jensen/software/gfan/gfan.html
@@ -13,12 +13,18 @@ Patch0: %{name}-warning.patch
Patch1: %{name}-permissive.patch
# Build a shared library
Patch2: %{name}-shared.patch
+# Adapt to the version of SoPlex packaged for Fedora
+Patch3: %{name}-soplex.patch
+
+# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
+ExcludeArch: %{ix86}
BuildRequires: cddlib-devel
BuildRequires: gcc-c++
BuildRequires: ghostscript-tools-dvipdf
BuildRequires: glibc-langpack-en
BuildRequires: gmp-devel
+BuildRequires: libsoplex-devel
BuildRequires: make
BuildRequires: tex(latex)
BuildRequires: tex(ulem.sty)
@@ -87,10 +93,16 @@ rm -f src/minkowskisum.cpp.orig
rm -f homepage/Makefile
%build
+# Enable use of SoPlex
+sed -e 's|^\(SOPLEX_PATH = \).*|\1%{_prefix}|' \
+ -e 's|^\(SOPLEX_LINKOPTIONS = \).*|\1%{build_ldflags} -lsoplex -lclusol -lmpfr -ltbb|' \
+ -e 's|^\(SOPLEX_INCLUDEOPTIONS = \).*|\1|' \
+ -i Makefile
+
%make_build CC=gcc CXX=g++ \
- OPTFLAGS='%{build_cxxflags} -DGMPRATIONAL -I%{_includedir}/cddlib' \
+ OPTFLAGS='%{build_cxxflags} -DGMPRATIONAL -DNDEBUG -I%{_includedir}/cddlib' \
PREFIX=%{_prefix} \
- SOPLEX_LINKOPTIONS='%{build_ldflags}'
+ soplex=true
# Build the manual
cd doc
@@ -158,6 +170,10 @@ export LD_LIBRARY_PATH=%{buildroot}%{_libdir}
%changelog
+* Thu Feb 22 2024 Jerry James <loganjerry(a)gmail.com> - 0.6.2-19
+- Build with SoPlex support
+- Stop building for 32-bit x86
+
* Wed Jan 24 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.6.2-18
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
3 months
Architecture specific change in rpms/coin-or-HiGHS.git
by githook-noreply@fedoraproject.org
The package rpms/coin-or-HiGHS.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-HiGHS.git/commit/?id=d482....
Change:
+ExcludeArch: %{ix86}
Thanks.
Full change:
============
commit d482a90582f7c1269e18d7d207af2dda7d514a3f
Author: Jerry James <loganjerry(a)gmail.com>
Date: Thu Feb 22 21:15:58 2024 -0700
Initial RPM
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b018c4b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/HiGHS-*.tar.gz
diff --git a/coin-or-HiGHS-githash.patch b/coin-or-HiGHS-githash.patch
new file mode 100644
index 0000000..3b6dc94
--- /dev/null
+++ b/coin-or-HiGHS-githash.patch
@@ -0,0 +1,13 @@
+--- HiGHS-1.6.0/src/meson.build.orig 2023-09-28 08:59:04.000000000 -0600
++++ HiGHS-1.6.0/src/meson.build 2023-10-27 10:26:45.536564771 -0600
+@@ -13,10 +13,6 @@ conf_data.set('ZLIB_FOUND',
+ conf_data.set('HIGHSINT64',
+ get_option('highsint64'))
+ # Commit hash
+-commit_hash_cmd = run_command('git', 'rev-parse',
+- '--short', 'HEAD',
+- check: true)
+-commit_hash = commit_hash_cmd.stdout().strip()
+ conf_data.set_quoted('HIGHS_GITHASH',
+ commit_hash)
+ # Date
diff --git a/coin-or-HiGHS-popcount.patch b/coin-or-HiGHS-popcount.patch
new file mode 100644
index 0000000..7215840
--- /dev/null
+++ b/coin-or-HiGHS-popcount.patch
@@ -0,0 +1,52 @@
+--- HiGHS-1.6.0/CMakeLists.txt.orig 2023-10-27 08:38:44.116902545 -0600
++++ HiGHS-1.6.0/CMakeLists.txt 2023-10-27 09:30:21.326591857 -0600
+@@ -235,14 +235,6 @@ if(NOT FAST_BUILD)
+ enable_cxx_compiler_flag_if_supported("-pedantic")
+ endif()
+
+-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86\_64|i686)")
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mpopcnt")
+-elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(ppc64|powerpc64)" AND NOT APPLE)
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mpopcntd")
+-else()
+- message("FLAG_MPOPCNT_SUPPORTED is not available on this architecture")
+-endif()
+-
+ option(DEBUGSOL "check the debug solution" OFF)
+
+ if(DEBUGSOL)
+--- HiGHS-1.6.0/meson.build.orig 2023-09-28 08:59:04.000000000 -0600
++++ HiGHS-1.6.0/meson.build 2023-10-27 10:22:18.700141621 -0600
+@@ -56,13 +56,6 @@ endif
+
+ cpu_family = host_machine.cpu_family()
+
+-if cpu_family in ['x86_64', 'i686'] and not is_windows
+- add_project_arguments('-mpopcnt', language: 'cpp')
+-endif
+-if cpu_family in ['ppc64', 'powerpc64'] and not meson.is_cross_build()
+- add_project_arguments('-mpopcntd', language: 'cpp')
+-endif
+-
+ if is_mingw
+ # For mingw-w64, don't use LTO
+ add_project_arguments('-fno-use-linker-plugin', language: ['c', 'cpp'])
+--- HiGHS-1.6.0/src/util/HighsHash.h.orig 2023-09-28 08:59:04.000000000 -0600
++++ HiGHS-1.6.0/src/util/HighsHash.h 2023-10-27 10:06:12.593136731 -0600
+@@ -106,7 +106,16 @@ struct HighsHashHelpers {
+
+ static int log2i(uint32_t n) { return 31 - __builtin_clz(n); }
+
++#if defined(__i686__) || defined(__x86_64__)
++ static int __attribute__ ((target ("default"))) popcnt(uint64_t x) {
++ return __builtin_popcountll(x);
++ }
++ static int __attribute__ ((target ("popcnt"))) popcnt(uint64_t x) {
++ return __builtin_popcountll(x);
++ }
++#else
+ static int popcnt(uint64_t x) { return __builtin_popcountll(x); }
++#endif
+
+ #elif defined(HIGHS_HAVE_BITSCAN_REVERSE)
+ static int log2i(uint64_t n) {
diff --git a/coin-or-HiGHS-rpath.patch b/coin-or-HiGHS-rpath.patch
new file mode 100644
index 0000000..9424a9d
--- /dev/null
+++ b/coin-or-HiGHS-rpath.patch
@@ -0,0 +1,54 @@
+--- HiGHS-1.6.0/CMakeLists.txt.orig 2023-09-28 08:59:04.000000000 -0600
++++ HiGHS-1.6.0/CMakeLists.txt 2023-10-27 08:38:44.116902545 -0600
+@@ -118,14 +118,6 @@ message(STATUS "Build CSharp: ${CSHARP}"
+ # ZLIB can be switched off, for building interfaces
+ option(ZLIB "Fast build: " ON)
+
+-# If wrapper are built, we need to have the install rpath in BINARY_DIR to package
+-if(PYTHON OR FORTRAN OR CSHARP)
+- set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
+-endif()
+-
+-# For Python interface
+-set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
+-
+ # Basic type
+ include(CMakePushCheckState)
+ cmake_push_check_state(RESET)
+@@ -466,14 +458,6 @@ if(NOT FAST_BUILD)
+ # enable_cxx_compiler_flag_if_supported("-D_GLIBCXX_DEBUG")
+ # endif()
+
+- # use, i.e. don't skip the full RPATH for the build tree
+- set(CMAKE_SKIP_BUILD_RPATH FALSE)
+-
+- # when building, don't use the install RPATH already
+- # (but later on when installing)
+- set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+- set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+-
+ # Targets
+ enable_testing()
+ add_subdirectory(app)
+--- HiGHS-1.6.0/src/CMakeLists.txt.orig 2023-09-28 08:59:04.000000000 -0600
++++ HiGHS-1.6.0/src/CMakeLists.txt 2023-10-27 08:39:41.845142282 -0600
+@@ -340,10 +340,6 @@ if(NOT FAST_BUILD)
+ set(CONF_DEPENDENCIES "include(CMakeFindDependencyMacro)\nfind_dependency(ZLIB)")
+ endif()
+
+- # set the install rpath to the installed destination
+- set_target_properties(libhighs PROPERTIES INSTALL_RPATH
+- "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+-
+ # install the header files of highs
+ foreach(file ${headers})
+ get_filename_component(dir ${file} DIRECTORY)
+@@ -792,8 +788,6 @@ if(FORTRAN_FOUND)
+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/highs
+ MODULES DESTINATION modules)
+ install(FILES ${HIGHS_BINARY_DIR}/modules/highs_fortran_api.mod DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/highs/fortran)
+- set_target_properties(FortranHighs PROPERTIES INSTALL_RPATH
+- "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+ endif(FORTRAN_FOUND)
+
+ if(CSHARP_FOUND)
diff --git a/coin-or-HiGHS-vector.patch b/coin-or-HiGHS-vector.patch
new file mode 100644
index 0000000..c4bdf1c
--- /dev/null
+++ b/coin-or-HiGHS-vector.patch
@@ -0,0 +1,22 @@
+--- HiGHS-1.6.0/src/mip/HighsMipSolver.cpp.orig 2023-09-28 08:59:04.000000000 -0600
++++ HiGHS-1.6.0/src/mip/HighsMipSolver.cpp 2023-10-27 10:50:27.186184613 -0600
+@@ -80,7 +80,7 @@ HighsMipSolver::HighsMipSolver(HighsCall
+ }
+
+ for (HighsInt i = 0; i != orig_model_->num_row_; ++i) {
+- const double value = solution.row_value[i];
++ const double value = (i < solution.row_value.size()) ? solution.row_value[i] : 0.0;
+ const double lower = orig_model_->row_lower_[i];
+ const double upper = orig_model_->row_upper_[i];
+
+--- HiGHS-1.6.0/src/util/HFactor.cpp.orig 2023-09-28 08:59:04.000000000 -0600
++++ HiGHS-1.6.0/src/util/HFactor.cpp 2023-10-27 10:53:40.112451280 -0600
+@@ -452,7 +452,7 @@ HighsInt HFactor::build(HighsTimerClock*
+ }
+
+ // Record the number of entries in the INVERT
+- invert_num_el = l_start[num_row] + u_last_p[num_row - 1] + num_row;
++ invert_num_el = l_start[num_row] + (num_row > 0 ? u_last_p[num_row - 1] : 0) + num_row;
+
+ kernel_dim -= rank_deficiency;
+ debugLogRankDeficiency(highs_debug_level, log_options, rank_deficiency,
diff --git a/coin-or-HiGHS.spec b/coin-or-HiGHS.spec
new file mode 100644
index 0000000..f66bd82
--- /dev/null
+++ b/coin-or-HiGHS.spec
@@ -0,0 +1,162 @@
+# NOTE: The C# and Fortran interfaces are not currently built. If you need
+# either interface, file a bug requesting it.
+
+# The meson build runs git to get a commit, but we don't have a git checkout
+%global commit 21da9b90e0
+
+Name: coin-or-HiGHS
+Version: 1.6.0
+Release: %autorelease
+Summary: Linear optimization software
+
+License: MIT
+URL: https://highs.dev/
+VCS: https://github.com/ERGO-Code/HiGHS
+Source0: %{vcs}/archive/v%{version}/HiGHS-%{version}.tar.gz
+# Do not add rpaths to libraries and binaries
+Patch0: %{name}-rpath.patch
+# Do not run git in an unpacked release tarball
+Patch1: %{name}-githash.patch
+# Check availability of the popcount instruction at runtime
+Patch2: %{name}-popcount.patch
+# Fix out-of-bounds vector accesses
+Patch3: %{name}-vector.patch
+
+# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
+ExcludeArch: %{ix86}
+
+BuildRequires: cmake
+BuildRequires: cmake(catch2)
+BuildRequires: doctest-static
+BuildRequires: gcc-c++
+BuildRequires: ninja-build
+BuildRequires: pdqsort-static
+BuildRequires: pkgconfig(coindatanetlib)
+BuildRequires: pkgconfig(coindatasample)
+BuildRequires: pkgconfig(zlib)
+BuildRequires: python3-devel
+BuildRequires: %{py3_dist numpy}
+BuildRequires: %{py3_dist pybind11}
+BuildRequires: zstr-static
+
+# A bundled version of FilereaderLP is included, but it has been modified
+# extensively from the upstream version:
+# https://github.com/feldmeier/FilereaderLP/
+Provides: bundled(FilereaderLP)
+
+%description
+HiGHS is a high performance serial and parallel solver for large scale
+sparse linear optimization problems of the form
+
+ Minimize (1/2) x^TQx + c^Tx subject to L <= Ax <= U; l <= x <= u
+
+where Q must be positive semi-definite and, if Q is zero, there may be a
+requirement that some of the variables take integer values. Thus HiGHS
+can solve linear programming (LP) problems, convex quadratic programming
+(QP) problems, and mixed integer programming (MIP) problems. It is
+mainly written in C++, but also has some C.
+
+HiGHS has primal and dual revised simplex solvers, originally written by
+Qi Huangfu and further developed by Julian Hall. It also has an
+interior point solver for LP written by Lukas Schork, an active set
+solver for QP written by Michael Feldmeier, and a MIP solver written by
+Leona Gottwald. Other features have been added by Julian Hall and Ivet
+Galabova, who manages the software engineering of HiGHS and interfaces
+to C, C#, FORTRAN, Julia and Python.
+
+Although HiGHS is freely available under the MIT license, we would be
+pleased to learn about users' experience and give advice via email sent
+to highsopt(a)gmail.com.
+
+%package devel
+Summary: Header files and library links for HiGHS
+Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: zlib-devel%{?_isa}
+
+%description devel
+Header files and library links for developing applications that use
+HiGHS.
+
+%package -n python3-highspy
+Summary: Python interface to coin-or-HiGHS
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+%description -n python3-highspy
+This package contains a Python 3 interface to coin-or-HiGHS.
+
+%prep
+%autosetup -n HiGHS-%{version} -p1
+
+# Substitute the release git hash; see note above
+sed -i "s/commit_hash/'%{commit}'/" src/meson.build
+
+# Unbundle catch
+rm extern/catch.hpp
+ln -s %{_includedir}/catch2/catch_all.hpp extern/catch.hpp
+
+# Unbundle doctest
+rm extern/doctest.h
+ln -s %{_includedir}/doctest/doctest.h extern
+
+# Unbundle pdqsort
+rm extern/pdqsort/pdqsort.h
+ln -s %{_includedir}/pdqsort.h extern/pdqsort
+
+# Unbundle zstr
+rm -fr extern/zstr
+ln -s %{_includedir}/zstr extern
+
+# Do not try to download pybind11 at build time
+rm -fr subprojects
+sed -i '/subprojects/d' pyproject.toml
+
+%generate_buildrequires
+%pyproject_buildrequires -R
+
+%build
+%cmake -DCMAKE_TARGETS:BOOL=ON
+%cmake_build
+
+# Build the python interface
+%pyproject_wheel
+
+%install
+%cmake_install
+
+# Install the python interface
+%pyproject_install
+%pyproject_save_files highspy
+
+# Instead of linking with and installing a private copy of the library,
+# fix up the installed python tree to use the installed library
+cd highspy
+rm -fr %{buildroot}%{python3_sitearch}/.highspy.mesonpy.libs
+g++ %{build_cxxflags} -fPIC -shared -I ../src -I ../%{_vpath_builddir} \
+ -I %{_includedir}/python%{python3_version} highs_bindings.cpp \
+ -o %{buildroot}%{python3_sitearch}/highspy%{python3_ext_suffix} \
+ %{build_ldflags} -L %{buildroot}%{_libdir} -lhighs
+cd -
+
+%check
+%ctest
+export LD_LIBRARY_PATH=%{buildroot}%{_libdir}
+export PYTHONPATH=%{buildroot}%{python3_sitearch}
+%{python3} highspy/tests/test_highspy.py
+
+%files
+%doc AUTHORS MODS.md README.md
+%license LICENSE
+%{_bindir}/highs
+%{_libdir}/libhighs.so.1.6*
+
+%files devel
+%{_includedir}/highs_export.h
+%{_includedir}/highs/
+%{_libdir}/cmake/highs/
+%{_libdir}/libhighs.so
+%{_libdir}/pkgconfig/highs.pc
+
+%files -n python3-highspy -f %{pyproject_files}
+
+%changelog
+%autochangelog
diff --git a/sources b/sources
new file mode 100644
index 0000000..0129aee
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (HiGHS-1.6.0.tar.gz) = 9229d2e960354b8b8fd45588cd4eec7e54826ee6f3939ac691d7b2b6eb0580a66a3a2649c940a3869f58dbbcf08fdd9641919fc92666948c62e70c4bce8ac130
3 months
Architecture specific change in rpms/python-jnius.git
by githook-noreply@fedoraproject.org
The package rpms/python-jnius.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/python-jnius.git/commit/?id=3c3a4....
Change:
-ExcludeArch: i686 ppc64 ppc64le s390x armv7hl aarch64
Thanks.
Full change:
============
commit 17e167f77c6b2011cb12e405229a12a47e9f0241
Merge: 3c3a492 99b048e
Author: Raphael Groner <raphgro(a)fedoraproject.org>
Date: Mon Feb 26 16:10:54 2024 +0100
merge changelog
diff --cc python-jnius.spec
index 0b7bc17,c14597c..3d846d4
--- a/python-jnius.spec
+++ b/python-jnius.spec
@@@ -105,11 -99,12 +105,17 @@@ pop
%changelog
+* Mon Feb 26 2024 Raphael Groner <raphgro(a)fedoraproject.org> - 1.6.1-1
+- bump to latest version
+- migrate to Cython 3, rhbz#2254033
+- use clang instead of gcc 14 to avoid strict pointer checks
+
+ * Fri Jan 26 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.0-19
+ - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+ * Mon Jan 22 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.0-18
+ - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
* Wed Aug 02 2023 Raphael Groner <raphgro(a)fedoraproject.org> - 1.3.0-17
- exclude i686, rhbz#2104095
- use pytest macro
commit 3c3a492717d14092f8b2e8c8275d0572b77ec57e
Author: Raphael Groner <raphgro(a)fedoraproject.org>
Date: Mon Feb 26 13:38:52 2024 +0100
bump to 1.6.1
diff --git a/.gitignore b/.gitignore
index c4d8cb1..b55b0b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
/pyjnius-1.1.4.tar.gz
/pyjnius-1.2.0.tar.gz
/pyjnius-1.3.0.tar.gz
+/pyjnius-1.6.1.tar.gz
diff --git a/python-jnius.spec b/python-jnius.spec
index 9462bc7..0b7bc17 100644
--- a/python-jnius.spec
+++ b/python-jnius.spec
@@ -4,8 +4,8 @@
Name: python-%{modname}
-Version: 1.3.0
-Release: 17%{?dist}
+Version: 1.6.1
+Release: 1%{?dist}
Summary: %{sum}
License: MIT
@@ -16,23 +16,24 @@ ExclusiveArch: %{java_arches}
Source0: %{url}/archive/%{version}.tar.gz#/%{srcname}-%{version}.tar.gz
BuildRequires: make
-BuildRequires: gcc
+# avoid strict pointer checks with gcc 14, https://bugs.gentoo.org/917562
+BuildRequires: clang
BuildRequires: python3-devel
BuildRequires: python3dist(setuptools)
-BuildRequires: python3dist(cython) < 3
-BuildRequires: python3dist(six)
+BuildRequires: python3dist(cython)
BuildRequires: python3dist(pytest)
+BuildRequires: python3dist(sphinx)
+BuildRequires: python3dist(furo)
+
BuildRequires: ant
BuildRequires: java-devel
-BuildRequires: %{_bindir}/sphinx-build-3
+ExclusiveArch: %{java_arches}
-# FIXME odd bug with wrong default architecture (i386)
# https://github.com/kivy/pyjnius/issues/307
-# https://github.com/kivy/pyjnius/issues/306
-ExcludeArch: i686 ppc64 ppc64le s390x armv7hl aarch64
+#ExcludeArch: ppc64 s390x
%description
%{summary}.
@@ -61,7 +62,7 @@ BuildArch: noarch
%build
-%py3_build
+CC=%{_bindir}/clang %py3_build
make %{_smp_mflags} -C docs SPHINXBUILD='sphinx-build-3 %{_smp_mflags}' html
@@ -79,7 +80,12 @@ ant all
pushd tests
export CLASSPATH=../build/test-classes:../build/classes
export JAVA_HOME=%{_prefix}/lib/jvm/java
-%pytest -v
+# json options fail on some arches
+%pytest \
+ %ifarch s390x ppc64le
+ -k 'not jvm_options' \
+ %endif
+ -v
popd
@@ -99,6 +105,11 @@ popd
%changelog
+* Mon Feb 26 2024 Raphael Groner <raphgro(a)fedoraproject.org> - 1.6.1-1
+- bump to latest version
+- migrate to Cython 3, rhbz#2254033
+- use clang instead of gcc 14 to avoid strict pointer checks
+
* Wed Aug 02 2023 Raphael Groner <raphgro(a)fedoraproject.org> - 1.3.0-17
- exclude i686, rhbz#2104095
- use pytest macro
diff --git a/sources b/sources
index 1e5b184..af7c243 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (pyjnius-1.3.0.tar.gz) = 2f5647fb7133114772b05cf857f83af7237bceb99da26ef7324c0500c1202d15a3d4a956d55314544efacd1756a25c8f4c6612521b2060d72134b5e3800331bb
+SHA512 (pyjnius-1.6.1.tar.gz) = ec40f22a57a2c1a6cd8d0960f2e97da800f5ba7e461a6094d571f00cc3dd2787fab17362a5e2abb974d78deb50ee8695d9db4182130c3d1854d59055699b844c
3 months
Architecture specific change in rpms/python-jnius.git
by githook-noreply@fedoraproject.org
The package rpms/python-jnius.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/python-jnius.git/commit/?id=3c3a4....
Change:
-ExcludeArch: i686 ppc64 ppc64le s390x armv7hl aarch64
Thanks.
Full change:
============
commit 17e167f77c6b2011cb12e405229a12a47e9f0241
Merge: 3c3a492 99b048e
Author: Raphael Groner <raphgro(a)fedoraproject.org>
Date: Mon Feb 26 16:10:54 2024 +0100
merge changelog
diff --cc python-jnius.spec
index 0b7bc17,c14597c..3d846d4
--- a/python-jnius.spec
+++ b/python-jnius.spec
@@@ -105,11 -99,12 +105,17 @@@ pop
%changelog
+* Mon Feb 26 2024 Raphael Groner <raphgro(a)fedoraproject.org> - 1.6.1-1
+- bump to latest version
+- migrate to Cython 3, rhbz#2254033
+- use clang instead of gcc 14 to avoid strict pointer checks
+
+ * Fri Jan 26 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.0-19
+ - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+ * Mon Jan 22 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 1.3.0-18
+ - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
* Wed Aug 02 2023 Raphael Groner <raphgro(a)fedoraproject.org> - 1.3.0-17
- exclude i686, rhbz#2104095
- use pytest macro
commit 3c3a492717d14092f8b2e8c8275d0572b77ec57e
Author: Raphael Groner <raphgro(a)fedoraproject.org>
Date: Mon Feb 26 13:38:52 2024 +0100
bump to 1.6.1
diff --git a/.gitignore b/.gitignore
index c4d8cb1..b55b0b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
/pyjnius-1.1.4.tar.gz
/pyjnius-1.2.0.tar.gz
/pyjnius-1.3.0.tar.gz
+/pyjnius-1.6.1.tar.gz
diff --git a/python-jnius.spec b/python-jnius.spec
index 9462bc7..0b7bc17 100644
--- a/python-jnius.spec
+++ b/python-jnius.spec
@@ -4,8 +4,8 @@
Name: python-%{modname}
-Version: 1.3.0
-Release: 17%{?dist}
+Version: 1.6.1
+Release: 1%{?dist}
Summary: %{sum}
License: MIT
@@ -16,23 +16,24 @@ ExclusiveArch: %{java_arches}
Source0: %{url}/archive/%{version}.tar.gz#/%{srcname}-%{version}.tar.gz
BuildRequires: make
-BuildRequires: gcc
+# avoid strict pointer checks with gcc 14, https://bugs.gentoo.org/917562
+BuildRequires: clang
BuildRequires: python3-devel
BuildRequires: python3dist(setuptools)
-BuildRequires: python3dist(cython) < 3
-BuildRequires: python3dist(six)
+BuildRequires: python3dist(cython)
BuildRequires: python3dist(pytest)
+BuildRequires: python3dist(sphinx)
+BuildRequires: python3dist(furo)
+
BuildRequires: ant
BuildRequires: java-devel
-BuildRequires: %{_bindir}/sphinx-build-3
+ExclusiveArch: %{java_arches}
-# FIXME odd bug with wrong default architecture (i386)
# https://github.com/kivy/pyjnius/issues/307
-# https://github.com/kivy/pyjnius/issues/306
-ExcludeArch: i686 ppc64 ppc64le s390x armv7hl aarch64
+#ExcludeArch: ppc64 s390x
%description
%{summary}.
@@ -61,7 +62,7 @@ BuildArch: noarch
%build
-%py3_build
+CC=%{_bindir}/clang %py3_build
make %{_smp_mflags} -C docs SPHINXBUILD='sphinx-build-3 %{_smp_mflags}' html
@@ -79,7 +80,12 @@ ant all
pushd tests
export CLASSPATH=../build/test-classes:../build/classes
export JAVA_HOME=%{_prefix}/lib/jvm/java
-%pytest -v
+# json options fail on some arches
+%pytest \
+ %ifarch s390x ppc64le
+ -k 'not jvm_options' \
+ %endif
+ -v
popd
@@ -99,6 +105,11 @@ popd
%changelog
+* Mon Feb 26 2024 Raphael Groner <raphgro(a)fedoraproject.org> - 1.6.1-1
+- bump to latest version
+- migrate to Cython 3, rhbz#2254033
+- use clang instead of gcc 14 to avoid strict pointer checks
+
* Wed Aug 02 2023 Raphael Groner <raphgro(a)fedoraproject.org> - 1.3.0-17
- exclude i686, rhbz#2104095
- use pytest macro
diff --git a/sources b/sources
index 1e5b184..af7c243 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (pyjnius-1.3.0.tar.gz) = 2f5647fb7133114772b05cf857f83af7237bceb99da26ef7324c0500c1202d15a3d4a956d55314544efacd1756a25c8f4c6612521b2060d72134b5e3800331bb
+SHA512 (pyjnius-1.6.1.tar.gz) = ec40f22a57a2c1a6cd8d0960f2e97da800f5ba7e461a6094d571f00cc3dd2787fab17362a5e2abb974d78deb50ee8695d9db4182130c3d1854d59055699b844c
3 months
Architecture specific change in rpms/scip.git
by githook-noreply@fedoraproject.org
The package rpms/scip.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/scip.git/commit/?id=dd1a85efb50ca....
Change:
+ExcludeArch: %{ix86}
Thanks.
Full change:
============
commit dd1a85efb50ca2755127a0db6327eff73856d13b
Author: Jerry James <loganjerry(a)gmail.com>
Date: Thu Feb 22 20:08:36 2024 -0700
Initial RPM
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7491ebd
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/scip-*.tar.gz
diff --git a/scip-headers.patch b/scip-headers.patch
new file mode 100644
index 0000000..bba615c
--- /dev/null
+++ b/scip-headers.patch
@@ -0,0 +1,48 @@
+--- scip-810/src/CMakeLists.txt.orig 2024-02-21 14:48:33.795846609 -0700
++++ scip-810/src/CMakeLists.txt 2024-02-21 14:50:39.594166545 -0700
+@@ -1018,7 +1018,7 @@ endif()
+ target_include_directories(libscip BEFORE PUBLIC
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+- $<INSTALL_INTERFACE:include>)
++ $<INSTALL_INTERFACE:include/scip>)
+
+ target_link_libraries(libscip
+ PRIVATE
+@@ -1094,25 +1094,25 @@ set_target_properties(libscip PROPERTIES
+ target_include_directories(scip BEFORE PUBLIC
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+- $<INSTALL_INTERFACE:include>)
++ $<INSTALL_INTERFACE:include>/scip)
+
+ # install the header files of scip
+-install(FILES ${lpiheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lpi)
+-install(FILES ${dijkstraheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dijkstra)
+-install(FILES ${objscipheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/objscip)
+-install(FILES ${scipheaders} ${PROJECT_BINARY_DIR}/scip/config.h ${PROJECT_BINARY_DIR}/scip/scip_export.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/scip)
+-install(FILES ${tcliqueheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/tclique)
+-install(FILES ${tpiheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/tpi)
+-install(FILES ${xmlheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/xml)
+-install(FILES ${symheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/symmetry)
+-install(FILES ${blockmemshellheader} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/blockmemshell)
++install(FILES ${lpiheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/scip/lpi)
++install(FILES ${dijkstraheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/scip/dijkstra)
++install(FILES ${objscipheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/scip/objscip)
++install(FILES ${scipheaders} ${PROJECT_BINARY_DIR}/scip/config.h ${PROJECT_BINARY_DIR}/scip/scip_export.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/scip/scip)
++install(FILES ${tcliqueheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/scip/tclique)
++install(FILES ${tpiheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/scip/tpi)
++install(FILES ${xmlheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/scip/xml)
++install(FILES ${symheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/scip/symmetry)
++install(FILES ${blockmemshellheader} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/scip/blockmemshell)
+
+ # install the binary and the library to appropriate locations and add them to an export group
+ install(TARGETS scip libscip EXPORT scip-targets
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
++ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/scip)
+
+ # Add all targets to the build-tree export set
+ export(TARGETS scip libscip ${BLISS_TARGET}
diff --git a/scip-no-rpath.patch b/scip-no-rpath.patch
new file mode 100644
index 0000000..625b0ca
--- /dev/null
+++ b/scip-no-rpath.patch
@@ -0,0 +1,22 @@
+--- scip-810/src/CMakeLists.txt.orig 2023-11-20 03:07:36.000000000 -0700
++++ scip-810/src/CMakeLists.txt 2023-12-29 17:07:01.994414675 -0700
+@@ -1087,7 +1087,6 @@ add_dependencies(scip scip_update_githas
+ set_target_properties(libscip PROPERTIES
+ VERSION ${SCIP_VERSION_MAJOR}.${SCIP_VERSION_MINOR}.${SCIP_VERSION_PATCH}.${SCIP_VERSION_SUB}
+ SOVERSION ${SCIP_VERSION_MAJOR}.${SCIP_VERSION_MINOR}
+- INSTALL_RPATH_USE_LINK_PATH TRUE
+ CXX_VISIBILITY_PRESET hidden
+ C_VISIBILITY_PRESET hidden
+ VISIBILITY_INLINES_HIDDEN 1)
+@@ -1097,11 +1096,6 @@ target_include_directories(scip BEFORE P
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:include>)
+
+-# set the install rpath to the installed destination
+-set_target_properties(scip PROPERTIES
+- INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}"
+- INSTALL_RPATH_USE_LINK_PATH TRUE)
+-
+ # install the header files of scip
+ install(FILES ${lpiheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lpi)
+ install(FILES ${dijkstraheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dijkstra)
diff --git a/scip-unbundle.patch b/scip-unbundle.patch
new file mode 100644
index 0000000..ef3f3c3
--- /dev/null
+++ b/scip-unbundle.patch
@@ -0,0 +1,52 @@
+--- scip-810/CMakeLists.txt.orig 2023-11-20 03:07:36.000000000 -0700
++++ scip-810/CMakeLists.txt 2023-12-29 20:26:12.941529379 -0700
+@@ -104,7 +104,7 @@ set_property(CACHE EXPRINT PROPERTY STRI
+ set(LPS spx CACHE STRING "options for LP solver") #create the variable
+ set_property(CACHE LPS PROPERTY STRINGS spx cpx grb xprs clp glop msk qso none ) #define list of values GUI will offer for the variable
+
+-set(SYM sbliss CACHE STRING "options for symmetry computation") #create the variable
++set(SYM nauty CACHE STRING "options for symmetry computation") #create the variable
+ set_property(CACHE SYM PROPERTY STRINGS bliss sassy nauty none ) #define list of values GUI will offer for the variable
+
+ if(NOT (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel"))
+@@ -185,28 +185,9 @@ elseif(SYM STREQUAL "nauty")
+ else()
+ set(PIC_FLAG "")
+ endif()
+- file(GLOB files ${CMAKE_CURRENT_SOURCE_DIR}/src/nauty/*)
+- # add custom command to build the library using configure and make
+- add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lib/libnauty.a
+- COMMAND
+- mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/src/nauty &&
+- cd ${CMAKE_CURRENT_BINARY_DIR}/src/nauty &&
+- cp ${CMAKE_CURRENT_SOURCE_DIR}/src/nauty/* . &&
+- ./configure &&
+- make ${PIC_FLAG} nauty.a &&
+- cp nauty.a ${CMAKE_CURRENT_BINARY_DIR}/lib/libnauty.a
+- DEPENDS ${files})
+-
+- # add custom target and library target
+- add_custom_target(libnauty_target DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/lib/libnauty.a)
+- add_library(libnauty STATIC IMPORTED GLOBAL)
+- add_dependencies(libnauty libnauty_target)
+- set_target_properties(libnauty PROPERTIES
+- IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/lib/libnauty.a)
+
+- set(NAUTY_TARGET libnauty)
+- set(SYM_LIBRARIES libnauty)
+- set(SYM_PIC_LIBRARIES libnauty)
++ set(SYM_LIBRARIES nauty)
++ set(SYM_PIC_LIBRARIES nauty)
+
+ elseif(SYM STREQUAL "none")
+ message(STATUS "Support SYM: OFF")
+--- scip-810/src/CMakeLists.txt.orig 2023-12-29 17:07:01.994414675 -0700
++++ scip-810/src/CMakeLists.txt 2024-02-21 14:48:33.795846609 -0700
+@@ -1102,7 +1102,6 @@ install(FILES ${dijkstraheaders} DESTINA
+ install(FILES ${objscipheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/objscip)
+ install(FILES ${scipheaders} ${PROJECT_BINARY_DIR}/scip/config.h ${PROJECT_BINARY_DIR}/scip/scip_export.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/scip)
+ install(FILES ${tcliqueheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/tclique)
+-install(FILES ${tinycthreadheader} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/tinycthread)
+ install(FILES ${tpiheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/tpi)
+ install(FILES ${xmlheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/xml)
+ install(FILES ${symheaders} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/symmetry)
diff --git a/scip.spec b/scip.spec
new file mode 100644
index 0000000..14d259f
--- /dev/null
+++ b/scip.spec
@@ -0,0 +1,164 @@
+Name: scip
+Version: 8.1.0
+Release: %autorelease
+Summary: Solving Constraint Integer Programs
+
+%global upver %(sed 's/\\.//g' <<< %{version})
+
+License: Apache-2.0
+URL: https://scipopt.org/
+VCS: https://github.com/scipopt/scip
+Source0: %{vcs}/archive/v%{upver}/%{name}-%{version}.tar.gz
+# Do not add an rpath
+Patch0: %{name}-no-rpath.patch
+# Unbundle nauty
+Patch1: %{name}-unbundle.patch
+# Install the header files in a private directory
+Patch2: %{name}-headers.patch
+
+# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
+ExcludeArch: %{ix86}
+
+BuildRequires: cmake
+BuildRequires: cmake(soplex)
+BuildRequires: cmake(zimpl)
+BuildRequires: gcc-c++
+BuildRequires: gcc-gfortran
+BuildRequires: pkgconfig(gmp)
+BuildRequires: pkgconfig(ipopt)
+BuildRequires: pkgconfig(nauty)
+BuildRequires: pkgconfig(readline)
+BuildRequires: pkgconfig(zlib)
+BuildRequires: soplex
+BuildRequires: zimpl
+
+# Documentation
+BuildRequires: doxygen
+BuildRequires: mathjax
+BuildRequires: php-cli
+BuildRequires: python3
+
+Requires: libscip%{?_isa} = %{version}-%{release}
+
+# SCIP includes a modified version of cppad, incompatible with the Fedora
+# version
+Provides: bundled(cppad) = 20180000
+
+# SCIP bundles a few header files from mp. We don't want to make it depend on
+# mp, however, since mp depends on SCIP, thus leading to a circular dependency.
+Provides: bundled(mp) = 20210923
+
+%global _desc %{expand:
+Welcome to what is currently one of the fastest academically developed
+solvers for mixed integer programming (MIP) and mixed integer nonlinear
+programming (MINLP). In addition, SCIP provides a highly flexible
+framework for constraint integer programming and branch-cut-and-price.
+It allows for total control of the solution process and the access of
+detailed information down to the guts of the solver.}
+
+%description %_desc
+
+This package contains a command-line tool to access SCIP
+functionality.
+
+%package -n libscip
+Summary: Library for solving constraint integer programs
+
+%description -n libscip %_desc
+
+This package contains a library for solving constraint integer programs.
+
+%package -n libscip-devel
+Summary: Headers and library links for libscip
+Requires: scip%{?_isa} = %{version}-%{release}
+Requires: libscip%{?_isa} = %{version}-%{release}
+Requires: libnauty-devel%{?_isa}
+Requires: zlib-devel%{?_isa}
+
+%description -n libscip-devel
+This package contains headers and library links for developing
+applications that use libscip.
+
+%package -n libscip-doc
+# The content is licensed with Apache-2.0. The other licenses are due to files
+# added by doxygen. Most such files are licensed with GPL-1.0-or-later, but
+# the JavaScript files are licensed with MIT.
+License: Apache-2.0 AND GPL-1.0-or-later AND MIT
+Summary: API documentation for libscip
+BuildArch: noarch
+
+Provides: bundled(jquery) = 3.6.0
+
+%description -n libscip-doc
+API documentation for libscip.
+
+%prep
+%autosetup -n %{name}-%{upver} -p1
+
+# We want to know about overflow errors, as the compiler can do surprising
+# things if we don't fix them!
+sed -i 's/ -Wno-strict-overflow//' CMakeLists.txt make/make.project
+
+# Fix library directories
+if [ "%{_lib}" != "lib" ]; then
+ sed -i 's,\(DESTINATION \)lib,\1%{_lib},' src/CMakeLists.txt
+fi
+
+# Turn off HTML timestamps for repeatable builds
+sed -i '/HTML_TIMESTAMP/s/= YES/= NO/' doc/scip.dxy
+sed -i 's/ on \$date//' doc/scipfooter.html
+
+# Look for python3 instead of python
+sed -i 's/PYTHON python/&3/' doc/CMakeLists.txt
+
+# Ensure we cannot use the bundled bliss, nauty, sassy, or tinycthreads
+rm -fr src/{bliss,nauty,sassy,tinycthread}
+
+%build
+%cmake
+%cmake_build
+
+# Build documentation
+cd doc
+ln -s %{_datadir}/javascript/mathjax MathJax
+../%{_vpath_builddir}/bin/scip < inc/shelltutorial/commands \
+ > inc/shelltutorial/shelltutorialraw.tmp
+python3 inc/shelltutorial/insertsnippetstutorial.py
+cd inc/faq
+python3 parser.py --linkext shtml
+php localfaq.php > faq.inc
+cd -
+../%{_vpath_builddir}/bin/scip -c "set default set save inc/parameters.set quit"
+../%{_vpath_builddir}/bin/scip -c "read inc/simpleinstance/simple.lp optimize quit" \
+ > inc/simpleinstance/output.log
+doxygen scip.dxy
+cd ..
+
+%install
+%cmake_install
+
+%check
+export LD_LIBRARY_PATH=%{buildroot}%{_libdir}
+# The BendersQP-benders-qp-classical_20_0.mps test often triggers a timeout.
+# We could make the timeout longer (1500 seconds by default), but it sometimes
+# times out even at 3000 seconds. Let's just skip it.
+%ctest -E classical_20_0
+
+%files
+%{_bindir}/scip
+
+%files -n libscip
+%doc CHANGELOG README.md
+%license LICENSE
+%{_libdir}/libscip.so.8.1*
+
+%files -n libscip-devel
+%{_includedir}/scip/
+%{_libdir}/libscip.so
+%{_libdir}/cmake/scip/
+
+%files -n libscip-doc
+%doc doc/html
+
+%changelog
+%autochangelog
diff --git a/sources b/sources
new file mode 100644
index 0000000..9a7892c
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (scip-8.1.0.tar.gz) = 28bf5330da00f6388370bd46b07dfcc698a3fc6f7d68de627008249bcafdf2f65b836e470445f177130bfcf701759af9a8f26ba439a87b0f2441e5b88fae506c
3 months
Architecture specific change in rpms/TOPCOM.git
by githook-noreply@fedoraproject.org
The package rpms/TOPCOM.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/TOPCOM.git/commit/?id=201946d6833....
Change:
+ExcludeArch: %{ix86}
Thanks.
Full change:
============
commit 201946d68331196fb7b51ef62c23621eddae1fc3
Author: Jerry James <loganjerry(a)gmail.com>
Date: Thu Feb 22 20:06:01 2024 -0700
Version 1.1.2
- Drop the custom man pages due to lack of ability to maintain them
- Build with soplex support
- Stop building for 32-bit x86
diff --git a/TOPCOM-Makefile b/TOPCOM-Makefile
index a80f674..5042106 100644
--- a/TOPCOM-Makefile
+++ b/TOPCOM-Makefile
@@ -7,38 +7,49 @@ minor = @minor@
INCLUDES = -Ilib-src -Ilib-src-reg -Iwrap-gmp-gmpxx -I/usr/include/cddlib
CPPFLAGS = $(INCLUDES) -DPACKAGE=\"TOPCOM\" -DVERSION=\"$(version)\" \
- -DVERBOSE -DGMPRATIONAL -ftemplate-depth=35
+ -DVERBOSE -DSTL_SYMMETRIES -DSTL_CONTAINERS -DSTL_FLIPS -DSTL_CHIROTOPE \
+ -DGMPRATIONAL -DPERMLIB_DOMAIN_INT -DUSE_LEXORDER -DHAVE_LIBQSOPTEX \
+ -DHAVE_LIBSOPLEX -ftemplate-depth=100
CFLAGS = $(CPPFLAGS) @RPM_OPT_FLAGS@
-LIB_LDFLAGS = @RPM_LD_FLAGS@ -Wl,--as-needed -lcddgmp -lgmpxx -lgmp
-LDFLAGS = @RPM_LD_FLAGS@ -Wl,--as-needed -L. -lTOPCOM -lcddgmp -lgmpxx -lgmp
+LIB_LDFLAGS = @RPM_LD_FLAGS@ -lsoplex -lclusol -lqsopt_ex -lcddgmp -ltbb -lmpfr -lgmpxx -lgmp
+LDFLAGS = @RPM_LD_FLAGS@ -L. -lTOPCOM -lsoplex -lclusol -lqsopt_ex -lcddgmp -ltbb -lmpfr -lgmpxx -lgmp
SHFLAGS = -shared -Wl,-h,libTOPCOM.so.$(major)
bindir = @bindir@
libdir = @libdir@
-mandir = @mandir@
includedir = @includedir@/TOPCOM
library_sources = \
lib-src-reg/LPinterface.cc \
+ lib-src-reg/QSOinterface.cc \
lib-src-reg/RegularityCheck.cc \
lib-src-reg/SPXinterface.cc \
lib-src/Admissibles.cc \
lib-src/CheckTriang.cc \
lib-src/Circuits.cc \
+ lib-src/ClassifiedExtensionSymmetries.cc \
+ lib-src/ClassifiedSubsetSymmetries.cc \
lib-src/Cocircuits.cc \
lib-src/CommandlineOptions.cc \
lib-src/CompressedIntegerSet.cc \
+ lib-src/ComputeCircuits.cc \
+ lib-src/ComputeCocircuits.cc \
lib-src/ComputeTriangs.cc \
+ lib-src/ContainerIO.cc \
lib-src/Facets.cc \
lib-src/FastSimplicialComplex.cc \
lib-src/Field.cc \
lib-src/FineTriang.cc \
lib-src/Flip.cc \
+ lib-src/Graphics.cc \
+ lib-src/Incidences.cc \
lib-src/IndexTableArray.cc \
lib-src/IntegerSet.cc \
+ lib-src/IntegerSet64.cc \
lib-src/InteriorFacets.cc \
lib-src/MarkedFlips.cc \
lib-src/Matrix.cc \
lib-src/Permutation.cc \
+ lib-src/PermutationPartialComparator.cc \
lib-src/PlacingTriang.cc \
lib-src/PointConfiguration.cc \
lib-src/RealChiro.cc \
@@ -47,14 +58,23 @@ library_sources = \
lib-src/SparseIntegerSet.cc \
lib-src/SparseSimplicialComplex.cc \
lib-src/StairCaseMatrix.cc \
- lib-src/SymmetricBFS.cc \
+ lib-src/Statistics.cc \
+ lib-src/StrictStairCaseMatrix.cc \
+ lib-src/StrictStairCaseMatrixTrans.cc \
+ lib-src/SwitchTable.cc \
+ lib-src/SymmetricExtensionGraph.cc \
+ lib-src/SymmetricExtensionGraphMaster.cc \
+ lib-src/SymmetricExtensionGraphNode.cc \
+ lib-src/SymmetricFlipGraph.cc \
lib-src/Symmetry.cc \
lib-src/TriangFlips.cc \
lib-src/TriangNode.cc \
lib-src/Vector.cc \
lib-src/VertexFacetTable.cc \
lib-src/VertexFacetTableArray.cc \
- lib-src/VirtualChiro.cc
+ lib-src/Vertices.cc \
+ lib-src/VirtualChiro.cc \
+ lib-src/Volumes.cc
library_objs = $(library_sources:%.cc=%.o)
bin_sources = \
@@ -62,6 +82,11 @@ bin_sources = \
src/B_A.cc \
src/B_A_center.cc \
src/B_D.cc \
+ src/B_D_center.cc \
+ src/B_S.cc \
+ src/B_S_center.cc \
+ src/binomial.cc \
+ src/check.cc \
src/chiro2allfinetriangs.cc \
src/chiro2alltriangs.cc \
src/chiro2circuits.cc \
@@ -72,6 +97,8 @@ bin_sources = \
src/chiro2mintriang.cc \
src/chiro2nallfinetriangs.cc \
src/chiro2nalltriangs.cc \
+ src/chiro2ncircuits.cc \
+ src/chiro2ncocircuits.cc \
src/chiro2nfinetriangs.cc \
src/chiro2ntriangs.cc \
src/chiro2placingtriang.cc \
@@ -80,22 +107,34 @@ bin_sources = \
src/cross.cc \
src/cube.cc \
src/cyclic.cc \
+ src/Dnxk.cc \
src/hypersimplex.cc \
+ src/kDn.cc \
src/lattice.cc \
+ src/permutahedron.cc \
src/points2allfinetriangs.cc \
src/points2alltriangs.cc \
src/points2chiro.cc \
+ src/points2circuits.cc \
+ src/points2cocircuits.cc \
src/points2facets.cc \
src/points2finetriang.cc \
src/points2finetriangs.cc \
src/points2flips.cc \
+ src/points2gale.cc \
+ src/points2mintriang.cc \
src/points2nallfinetriangs.cc \
src/points2nalltriangs.cc \
+ src/points2ncircuits.cc \
+ src/points2ncocircuits.cc \
src/points2nfinetriangs.cc \
src/points2nflips.cc \
src/points2ntriangs.cc \
src/points2placingtriang.cc \
+ src/points2prettyprint.cc \
+ src/points2symmetries.cc \
src/points2triangs.cc \
+ src/points2vertices.cc \
src/points2volume.cc \
src/santos_22_triang.cc \
src/santos_dim4_triang.cc \
@@ -130,12 +169,3 @@ install: $(bin_exes)
install -p -m 0644 wrap-gmp-gmpxx/*.h $(DESTDIR)$(includedir)
install -p -m 0644 lib-src-reg/*.hh $(DESTDIR)$(includedir)
install -p -m 0644 lib-src/*.hh $(DESTDIR)$(includedir)
- install -d $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man7
- for f in man/*.1; do \
- sed "s/#version#/$(version)/" $$f > $(DESTDIR)$(mandir)/$${f/man/man1}; \
- touch -r $$f $(DESTDIR)$(mandir)/$${f/man/man1}; \
- done
- for f in man/*.7; do \
- sed "s/#version#/$(version)/" $$f > $(DESTDIR)$(mandir)/$${f/man/man7}; \
- touch -r $$f $(DESTDIR)$(mandir)/$${f/man/man7}; \
- done
diff --git a/TOPCOM-pessimizing-move.patch b/TOPCOM-pessimizing-move.patch
new file mode 100644
index 0000000..165b717
--- /dev/null
+++ b/TOPCOM-pessimizing-move.patch
@@ -0,0 +1,17 @@
+lib-src/SymmetricFlipGraph.cc: In member function ‘void topcom::SymmetricFlipGraph::SymmetryWorker::build_orbit_with_searchpred() const’:
+lib-src/SymmetricFlipGraph.cc:122:81: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
+ 122 | const TriangNode equivalent_tnode(std::move(_callerptr->_map(g_pair, _tn)));
+ | ^
+lib-src/SymmetricFlipGraph.cc:122:81: note: remove ‘std::move’ call
+
+--- topcom-1.1.2/lib-src/SymmetricFlipGraph.cc.orig 2022-10-05 00:52:12.000000000 -0600
++++ topcom-1.1.2/lib-src/SymmetricFlipGraph.cc 2023-10-23 13:02:57.358375688 -0600
+@@ -119,7 +119,7 @@ namespace topcom {
+ }
+
+ // generic map (via index set if present, via set if not):
+- const TriangNode equivalent_tnode(std::move(_callerptr->_map(g_pair, _tn)));
++ const TriangNode equivalent_tnode(_callerptr->_map(g_pair, _tn));
+
+ // deprecated:
+ // const TriangNode& equivalent_tnode = g.map(tnode);
diff --git a/TOPCOM-virtual-destructor.patch b/TOPCOM-virtual-destructor.patch
new file mode 100644
index 0000000..879360a
--- /dev/null
+++ b/TOPCOM-virtual-destructor.patch
@@ -0,0 +1,37 @@
+lib-src/SymmetricFlipGraph.hh: In destructor ‘topcom::SymmetricFlipGraph::~SymmetricFlipGraph()’:
+lib-src/SymmetricFlipGraph.hh:572:5: warning: deleting object of polymorphic class type ‘topcom::__sbfs_cout_triang_base’ which has non-virtual destructor might cause undefined behavior [-Wdelete-non-virtual-dtor]
+ 572 | delete _cout_triang_ptr;
+ | ^~~~~~~~~~~~~~~~~~~~~~~
+lib-src/SymmetricFlipGraph.hh:573:5: warning: deleting object of polymorphic class type ‘topcom::__sbfs_output_pred_base’ which has non-virtual destructor might cause undefined behavior [-Wdelete-non-virtual-dtor]
+ 573 | delete _output_pred_ptr;
+ | ^~~~~~~~~~~~~~~~~~~~~~~
+lib-src/SymmetricFlipGraph.hh:574:5: warning: deleting object of polymorphic class type ‘topcom::__sbfs_search_pred_base’ which has non-virtual destructor might cause undefined behavior [-Wdelete-non-virtual-dtor]
+ 574 | delete _search_pred_ptr;
+ | ^~~~~~~~~~~~~~~~~~~~~~~
+
+--- topcom-1.1.2/lib-src/SymmetricFlipGraph.hh.orig 2022-09-12 10:59:47.000000000 -0600
++++ topcom-1.1.2/lib-src/SymmetricFlipGraph.hh 2023-10-23 13:07:42.298561460 -0600
+@@ -70,6 +70,7 @@ namespace topcom {
+
+ class __sbfs_cout_triang_base {
+ public:
++ virtual ~__sbfs_cout_triang_base() {}
+ inline virtual void operator()(const size_type no,
+ const TriangNode& tn) const {}
+ };
+@@ -85,6 +86,7 @@ namespace topcom {
+
+ class __sbfs_output_pred_base {
+ public:
++ virtual ~__sbfs_output_pred_base() {}
+ inline virtual bool operator()(const PointConfiguration& points,
+ const Chirotope& chiro,
+ const Incidences& incidences,
+@@ -169,6 +171,7 @@ namespace topcom {
+
+ class __sbfs_search_pred_base {
+ public:
++ virtual ~__sbfs_search_pred_base() {}
+ inline virtual bool operator()(const PointConfiguration& points,
+ const Chirotope& chiro,
+ const Incidences& incidences,
diff --git a/TOPCOM.spec b/TOPCOM.spec
index 20e8668..18514eb 100644
--- a/TOPCOM.spec
+++ b/TOPCOM.spec
@@ -1,6 +1,6 @@
Name: TOPCOM
-Version: 0.17.10
-Release: 6%{?dist}
+Version: 1.1.2
+Release: 1%{?dist}
Summary: Triangulations Of Point Configurations and Oriented Matroids
%global upver %(tr . _ <<< %{version})
@@ -8,16 +8,26 @@ Summary: Triangulations Of Point Configurations and Oriented Matroids
License: GPL-2.0-or-later
URL: https://www.wm.uni-bayreuth.de/de/team/rambau_joerg/TOPCOM/
Source0: https://www.wm.uni-bayreuth.de/de/team/rambau_joerg/TOPCOM-Downloads/%{na...
-# Man pages, written by Jerry James using text from the sources. Therefore,
-# these man pages have the same copyright and license as the sources.
-Source1: %{name}-man.tar.xz
# A replacement Makefile. See the %%build section for more information.
-Source2: %{name}-Makefile
+Source1: %{name}-Makefile
+# Remove a pessimizing call to std::move
+Patch0: %{name}-pessimizing-move.patch
+# Add virtual destructors where needed
+Patch1: %{name}-virtual-destructor.patch
-BuildRequires: cddlib-devel
+# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
+ExcludeArch: %{ix86}
+
+BuildRequires: boost-devel
BuildRequires: gcc-c++
-BuildRequires: gmp-devel
+BuildRequires: libsoplex-devel
BuildRequires: make
+BuildRequires: pkgconfig(cddlib)
+BuildRequires: pkgconfig(gmp)
+BuildRequires: pkgconfig(mpfr)
+BuildRequires: pkgconfig(tbb)
+BuildRequires: pkgconfig(zlib)
+BuildRequires: qsopt-ex-devel
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
%global topcom_major %(cut -d. -f1 <<< %{version})
@@ -34,6 +44,7 @@ Summary: Header files needed to build with %{name}
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Requires: cddlib-devel%{?_isa}
Requires: gmp-devel%{?_isa}
+Requires: qsopt-ex-devel%{?_isa}
%description devel
Header files needed to build applications that use the %{name} library.
@@ -53,8 +64,7 @@ BuildArch: noarch
Example input and output files for TOPCOM.
%prep
-%setup -q -n topcom-%{version}
-%setup -q -n topcom-%{version} -T -D -a 1
+%autosetup -n topcom-%{version} -p1
# Fix character encoding
iconv -f iso8859-1 -t utf8 -o README.utf8 README
@@ -69,29 +79,29 @@ sed "s|// \(q\.canonicalize\)|\1|" %{_includedir}/gmpxx.h > \
%build
# We cannot use upstream's build system. It has the following problems.
# (1) It builds two static libraries, libTOPCOM.a and libCHECKREG.a, then
-# includes both libraries in each of the 38 binaries that it installs in
+# includes both libraries in each of the 60 binaries that it installs in
# %%{_bindir}.
# (2) Each of libTOPCOM.a and libCHECKREG.a refers to symbols defined by the
# other.
-# (3) It builds static gmp and cddlib libraries, which are also linked into
+# (3) It builds static cddlib and qsopt_ex libraries, which are also linked into
# all of the constructed binaries. There is no way to make it use the
# installed versions of those libraries instead.
# We could fix (3) with a little build system hackery. We could fix (1) by
# building shared libraries, but that doesn't help with (2). Instead, we pull
# in our own evilly constructed Makefile to build a single shared library
# containing all of the object files in both libTOPCOM.a and libCHECKREG.a,
-# and link the binaries against that and the system gmp and cddlib libraries.
+# and link the binaries against that and the system cddlib and qsopt_ex
+# libraries.
sed -e 's|@RPM_OPT_FLAGS@|%{build_cxxflags}|' \
-e 's|@RPM_LD_FLAGS@|%{build_ldflags}|' \
-e 's|@bindir@|%{_bindir}|' \
-e 's|@libdir@|%{_libdir}|' \
- -e 's|@mandir@|%{_mandir}|' \
-e 's|@includedir@|%{_includedir}|' \
-e 's|@version@|%{version}|' \
-e 's|@major@|%{topcom_major}|' \
-e 's|@minor@|%{topcom_minor}|' \
-e 's|#version#|@version@|' \
- %{SOURCE2} > Makefile
+ %{SOURCE1} > Makefile
%make_build
%install
@@ -102,29 +112,32 @@ rm -f examples/Makefile*
# Rename binaries with common names
for bin in cross cube cyclic hypersimplex lattice; do
- mv $RPM_BUILD_ROOT%{_bindir}/$bin $RPM_BUILD_ROOT%{_bindir}/TOPCOM-$bin
+ mv %{buildroot}%{_bindir}/$bin %{buildroot}%{_bindir}/TOPCOM-$bin
done
+# Do not package the check executable
+rm %{buildroot}%{_bindir}/check
+
+%check
+LD_LIBRARY_PATH=$PWD src/check
+
%files
%{_bindir}/B_A
%{_bindir}/B_A_center
%{_bindir}/B_D
+%{_bindir}/B_D_center
+%{_bindir}/B_S
+%{_bindir}/B_S_center
%{_bindir}/TOPCOM*
+%{_bindir}/binomial
%{_bindir}/checkregularity
%{_bindir}/chiro2*
%{_bindir}/cocircuits2facets
+%{_bindir}/Dnxk
+%{_bindir}/kDn
+%{_bindir}/permutahedron
%{_bindir}/points2*
%{_bindir}/santos_*
-%{_mandir}/man1/B_A.1*
-%{_mandir}/man1/B_A_center.1*
-%{_mandir}/man1/B_D.1*
-%{_mandir}/man1/TOPCOM*
-%{_mandir}/man1/checkregularity.1*
-%{_mandir}/man1/chiro2*
-%{_mandir}/man1/cocircuits2facets.1*
-%{_mandir}/man1/points2*
-%{_mandir}/man1/santos_*
-%{_mandir}/man7/TOPCOM.7*
%files devel
%{_includedir}/%{name}/
@@ -133,12 +146,18 @@ done
%files libs
%doc AUTHORS ChangeLog README
%license COPYING
-%{_libdir}/libTOPCOM.so.0*
+%{_libdir}/libTOPCOM.so.1*
%files examples
%doc examples
%changelog
+* Fri Feb 23 2024 Jerry James <loganjerry(a)gmail.com> - 1.1.2-1
+- Version 1.1.2
+- Drop the custom man pages due to lack of ability to maintain them
+- Build with soplex support
+- Stop building for 32-bit x86
+
* Mon Jan 22 2024 Fedora Release Engineering <releng(a)fedoraproject.org> - 0.17.10-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
diff --git a/sources b/sources
index 6cafb80..1d3f5fd 100644
--- a/sources
+++ b/sources
@@ -1,2 +1 @@
-SHA512 (TOPCOM-0_17_10.tgz) = bbce101fd27b54e67e0094360ce8a811da5256bd5ead96753344f29783909dcd815ea6823c945e75bb143bc10a0c05cf515bf340acaa69111f1fa8ab77bbded2
-SHA512 (TOPCOM-man.tar.xz) = 6559bb92e6fc6275fa90d2dcb3b7655113ee58df981af95465fcfe2dd2e28130d059974dcab244f3badab5db655c3886ab2f83a17cc3bf085fc3f7d6e6779f8e
+SHA512 (TOPCOM-1_1_2.tgz) = acdfcd11d4d6d6b3d21f90313d413a0d6a753a982d1090de5ed2cdd011dec98e04058f79679772bb911c5c2f23834477c5fff9511ca0cd67a392c6b24347ef7d
3 months