Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cannot install uwsgi from pypi on neither Ubuntu 18.04 nor 20.04 - cannot find -lintl #469

Open
mbdevpl opened this issue May 9, 2020 · 3 comments

Comments

@mbdevpl
Copy link

mbdevpl commented May 9, 2020

Python & pip versions:

$ python -VV
Python 3.8.1 (default, May  5 2020, 10:23:47) 
[GCC 9.3.0]
$ pip --version
pip 20.1 from /home/mateusz/Software/Spack/opt/spack/linux-ubuntu20.04-skylake/gcc-9.3.0/python-3.8.1-b3h7rovi53cugzcnikbxc6cfebsi3wgc/lib/python3.8/site-packages/pip (python 3.8)

Output when trying to install uwsgi:

$ pip install uwsgi
...
Installing collected packages: uwsgi
    Running setup.py install for uwsgi ... error
    ERROR: Command errored out with exit status 1:
     command: /home/mateusz/Software/Spack/opt/spack/linux-ubuntu20.04-skylake/gcc-9.3.0/python-3.8.1-b3h7rovi53cugzcnikbxc6cfebsi3wgc/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-h4esxi7p/uwsgi/setup.py'"'"'; __file__='"'"'/tmp/pip-install-h4esxi7p/uwsgi/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-wbdkmr6a/install-record.txt --single-version-externally-managed --compile --install-headers /home/mateusz/Software/Spack/opt/spack/linux-ubuntu20.04-skylake/gcc-9.3.0/python-3.8.1-b3h7rovi53cugzcnikbxc6cfebsi3wgc/include/python3.8/uwsgi
         cwd: /tmp/pip-install-h4esxi7p/uwsgi/
    Complete output (153 lines):
    /home/mateusz/Software/Spack/opt/spack/linux-ubuntu20.04-skylake/gcc-9.3.0/python-3.8.1-b3h7rovi53cugzcnikbxc6cfebsi3wgc/lib/python3.8/distutils/dist.py:274: UserWarning: Unknown distribution option: 'descriptions'
      warnings.warn(msg)
    running install
    using profile: buildconf/default.ini
    detected include path: ['/home/mateusz/Software/Spack/opt/spack/linux-ubuntu20.04-skylake/gcc-9.3.0/openblas-0.3.8-jzfc4ppetpsyrt4d4irmpfrftcp5h72a/include', '/home/mateusz/Software/Spack/opt/spack/linux-ubuntu20.04-skylake/gcc-9.3.0/python-3.8.1-b3h7rovi53cugzcnikbxc6cfebsi3wgc/include/python3.8', '/home/mateusz/Software/Spack/opt/spack/linux-ubuntu20.04-skylake/gcc-9.3.0/python-3.8.1-b3h7rovi53cugzcnikbxc6cfebsi3wgc/include', '/usr/lib/gcc/x86_64-linux-gnu/9/include', '/usr/local/include', '/usr/include/x86_64-linux-gnu', '/usr/include']
    Patching "bin_name" to properly install_scripts dir
    detected CPU cores: 8
    configured CFLAGS: -O2 -I. -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -DUWSGI_HAS_IFADDRS -DUWSGI_ZLIB -DUWSGI_LOCK_USE_MUTEX -DUWSGI_EVENT_USE_EPOLL -DUWSGI_EVENT_TIMER_USE_TIMERFD -DUWSGI_EVENT_FILEMONITOR_USE_INOTIFY  -DUWSGI_PCRE -DUWSGI_ROUTING -DUWSGI_CAP -DUWSGI_UUID -DUWSGI_VERSION="\"2.0.18\"" -DUWSGI_VERSION_BASE="2" -DUWSGI_VERSION_MAJOR="0" -DUWSGI_VERSION_MINOR="18" -DUWSGI_VERSION_REVISION="0" -DUWSGI_VERSION_CUSTOM="\"\"" -DUWSGI_YAML -DUWSGI_SSL -I/usr/include/libxml2 -DUWSGI_XML -DUWSGI_XML_LIBXML2 -DUWSGI_PLUGIN_DIR="\".\"" -DUWSGI_DECLARE_EMBEDDED_PLUGINS="UDEP(python);UDEP(gevent);UDEP(ping);UDEP(cache);UDEP(nagios);UDEP(rrdtool);UDEP(carbon);UDEP(rpc);UDEP(corerouter);UDEP(fastrouter);UDEP(http);UDEP(ugreen);UDEP(signal);UDEP(syslog);UDEP(rsyslog);UDEP(logsocket);UDEP(router_uwsgi);UDEP(router_redirect);UDEP(router_basicauth);UDEP(zergpool);UDEP(redislog);UDEP(mongodblog);UDEP(router_rewrite);UDEP(router_http);UDEP(logfile);UDEP(router_cache);UDEP(rawrouter);UDEP(router_static);UDEP(sslrouter);UDEP(spooler);UDEP(cheaper_busyness);UDEP(symcall);UDEP(transformation_tofile);UDEP(transformation_gzip);UDEP(transformation_chunked);UDEP(transformation_offload);UDEP(router_memcached);UDEP(router_redis);UDEP(router_hash);UDEP(router_expires);UDEP(router_metrics);UDEP(transformation_template);UDEP(stats_pusher_socket);" -DUWSGI_LOAD_EMBEDDED_PLUGINS="ULEP(python);ULEP(gevent);ULEP(ping);ULEP(cache);ULEP(nagios);ULEP(rrdtool);ULEP(carbon);ULEP(rpc);ULEP(corerouter);ULEP(fastrouter);ULEP(http);ULEP(ugreen);ULEP(signal);ULEP(syslog);ULEP(rsyslog);ULEP(logsocket);ULEP(router_uwsgi);ULEP(router_redirect);ULEP(router_basicauth);ULEP(zergpool);ULEP(redislog);ULEP(mongodblog);ULEP(router_rewrite);ULEP(router_http);ULEP(logfile);ULEP(router_cache);ULEP(rawrouter);ULEP(router_static);ULEP(sslrouter);ULEP(spooler);ULEP(cheaper_busyness);ULEP(symcall);ULEP(transformation_tofile);ULEP(transformation_gzip);ULEP(transformation_chunked);ULEP(transformation_offload);ULEP(router_memcached);ULEP(router_redis);ULEP(router_hash);ULEP(router_expires);ULEP(router_metrics);ULEP(transformation_template);ULEP(stats_pusher_socket);"
    *** uWSGI compiling server core ***
    core/utils.o is up to date
    core/protocol.o is up to date
    core/socket.o is up to date
    core/logging.o is up to date
    core/master.o is up to date
    core/master_utils.o is up to date
    core/emperor.o is up to date
    core/notify.o is up to date
    core/mule.o is up to date
    core/subscription.o is up to date
    core/stats.o is up to date
    core/sendfile.o is up to date
    core/async.o is up to date
    core/master_checks.o is up to date
    core/fifo.o is up to date
    core/offload.o is up to date
    core/io.o is up to date
    core/static.o is up to date
    core/websockets.o is up to date
    core/spooler.o is up to date
    core/snmp.o is up to date
    core/exceptions.o is up to date
    core/config.o is up to date
    core/setup_utils.o is up to date
    core/clock.o is up to date
    core/init.o is up to date
    core/buffer.o is up to date
    core/reader.o is up to date
    core/writer.o is up to date
    core/alarm.o is up to date
    core/cron.o is up to date
    core/hooks.o is up to date
    core/plugins.o is up to date
    core/lock.o is up to date
    core/cache.o is up to date
    core/daemons.o is up to date
    core/errors.o is up to date
    core/hash.o is up to date
    core/master_events.o is up to date
    core/chunked.o is up to date
    core/queue.o is up to date
    core/event.o is up to date
    core/signal.o is up to date
    core/strings.o is up to date
    core/progress.o is up to date
    core/timebomb.o is up to date
    core/ini.o is up to date
    core/fsmon.o is up to date
    core/mount.o is up to date
    core/metrics.o is up to date
    core/plugins_builder.o is up to date
    core/sharedarea.o is up to date
    core/rpc.o is up to date
    core/gateway.o is up to date
    core/loop.o is up to date
    core/cookie.o is up to date
    core/querystring.o is up to date
    core/rb_timers.o is up to date
    core/transformations.o is up to date
    core/uwsgi.o is up to date
    proto/base.o is up to date
    proto/uwsgi.o is up to date
    proto/http.o is up to date
    proto/fastcgi.o is up to date
    proto/scgi.o is up to date
    proto/puwsgi.o is up to date
    lib/linux_ns.o is up to date
    core/zlib.o is up to date
    core/regexp.o is up to date
    core/routing.o is up to date
    core/yaml.o is up to date
    core/ssl.o is up to date
    core/legion.o is up to date
    core/xmlconf.o is up to date
    [thread 3][/usr/bin/gcc-9 -pthread] core/dot_h.o
    [thread 2][/usr/bin/gcc-9 -pthread] core/config_py.o
    *** uWSGI compiling embedded plugins ***
    plugins/python/python_plugin.o is up to date
    plugins/python/pyutils.o is up to date
    plugins/python/pyloader.o is up to date
    plugins/python/wsgi_handlers.o is up to date
    plugins/python/wsgi_headers.o is up to date
    plugins/python/wsgi_subhandler.o is up to date
    plugins/python/web3_subhandler.o is up to date
    plugins/python/pump_subhandler.o is up to date
    plugins/python/gil.o is up to date
    plugins/python/uwsgi_pymodule.o is up to date
    plugins/python/profiler.o is up to date
    plugins/python/symimporter.o is up to date
    plugins/python/tracebacker.o is up to date
    plugins/python/raw.o is up to date
    plugins/gevent/gevent.o is up to date
    plugins/gevent/hooks.o is up to date
    plugins/ping/ping_plugin.o is up to date
    plugins/cache/cache.o is up to date
    plugins/nagios/nagios.o is up to date
    plugins/rrdtool/rrdtool.o is up to date
    plugins/carbon/carbon.o is up to date
    plugins/rpc/rpc_plugin.o is up to date
    plugins/corerouter/cr_common.o is up to date
    plugins/corerouter/cr_map.o is up to date
    plugins/corerouter/corerouter.o is up to date
    plugins/fastrouter/fastrouter.o is up to date
    plugins/http/http.o is up to date
    plugins/http/keepalive.o is up to date
    plugins/http/https.o is up to date
    plugins/http/spdy3.o is up to date
    plugins/ugreen/ugreen.o is up to date
    plugins/signal/signal_plugin.o is up to date
    plugins/syslog/syslog_plugin.o is up to date
    plugins/rsyslog/rsyslog_plugin.o is up to date
    plugins/logsocket/logsocket_plugin.o is up to date
    plugins/router_uwsgi/router_uwsgi.o is up to date
    plugins/router_redirect/router_redirect.o is up to date
    plugins/router_basicauth/router_basicauth.o is up to date
    plugins/zergpool/zergpool.o is up to date
    plugins/redislog/redislog_plugin.o is up to date
    plugins/mongodblog/mongodblog_plugin.o is up to date
    plugins/router_rewrite/router_rewrite.o is up to date
    plugins/router_http/router_http.o is up to date
    plugins/logfile/logfile.o is up to date
    plugins/router_cache/router_cache.o is up to date
    plugins/rawrouter/rawrouter.o is up to date
    plugins/router_static/router_static.o is up to date
    plugins/sslrouter/sslrouter.o is up to date
    plugins/spooler/spooler_plugin.o is up to date
    plugins/cheaper_busyness/cheaper_busyness.o is up to date
    plugins/symcall/symcall_plugin.o is up to date
    plugins/transformation_tofile/tofile.o is up to date
    plugins/transformation_gzip/gzip.o is up to date
    plugins/transformation_chunked/chunked.o is up to date
    plugins/transformation_offload/offload.o is up to date
    plugins/router_memcached/router_memcached.o is up to date
    plugins/router_redis/router_redis.o is up to date
    plugins/router_hash/router_hash.o is up to date
    plugins/router_expires/expires.o is up to date
    plugins/router_metrics/plugin.o is up to date
    plugins/transformation_template/tt.o is up to date
    plugins/stats_pusher_socket/plugin.o is up to date
    *** uWSGI linking ***
    /usr/bin/gcc-9 -pthread -o /home/mateusz/Software/Spack/opt/spack/linux-ubuntu20.04-skylake/gcc-9.3.0/python-3.8.1-b3h7rovi53cugzcnikbxc6cfebsi3wgc/bin/uwsgi -L/home/mateusz/Software/Spack/opt/spack/linux-ubuntu20.04-skylake/gcc-9.3.0/python-3.8.1-b3h7rovi53cugzcnikbxc6cfebsi3wgc/lib -Wl,-rpath,/home/mateusz/Software/Spack/opt/spack/linux-ubuntu20.04-skylake/gcc-9.3.0/python-3.8.1-b3h7rovi53cugzcnikbxc6cfebsi3wgc/lib core/utils.o core/protocol.o core/socket.o core/logging.o core/master.o core/master_utils.o core/emperor.o core/notify.o core/mule.o core/subscription.o core/stats.o core/sendfile.o core/async.o core/master_checks.o core/fifo.o core/offload.o core/io.o core/static.o core/websockets.o core/spooler.o core/snmp.o core/exceptions.o core/config.o core/setup_utils.o core/clock.o core/init.o core/buffer.o core/reader.o core/writer.o core/alarm.o core/cron.o core/hooks.o core/plugins.o core/lock.o core/cache.o core/daemons.o core/errors.o core/hash.o core/master_events.o core/chunked.o core/queue.o core/event.o core/signal.o core/strings.o core/progress.o core/timebomb.o core/ini.o core/fsmon.o core/mount.o core/metrics.o core/plugins_builder.o core/sharedarea.o core/rpc.o core/gateway.o core/loop.o core/cookie.o core/querystring.o core/rb_timers.o core/transformations.o core/uwsgi.o proto/base.o proto/uwsgi.o proto/http.o proto/fastcgi.o proto/scgi.o proto/puwsgi.o lib/linux_ns.o core/zlib.o core/regexp.o core/routing.o core/yaml.o core/ssl.o core/legion.o core/xmlconf.o core/dot_h.o core/config_py.o plugins/python/python_plugin.o plugins/python/pyutils.o plugins/python/pyloader.o plugins/python/wsgi_handlers.o plugins/python/wsgi_headers.o plugins/python/wsgi_subhandler.o plugins/python/web3_subhandler.o plugins/python/pump_subhandler.o plugins/python/gil.o plugins/python/uwsgi_pymodule.o plugins/python/profiler.o plugins/python/symimporter.o plugins/python/tracebacker.o plugins/python/raw.o plugins/gevent/gevent.o plugins/gevent/hooks.o plugins/ping/ping_plugin.o plugins/cache/cache.o plugins/nagios/nagios.o plugins/rrdtool/rrdtool.o plugins/carbon/carbon.o plugins/rpc/rpc_plugin.o plugins/corerouter/cr_common.o plugins/corerouter/cr_map.o plugins/corerouter/corerouter.o plugins/fastrouter/fastrouter.o plugins/http/http.o plugins/http/keepalive.o plugins/http/https.o plugins/http/spdy3.o plugins/ugreen/ugreen.o plugins/signal/signal_plugin.o plugins/syslog/syslog_plugin.o plugins/rsyslog/rsyslog_plugin.o plugins/logsocket/logsocket_plugin.o plugins/router_uwsgi/router_uwsgi.o plugins/router_redirect/router_redirect.o plugins/router_basicauth/router_basicauth.o plugins/zergpool/zergpool.o plugins/redislog/redislog_plugin.o plugins/mongodblog/mongodblog_plugin.o plugins/router_rewrite/router_rewrite.o plugins/router_http/router_http.o plugins/logfile/logfile.o plugins/router_cache/router_cache.o plugins/rawrouter/rawrouter.o plugins/router_static/router_static.o plugins/sslrouter/sslrouter.o plugins/spooler/spooler_plugin.o plugins/cheaper_busyness/cheaper_busyness.o plugins/symcall/symcall_plugin.o plugins/transformation_tofile/tofile.o plugins/transformation_gzip/gzip.o plugins/transformation_chunked/chunked.o plugins/transformation_offload/offload.o plugins/router_memcached/router_memcached.o plugins/router_redis/router_redis.o plugins/router_hash/router_hash.o plugins/router_expires/expires.o plugins/router_metrics/plugin.o plugins/transformation_template/tt.o plugins/stats_pusher_socket/plugin.o -lpthread -lm -rdynamic -ldl -lz -lpcre -lcap -luuid -lssl -lcrypto -lxml2 -lcrypt -lintl -lpthread -ldl -lutil -lm -lm -lpython3.8 -lcrypt
    /usr/bin/ld: cannot find -lintl
    collect2: error: ld returned 1 exit status
    *** error linking uWSGI ***
    ----------------------------------------
ERROR: Command errored out with exit status 1: /home/mateusz/Software/Spack/opt/spack/linux-ubuntu20.04-skylake/gcc-9.3.0/python-3.8.1-b3h7rovi53cugzcnikbxc6cfebsi3wgc/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-h4esxi7p/uwsgi/setup.py'"'"'; __file__='"'"'/tmp/pip-install-h4esxi7p/uwsgi/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-wbdkmr6a/install-record.txt --single-version-externally-managed --compile --install-headers /home/mateusz/Software/Spack/opt/spack/linux-ubuntu20.04-skylake/gcc-9.3.0/python-3.8.1-b3h7rovi53cugzcnikbxc6cfebsi3wgc/include/python3.8/uwsgi Check the logs for full command output.

Looking for packages that contains the missing intl library:

$ apt-file find "libintl.so"
gettext: /usr/lib/x86_64-linux-gnu/preloadable_libintl.so

... no such package.

Very Ugly Workaround™:

$ cd /usr/lib/x86_64-linux-gnu/
$ sudo ln -s preloadable_libintl.so libintl.so

Try again:

$ pip install uwsgi
Collecting uwsgi
  Using cached uwsgi-2.0.18.tar.gz (801 kB)
Building wheels for collected packages: uwsgi
  Building wheel for uwsgi (setup.py) ... done
  Created wheel for uwsgi: filename=uWSGI-2.0.18-cp38-cp38-linux_x86_64.whl size=593015 sha256=afce5422420cc6adcefd347bb765116186ff4cb80876e59603f8317b10250156
  Stored in directory: /home/mateusz/.cache/pip/wheels/48/07/77/7996e2077b5ab7ee02928e2338a970e18091bac789c62932c1
Successfully built uwsgi
Installing collected packages: uwsgi
Successfully installed uwsgi-2.0.18

Therefore the problem is that there is no package on Ubuntu 20.04 that contains exactly libintl.so, a compatible preloadable_libintl.so is available instead. Could the setup of uwsgi accomodate that?

In either case, it's not like uwsgi is not Ubuntu-20.04-ready, or Ubuntu 20.04 is not uwsgi-ready, because I think uwsgi is available in official Ubuntu repositories. Not sure what patch they use to enable it though.

@mbdevpl mbdevpl changed the title cannot install uwsgi from pypi on Ubuntu 20.08 - cannot find -lintl cannot install uwsgi from pypi on Ubuntu 20.04 - cannot find -lintl May 9, 2020
@mbdevpl mbdevpl changed the title cannot install uwsgi from pypi on Ubuntu 20.04 - cannot find -lintl cannot install uwsgi from pypi on neither Ubuntu 18.04 nor 20.04 - cannot find -lintl May 9, 2020
@mbdevpl
Copy link
Author

mbdevpl commented May 9, 2020

Encountering exact same issue on Ubuntu 18.04 with following Python & pip:

$ python -VV
Python 3.8.2 (default, Mar 15 2020, 01:53:27) 
[GCC 8.3.0]
$ pip --version
pip 20.1 from /home/mateusz/Software/Spack/opt/spack/linux-ubuntu18.04-x86_64/gcc-8.3.0-26/python-3.8.2-xdclm7ardyhw6nuddnbkreprijtv43eq/lib/python3.8/site-packages/pip (python 3.8)

@xrmx
Copy link
Collaborator

xrmx commented May 9, 2020

I don't see anything in uwsgi linking against gettext, is it libxml2? What does xml2-config --libs return?

Uhm it well maybe your python, is it the ubuntu one? Pretty sure the 18.04 one is not a stock one

This is python3.8 from debian sid:

>>> from distutils import sysconfig
>>> LIBS = sysconfig.get_config_var('LIBS').split() + sysconfig.get_config_var('SYSLIBS').split()
>>> 
>>> LIBS
['-lcrypt', '-lpthread', '-ldl', '-lutil', '-lm', '-lm']

Stock python3 from ubuntu 18.04:

>>> from distutils import sysconfig
>>> LIBS = sysconfig.get_config_var('LIBS').split() + sysconfig.get_config_var('SYSLIBS').split()
>>> LIBS
['-lpthread', '-ldl', '-lutil', '-lm']

@sgerodes
Copy link

sgerodes commented Nov 7, 2021

Upgrading python to 3.9.7 solved the problem for me. I am using a Mac.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants