diff options
author | Timo Kaufmann <timokau@zoho.com> | 2019-05-28 13:44:29 +0200 |
---|---|---|
committer | Timo Kaufmann <timokau@zoho.com> | 2019-05-28 13:44:29 +0200 |
commit | 446ac90e055b40a38cda81987e4170d5b281b574 (patch) | |
tree | 3d0aa27e27016643eec3744ec1faf56e2495736e /pkgs/development/python-modules/pyglet | |
parent | cf178af4f84090d22dd6c422ac5024c510b9a301 (diff) | |
download | nixlib-446ac90e055b40a38cda81987e4170d5b281b574.tar nixlib-446ac90e055b40a38cda81987e4170d5b281b574.tar.gz nixlib-446ac90e055b40a38cda81987e4170d5b281b574.tar.bz2 nixlib-446ac90e055b40a38cda81987e4170d5b281b574.tar.lz nixlib-446ac90e055b40a38cda81987e4170d5b281b574.tar.xz nixlib-446ac90e055b40a38cda81987e4170d5b281b574.tar.zst nixlib-446ac90e055b40a38cda81987e4170d5b281b574.zip |
python.pkgs.pyglet: hardcode library paths
Fixes failure to find certain libraries such as libc.
Diffstat (limited to 'pkgs/development/python-modules/pyglet')
-rw-r--r-- | pkgs/development/python-modules/pyglet/default.nix | 56 |
1 files changed, 50 insertions, 6 deletions
diff --git a/pkgs/development/python-modules/pyglet/default.nix b/pkgs/development/python-modules/pyglet/default.nix index 4bc1cd0608c5..1b00e1264ffc 100644 --- a/pkgs/development/python-modules/pyglet/default.nix +++ b/pkgs/development/python-modules/pyglet/default.nix @@ -1,5 +1,14 @@ -{ stdenv, buildPythonPackage, fetchPypi -, libGLU_combined, xorg, freetype, fontconfig, future}: +{ stdenv +, buildPythonPackage +, fetchPypi +, libGLU_combined +, xorg +, future +, pytest +, glibc +, gtk2-x11 +, gdk_pixbuf +}: buildPythonPackage rec { version = "1.3.2"; @@ -10,14 +19,49 @@ buildPythonPackage rec { sha256 = "b00570e7cdf6971af8953b6ece50d83d13272afa5d1f1197c58c0f478dd17743"; }; + # find_library doesn't reliably work with nix (https://github.com/NixOS/nixpkgs/issues/7307). + # Even naively searching `LD_LIBRARY_PATH` won't work since `libc.so` is a linker script and + # ctypes.cdll.LoadLibrary cannot deal with those. Therefore, just hardcode the paths to the + # necessary libraries. postPatch = let - libs = [ libGLU_combined xorg.libX11 freetype fontconfig ]; - paths = builtins.concatStringsSep "," (map (l: "\"${l}/lib\"") libs); - in "sed -i -e 's|directories\.extend.*lib[^]]*|&,${paths}|' pyglet/lib.py"; + ext = stdenv.hostPlatform.extensions.sharedLibrary; + in '' + cat > pyglet/lib.py <<EOF + import ctypes + def load_library(*names, **kwargs): + for name in names: + path = None + if name == 'GL': + path = '${libGLU_combined}/lib/libGL${ext}' + elif name == 'GLU': + path = '${libGLU_combined}/lib/libGLU${ext}' + elif name == 'c': + path = '${glibc}/lib/libc${ext}.6' + elif name == 'X11': + path = '${xorg.libX11}/lib/libX11${ext}' + elif name == 'gdk-x11-2.0': + path = '${gtk2-x11}/lib/libgdk-x11-2.0${ext}' + elif name == 'gdk_pixbuf-2.0': + path = '${gdk_pixbuf}/lib/libgdk_pixbuf-2.0${ext}' + if path is not None: + return ctypes.cdll.LoadLibrary(path) + raise Exception("Could not load library {}".format(names)) + EOF + ''; + propagatedBuildInputs = [ future ]; + + # needs an X server. Keep an eye on + # https://bitbucket.org/pyglet/pyglet/issues/219/egl-support-headless-rendering doCheck = false; - propagatedBuildInputs = [ future ]; + checkInputs = [ + pytest + ]; + + checkPhase = '' + py.test tests/unit tests/integration + ''; meta = with stdenv.lib; { homepage = "http://www.pyglet.org/"; |