installation error using coinbrew
I've followed the instructions of coinbrew on how to install packages, but it gives me this error while trying to build/install this package. command I'm running:
bash
./coinbrew build
and then selecting 17 for this package (I've also installed gfortran-9 and used update-alternatives to map gfortran to gfortran-9 because that also gave build errors)
here is my current error output:
##################################################
### Building Couenne 0.5.8
##################################################
In file included from /home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/../../expression/CouenneExprCopy.hpp:17,
from /home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/../../expression/CouenneExprClone.hpp:18,
from /home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.hpp:16,
from /home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp:15:
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/../../expression/CouenneExpression.hpp:279:39: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
279 | inline bool updateBound (register int sign,
| ^~~~
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/../../expression/CouenneExpression.hpp:280:46: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
280 | register CouNumber *dst,
| ^~~
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/../../expression/CouenneExpression.hpp:281:45: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
281 | register CouNumber src) {
| ^~~
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/../../expression/CouenneExpression.hpp: In function 'bool Couenne::updateBound(int, Couenne::CouNumber*, Couenne::CouNumber)':
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/../../expression/CouenneExpression.hpp:291:19: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
291 | register double delta = (sign > 0) ? (*dst - src) : (src - *dst);
| ^~~~~
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/../../expression/CouenneExpression.hpp: In function 'int Couenne::compareExpr(const void*, const void*)':
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/../../expression/CouenneExpression.hpp:305:12: warning: cast from type 'const void*' to type 'Couenne::expression**' casts away qualifiers [-Wcast-qual]
305 | {return ((*(expression **) e0) -> compare (**(expression **)e1));}
| ^~~~~~~~~~~~~~~~~~
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/../../expression/CouenneExpression.hpp:305:46: warning: cast from type 'const void*' to type 'Couenne::expression**' casts away qualifiers [-Wcast-qual]
305 | {return ((*(expression **) e0) -> compare (**(expression **)e1));}
| ^~~~~~~~~~~~~~~~~
In file included from /home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp:15:
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.hpp: At global scope:
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.hpp:71:63: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
71 | inline bool operator() (register CouenneScalar * const &a,
| ^
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.hpp:72:63: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
72 | register CouenneScalar * const &b)
| ^
In file included from /home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp:15:
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.hpp:109:86: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
109 | inline bool operator() (register const std::pair <int, CouenneSparseVector *> &a,
| ^
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.hpp:110:86: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
110 | register const std::pair <int, CouenneSparseVector *> &b) const
| ^
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp: In copy constructor 'Couenne::CouenneSparseVector::CouenneSparseVector(const Couenne::CouenneSparseVector&)':
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp:25:10: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
25 | i = rhs. elem_. begin ();
| ^
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp: In member function 'Couenne::CouenneSparseVector& Couenne::CouenneSparseVector::operator=(const Couenne::CouenneSparseVector&)':
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp:36:10: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
36 | i = rhs. elem_. begin ();
| ^
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp: In member function 'double Couenne::CouenneSparseVector::multiply_thres(const Couenne::CouenneSparseVector&, double) const':
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp:129:10: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
129 | i1 = elem_. begin (),
| ^~
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp:130:10: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
130 | i2 = v2.elem_. begin ();
| ^~
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp:135:5: warning: this 'while' clause does not guard... [-Wmisleading-indentation]
135 | while ((i1 != elem_.end ()) && ((*i1) -> getIndex () < (*i2) -> getIndex ())) ++i1; if (i1 == elem_. end ()) return prod;
| ^~~~~
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp:135:92: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'while'
135 | while ((i1 != elem_.end ()) && ((*i1) -> getIndex () < (*i2) -> getIndex ())) ++i1; if (i1 == elem_. end ()) return prod;
| ^~
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp:136:5: warning: this 'while' clause does not guard... [-Wmisleading-indentation]
136 | while ((i2 != v2.elem_.end ()) && ((*i2) -> getIndex () < (*i1) -> getIndex ())) ++i2; if (i2 == v2. elem_. end ()) return prod;
| ^~~~~
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp:136:92: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'while'
136 | while ((i2 != v2.elem_.end ()) && ((*i2) -> getIndex () < (*i1) -> getIndex ())) ++i2; if (i2 == v2. elem_. end ()) return prod;
| ^~
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp: In destructor 'Couenne::CouenneSparseVector::~CouenneSparseVector()':
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp:216:10: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
216 | i = elem_. begin ();
| ^
In file included from /usr/include/c++/11/set:60,
from /home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.hpp:13,
from /home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp:15:
/usr/include/c++/11/bits/stl_tree.h: In instantiation of 'static const _Key& std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_S_key(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type) [with _Key = Couenne::CouenneScalar*; _Val = Couenne::CouenneScalar*; _KeyOfValue = std::_Identity<Couenne::CouenneScalar*>; _Compare = Couenne::CouenneSparseVector::compare_scalars; _Alloc = std::allocator<Couenne::CouenneScalar*>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type = const std::_Rb_tree_node<Couenne::CouenneScalar*>*]':
/usr/include/c++/11/bits/stl_tree.h:2071:47: required from 'std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_unique_pos(const key_type&) [with _Key = Couenne::CouenneScalar*; _Val = Couenne::CouenneScalar*; _KeyOfValue = std::_Identity<Couenne::CouenneScalar*>; _Compare = Couenne::CouenneSparseVector::compare_scalars; _Alloc = std::allocator<Couenne::CouenneScalar*>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::key_type = Couenne::CouenneScalar*]'
/usr/include/c++/11/bits/stl_tree.h:2124:4: required from 'std::pair<std::_Rb_tree_iterator<_Val>, bool> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_unique(_Arg&&) [with _Arg = Couenne::CouenneScalar*; _Key = Couenne::CouenneScalar*; _Val = Couenne::CouenneScalar*; _KeyOfValue = std::_Identity<Couenne::CouenneScalar*>; _Compare = Couenne::CouenneSparseVector::compare_scalars; _Alloc = std::allocator<Couenne::CouenneScalar*>]'
/usr/include/c++/11/bits/stl_set.h:521:25: required from 'std::pair<typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<_Key>::other>::const_iterator, bool> std::set<_Key, _Compare, _Alloc>::insert(std::set<_Key, _Compare, _Alloc>::value_type&&) [with _Key = Couenne::CouenneScalar*; _Compare = Couenne::CouenneSparseVector::compare_scalars; _Alloc = std::allocator<Couenne::CouenneScalar*>; typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<_Key>::other>::const_iterator = std::_Rb_tree<Couenne::CouenneScalar*, Couenne::CouenneScalar*, std::_Identity<Couenne::CouenneScalar*>, Couenne::CouenneSparseVector::compare_scalars, std::allocator<Couenne::CouenneScalar*> >::const_iterator; typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<_Key>::other = std::allocator<Couenne::CouenneScalar*>; typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<_Key> = __gnu_cxx::__alloc_traits<std::allocator<Couenne::CouenneScalar*>, Couenne::CouenneScalar*>::rebind<Couenne::CouenneScalar*>; typename _Allocator::value_type = Couenne::CouenneScalar*; std::set<_Key, _Compare, _Alloc>::value_type = Couenne::CouenneScalar*]'
/home/godzy/dlgit/coinbrew/Couenne/Couenne/src/cut/sdpcuts/CouenneMatrix.cpp:28:19: required from here
/usr/include/c++/11/bits/stl_tree.h:770:15: error: static assertion failed: comparison object must be invocable as const
770 | is_invocable_v<const _Compare&, const _Key&, const _Key&>,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/11/bits/stl_tree.h:770:15: note: 'std::is_invocable_v<const Couenne::CouenneSparseVector::compare_scalars&, Couenne::CouenneScalar* const&, Couenne::CouenneScalar* const&>' evaluates to false
make[1]: *** [Makefile:424: CouenneMatrix.lo] Error 1
make: *** [Makefile:477: all-recursive] Error 1
running like this did the job: ./coinbrew build Couenne ADD_CXXFLAGS=-std=c++11 --reconfigure
imma keep this issue open, maybe you want to do this automatically or add a warning.
Not able to install it on my computer,
`(base) idrissnguepi@IDRISSs-MacBook-Pro ~ % brew install couenne
==> Downloading https://formulae.brew.sh/api/formula.jws.json
==> Downloading https://formulae.brew.sh/api/cask.jws.json
Warning: No available formula with the name "couenne".
==> Searching for similarly named formulae and casks...
==> Casks
coderunner ✔
To install coderunner ✔, run: brew install --cask coderunner ✔ (base) idrissnguepi@IDRISSs-MacBook-Pro ~ % sw_vers ProductName: macOS ProductVersion: 14.3.1 BuildVersion: 23D60`