esa / pagmo_plugins_nonfree

A pagmo affiliated package (https://github.com/esa/pagmo2) adding commercial solvers to the list of solvers/algorithms: SNOPT7, WORHP
GNU General Public License v3.0
10 stars 9 forks source link

changed headers to worhp version 1.14 #21

Closed mlooz closed 3 years ago

mlooz commented 3 years ago

Replaced included header files to those from worhp 1.14 Changed C++ standard to 17 to make it compile

darioizzo commented 3 years ago

Looks now that fixed it. You now have an intemodule issue, which means likely the versions used in the pagmo2 CI are different than those used in this CI (pybind11?) not sure ... if you want we can discuss briefly

gabor-varga commented 3 years ago

@mlooz @darioizzo Leaving a comment for visibility. We will need to update our worhp version once this change goes through.

darioizzo commented 3 years ago

@mlooz Not sure why you use the conda pybind11 now in the failing build. In the pygmo conda feedstock you have:

git clone https://github.com/pybind/pybind11.git
cd pybind11
git checkout 4f72ef846fe8453596230ac285eeaa0ce3278bb4
mkdir build
cd build
pwd
cmake \
    -DPYBIND11_TEST=NO \
    -DCMAKE_INSTALL_PREFIX=$PYGMO_BUILD_DIR \
    -DCMAKE_PREFIX_PATH=$PYGMO_BUILD_DIR \
    ..
make install

the same commit must be used in all CI that install pygmo via conda. (PYTHON37 is one)

mlooz commented 3 years ago

@mlooz Not sure why you use the conda pybind11 now in the failing build. In the pygmo conda feedstock you have:

The previous experimental commit also had pybind11 commit 4f72ef846fe8453596230ac285eeaa0ce3278bb4, but the same issue occurred. Currently recreating the bug in a local docker container, should make diagnosing easier.

bluescarni commented 3 years ago

Looks now that fixed it. You now have an intemodule issue, which means likely the versions used in the pagmo2 CI are different than those used in this CI (pybind11?) not sure ... if you want we can discuss briefly

@darioizzo @mlooz

The intermodule issues are not necessarily related to different pybind11 versions. Even if you use the exact same pybind11 version but you compile the modules with different GCC versions, then pybind11 may refuse to interconvert between modules.

During the compilation of a module, pybind11 generates a "unique" string which contains various info about the current setup (pybind11 version, compiler name, stdlib version, etc.). The compiled module can interoperate only with modules for which this string is exactly identical. See:

https://github.com/pybind/pybind11/blob/d65e34d61d5f49ffbe7c2e7864391366f1124b0e/include/pybind11/detail/internals.h#L202

mlooz commented 3 years ago

The intermodule issues are not necessarily related to different pybind11 versions. Even if you use the exact same pybind11 version but you compile the modules with different GCC versions, then pybind11 may refuse to interconvert between modules.

Good point! Yes, I think this is what happened, since the same build now works after the pygmo package was rebuild with GCC 9.

mlooz commented 3 years ago

@darioizzo I think this one can be merged now.