conda-forge / mesalib-feedstock

A conda-smithy repository for mesalib.
BSD 3-Clause "New" or "Revised" License
2 stars 16 forks source link

gl.pc (and libGL.so) not in package #16

Closed scopatz closed 1 year ago

scopatz commented 5 years ago

Issue:

This package does not seem to actually supply the OpenGL library or its pkg-config file. This is blocking the deployment of other packages that rely on OpenGL.


Environment (conda list):

``` scopatz@artemis ~ $ conda list # packages in environment at /home/scopatz/miniconda: # # Name Version Build Channel alabaster 0.7.11 py_3 conda-forge alsa-lib 1.1.5 0 conda-forge anaconda-client 1.7.1 py_0 conda-forge appdirs 1.4.3 py_1 conda-forge argparse 1.4.0 asciinema 2.0.1 py36_0 conda-forge asn1crypto 0.24.0 py36_3 conda-forge asttokens 1.1.11 py_0 conda-forge atomicwrites 1.1.5 py36_0 conda-forge attrs 18.2.0 py_0 conda-forge babel 2.6.0 py_1 conda-forge backcall 0.1.0 py_0 conda-forge backports 1.0 py_2 conda-forge backports.functools_lru_cache 1.5 py_1 conda-forge beautifulsoup4 4.6.3 py36_0 conda-forge bibtexparser 1.0.1 py_1 conda-forge black 18.6b2 py_0 conda-forge blas 1.0 mkl bleach 2.1.4 py_1 conda-forge blinker 1.4 py_1 conda-forge blosc 1.14.4 hfc679d8_0 conda-forge bokeh 0.13.0 py36_0 conda-forge boost-cpp 1.68.0 h3a22d5f_0 conda-forge boto 2.49.0 py36_0 boto3 1.8.7 py_0 conda-forge botocore 1.11.8 py_0 conda-forge bottleneck 1.2.1 py36h7eb728f_1 conda-forge bz2file 0.98 py36_1 bzip2 1.0.6 h470a237_2 conda-forge ca-certificates 2018.8.24 ha4d7672_0 conda-forge cairo 1.14.12 he6fea26_5 conda-forge cerberus 1.2 py_1 conda-forge certifi 2018.8.24 py36_1 conda-forge cffi 1.11.5 py36h5e8e0c9_1 conda-forge cftime 1.0.1 py36h7eb728f_0 conda-forge chardet 3.0.4 py36_3 conda-forge chrpath 0.16 0 conda-forge clangdev 6.0.1 default_1 conda-forge click 6.7 py_1 conda-forge cloog 0.18.0 0 cloud_sptheme 1.9.4 py_1 conda-forge cloudpickle 0.5.5 py_0 conda-forge clyent 1.2.2 py_1 conda-forge cmake 3.12.1 h011004d_0 conda-forge colorama 0.3.9 py_1 conda-forge conda 4.5.11 py36_0 conda-forge conda-build 3.11.0 py36_0 conda-forge conda-build-all 1.1.3 py_0 conda-forge conda-env 2.6.0 1 conda-forge conda-forge-pinning 2018.08.31 0 conda-forge conda-smithy 3.1.12 py_0 conda-forge conda-verify 2.0.0 py36_0 conda-forge cryptography 2.3.1 py36hdffb7b8_0 conda-forge cryptography-vectors 2.3.1 py36_0 conda-forge curl 7.61.0 h93b3f91_2 conda-forge cycler 0.10.0 py_1 conda-forge cython 0.28.5 py36hfc679d8_0 conda-forge cytoolz 0.9.0.1 py36h470a237_0 conda-forge dask 0.19.1 py_0 conda-forge dask-core 0.19.1 py_0 conda-forge dbus 1.13.0 h3a4f0e9_0 conda-forge debtcollector 1.15.0 decorator 4.3.0 py_0 conda-forge distributed 1.23.1 py36_0 conda-forge doctr 1.7.3 py36_0 conda-forge docutils 0.14 py36_1 conda-forge doxygen 1.8.14 0 conda-forge embree 2.14.0 0 conda-forge entrypoints 0.2.3 py36_2 conda-forge et_xmlfile 1.0.1 py36_0 conda-forge expat 2.2.5 hfc679d8_2 conda-forge fastcache 1.0.2 py36h470a237_1 conda-forge fftw 3.3.8 h470a237_0 conda-forge filelock 3.0.4 py_1 conda-forge flake8 3.5.0 py36_0 conda-forge flake8-import-order 0.18 py_0 conda-forge flake8-polyfill 1.0.2 py_0 conda-forge flask 1.0.2 py_1 conda-forge fontconfig 2.13.0 h65d0f4c_6 conda-forge freetype 2.9.1 h6debe1e_4 conda-forge future 0.16.0 py36_2 conda-forge fuzzywuzzy 0.17.0 py_0 conda-forge gcc 4.8.5 7 gdb 8.1 py36h4bd59f5_0 conda-forge gensim 3.5.0 py36_0 conda-forge gettext 0.19.8.1 h5e8e0c9_1 conda-forge ghostscript 9.22 hfc679d8_1 conda-forge giflib 5.1.4 h470a237_1 conda-forge git 2.18.0 0 conda-forge git-lfs 2.5.1 0 conda-forge gitdb 0.6.4 py36_2 conda-forge gitdb2 2.0.4 py_0 conda-forge github3.py 1.2.0 py_0 conda-forge gitpython 2.1.11 py_0 conda-forge glib 2.55.0 h464dc38_2 conda-forge glibmm 2.52.1 h32a115d_0 conda-forge glob2 0.6 py_0 conda-forge gmp 6.1.2 hfc679d8_0 conda-forge gmpy2 2.0.8 py36_1 conda-forge graphite2 1.3.12 hfc679d8_1 conda-forge graphviz 2.38.0 h08bfae6_9 conda-forge gst-plugins-base 1.12.5 hde13a9d_0 conda-forge gstreamer 1.12.5 h61a6719_0 conda-forge h5netcdf 0.6.2 py_0 conda-forge h5py 2.8.0 py36hb794570_1 conda-forge harfbuzz 1.8.8 h08d66d9_0 conda-forge hdf4 4.2.13 h951d187_2 conda-forge hdf5 1.10.2 hc401514_2 conda-forge heapdict 1.0.0 py36_0 conda-forge html5lib 1.0.1 py_0 conda-forge hunspell 1.6.2 h1b1dcc2_1 conda-forge hunspell-en 2017.09.01 0 conda-forge icu 58.2 hfc679d8_0 conda-forge idna 2.7 py36_2 conda-forge imagesize 1.1.0 py_0 conda-forge intel-openmp 2018.0.3 0 ip-associations-python-novaclient-ext 0.2 ipython_genutils 0.2.0 py_1 conda-forge isl 0.12.2 0 iso8601 0.1.11 itsdangerous 0.24 py_2 conda-forge jbig 2.1 h470a237_1001 conda-forge jdcal 1.4 py_1 conda-forge jedi 0.12.1 py36_0 conda-forge jinja2 2.10 py_1 conda-forge jmespath 0.9.3 py_1 conda-forge jpeg 9c h470a237_1 conda-forge jsoncpp 1.8.4 h2d50403_0 conda-forge jsonschema 2.6.0 py36_2 conda-forge jupyter_client 5.2.3 py_1 conda-forge jupyter_core 4.4.0 py_0 conda-forge jwcrypto 0.5.0 py_0 conda-forge keyring 10.3.3 keystoneauth1 2.21.0 kiwisolver 1.0.1 py36h2d50403_2 conda-forge krb5 1.14.6 0 conda-forge lapack 3.6.1 1 conda-forge latexmk 4.55 pl5.20.3_0 conda-forge lazyasd 0.1.4 py_1 conda-forge libarchive 3.3.2 h823be47_0 conda-forge libffi 3.2.1 hfc679d8_5 conda-forge libflac 1.3.1 0 conda-forge libgcc 7.2.0 h69d50b8_2 conda-forge libgcc-ng 7.2.0 hdf63c60_3 conda-forge libgfortran 3.0.0 1 conda-forge libgfortran-ng 7.2.0 hdf63c60_3 conda-forge libiconv 1.15 h470a237_3 conda-forge libnetcdf 4.6.1 he6cff42_8 conda-forge libogg 1.3.2 h470a237_1 conda-forge libpng 1.6.35 ha92aebf_2 conda-forge libsigcpp 2.10.0 hfc679d8_1 conda-forge libsndfile 1.0.28 hfc679d8_0 conda-forge libsodium 1.0.16 0 conda-forge libssh2 1.8.0 h5b517e9_2 conda-forge libstdcxx-ng 7.2.0 hdf63c60_3 conda-forge libtiff 4.0.9 he6b73bb_2 conda-forge libtool 2.4.6 h470a237_2 conda-forge libuuid 2.32.1 h470a237_2 conda-forge libuv 1.22.0 h470a237_1 conda-forge libvorbis 1.3.5 0 conda-forge libwebp 1.0.0 he252da6_1 conda-forge libxcb 1.13 h470a237_2 conda-forge libxml2 2.9.8 h422b904_3 conda-forge libxmlpp 2.40.1 hcb7c3ed_3 conda-forge libxslt 1.1.32 h88dbc4e_2 conda-forge llvm-meta 6.0.1 0 conda-forge llvmdev 6.0.1 hf8ce74a_2 conda-forge locket 0.2.0 py_2 conda-forge lxml 4.2.4 py36hc9114bc_0 conda-forge lzo 2.10 0 conda-forge m4 1.4.18 0 conda-forge make 4.2.1 h470a237_1002 conda-forge markdown2 2.3.5 py_0 conda-forge markupsafe 1.0 py36h470a237_1 conda-forge matplotlib 2.2.3 py36h8e2386c_0 conda-forge mccabe 0.6.1 py_1 conda-forge mesalib 17.3.9 hdd5ec5b_0 conda-forge metis 5.1.0 h470a237_3 conda-forge mistune 0.8.3 py36h470a237_2 conda-forge mkl 2018.0.3 1 moab 4.9.1 0 conda-forge mock 2.0.0 py36_0 conda-forge mock 2.0.0 monotonic 1.3 more-itertools 4.3.0 py36_0 conda-forge mpc 1.1.0 4 conda-forge mpfr 3.1.5 0 conda-forge mpi 1.0 mpich conda-forge mpich 3.2.1 h26a2512_4 conda-forge mpmath 1.0.0 py_0 conda-forge msgpack-python 0.4.8 msgpack-python 0.5.6 py36h2d50403_2 conda-forge nbconvert 5.3.1 py_1 conda-forge nbformat 4.4.0 py_1 conda-forge ncurses 6.1 hfc679d8_1 conda-forge ndg-httpsclient 0.5.1 py_1 conda-forge netaddr 0.7.19 netcdf4 1.4.1 py36h62672b6_0 conda-forge netifaces 0.10.6 nltk 3.2.5 py_0 conda-forge nltk_data 2017.10.22 py_0 conda-forge node 0.8.7 0 nodejs 10.4.1 0 conda-forge nose 1.3.7 py36_2 conda-forge numexpr 2.6.6 py36_0 conda-forge numpy 1.12.1 py36he24570b_1 numpydoc 0.8.0 py_1 conda-forge O365 0.9.6 oauthlib 2.1.0 py_0 conda-forge openblas 0.2.20 8 conda-forge openjpeg 2.3.0 h0e734dc_3 conda-forge openmc 0.10.0 py36hb8ecfd0_1 conda-forge openpyxl 2.5.6 py_0 conda-forge openssl 1.0.2p h470a237_0 conda-forge os-diskconfig-python-novaclient-ext 0.1.3 os-networksv2-python-novaclient-ext 0.26 os-virtual-interfacesv2-python-novaclient-ext 0.20 oslo.config 4.6.0 oslo.i18n 3.15.3 oslo.serialization 2.18.0 oslo.utils 3.26.0 packaging 17.1 py_0 conda-forge pandas 0.23.4 py36hf8a1672_0 conda-forge pandoc 2.2.2 1 conda-forge pandocfilters 1.4.2 py_1 conda-forge pango 1.40.14 he752989_2 conda-forge parso 0.3.1 py_0 conda-forge partd 0.3.8 py_1 conda-forge patchelf 0.9 hfc679d8_2 conda-forge patsy 0.5.0 py_1 conda-forge pbr 1.10.0 pbr 4.2.0 py_0 conda-forge pcre 8.41 hfc679d8_3 conda-forge pep8-naming 0.7.0 py_0 conda-forge perl 5.20.3.1 2 conda-forge pexpect 4.6.0 py36_0 conda-forge pickleshare 0.7.4 py36_0 conda-forge pip 18.0 py36_1 conda-forge pixman 0.34.0 h470a237_3 conda-forge pkg-config 0.29.2 h470a237_3 conda-forge pkginfo 1.4.2 py_1 conda-forge pluggy 0.7.1 py_0 conda-forge ply 3.11 py_1 conda-forge portaudio 19.6.0 0 conda-forge positional 1.1.1 pprintpp 0.3.0 py36_0 conda-forge prettytable 0.7.2 profimp 0.0.3 py_0 conda-forge prompt_toolkit 2.0.4 py_1 conda-forge psutil 5.4.7 py36h470a237_1 conda-forge pthread-stubs 0.4 h470a237_1 conda-forge ptyprocess 0.6.0 py36_0 conda-forge py 1.6.0 py_0 conda-forge pyasn1 0.4.4 py_0 conda-forge pycodestyle 2.3.1 py_1 conda-forge pycosat 0.6.3 py36h470a237_1 conda-forge pycparser 2.18 py_1 conda-forge pycrypto 2.6.1 py36_1 conda-forge pyembree 0.1.4 py36h04863e7_1 conda-forge pyflakes 1.6.0 py_1 conda-forge pygithub 1.39 py36_0 conda-forge pygments 2.2.0 py_1 conda-forge pyjwt 1.6.4 py_0 conda-forge pyopenssl 18.0.0 py36_0 conda-forge pyparsing 2.2.0 py_1 conda-forge pyqt 5.6.0 py36h8210e8a_7 conda-forge pyrax 1.9.8 pysocks 1.6.8 py36_2 conda-forge pysoundfile 0.10.1 py_0 conda-forge pytables 3.4.4 py36h4f72b40_1 conda-forge pytest 3.7.4 py36_0 conda-forge pytest-tornado 0.5.0 py_0 conda-forge python 3.6.6 h5001a0f_0 conda-forge python-crfsuite 0.9.6 py36h470a237_0 conda-forge python-dateutil 2.7.3 py_0 conda-forge python-graphviz 0.8.4 py36_2 conda-forge python-keystoneclient 3.11.0 python-levenshtein 0.12.0 py36_0 conda-forge python-novaclient 2.27.0 python-sounddevice 0.3.11 py_0 conda-forge pytz 2018.5 py_0 conda-forge pyyaml 3.13 py36h470a237_1 conda-forge pyzmq 17.1.2 py36hae99301_0 conda-forge qt 5.6.2 hf70d934_9 conda-forge qtpy 1.5.0 pyh8a2030e_0 conda-forge rackspace-auth-openstack 1.3 rackspace-novaclient 2.1 rax-default-network-flags-python-novaclient-ext 0.4.0 rax-scheduled-images-python-novaclient-ext 0.3.1 readline 7.0 haf1bffa_1 conda-forge requests 2.19.1 py36_1 conda-forge requests-oauthlib 1.0.0 py_1 conda-forge rfc3986 1.0.0 rhash 1.3.4 0 conda-forge ruamel.yaml 0.15.64 py36_0 conda-forge ruamel_yaml 0.15.63 py36h470a237_0 conda-forge ruby 2.4.4 h0825b16_1 conda-forge s3transfer 0.1.13 py36_0 conda-forge scikit-learn 0.19.1 py36hedc7406_0 scikit-umfpack 0.2.3 np112py36_0 conda-forge scipy 1.1.0 py36hc49cb51_0 SecretStorage 2.3.1 send2trash 1.5.0 py_0 conda-forge setproctitle 1.1.10 py36h470a237_1 conda-forge setuptools 40.2.0 py36_0 conda-forge simplegeneric 0.8.1 py_1 conda-forge simplejson 3.11.1 sip 4.18.1 py36hfc679d8_0 conda-forge six 1.11.0 py36_1 conda-forge smart_open 1.6.0 py_1 conda-forge smmap 0.9.0 py_2 conda-forge smmap2 2.0.4 py_0 conda-forge snowballstemmer 1.2.1 py_1 conda-forge sortedcontainers 2.0.4 py_1 conda-forge sphinx 1.7.9 py36_0 conda-forge sphinxcontrib-websupport 1.1.0 py_1 conda-forge sqlalchemy 1.2.11 py36h470a237_0 conda-forge sqlite 3.24.0 h2f33b56_1 conda-forge statsmodels 0.9.0 py36_0 conda-forge statuspage 0.8.1 py_1 conda-forge stevedore 1.23.0 suitesparse 5.2.0 h171a5a3_0 sympy 1.2 py36_0 conda-forge system 5.8 2 tbb 2018_20171205 0 conda-forge tblib 1.3.2 py_1 conda-forge terminado 0.8.1 py36_1 conda-forge testpath 0.3.1 py36_1 conda-forge texsoup 0.1.3 py_0 conda-forge tk 8.6.8 0 conda-forge toml 0.9.4 py_0 conda-forge toolz 0.9.0 py_0 conda-forge tornado 5.1 py36h470a237_1 conda-forge tqdm 4.24.0 py_1 conda-forge traitlets 4.3.2 py36_0 conda-forge traittypes 0.2.1 py_1 conda-forge twython 3.7.0 py_0 conda-forge typing 3.6.4 py36_0 conda-forge uncertainties 3.0.2 py36_1 conda-forge uritemplate.py 3.0.2 py_1 conda-forge urllib3 1.23 py36_1 conda-forge urwid 1.3.1 py36_0 conda-forge vitables 3.0.0 h14c3975_4 conda-forge wcwidth 0.1.7 py_1 conda-forge webencodings 0.5.1 py_1 conda-forge websockets 6.0 py36_0 conda-forge werkzeug 0.14.1 py_0 conda-forge wheel 0.31.1 py36_1 conda-forge whoosh 2.7.4 py_1 conda-forge wrapt 1.10.10 xarray 0.10.8 py36_0 conda-forge xlrd 1.1.0 py_2 conda-forge xonda 0.1.7 xonda 0.2.5 py_0 conda-forge xonsh 0.7.7 py36_0 conda-forge xorg-kbproto 1.0.7 h470a237_2 conda-forge xorg-libice 1.0.9 h470a237_4 conda-forge xorg-libsm 1.2.2 h8c8a85c_6 conda-forge xorg-libx11 1.6.6 h470a237_0 conda-forge xorg-libxau 1.0.8 h470a237_6 conda-forge xorg-libxdmcp 1.1.2 h470a237_7 conda-forge xorg-libxext 1.3.3 h470a237_4 conda-forge xorg-libxpm 3.5.12 h470a237_2 conda-forge xorg-libxrender 0.9.10 h470a237_2 conda-forge xorg-libxt 1.1.5 h470a237_2 conda-forge xorg-renderproto 0.11.1 h470a237_2 conda-forge xorg-xextproto 7.3.0 h470a237_2 conda-forge xorg-xproto 7.0.31 h470a237_7 conda-forge xz 5.2.4 h470a237_1 conda-forge yaml 0.1.7 h470a237_1 conda-forge yasm 1.3.0 0 conda-forge zeromq 4.2.5 hfc679d8_5 conda-forge zict 0.1.3 py_0 conda-forge zlib 1.2.11 h470a237_3 conda-forge ```


Details about conda and system ( conda info ):

``` $ conda info scopatz@artemis ~ $ conda info active environment : None user config file : /home/scopatz/.condarc populated config files : /home/scopatz/.condarc conda version : 4.5.11 conda-build version : 3.11.0 python version : 3.6.6.final.0 base environment : /home/scopatz/miniconda (writable) channel URLs : https://conda.anaconda.org/conda-forge/linux-64 https://conda.anaconda.org/conda-forge/noarch https://repo.anaconda.com/pkgs/main/linux-64 https://repo.anaconda.com/pkgs/main/noarch https://repo.anaconda.com/pkgs/free/linux-64 https://repo.anaconda.com/pkgs/free/noarch https://repo.anaconda.com/pkgs/r/linux-64 https://repo.anaconda.com/pkgs/r/noarch https://repo.anaconda.com/pkgs/pro/linux-64 https://repo.anaconda.com/pkgs/pro/noarch package cache : /home/scopatz/miniconda/pkgs /home/scopatz/.conda/pkgs envs directories : /home/scopatz/miniconda/envs /home/scopatz/.conda/envs platform : linux-64 user-agent : conda/4.5.11 requests/2.19.1 CPython/3.6.6 Linux/4.15.0-33-generic ubuntu/18.04 glibc/2.27 UID:GID : 1000:1000 netrc file : None offline mode : False ```
jakirkham commented 5 years ago

Thanks for raising this, @scopatz.

Was also wondering about this as well. Particularly after seeing libGL.so on the list of installed libraries in LFS.

Is this as simple as adding a missing flag? Or is there a bit more complexity to it?

It's worth noting that we also install libGL from yum in the legacy Docker image and the new Docker image. IDK if that causes issues building this library or not.

pauldmccarthy commented 2 years ago

Hi @scopatz and @jakirkham, it seems that the most recent mesalib package now does provide libGL.so. This is actually causing problems for a package of mine, which depends on mesalib purely for off-screen rendering via OSMesa, and assumes that libGL.so is provided by the system for on-screen rendering.

Now that libGL.so is being installed, this seems to have the effect that a software GL renderer (softpipe) is getting used for on-screen rendering.

I'm not intimately familiar with how OpenGL works at the shared-lib level, so don't know what the solution is here. Any thoughts?

hmaarrfk commented 2 years ago

Hmm. This might be what I was seeing yesterday as well. I would have to investigate.

It is likely because we are building with swrast https://docs.mesa3d.org/faq.html?highlight=swrast#rendering-is-slow-why-isn-t-my-graphics-hardware-being-used

Maybe the gallium driver needs to be disabled? https://github.com/conda-forge/mesalib-feedstock/blob/master/recipe/build.sh#L16

hmaarrfk commented 2 years ago

Meson options.txt file for reference: https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/meson_options.txt

hmaarrfk commented 2 years ago

I'm really stumped. The current recipe follows:

https://docs.mesa3d.org/osmesa.html#off-screen-rendering

I tried to manually disable things, but I get stuck on some undefined reference: https://github.com/conda-forge/mesalib-feedstock/pull/40

Your help there would be greatly appreciated. Otherwise, we might have to pull the latest mesa package and revert back to version 18.

hmaarrfk commented 2 years ago

@jakirkham do you have time to help with rebuilding 21 without GL.so? Should we mark the 21 package as broken?

jakirkham commented 2 years ago

Sorry I haven't been following this issue in some time. So am not really sure what is going on or being asked (maybe we should be using a new issue?).

Should add am not actually a maintainer on this feedstock and probably don't have the time to pick up that role.

That all being said, what is the issue? What options are you proposing to address this (and how will they help)? If possible, what is the level of effort for these options? Finally what are the tradeoffs between these options? If you don't know the answers to all of these that is fine, the more info that you can provide the better.

hmaarrfk commented 2 years ago

A few builds back in for mesa 21, we accidentally added software rending feature in GL.so. I think we should revert them to allow uesrs to fallback on their system installed GL.so files.

I think I finally got things going to disable software GL. It does remove the GL.so files that we added a few builds back. https://github.com/conda-forge/mesalib-feedstock/pull/40

I hope that it won't do too much damage, but I can't really be sure.

Should remove the software rendering issues for people when it finishes building. I would like to suggest moving forward with #40 and then focusing if people want, on specific builds that add GL.so with the caveat that we only have software rendering (for now).

hmaarrfk commented 2 years ago

So for those following this issue, the current status is that there is no libGL.so file in the latest build and we have added tests to ensure that it doesn't pop up randomly by accident.

hmaarrfk commented 2 years ago

cc: @kmuehlbauer maybe the most recent package will solve your build issues?

kmuehlbauer commented 2 years ago

@hmaarrfk Thank you for the heads up. I'll have a look into this.

hmaarrfk commented 1 year ago

I think we can close this 1 year later. Let me know if i should reopen.