Closed mxr closed 6 years ago
can you report Makefile.local ? It looks like the python path is not found.
Here are its contents:
JDK_DIRECTORY =
UNIX_PYTHON_VER = 2.7
PATH_TO_CSHARP_COMPILER =
CLR_KEYFILE = bin/or-tools.snk
# Define UNIX_GLPK_DIR to point to a compiled version of GLPK to use it
# Define UNIX_SCIP_DIR to point to a compiled version of SCIP to use it
# i.e.: <path>/scipoptsuite-4.0.0/scip-4.0.0
# compile scip with GMP=false READLINE=false
# Define UNIX_GUROBI_DIR and GUROBI_LIB_VERSION to use Gurobi
# Define UNIX_CPLEX_DIR to use CPLEX
UNIX_GFLAGS_DIR = /home/mrozentsveyg/tmp/or-tools/dependencies/install
UNIX_PROTOBUF_DIR = /home/mrozentsveyg/tmp/or-tools/dependencies/install
UNIX_SWIG_BINARY = /home/mrozentsveyg/tmp/or-tools/dependencies/install/bin/swig
UNIX_CLP_DIR = /home/mrozentsveyg/tmp/or-tools/dependencies/install
UNIX_CBC_DIR = /home/mrozentsveyg/tmp/or-tools/dependencies/install
Let me know if I can give more information. Note that I was compiling on commit d2cd773edbcad7269da9cccee173161c60f79a27
Hi @lperron, I'm still unable to compile (tried again on the latest master). I added some debug code to find out about my environment but I wasn't able to get to the bottom of the issue.
diff --git a/makefiles/Makefile.python.mk b/makefiles/Makefile.python.mk
index 04284ce..40c588a 100755
--- a/makefiles/Makefile.python.mk
+++ b/makefiles/Makefile.python.mk
@@ -19,6 +19,12 @@ ifeq ($(shell $(PYTHON_EXECUTABLE) -c "from sys import version_info as v; print
SWIG_PYTHON3_FLAG=-py3 -DPY3
endif
+debug_info_python:
+ @echo $(OR_TOOLS_PYTHONPATH)
+ @echo $(PYTHONPATH)
+ @echo $(PYTHON_EXECUTABLE)
+ @echo $(UNIX_PYTHON_VER)
+
# Main target
CANONIC_PYTHON_EXECUTABLE = $(subst $(SPACE),$(BACKSLASH_SPACE),$(subst \,/,$(subst \\,/,$(PYTHON_EXECUTABLE))))
ifeq ($(wildcard $(CANONIC_PYTHON_EXECUTABLE)),)
$ make debug_info_python
/home/mrozentsveyg/tmp/or-tools:/home/mrozentsveyg/tmp/or-tools/dependencies/sources/protobuf-3.2.0/python
/usr/bin/python2.7
2.7
Is there something else I could try?
Thanks!
Try to find python.h in system paths and define ADD_PYTHON_INC in Makefile.local to tell him where to look. Alternatively, you can print PATH_TO_PYTHON_LIB and PATH_TO_PYTHON_INCLUDE.
Laurent Perron | Operations Research | lperron@google.com | (33) 1 42 68 53 00
2017-05-23 20:41 GMT+02:00 Max Rozentsveyg notifications@github.com:
Hi @lperron https://github.com/lperron, I'm still unable to compile (tried again on the latest master). I added some debug code to find out about my environment but I wasn't able to get to the bottom of the issue.
diff --git a/makefiles/Makefile.python.mk b/makefiles/Makefile.python.mk index 04284ce..40c588a 100755--- a/makefiles/Makefile.python.mk+++ b/makefiles/Makefile.python.mk@@ -19,6 +19,12 @@ ifeq ($(shell $(PYTHON_EXECUTABLE) -c "from sys import version_info as v; print SWIG_PYTHON3_FLAG=-py3 -DPY3 endif +debug_info_python:+ @echo $(OR_TOOLS_PYTHONPATH)+ @echo $(PYTHONPATH)+ @echo $(PYTHON_EXECUTABLE)+ @echo $(UNIX_PYTHON_VER)+
Main target
CANONIC_PYTHON_EXECUTABLE = $(subst $(SPACE),$(BACKSLASH_SPACE),$(subst \,/,$(subst \,/,$(PYTHON_EXECUTABLE)))) ifeq ($(wildcard $(CANONIC_PYTHON_EXECUTABLE)),)
$ make debug_info_python /home/mrozentsveyg/tmp/or-tools:/home/mrozentsveyg/tmp/or-tools/dependencies/sources/protobuf-3.2.0/python
/usr/bin/python2.7 2.7
Is there something else I could try?
Thanks!
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/google/or-tools/issues/380#issuecomment-303493997, or mute the thread https://github.com/notifications/unsubscribe-auth/AKj17eHGyP0o_t8AAEnE9FHdoOsaxU97ks5r8yhrgaJpZM4NdOYr .
Hello, I am trying to install OrTools as the documentation says and I get the following error:
python check_python_deps.py --log=ERROR [ERROR] You are using a ortools module that doesn't have a version attribute : /root/.local/lib/python2.7/site-packages/ortools-6.0.4217-py2.7-linux-x86_64.egg/ ortools/init.pyc" Run "/usr/bin/python setup.py install --user" to upgrade. If the problem persists, remove the site-package that contains "/root/.local/lib/python2.7/site-packages/ortools-6.0.4217-py2.7-linux-x86_64.egg/ortools/init.py c". You can do so either manually or by using pip.
I have tried with python version 2.7, 3.5 and 3.6. I use Ubuntu 14.04
I appreciate any help !!
I have built this python module on 16.04, it is unfortunately not down compatible with 14.04.
Can you build from source and create a python module?
cd temp-python27/ortools && python setup.py bdist.egg
the python egg file should be in temp-python27/ortools/ortools/dist I believe
Thanks
Laurent Perron | Operations Research | lperron@google.com | (33) 1 42 68 53 00
2017-05-24 18:38 GMT+02:00 diegoalberione notifications@github.com:
Hello, I am trying to install OrTools as the documentation says and I get the following error:
python check_python_deps.py --log=ERROR [ERROR] You are using a ortools module that doesn't have a version attribute : /root/.local/lib/python2.7/site-packages/ortools-6.0. 4217-py2.7-linux-x86_64.egg/ ortools/init.pyc" Run "/usr/bin/python setup.py install --user" to upgrade. If the problem persists, remove the site-package that contains "/root/.local/lib/python2.7/site-packages/ortools-6.0. 4217-py2.7-linux-x86_64.egg/ortools/init.py c". You can do so either manually or by using pip.
I have tried with python version 2.7, 3.5 and 3.6. I use Ubuntu 14.04
I appreciate any help !!
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/google/or-tools/issues/380#issuecomment-303780895, or mute the thread https://github.com/notifications/unsubscribe-auth/AKj17Vy5La_pOMJtgiPVWkb4Ek-dmTu-ks5r9F0XgaJpZM4NdOYr .
@lperron Thanks, that helped. However I ran into some more issues, with the workarounds posted below:
fix_python_libraries_on_linux.sh
depends on patchelf
being at a hardcoded path. I fixed that by doing this before the build:sudo apt-get install patchelf
mkdir -p dependencies/install/bin
ln -s `which patchelf` dependencies/install/bin/patchelf
glog
failed because of aclocal
conflicts.cd dependencies/sources/glog-0.3.5 && PATH=/home/maxr/src/or-tools/dependencies/install/bin:/home/maxr/bin:/home/maxr/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin make install
make[1]: Entering directory '/home/maxr/src/or-tools/dependencies/sources/glog-0.3.5'
CDPATH="${ZSH_VERSION+.}:" && cd . && aclocal-1.14 -I m4
/bin/bash: aclocal-1.14: command not found
Makefile:957: recipe for target 'aclocal.m4' failed
make[1]: *** [aclocal.m4] Error 127
make[1]: Leaving directory '/home/maxr/src/or-tools/dependencies/sources/glog-0.3.5'
makefiles/Makefile.third_party.unix.mk:214: recipe for target 'dependencies/install/include/glog/logging.h' failed
make: *** [dependencies/install/include/glog/logging.h] Error 2
I worked around this by applying the below change:
--- dependencies/sources/glog-0.3.5/configure.old 2017-05-30 15:03:16.255717394 -0700
+++ dependencies/sources/glog-0.3.5/configure 2017-05-30 13:39:24.957294021 -0700
@@ -2760,7 +2760,7 @@
# (for sanity checking)
-am__api_version='1.14'
+am__api_version='1.15'
ac_aux_dir=
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
Then ran autoreconf --force --install
in the glog-0.3.5
folder, then make third_party
from the root again.
Python.h
path was /usr/include/python2.7
and adding the ADD_PYTHON_INC="-I/usr/include/python2.7"
per your suggestion/docs unblocked me.I was able to produce a .whl
, but trying to use it showed that some modules are missing:
>>> from ortools.graph import pywrapgraph
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/ortools/graph/pywrapgraph.py", line 17, in <module>
_pywrapgraph = swig_import_helper()
File "/usr/local/lib/python2.7/dist-packages/ortools/graph/pywrapgraph.py", line 16, in swig_import_helper
return importlib.import_module('_pywrapgraph')
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named _pywrapgraph
Is this the same issue that you mentioned in https://github.com/google/or-tools/issues/381#issuecomment-303666990? Or related to the "ImportError: No module named pywraplp" issue at https://developers.google.com/optimization/introduction/installing?
If not, do you have advice for how to debug the missing modules?
1) patchelf should have been compiled and would have been installed prior to building the module.
2) I hate configure. I think I will try to remove my forced install of aclocal, libtool... in or-tools.
3) There are some env macros that helps debug ImportError. (see https://stackoverflow.com/questions/7332299/trace-python-imports).
Laurent Perron | Operations Research | lperron@google.com | (33) 1 42 68 53 00
2017-05-31 2:13 GMT+02:00 Max Rozentsveyg notifications@github.com:
@lperron https://github.com/lperron Thanks, that helped. However I ran into some more issues, with the workarounds posted below:
- fix_python_libraries_on_linux.sh depends on patchelf being at a hardcoded path. I fixed that by doing this before the build:
sudo apt-get install patchelf mkdir -p dependencies/install/bin ln -s
which patchelf
dependencies/install/bin/patchelf
- Compiling glog failed because of aclocal conflicts.
cd dependencies/sources/glog-0.3.5 && PATH=/home/maxr/src/or-tools/dependencies/install/bin:/home/maxr/bin:/home/maxr/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin make install make[1]: Entering directory '/home/maxr/src/or-tools/dependencies/sources/glog-0.3.5' CDPATH="${ZSH_VERSION+.}:" && cd . && aclocal-1.14 -I m4 /bin/bash: aclocal-1.14: command not found Makefile:957: recipe for target 'aclocal.m4' failed make[1]: [aclocal.m4] Error 127 make[1]: Leaving directory '/home/maxr/src/or-tools/dependencies/sources/glog-0.3.5' makefiles/Makefile.third_party.unix.mk:214: recipe for target 'dependencies/install/include/glog/logging.h' failed make: [dependencies/install/include/glog/logging.h] Error 2
I worked around this by applying the below change:
--- dependencies/sources/glog-0.3.5/configure.old 2017-05-30 15:03:16.255717394 -0700+++ dependencies/sources/glog-0.3.5/configure 2017-05-30 13:39:24.957294021 -0700@@ -2760,7 +2760,7 @@
(for sanity checking)
-am__api_version='1.14'+am__api_version='1.15'
ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
Then ran autoreconf --force --install in the glog-0.3.5 folder, then make third_party from the root again.
- My Python.h path was /usr/include/python2.7 and adding the ADD_PYTHON_INC="-I/usr/include/python2.7" per your suggestion/docs unblocked me.
I was able to produce a .whl, but trying to use it showed that some modules are missing:
from ortools.graph import pywrapgraph Traceback (most recent call last): File "
", line 1, in File "/usr/local/lib/python2.7/dist-packages/ortools/graph/pywrapgraph.py", line 17, in _pywrapgraph = swig_import_helper() File "/usr/local/lib/python2.7/dist-packages/ortools/graph/pywrapgraph.py", line 16, in swig_import_helper return importlib.import_module('_pywrapgraph') File "/usr/lib/python2.7/importlib/init.py", line 37, in import_module import(name) ImportError: No module named _pywrapgraph Is this the same issue that you mentioned in #381 (comment) https://github.com/google/or-tools/issues/381#issuecomment-303666990? Or related to the "ImportError: No module named pywraplp" issue at https://developers.google.com/optimization/introduction/installing?
If not, do you have advice for how to debug the missing modules?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/google/or-tools/issues/380#issuecomment-305044700, or mute the thread https://github.com/notifications/unsubscribe-auth/AKj17dESeHBxGN3Ak7PbaEypzhQa1N_Cks5r_LCwgaJpZM4NdOYr .
Hi,
I just pushed a big cleanup of the make third_party, we now only build gflags, protobuf, glog and cbc. The first 3 are build using cmake, the last one is still configure.
Furthermore, I no longer build aclocal and co in dependencies, and I now rely on the system installed ones.
The new requirement is that you need swig to be installed on your platform. swig >= 2.0 is mandatory, >= 3.0 is recommended. CMake needs also to be >= 3.0.
This should simplify your process.
Tell me how it goes.
Laurent Perron | Operations Research | lperron@google.com | (33) 1 42 68 53 00
2017-05-31 7:40 GMT+02:00 Laurent Perron lperron@google.com:
1) patchelf should have been compiled and would have been installed prior to building the module.
2) I hate configure. I think I will try to remove my forced install of aclocal, libtool... in or-tools.
3) There are some env macros that helps debug ImportError. (see https://stackoverflow.com/questions/7332299/trace-python-imports).
Laurent Perron | Operations Research | lperron@google.com | (33) 1 42 68 53 00
2017-05-31 2:13 GMT+02:00 Max Rozentsveyg notifications@github.com:
@lperron https://github.com/lperron Thanks, that helped. However I ran into some more issues, with the workarounds posted below:
- fix_python_libraries_on_linux.sh depends on patchelf being at a hardcoded path. I fixed that by doing this before the build:
sudo apt-get install patchelf mkdir -p dependencies/install/bin ln -s
which patchelf
dependencies/install/bin/patchelf
- Compiling glog failed because of aclocal conflicts.
cd dependencies/sources/glog-0.3.5 && PATH=/home/maxr/src/or-tools/dependencies/install/bin:/home/maxr/bin:/home/maxr/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin make install make[1]: Entering directory '/home/maxr/src/or-tools/dependencies/sources/glog-0.3.5' CDPATH="${ZSH_VERSION+.}:" && cd . && aclocal-1.14 -I m4 /bin/bash: aclocal-1.14: command not found Makefile:957: recipe for target 'aclocal.m4' failed make[1]: [aclocal.m4] Error 127 make[1]: Leaving directory '/home/maxr/src/or-tools/dependencies/sources/glog-0.3.5' makefiles/Makefile.third_party.unix.mk:214: recipe for target 'dependencies/install/include/glog/logging.h' failed make: [dependencies/install/include/glog/logging.h] Error 2
I worked around this by applying the below change:
--- dependencies/sources/glog-0.3.5/configure.old 2017-05-30 15:03:16.255717394 -0700+++ dependencies/sources/glog-0.3.5/configure 2017-05-30 13:39:24.957294021 -0700@@ -2760,7 +2760,7 @@
(for sanity checking)
-am__api_version='1.14'+am__api_version='1.15'
ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
Then ran autoreconf --force --install in the glog-0.3.5 folder, then make third_party from the root again.
- My Python.h path was /usr/include/python2.7 and adding the ADD_PYTHON_INC="-I/usr/include/python2.7" per your suggestion/docs unblocked me.
I was able to produce a .whl, but trying to use it showed that some modules are missing:
from ortools.graph import pywrapgraph Traceback (most recent call last): File "
", line 1, in File "/usr/local/lib/python2.7/dist-packages/ortools/graph/pywrapgraph.py", line 17, in _pywrapgraph = swig_import_helper() File "/usr/local/lib/python2.7/dist-packages/ortools/graph/pywrapgraph.py", line 16, in swig_import_helper return importlib.import_module('_pywrapgraph') File "/usr/lib/python2.7/importlib/init.py", line 37, in import_module import(name) ImportError: No module named _pywrapgraph Is this the same issue that you mentioned in #381 (comment) https://github.com/google/or-tools/issues/381#issuecomment-303666990? Or related to the "ImportError: No module named pywraplp" issue at https://developers.google.com/optimization/introduction/installing?
If not, do you have advice for how to debug the missing modules?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/google/or-tools/issues/380#issuecomment-305044700, or mute the thread https://github.com/notifications/unsubscribe-auth/AKj17dESeHBxGN3Ak7PbaEypzhQa1N_Cks5r_LCwgaJpZM4NdOYr .
@lperron thanks for the cleanup and quick response. I tried to compile but ran into an error with proto. make third_party
succeeded but make python
did not:
$ make python ADD_PYTHON_INC="-I/usr/include/python2.7"
cd dependencies/sources/protobuf-3.2.0/python && /usr/bin/python2.7 setup.py build
running build
running build_py
Generating google/protobuf/descriptor_pb2.py...
protoc is not installed nor found in ../src. Please compile it or install the binary package.
makefiles/Makefile.python.mk:72: recipe for target 'dependencies/sources/protobuf-3.2.0/python/google/protobuf/descriptor_pb2.py' failed
make: *** [dependencies/sources/protobuf-3.2.0/python/google/protobuf/descriptor_pb2.py] Error 255
I do see protoc
here:
$ find . -name protoc
./dependencies/sources/protobuf-3.2.0/cmake/build/protoc
./dependencies/install/bin/protoc
Perhaps I need to pass another flag?
OK. I need to copy protoc from ./dependencies/sources/ protobuf-3.2.0/cmake/build/protoc to ./dependencies/sources/protobuf-3.2.0/src or set the PATH to include dependencies/install/bin before generating the proto part.
To move forward, just copy the protoc binary. I will fix it tomorrow.
Thanks
Laurent Perron | Operations Research | lperron@google.com | (33) 1 42 68 53 00
2017-05-31 21:03 GMT+02:00 Max Rozentsveyg notifications@github.com:
@lperron https://github.com/lperron thanks for the cleanup and quick response. I tried to compile but ran into an error with proto. make third_party succeeded but make python did not:
$ make python ADD_PYTHON_INC="-I/usr/include/python2.7" cd dependencies/sources/protobuf-3.2.0/python && /usr/bin/python2.7 setup.py build running build running build_py Generating google/protobuf/descriptor_pb2.py... protoc is not installed nor found in ../src. Please compile it or install the binary package. makefiles/Makefile.python.mk:72: recipe for target 'dependencies/sources/protobuf-3.2.0/python/google/protobuf/descriptor_pb2.py' failed make: *** [dependencies/sources/protobuf-3.2.0/python/google/protobuf/descriptor_pb2.py] Error 255
I do see protoc here:
$ find . -name protoc ./dependencies/sources/protobuf-3.2.0/cmake/build/protoc ./dependencies/install/bin/protoc
Perhaps I need to pass another flag?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/google/or-tools/issues/380#issuecomment-305285548, or mute the thread https://github.com/notifications/unsubscribe-auth/AKj17djSl-zv3c6UlwWC4CXF39K27WJEks5r_bmBgaJpZM4NdOYr .
Never mind, I just pushed the fix (it was already there for windows).
Thanks for the report.
Laurent Perron | Operations Research | lperron@google.com | (33) 1 42 68 53 00
2017-06-01 0:38 GMT+02:00 Laurent Perron lperron@google.com:
OK. I need to copy protoc from ./dependencies/sources/pr otobuf-3.2.0/cmake/build/protoc to ./dependencies/sources/protobuf-3.2.0/src or set the PATH to include dependencies/install/bin before generating the proto part.
To move forward, just copy the protoc binary. I will fix it tomorrow.
Thanks
Laurent Perron | Operations Research | lperron@google.com | (33) 1 42 68 53 00
2017-05-31 21:03 GMT+02:00 Max Rozentsveyg notifications@github.com:
@lperron https://github.com/lperron thanks for the cleanup and quick response. I tried to compile but ran into an error with proto. make third_party succeeded but make python did not:
$ make python ADD_PYTHON_INC="-I/usr/include/python2.7" cd dependencies/sources/protobuf-3.2.0/python && /usr/bin/python2.7 setup.py build running build running build_py Generating google/protobuf/descriptor_pb2.py... protoc is not installed nor found in ../src. Please compile it or install the binary package. makefiles/Makefile.python.mk:72: recipe for target 'dependencies/sources/protobuf-3.2.0/python/google/protobuf/descriptor_pb2.py' failed make: *** [dependencies/sources/protobuf-3.2.0/python/google/protobuf/descriptor_pb2.py] Error 255
I do see protoc here:
$ find . -name protoc ./dependencies/sources/protobuf-3.2.0/cmake/build/protoc ./dependencies/install/bin/protoc
Perhaps I need to pass another flag?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/google/or-tools/issues/380#issuecomment-305285548, or mute the thread https://github.com/notifications/unsubscribe-auth/AKj17djSl-zv3c6UlwWC4CXF39K27WJEks5r_bmBgaJpZM4NdOYr .
Will merge master and try again. Thanks!
@lperron I was able to produce a wheel with the above directions, but using it caused some issues.
First, the build machine is able to use or-tools
fine
$ gcc --version | head -n1
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
$ python -c "from ortools.graph import pywrapgraph"; echo $?
0
On the machine that I want to use or-tools
(Trusty), I hit a new import issue
$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from ortools.graph import pywrapgraph
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/ortools/graph/pywrapgraph.py", line 28, in <module>
_pywrapgraph = swig_import_helper()
File "/usr/local/lib/python2.7/dist-packages/ortools/graph/pywrapgraph.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrapgraph', fp, pathname, description)
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/local/lib/python2.7/dist-packages/ortools/graph/_pywrapgraph.so)
When the Python interpreter is started you can see it's using an older gcc (4.8.4). Also, libstd++.so.6
indeed doesn't have the required glibc:
$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX | tail -n 5
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH
I tried to update it using these instructions.
$ sudo apt-get install software-properties-common python-software-properties
$ sudo apt-get update
$ sudo apt-get install gcc-5 g++-5
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 --slave /usr/bin/g++ g++ /usr/bin/g++-5
And verified the right GLIBC is in the .so file
$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.21
GLIBCXX_3.4.21
Retrying gave a different import error:
$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from ortools.graph import pywrapgraph
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/ortools/graph/pywrapgraph.py", line 28, in <module>
_pywrapgraph = swig_import_helper()
File "/usr/local/lib/python2.7/dist-packages/ortools/graph/pywrapgraph.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrapgraph', fp, pathname, description)
ImportError: /usr/local/lib/python2.7/dist-packages/ortools/graph/../../ortools/libortools.so: symbol _ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference
Since it didn't work, I undid the glib change via
$ wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libstdc++6_4.8.4-2ubuntu1~14.04.3_amd64.deb
$ dpkg -i libstdc++6_4.8.4-2ubuntu1~14.04.3_amd64.deb
Trying another fix, I found that I might be able to pass another CFLAG
diff --git a/makefiles/Makefile.unix.mk b/makefiles/Makefile.unix.mk
index c0ec077..2a8db3f 100644
--- a/makefiles/Makefile.unix.mk
+++ b/makefiles/Makefile.unix.mk
@@ -248,7 +248,7 @@ endif # MAC OS X
CFLAGS = $(DEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \
-Wno-deprecated $(PROTOBUF_INC) $(CBC_INC) $(CLP_INC) $(GLPK_INC) \
- $(SCIP_INC) $(GUROBI_INC) $(CPLEX_INC) -DUSE_GLOP -DUSE_BOP $(GLOG_INC)
+ $(SCIP_INC) $(GUROBI_INC) $(CPLEX_INC) -DUSE_GLOP -DUSE_BOP $(GLOG_INC) -D_GLIBCXX_USE_CXX11_ABI=0
JNIFLAGS = $(JNIDEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \
But using wheel from that build gave the import error at the start of this post, and also seems to have broken the ortools
installation on the build machine. So maybe this flag is a non-starter.
It seems like there is an incompatibility with the gcc on the desired machine & the one where the wheel was compiled. Do you have advice for ways to debug further? Is the ortools wheel not compatible with Trusty because of the glibc issue?
Let me try to summarize you build on one machine and try to use it an another machine, and you get binary incompatibilities.
If true, this is not a surprise :-(
A trick they do in manylinux wheel is that everything is compiled statically (libc and libc++)
the flags are: -static -static-libgcc.
You can try to insert this when you build the libortools and maybe the _pywwrapXXX libraries.
Anyway, and this is why I have doubt about the manylinux approach (and pypi in general). I believe it is really hard to build portable pypi modules.
To help this, we are working are to simplify the build procedure. My proposed approach is to have docker containers for you platform and build the .egg file inside docker. But we are not there at all.
Thanks
Laurent Perron | Operations Research | lperron@google.com | (33) 1 42 68 53 00
2017-06-01 2:14 GMT+02:00 Max Rozentsveyg notifications@github.com:
@lperron https://github.com/lperron I was able to produce a wheel with the above directions, but using it caused some issues.
First, the build machine is able to use or-tools fine
$ gcc --version | head -n1 gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 $ python -c "from ortools.graph import pywrapgraph"; echo $? 0
On the machine that I want to use or-tools (Trusty), I hit a new import issue
$ python Python 2.7.6 (default, Oct 26 2016, 20:30:19) [GCC 4.8.4] on linux2 Type "help", "copyright", "credits" or "license" for more information.
from ortools.graph import pywrapgraph Traceback (most recent call last): File "
", line 1, in File "/usr/local/lib/python2.7/dist-packages/ortools/graph/pywrapgraph.py", line 28, in _pywrapgraph = swig_import_helper() File "/usr/local/lib/python2.7/dist-packages/ortools/graph/pywrapgraph.py", line 24, in swig_import_helper _mod = imp.load_module('_pywrapgraph', fp, pathname, description) ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/local/lib/python2.7/dist-packages/ortools/graph/_pywrapgraph.so) When the Python interpreter is started you can see it's using an older gcc (4.8.4). Also, libstd++.so.6 indeed doesn't have the required glibc:
$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX | tail -n 5 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 GLIBCXX_DEBUG_MESSAGE_LENGTH
I tried to update it using these instructions https://gist.github.com/beci/2a2091f282042ed20cda.
$ sudo apt-get install software-properties-common python-software-properties $ sudo apt-get update $ sudo apt-get install gcc-5 g++-5 $ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 --slave /usr/bin/g++ g++ /usr/bin/g++-5
And verified the right GLIBC is in the .so file
$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.21 GLIBCXX_3.4.21
Retrying gave a different import error:
$ python Python 2.7.6 (default, Oct 26 2016, 20:30:19) [GCC 4.8.4] on linux2 Type "help", "copyright", "credits" or "license" for more information.
from ortools.graph import pywrapgraph Traceback (most recent call last): File "
", line 1, in File "/usr/local/lib/python2.7/dist-packages/ortools/graph/pywrapgraph.py", line 28, in _pywrapgraph = swig_import_helper() File "/usr/local/lib/python2.7/dist-packages/ortools/graph/pywrapgraph.py", line 24, in swig_import_helper _mod = imp.load_module('_pywrapgraph', fp, pathname, description) ImportError: /usr/local/lib/python2.7/dist-packages/ortools/graph/../../ortools/libortools.so: symbol _ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference Since it didn't work, I undid the glib change via
$ wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libstdc++6_4.8.4-2ubuntu1~14.04.3_amd64.deb $ dpkg -i libstdc++6_4.8.4-2ubuntu1~14.04.3_amd64.deb
Trying another fix, I found that I might be able to pass another CFLAG
diff --git a/makefiles/Makefile.unix.mk b/makefiles/Makefile.unix.mk index c0ec077..2a8db3f 100644--- a/makefiles/Makefile.unix.mk+++ b/makefiles/Makefile.unix.mk@@ -248,7 +248,7 @@ endif # MAC OS X
CFLAGS = $(DEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \ -Wno-deprecated $(PROTOBUF_INC) $(CBC_INC) $(CLP_INC) $(GLPK_INC) - $(SCIP_INC) $(GUROBI_INC) $(CPLEX_INC) -DUSE_GLOP -DUSE_BOP $(GLOG_INC)+ $(SCIP_INC) $(GUROBI_INC) $(CPLEX_INC) -DUSE_GLOP -DUSE_BOP $(GLOG_INC) -D_GLIBCXX_USE_CXX11_ABI=0
JNIFLAGS = $(JNIDEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \
But using wheel from that build gave the import error at the start of this post, and also seems to have broken the ortools installation on the build machine. So maybe this flag is a non-starter.
It seems like there is an incompatibility with the gcc on the desired machine & the wheel was compiled. Do you have advice for ways to debug further? Is the ortools wheel not compatible with Trusty because of the glibc issue?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/google/or-tools/issues/380#issuecomment-305353308, or mute the thread https://github.com/notifications/unsubscribe-auth/AKj17WIQkKz0alhaUpuHyLmM5RUqg5kEks5r_gJNgaJpZM4NdOYr .
Thanks @lperron, it's starting to make more sense to me now. We are really hoping to use the wheel since we use https://github.com/jazzband/pip-tools to catch dependency conflicts, and our infra is built around pip install
, but maybe we'll have to add custom code to use the egg, and we'll have to catch the dependency conflicts another way.
Can you advise where I should insert the flags? I think I understand how to do it for libortools but not the _pywrapXXX libraries
--- a/makefiles/Makefile.unix.mk
+++ b/makefiles/Makefile.unix.mk
@@ -254,4 +254,4 @@ CFLAGS = $(DEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \
JNIFLAGS = $(JNIDEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \
-Wno-deprecated $(PROTOBUF_INC) $(CBC_INC) $(CLP_INC) $(GLPK_INC) $(SCIP_INC) $(GUROBI_INC) $(CPLEX_INC) -DUSE_GLOP -DUSE_BOP
DEPENDENCIES_LNK = $(GLPK_LNK) $(CBC_LNK) $(CLP_LNK) $(SCIP_LNK) $(LM_LNK) $(GUROBI_LNK) $(CPLEX_LNK) $(GFLAGS_LNK) $(PROTOBUF_LNK) $(GLOG_LNK)
-OR_TOOLS_LD_FLAGS = $(ZLIB_LNK) $(SYS_LNK)
+OR_TOOLS_LD_FLAGS = $(ZLIB_LNK) $(SYS_LNK) -static -static-libgcc
It seems good.
Laurent Perron | Operations Research | lperron@google.com | (33) 1 42 68 53 00
2017-06-01 9:26 GMT+02:00 Max Rozentsveyg notifications@github.com:
Thanks @lperron https://github.com/lperron, it's starting to make more sense to me now. We are really hoping to use the wheel since we use https://github.com/jazzband/pip-tools to catch dependency conflicts, and our infra is built around pip install, but maybe we'll have to add custom code to use the egg, and & we'll have to catch the dependency conflicts another way.
Can you advise where I should insert the flags? I think I understand how to do it for libortools but not the _pywrapXXX libraries
--- a/makefiles/Makefile.unix.mk+++ b/makefiles/Makefile.unix.mk@@ -254,4 +254,4 @@ CFLAGS = $(DEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \ JNIFLAGS = $(JNIDEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \ -Wno-deprecated $(PROTOBUF_INC) $(CBC_INC) $(CLP_INC) $(GLPK_INC) $(SCIP_INC) $(GUROBI_INC) $(CPLEX_INC) -DUSE_GLOP -DUSE_BOP DEPENDENCIES_LNK = $(GLPK_LNK) $(CBC_LNK) $(CLP_LNK) $(SCIP_LNK) $(LM_LNK) $(GUROBI_LNK) $(CPLEX_LNK) $(GFLAGS_LNK) $(PROTOBUF_LNK) $(GLOG_LNK)-OR_TOOLS_LD_FLAGS = $(ZLIB_LNK) $(SYS_LNK)+OR_TOOLS_LD_FLAGS = $(ZLIB_LNK) $(SYS_LNK) -static -static-libgcc
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/google/or-tools/issues/380#issuecomment-305411688, or mute the thread https://github.com/notifications/unsubscribe-auth/AKj17Tac7OdDoggzU9qHF3FKEJ_Djqbxks5r_meRgaJpZM4NdOYr .
@lperron wanted to note that I see there were some changes recently but my branch is still against 88bf683de023c48b9b859c203fe865e411ecffc2. Trying with the below changes:
diff --git a/makefiles/Makefile.python.mk b/makefiles/Makefile.python.mk
index 16ae0b8..80165a8 100755
--- a/makefiles/Makefile.python.mk
+++ b/makefiles/Makefile.python.mk
@@ -316,7 +316,7 @@ else
ifeq ($(PLATFORM),MACOSX)
cd $(PYPI_ARCHIVE_TEMP_DIR)/ortools && $(PYTHON_EXECUTABLE) setup.py bdist_egg bdist_wheel
else
- cd $(PYPI_ARCHIVE_TEMP_DIR)/ortools && $(PYTHON_EXECUTABLE) setup.py bdist_egg
+ cd $(PYPI_ARCHIVE_TEMP_DIR)/ortools && $(PYTHON_EXECUTABLE) setup.py bdist_egg bdist_wheel
endif
endif
cd $(PYPI_ARCHIVE_TEMP_DIR)/ortools && twine upload dist/*
diff --git a/makefiles/Makefile.unix.mk b/makefiles/Makefile.unix.mk
index c0ec077..04a8f7c 100644
--- a/makefiles/Makefile.unix.mk
+++ b/makefiles/Makefile.unix.mk
@@ -253,4 +253,4 @@ CFLAGS = $(DEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \
JNIFLAGS = $(JNIDEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \
-Wno-deprecated $(PROTOBUF_INC) $(CBC_INC) $(CLP_INC) $(GLPK_INC) $(SCIP_INC) $(GUROBI_INC) $(CPLEX_INC) -DUSE_GLOP -DUSE_BOP
DEPENDENCIES_LNK = $(GLPK_LNK) $(CBC_LNK) $(CLP_LNK) $(SCIP_LNK) $(LM_LNK) $(GUROBI_LNK) $(CPLEX_LNK) $(GFLAGS_LNK) $(PROTOBUF_LNK) $(GLOG_LNK)
-OR_TOOLS_LD_FLAGS = $(ZLIB_LNK) $(SYS_LNK)
+OR_TOOLS_LD_FLAGS = $(ZLIB_LNK) $(SYS_LNK) -static -static-libgcc
Gave the below error
g++ -shared \
-o lib/libortools.so \
objs/base/bitmap.o objs/base/callback.o objs/base/file.o objs/base/filelinereader.o objs/base/join.o objs/base/mutex.o objs/base/numbers.o objs/base/random.o objs/base/recordio.o objs/base/split.o objs/base/stringpiece.o objs/base/stringprintf.o objs/base/sysinfo.o objs/base/threadpool.o objs/base/timer.o objs/base/time_support.o \
objs/util/bitset.o objs/util/cached_log.o objs/util/fp_utils.o objs/util/graph_export.o objs/util/piecewise_linear_function.o objs/util/proto_tools.o objs/util/range_query_function.o objs/util/rational_approximation.o objs/util/rcpsp_parser.o objs/util/sorted_interval_list.o objs/util/stats.o objs/util/time_limit.o objs/util/xml_helper.o \
objs/lp_data/lp_data.o objs/lp_data/lp_decomposer.o objs/lp_data/lp_print_utils.o objs/lp_data/lp_types.o objs/lp_data/lp_utils.o objs/lp_data/matrix_scaler.o objs/lp_data/matrix_utils.o objs/lp_data/mps_reader.o objs/lp_data/proto_utils.o objs/lp_data/sparse.o objs/lp_data/sparse_column.o \
objs/glop/basis_representation.o objs/glop/dual_edge_norms.o objs/glop/entering_variable.o objs/glop/initial_basis.o objs/glop/lp_solver.o objs/glop/lu_factorization.o objs/glop/markowitz.o objs/glop/preprocessor.o objs/glop/primal_edge_norms.o objs/glop/reduced_costs.o objs/glop/revised_simplex.o objs/glop/status.o objs/glop/update_row.o objs/glop/variables_info.o objs/glop/variable_values.o objs/glop/parameters.pb.o \
objs/graph/assignment.o objs/graph/astar.o objs/graph/bellman_ford.o objs/graph/cliques.o objs/graph/dijkstra.o objs/graph/linear_assignment.o objs/graph/max_flow.o objs/graph/min_cost_flow.o objs/graph/shortestpaths.o objs/graph/util.o objs/graph/flow_problem.pb.o \
objs/algorithms/dynamic_partition.o objs/algorithms/dynamic_permutation.o objs/algorithms/find_graph_symmetries.o objs/algorithms/hungarian.o objs/algorithms/knapsack_solver.o objs/algorithms/sparse_permutation.o \
objs/sat/boolean_problem.o objs/sat/clause.o objs/sat/cp_constraints.o objs/sat/cp_model_checker.o objs/sat/cp_model_presolve.o objs/sat/cp_model_solver.o objs/sat/cp_model_utils.o objs/sat/cumulative.o objs/sat/disjunctive.o objs/sat/drat.o objs/sat/encoding.o objs/sat/flow_costs.o objs/sat/integer.o objs/sat/integer_expr.o objs/sat/intervals.o objs/sat/linear_programming_constraint.o objs/sat/lp_utils.o objs/sat/no_cycle.o objs/sat/optimization.o objs/sat/overload_checker.o objs/sat/pb_constraint.o objs/sat/precedences.o objs/sat/sat_solver.o objs/sat/simplification.o objs/sat/symmetry.o objs/sat/table.o objs/sat/theta_tree.o objs/sat/timetable.o objs/sat/timetable_edgefinding.o objs/sat/util.o objs/sat/boolean_problem.pb.o objs/sat/cp_model.pb.o objs/sat/sat_parameters.pb.o \
objs/bop/bop_base.o objs/bop/bop_fs.o objs/bop/bop_lns.o objs/bop/bop_ls.o objs/bop/bop_portfolio.o objs/bop/bop_solution.o objs/bop/bop_solver.o objs/bop/bop_util.o objs/bop/complete_optimizer.o objs/bop/integral_solver.o objs/bop/bop_parameters.pb.o \
objs/linear_solver/bop_interface.o objs/linear_solver/cbc_interface.o objs/linear_solver/clp_interface.o objs/linear_solver/cplex_interface.o objs/linear_solver/glop_interface.o objs/linear_solver/glop_utils.o objs/linear_solver/glpk_interface.o objs/linear_solver/gurobi_interface.o objs/linear_solver/linear_expr.o objs/linear_solver/linear_solver.o objs/linear_solver/model_exporter.o objs/linear_solver/model_validator.o objs/linear_solver/scip_interface.o objs/linear_solver/linear_solver.pb.o \
objs/constraint_solver/ac4_mdd_reset_table.o objs/constraint_solver/ac4r_table.o objs/constraint_solver/alldiff_cst.o objs/constraint_solver/assignment.o objs/constraint_solver/collect_variables.o objs/constraint_solver/constraints.o objs/constraint_solver/constraint_solver.o objs/constraint_solver/count_cst.o objs/constraint_solver/default_search.o objs/constraint_solver/demon_profiler.o objs/constraint_solver/deviation.o objs/constraint_solver/diffn.o objs/constraint_solver/element.o objs/constraint_solver/expr_array.o objs/constraint_solver/expr_cst.o objs/constraint_solver/expressions.o objs/constraint_solver/gcc.o objs/constraint_solver/graph_constraints.o objs/constraint_solver/hybrid.o objs/constraint_solver/interval.o objs/constraint_solver/io.o objs/constraint_solver/local_search.o objs/constraint_solver/model_cache.o objs/constraint_solver/nogoods.o objs/constraint_solver/pack.o objs/constraint_solver/range_cst.o objs/constraint_solver/resource.o objs/constraint_solver/routing.o objs/constraint_solver/routing_flags.o objs/constraint_solver/routing_neighborhoods.o objs/constraint_solver/routing_search.o objs/constraint_solver/sat_constraint.o objs/constraint_solver/sched_constraints.o objs/constraint_solver/sched_expr.o objs/constraint_solver/sched_search.o objs/constraint_solver/search.o objs/constraint_solver/softgcc.o objs/constraint_solver/table.o objs/constraint_solver/timetabling.o objs/constraint_solver/trace.o objs/constraint_solver/tree_monitor.o objs/constraint_solver/utilities.o objs/constraint_solver/visitor.o objs/constraint_solver/assignment.pb.o objs/constraint_solver/demon_profiler.pb.o objs/constraint_solver/model.pb.o objs/constraint_solver/routing_enums.pb.o objs/constraint_solver/routing_parameters.pb.o objs/constraint_solver/search_limit.pb.o objs/constraint_solver/solver_parameters.pb.o \
/home/maxr/src/or-tools/dependencies/install/lib/libCbcSolver.a /home/maxr/src/or-tools/dependencies/install/lib/libCbc.a /home/maxr/src/or-tools/dependencies/install/lib/libCgl.a /home/maxr/src/or-tools/dependencies/install/lib/libOsi.a /home/maxr/src/or-tools/dependencies/install/lib/libOsiCbc.a /home/maxr/src/or-tools/dependencies/install/lib/libOsiClp.a /home/maxr/src/or-tools/dependencies/install/lib/libClp.a /home/maxr/src/or-tools/dependencies/install/lib/libCoinUtils.a /home/maxr/src/or-tools/dependencies/install/lib/libgflags.a /home/maxr/src/or-tools/dependencies/install/lib/libprotobuf.a /home/maxr/src/or-tools/dependencies/install/lib/libglog.a \
-lz -lrt -lpthread -static -static-libgcc
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/5/crtbeginT.o: relocation R_X86_64_32 against `__TMC_END__' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/5/crtbeginT.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
makefiles/Makefile.cpp.mk:628: recipe for target 'lib/libortools.so' failed
make: *** [lib/libortools.so] Error 1
Should I add -fPIC
to LINK_CMD
in Makefile.unix.mk
and retry, or another flag/config? Should I pass on the current route and try the manylinux approach you mentioned? Thanks for all the help so far!
No, it has to be done during compilation of .cc into .o. Can you dig and try to find with library (it should be a dependency) is compiled with -fPIC.
BTW, I just compile on linux, and it worked flawlessly.
Laurent Perron | Operations Research | lperron@google.com | (33) 1 42 68 53 00
2017-06-01 20:36 GMT+02:00 Max Rozentsveyg notifications@github.com:
@lperron https://github.com/lperron wanted to note that I see there were some changes recently but my branch is still against 88bf683 https://github.com/google/or-tools/commit/88bf683de023c48b9b859c203fe865e411ecffc2. Trying with the below changes:
diff --git a/makefiles/Makefile.python.mk b/makefiles/Makefile.python.mk index 16ae0b8..80165a8 100755--- a/makefiles/Makefile.python.mk+++ b/makefiles/Makefile.python.mk@@ -316,7 +316,7 @@ else ifeq ($(PLATFORM),MACOSX) cd $(PYPI_ARCHIVE_TEMP_DIR)/ortools && $(PYTHON_EXECUTABLE) setup.py bdist_egg bdist_wheel else- cd $(PYPI_ARCHIVE_TEMP_DIR)/ortools && $(PYTHON_EXECUTABLE) setup.py bdist_egg+ cd $(PYPI_ARCHIVE_TEMP_DIR)/ortools && $(PYTHON_EXECUTABLE) setup.py bdist_egg bdist_wheel endif endif cd $(PYPI_ARCHIVE_TEMP_DIR)/ortools && twine upload dist/*diff --git a/makefiles/Makefile.unix.mk b/makefiles/Makefile.unix.mk index c0ec077..04a8f7c 100644--- a/makefiles/Makefile.unix.mk+++ b/makefiles/Makefile.unix.mk@@ -253,4 +253,4 @@ CFLAGS = $(DEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \ JNIFLAGS = $(JNIDEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \ -Wno-deprecated $(PROTOBUF_INC) $(CBC_INC) $(CLP_INC) $(GLPK_INC) $(SCIP_INC) $(GUROBI_INC) $(CPLEX_INC) -DUSE_GLOP -DUSE_BOP DEPENDENCIES_LNK = $(GLPK_LNK) $(CBC_LNK) $(CLP_LNK) $(SCIP_LNK) $(LM_LNK) $(GUROBI_LNK) $(CPLEX_LNK) $(GFLAGS_LNK) $(PROTOBUF_LNK) $(GLOG_LNK)-OR_TOOLS_LD_FLAGS = $(ZLIB_LNK) $(SYS_LNK)+OR_TOOLS_LD_FLAGS = $(ZLIB_LNK) $(SYS_LNK) -static -static-libgcc
Gave the below error
g++ -shared \ -o lib/libortools.so \ objs/base/bitmap.o objs/base/callback.o objs/base/file.o objs/base/filelinereader.o objs/base/join.o objs/base/mutex.o objs/base/numbers.o objs/base/random.o objs/base/recordio.o objs/base/split.o objs/base/stringpiece.o objs/base/stringprintf.o objs/base/sysinfo.o objs/base/threadpool.o objs/base/timer.o objs/base/time_support.o \ objs/util/bitset.o objs/util/cached_log.o objs/util/fp_utils.o objs/util/graph_export.o objs/util/piecewise_linear_function.o objs/util/proto_tools.o objs/util/range_query_function.o objs/util/rational_approximation.o objs/util/rcpsp_parser.o objs/util/sorted_interval_list.o objs/util/stats.o objs/util/time_limit.o objs/util/xml_helper.o \ objs/lp_data/lp_data.o objs/lp_data/lp_decomposer.o objs/lp_data/lp_print_utils.o objs/lp_data/lp_types.o objs/lp_data/lp_utils.o objs/lp_data/matrix_scaler.o objs/lp_data/matrix_utils.o objs/lp_data/mps_reader.o objs/lp_data/proto_utils.o objs/lp_data/sparse.o objs/lp_data/sparse_column.o \ objs/glop/basis_representation.o objs/glop/dual_edge_norms.o objs/glop/entering_variable.o objs/glop/initial_basis.o objs/glop/lp_solver.o objs/glop/lu_factorization.o objs/glop/markowitz.o objs/glop/preprocessor.o objs/glop/primal_edge_norms.o objs/glop/reduced_costs.o objs/glop/revised_simplex.o objs/glop/status.o objs/glop/update_row.o objs/glop/variables_info.o objs/glop/variable_values.o objs/glop/parameters.pb.o \ objs/graph/assignment.o objs/graph/astar.o objs/graph/bellman_ford.o objs/graph/cliques.o objs/graph/dijkstra.o objs/graph/linear_assignment.o objs/graph/max_flow.o objs/graph/min_cost_flow.o objs/graph/shortestpaths.o objs/graph/util.o objs/graph/flow_problem.pb.o \ objs/algorithms/dynamic_partition.o objs/algorithms/dynamic_permutation.o objs/algorithms/find_graph_symmetries.o objs/algorithms/hungarian.o objs/algorithms/knapsack_solver.o objs/algorithms/sparse_permutation.o \ objs/sat/boolean_problem.o objs/sat/clause.o objs/sat/cp_constraints.o objs/sat/cp_model_checker.o objs/sat/cp_model_presolve.o objs/sat/cp_model_solver.o objs/sat/cp_model_utils.o objs/sat/cumulative.o objs/sat/disjunctive.o objs/sat/drat.o objs/sat/encoding.o objs/sat/flow_costs.o objs/sat/integer.o objs/sat/integer_expr.o objs/sat/intervals.o objs/sat/linear_programming_constraint.o objs/sat/lp_utils.o objs/sat/no_cycle.o objs/sat/optimization.o objs/sat/overload_checker.o objs/sat/pb_constraint.o objs/sat/precedences.o objs/sat/sat_solver.o objs/sat/simplification.o objs/sat/symmetry.o objs/sat/table.o objs/sat/theta_tree.o objs/sat/timetable.o objs/sat/timetable_edgefinding.o objs/sat/util.o objs/sat/boolean_problem.pb.o objs/sat/cp_model.pb.o objs/sat/sat_parameters.pb.o \ objs/bop/bop_base.o objs/bop/bop_fs.o objs/bop/bop_lns.o objs/bop/bop_ls.o objs/bop/bop_portfolio.o objs/bop/bop_solution.o objs/bop/bop_solver.o objs/bop/bop_util.o objs/bop/complete_optimizer.o objs/bop/integral_solver.o objs/bop/bop_parameters.pb.o \ objs/linear_solver/bop_interface.o objs/linear_solver/cbc_interface.o objs/linear_solver/clp_interface.o objs/linear_solver/cplex_interface.o objs/linear_solver/glop_interface.o objs/linear_solver/glop_utils.o objs/linear_solver/glpk_interface.o objs/linear_solver/gurobi_interface.o objs/linear_solver/linear_expr.o objs/linear_solver/linear_solver.o objs/linear_solver/model_exporter.o objs/linear_solver/model_validator.o objs/linear_solver/scip_interface.o objs/linear_solver/linear_solver.pb.o \ objs/constraint_solver/ac4_mdd_reset_table.o objs/constraint_solver/ac4r_table.o objs/constraint_solver/alldiff_cst.o objs/constraint_solver/assignment.o objs/constraint_solver/collect_variables.o objs/constraint_solver/constraints.o objs/constraint_solver/constraint_solver.o objs/constraint_solver/count_cst.o objs/constraint_solver/default_search.o objs/constraint_solver/demon_profiler.o objs/constraint_solver/deviation.o objs/constraint_solver/diffn.o objs/constraint_solver/element.o objs/constraint_solver/expr_array.o objs/constraint_solver/expr_cst.o objs/constraint_solver/expressions.o objs/constraint_solver/gcc.o objs/constraint_solver/graph_constraints.o objs/constraint_solver/hybrid.o objs/constraint_solver/interval.o objs/constraint_solver/io.o objs/constraint_solver/local_search.o objs/constraint_solver/model_cache.o objs/constraint_solver/nogoods.o objs/constraint_solver/pack.o objs/constraint_solver/range_cst.o objs/constraint_solver/resource.o objs/constraint_solver/routing.o objs/constraint_solver/routing_flags.o objs/constraint_solver/routing_neighborhoods.o objs/constraint_solver/routing_search.o objs/constraint_solver/sat_constraint.o objs/constraint_solver/sched_constraints.o objs/constraint_solver/sched_expr.o objs/constraint_solver/sched_search.o objs/constraint_solver/search.o objs/constraint_solver/softgcc.o objs/constraint_solver/table.o objs/constraint_solver/timetabling.o objs/constraint_solver/trace.o objs/constraint_solver/tree_monitor.o objs/constraint_solver/utilities.o objs/constraint_solver/visitor.o objs/constraint_solver/assignment.pb.o objs/constraint_solver/demon_profiler.pb.o objs/constraint_solver/model.pb.o objs/constraint_solver/routing_enums.pb.o objs/constraint_solver/routing_parameters.pb.o objs/constraint_solver/search_limit.pb.o objs/constraint_solver/solver_parameters.pb.o \ /home/maxr/src/or-tools/dependencies/install/lib/libCbcSolver.a /home/maxr/src/or-tools/dependencies/install/lib/libCbc.a /home/maxr/src/or-tools/dependencies/install/lib/libCgl.a /home/maxr/src/or-tools/dependencies/install/lib/libOsi.a /home/maxr/src/or-tools/dependencies/install/lib/libOsiCbc.a /home/maxr/src/or-tools/dependencies/install/lib/libOsiClp.a /home/maxr/src/or-tools/dependencies/install/lib/libClp.a /home/maxr/src/or-tools/dependencies/install/lib/libCoinUtils.a /home/maxr/src/or-tools/dependencies/install/lib/libgflags.a /home/maxr/src/or-tools/dependencies/install/lib/libprotobuf.a /home/maxr/src/or-tools/dependencies/install/lib/libglog.a \ -lz -lrt -lpthread -static -static-libgcc /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/5/crtbeginT.o: relocation R_X86_64_32 against `__TMC_END__' can not be used when making a shared object; recompile with -fPIC /usr/lib/gcc/x86_64-linux-gnu/5/crtbeginT.o: error adding symbols: Bad value collect2: error: ld returned 1 exit status makefiles/Makefile.cpp.mk:628: recipe for target 'lib/libortools.so' failed make: *** [lib/libortools.so] Error 1
Should I add -fPIC to LINK_CMD in Makefile.unix.mk and retry, or another flag/config? Should I pass on the current route and try the manylinux approach you mentioned? Thanks for all the help so far!
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/google/or-tools/issues/380#issuecomment-305581723, or mute the thread https://github.com/notifications/unsubscribe-auth/AKj17Y680G26DwsaUNnP9JxgZ_RrSkP2ks5r_wS0gaJpZM4NdOYr .
I take it back, glibc is not compiled with -fPIC so it does not work. shit
Laurent Perron | Operations Research | lperron@google.com | (33) 1 42 68 53 00
2017-06-01 21:09 GMT+02:00 Laurent Perron lperron@google.com:
No, it has to be done during compilation of .cc into .o. Can you dig and try to find with library (it should be a dependency) is compiled with -fPIC.
BTW, I just compile on linux, and it worked flawlessly.
Laurent Perron | Operations Research | lperron@google.com | (33) 1 42 68 53 00
2017-06-01 20:36 GMT+02:00 Max Rozentsveyg notifications@github.com:
@lperron https://github.com/lperron wanted to note that I see there were some changes recently but my branch is still against 88bf683 https://github.com/google/or-tools/commit/88bf683de023c48b9b859c203fe865e411ecffc2. Trying with the below changes:
diff --git a/makefiles/Makefile.python.mk b/makefiles/Makefile.python.mk index 16ae0b8..80165a8 100755--- a/makefiles/Makefile.python.mk+++ b/makefiles/Makefile.python.mk@@ -316,7 +316,7 @@ else ifeq ($(PLATFORM),MACOSX) cd $(PYPI_ARCHIVE_TEMP_DIR)/ortools && $(PYTHON_EXECUTABLE) setup.py bdist_egg bdist_wheel else- cd $(PYPI_ARCHIVE_TEMP_DIR)/ortools && $(PYTHON_EXECUTABLE) setup.py bdist_egg+ cd $(PYPI_ARCHIVE_TEMP_DIR)/ortools && $(PYTHON_EXECUTABLE) setup.py bdist_egg bdist_wheel endif endif cd $(PYPI_ARCHIVE_TEMP_DIR)/ortools && twine upload dist/*diff --git a/makefiles/Makefile.unix.mk b/makefiles/Makefile.unix.mk index c0ec077..04a8f7c 100644--- a/makefiles/Makefile.unix.mk+++ b/makefiles/Makefile.unix.mk@@ -253,4 +253,4 @@ CFLAGS = $(DEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \ JNIFLAGS = $(JNIDEBUG) -I$(INC_DIR) -I$(EX_DIR) -I$(GEN_DIR) $(GFLAGS_INC) $(ARCH) \ -Wno-deprecated $(PROTOBUF_INC) $(CBC_INC) $(CLP_INC) $(GLPK_INC) $(SCIP_INC) $(GUROBI_INC) $(CPLEX_INC) -DUSE_GLOP -DUSE_BOP DEPENDENCIES_LNK = $(GLPK_LNK) $(CBC_LNK) $(CLP_LNK) $(SCIP_LNK) $(LM_LNK) $(GUROBI_LNK) $(CPLEX_LNK) $(GFLAGS_LNK) $(PROTOBUF_LNK) $(GLOG_LNK)-OR_TOOLS_LD_FLAGS = $(ZLIB_LNK) $(SYS_LNK)+OR_TOOLS_LD_FLAGS = $(ZLIB_LNK) $(SYS_LNK) -static -static-libgcc
Gave the below error
g++ -shared \ -o lib/libortools.so \ objs/base/bitmap.o objs/base/callback.o objs/base/file.o objs/base/filelinereader.o objs/base/join.o objs/base/mutex.o objs/base/numbers.o objs/base/random.o objs/base/recordio.o objs/base/split.o objs/base/stringpiece.o objs/base/stringprintf.o objs/base/sysinfo.o objs/base/threadpool.o objs/base/timer.o objs/base/time_support.o \ objs/util/bitset.o objs/util/cached_log.o objs/util/fp_utils.o objs/util/graph_export.o objs/util/piecewise_linear_function.o objs/util/proto_tools.o objs/util/range_query_function.o objs/util/rational_approximation.o objs/util/rcpsp_parser.o objs/util/sorted_interval_list.o objs/util/stats.o objs/util/time_limit.o objs/util/xml_helper.o \ objs/lp_data/lp_data.o objs/lp_data/lp_decomposer.o objs/lp_data/lp_print_utils.o objs/lp_data/lp_types.o objs/lp_data/lp_utils.o objs/lp_data/matrix_scaler.o objs/lp_data/matrix_utils.o objs/lp_data/mps_reader.o objs/lp_data/proto_utils.o objs/lp_data/sparse.o objs/lp_data/sparse_column.o \ objs/glop/basis_representation.o objs/glop/dual_edge_norms.o objs/glop/entering_variable.o objs/glop/initial_basis.o objs/glop/lp_solver.o objs/glop/lu_factorization.o objs/glop/markowitz.o objs/glop/preprocessor.o objs/glop/primal_edge_norms.o objs/glop/reduced_costs.o objs/glop/revised_simplex.o objs/glop/status.o objs/glop/update_row.o objs/glop/variables_info.o objs/glop/variable_values.o objs/glop/parameters.pb.o \ objs/graph/assignment.o objs/graph/astar.o objs/graph/bellman_ford.o objs/graph/cliques.o objs/graph/dijkstra.o objs/graph/linear_assignment.o objs/graph/max_flow.o objs/graph/min_cost_flow.o objs/graph/shortestpaths.o objs/graph/util.o objs/graph/flow_problem.pb.o \ objs/algorithms/dynamic_partition.o objs/algorithms/dynamic_permutation.o objs/algorithms/find_graph_symmetries.o objs/algorithms/hungarian.o objs/algorithms/knapsack_solver.o objs/algorithms/sparse_permutation.o \ objs/sat/boolean_problem.o objs/sat/clause.o objs/sat/cp_constraints.o objs/sat/cp_model_checker.o objs/sat/cp_model_presolve.o objs/sat/cp_model_solver.o objs/sat/cp_model_utils.o objs/sat/cumulative.o objs/sat/disjunctive.o objs/sat/drat.o objs/sat/encoding.o objs/sat/flow_costs.o objs/sat/integer.o objs/sat/integer_expr.o objs/sat/intervals.o objs/sat/linear_programming_constraint.o objs/sat/lp_utils.o objs/sat/no_cycle.o objs/sat/optimization.o objs/sat/overload_checker.o objs/sat/pb_constraint.o objs/sat/precedences.o objs/sat/sat_solver.o objs/sat/simplification.o objs/sat/symmetry.o objs/sat/table.o objs/sat/theta_tree.o objs/sat/timetable.o objs/sat/timetable_edgefinding.o objs/sat/util.o objs/sat/boolean_problem.pb.o objs/sat/cp_model.pb.o objs/sat/sat_parameters.pb.o \ objs/bop/bop_base.o objs/bop/bop_fs.o objs/bop/bop_lns.o objs/bop/bop_ls.o objs/bop/bop_portfolio.o objs/bop/bop_solution.o objs/bop/bop_solver.o objs/bop/bop_util.o objs/bop/complete_optimizer.o objs/bop/integral_solver.o objs/bop/bop_parameters.pb.o \ objs/linear_solver/bop_interface.o objs/linear_solver/cbc_interface.o objs/linear_solver/clp_interface.o objs/linear_solver/cplex_interface.o objs/linear_solver/glop_interface.o objs/linear_solver/glop_utils.o objs/linear_solver/glpk_interface.o objs/linear_solver/gurobi_interface.o objs/linear_solver/linear_expr.o objs/linear_solver/linear_solver.o objs/linear_solver/model_exporter.o objs/linear_solver/model_validator.o objs/linear_solver/scip_interface.o objs/linear_solver/linear_solver.pb.o \ objs/constraint_solver/ac4_mdd_reset_table.o objs/constraint_solver/ac4r_table.o objs/constraint_solver/alldiff_cst.o objs/constraint_solver/assignment.o objs/constraint_solver/collect_variables.o objs/constraint_solver/constraints.o objs/constraint_solver/constraint_solver.o objs/constraint_solver/count_cst.o objs/constraint_solver/default_search.o objs/constraint_solver/demon_profiler.o objs/constraint_solver/deviation.o objs/constraint_solver/diffn.o objs/constraint_solver/element.o objs/constraint_solver/expr_array.o objs/constraint_solver/expr_cst.o objs/constraint_solver/expressions.o objs/constraint_solver/gcc.o objs/constraint_solver/graph_constraints.o objs/constraint_solver/hybrid.o objs/constraint_solver/interval.o objs/constraint_solver/io.o objs/constraint_solver/local_search.o objs/constraint_solver/model_cache.o objs/constraint_solver/nogoods.o objs/constraint_solver/pack.o objs/constraint_solver/range_cst.o objs/constraint_solver/resource.o objs/constraint_solver/routing.o objs/constraint_solver/routing_flags.o objs/constraint_solver/routing_neighborhoods.o objs/constraint_solver/routing_search.o objs/constraint_solver/sat_constraint.o objs/constraint_solver/sched_constraints.o objs/constraint_solver/sched_expr.o objs/constraint_solver/sched_search.o objs/constraint_solver/search.o objs/constraint_solver/softgcc.o objs/constraint_solver/table.o objs/constraint_solver/timetabling.o objs/constraint_solver/trace.o objs/constraint_solver/tree_monitor.o objs/constraint_solver/utilities.o objs/constraint_solver/visitor.o objs/constraint_solver/assignment.pb.o objs/constraint_solver/demon_profiler.pb.o objs/constraint_solver/model.pb.o objs/constraint_solver/routing_enums.pb.o objs/constraint_solver/routing_parameters.pb.o objs/constraint_solver/search_limit.pb.o objs/constraint_solver/solver_parameters.pb.o \ /home/maxr/src/or-tools/dependencies/install/lib/libCbcSolver.a /home/maxr/src/or-tools/dependencies/install/lib/libCbc.a /home/maxr/src/or-tools/dependencies/install/lib/libCgl.a /home/maxr/src/or-tools/dependencies/install/lib/libOsi.a /home/maxr/src/or-tools/dependencies/install/lib/libOsiCbc.a /home/maxr/src/or-tools/dependencies/install/lib/libOsiClp.a /home/maxr/src/or-tools/dependencies/install/lib/libClp.a /home/maxr/src/or-tools/dependencies/install/lib/libCoinUtils.a /home/maxr/src/or-tools/dependencies/install/lib/libgflags.a /home/maxr/src/or-tools/dependencies/install/lib/libprotobuf.a /home/maxr/src/or-tools/dependencies/install/lib/libglog.a \ -lz -lrt -lpthread -static -static-libgcc /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/5/crtbeginT.o: relocation R_X86_64_32 against `__TMC_END__' can not be used when making a shared object; recompile with -fPIC /usr/lib/gcc/x86_64-linux-gnu/5/crtbeginT.o: error adding symbols: Bad value collect2: error: ld returned 1 exit status makefiles/Makefile.cpp.mk:628: recipe for target 'lib/libortools.so' failed make: *** [lib/libortools.so] Error 1
Should I add -fPIC to LINK_CMD in Makefile.unix.mk and retry, or another flag/config? Should I pass on the current route and try the manylinux approach you mentioned? Thanks for all the help so far!
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/google/or-tools/issues/380#issuecomment-305581723, or mute the thread https://github.com/notifications/unsubscribe-auth/AKj17Y680G26DwsaUNnP9JxgZ_RrSkP2ks5r_wS0gaJpZM4NdOYr .
I'm also able to compile once passing the required flags to make python
, however, producing a wheel on Xenial that works on Trusty continues to have some issues.
re: egg, I tried installing the egg from pypi on Trusty and that fails with a similar error
$ easy_install ortools
Searching for ortools
Reading https://pypi.python.org/simple/ortools/
Downloading https://pypi.python.org/packages/27/49/f7546bdea4aaf05722b6a7796ee2fd69272ea869334720b04703ec29274d/ortools-6.0.4217-py2.7-linux-x86_64.egg#md5=4eb71b07792640f26b21e3470ab5c19f
Best match: ortools 6.0.4217
Processing ortools-6.0.4217-py2.7-linux-x86_64.egg
creating /usr/local/lib/service_venv/lib/python2.7/site-packages/ortools-6.0.4217-py2.7-linux-x86_64.egg
Extracting ortools-6.0.4217-py2.7-linux-x86_64.egg to /usr/local/lib/service_venv/lib/python2.7/site-packages
Adding ortools 6.0.4217 to easy-install.pth file
Installed /usr/local/lib/service_venv/lib/python2.7/site-packages/ortools-6.0.4217-py2.7-linux-x86_64.egg
Processing dependencies for ortools
Finished processing dependencies for ortools
$ python
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/service_venv/local/lib/python2.7/site-packages/ortools-6.0.4217-py2.7-linux-x86_64.egg/ortools/graph/pywrapgraph.py", line 17, in <module>
_pywrapgraph = swig_import_helper()
File "/usr/local/lib/service_venv/local/lib/python2.7/site-packages/ortools-6.0.4217-py2.7-linux-x86_64.egg/ortools/graph/pywrapgraph.py", line 16, in swig_import_helper
return importlib.import_module('_pywrapgraph')
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named _pywrapgraph
Is that expected? The README says Trusty is supported, but maybe that's only if you build from source?
Yes, but xenial is not down compatible with trusty. You can build on trusty and use on xenial, but not the reverse.
Laurent Perron | Operations Research | lperron@google.com | (33) 1 42 68 53 00
2017-06-02 1:59 GMT+02:00 Max Rozentsveyg notifications@github.com:
I'm also able to compile once passing the required flags to make python, however, producing a wheel on Xenial that works on Trusty continues to have some issues.
re: egg, I tried installing the egg from pypi on Trusty and that fails with a similar error
$ service_venv easy_install ortools Searching for ortools Reading https://pypi.python.org/simple/ortools/ Downloading https://pypi.python.org/packages/27/49/f7546bdea4aaf05722b6a7796ee2fd69272ea869334720b04703ec29274d/ortools-6.0.4217-py2.7-linux-x86_64.egg#md5=4eb71b07792640f26b21e3470ab5c19f Best match: ortools 6.0.4217 Processing ortools-6.0.4217-py2.7-linux-x86_64.egg creating /usr/local/lib/service_venv/lib/python2.7/site-packages/ortools-6.0.4217-py2.7-linux-x86_64.egg Extracting ortools-6.0.4217-py2.7-linux-x86_64.egg to /usr/local/lib/service_venv/lib/python2.7/site-packages Adding ortools 6.0.4217 to easy-install.pth file
Installed /usr/local/lib/service_venv/lib/python2.7/site-packages/ortools-6.0.4217-py2.7-linux-x86_64.egg Processing dependencies for ortools Finished processing dependencies for ortools
$ service_venv python Traceback (most recent call last): File "
", line 1, in File "/usr/local/lib/service_venv/local/lib/python2.7/site-packages/ortools-6.0.4217-py2.7-linux-x86_64.egg/ortools/graph/pywrapgraph.py", line 17, in _pywrapgraph = swig_import_helper() File "/usr/local/lib/service_venv/local/lib/python2.7/site-packages/ortools-6.0.4217-py2.7-linux-x86_64.egg/ortools/graph/pywrapgraph.py", line 16, in swig_import_helper return importlib.import_module('_pywrapgraph') File "/usr/lib/python2.7/importlib/init.py", line 37, in import_module import(name) ImportError: No module named _pywrapgraph Is that expected? The README says Trusty is supported, but maybe that's only if you build from source?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/google/or-tools/issues/380#issuecomment-305652414, or mute the thread https://github.com/notifications/unsubscribe-auth/AKj17ZA4Foc5cEPDJXjTas-ym9FAVE4wks5r_1BTgaJpZM4NdOYr .
@lperron good news, I was able to build an egg (and a wheel!) on Trusty that didn't have the import error by running a combination of the steps above. However we are wary to use/host the wheel I built internally, because it depends on me building it locally with custom work. Specifically here is what I had to work around to build a wheel on Trusty that I could use on a different machine:
patchelf
. I had to manually do make dependencies/install/bin/patchelf
. Without this, I see errors that say dependencies/install/bin/patchelf: not found
and the produces egg gives the No module named _pywrapgraph
error. But an egg and wheel with this change work fine. So I think patchelf
is not being built right, at least on Trusty.bdist_wheel
is not an option to setup.py
for Linux. I remember it was tried in d2cd773edbcad7269da9cccee173161c60f79a27 and it caused other issues. We would need to re-attempt that change.HEAD
produces a build that depends on protobuf==3.3.0
. We are still on 3.2.0
so being able to produce a Python library that uses >=3.2.0
would be great for us.Would fixing these issues and uploading a wheel to pypi be on your roadmap? We can also try to contribute upstream fixes for these issues (though we might need some guidance)
Thanks!
Hi,
Please check my last mail on docker support. You can now build python2 and python3 egg and wheel file for ubuntu 14.04, 16.04 and 17.04 with little effort.
This should simplify everything a lot.
I have pushed version 6.3 with support for multiple linux distributions. I have changed the name of the modules to reflect the linux distribution. So you can install ortools-ubuntu-14.04, ortools-ubuntu-16.04 on your machines.
Thanks
Hello, I'm following the instructions here to build the Python library but I'm getting a compiler error.
Repro steps:
The last command fails with
I'm on Ubuntu 14.04.5 with Python 2.7.6 and g++ version
Ubuntu 4.8.4-2ubuntu1~14.04.3
Any advice is appreciated. Thanks!