diff options
Diffstat (limited to 'pkgs/development/libraries/mesa/default.nix')
-rw-r--r-- | pkgs/development/libraries/mesa/default.nix | 57 |
1 files changed, 29 insertions, 28 deletions
diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix index 1c2257998e86..ad6bf8ba3190 100644 --- a/pkgs/development/libraries/mesa/default.nix +++ b/pkgs/development/libraries/mesa/default.nix @@ -1,6 +1,5 @@ -{ stdenv, fetchurl, fetchpatch, pkgconfig, intltool, flex, bison, autoreconfHook, substituteAll -, python, libxml2Python, file, expat, makedepend, pythonPackages -, libdrm, xorg, wayland, udev, llvmPackages, libffi, libomxil-bellagio +{ stdenv, fetchurl, fetchpatch, pkgconfig, intltool, autoreconfHook, substituteAll +, file, expat, libdrm, xorg, wayland, libudev, llvmPackages, libffi, libomxil-bellagio , libvdpau, libelf, libva , grsecEnabled , enableTextureFloats ? false # Texture floats are patented, see docs/patents.txt @@ -21,12 +20,13 @@ else - libOSMesa is in $osmesa (~4 MB) */ +with { inherit (stdenv.lib) optional optionalString; }; + let version = "11.1.2"; # this is the default search path for DRI drivers - driverLink = "/run/opengl-driver" + stdenv.lib.optionalString stdenv.isi686 "-32"; + driverLink = "/run/opengl-driver" + optionalString stdenv.isi686 "-32"; in -with { inherit (stdenv.lib) optional optionals optionalString; }; stdenv.mkDerivation { name = "mesa-noglu-${version}"; @@ -50,7 +50,7 @@ stdenv.mkDerivation { ] ++ optional stdenv.isLinux (substituteAll { src = ./dlopen-absolute-paths.diff; - inherit udev; + libudev = libudev.out; }); postPatch = '' @@ -58,7 +58,7 @@ stdenv.mkDerivation { --replace _EGL_DRIVER_SEARCH_DIR '"${driverLink}"' ''; - outputs = ["out" "drivers" "osmesa"]; + outputs = [ "dev" "out" "drivers" "osmesa" ]; configureFlags = [ "--sysconfdir=/etc" @@ -103,17 +103,17 @@ stdenv.mkDerivation { ] ++ optional enableTextureFloats "--enable-texture-float" ++ optional grsecEnabled "--enable-glx-rts"; # slight performance degradation, enable only for grsec - nativeBuildInputs = [ pkgconfig python makedepend file flex bison pythonPackages.Mako ]; + nativeBuildInputs = [ pkgconfig file ]; propagatedBuildInputs = with xorg; [ libXdamage libXxf86vm ] - ++ optionals stdenv.isLinux [ libdrm ]; + ++ optional stdenv.isLinux libdrm; buildInputs = with xorg; [ - autoreconfHook intltool expat libxml2Python llvmPackages.llvm + autoreconfHook intltool expat llvmPackages.llvm glproto dri2proto dri3proto presentproto libX11 libXext libxcb libXt libXfixes libxshmfence libffi wayland libvdpau libelf libXvMC /* libomxil-bellagio libva */ - ] ++ optional stdenv.isLinux udev; + ] ++ optional stdenv.isLinux libudev; enableParallelBuilding = true; doCheck = false; @@ -133,41 +133,42 @@ stdenv.mkDerivation { $out/lib/vdpau \ $out/lib/libxatracker* - mkdir -p {$osmesa,$drivers}/lib/pkgconfig + mkdir -p {$osmesa,$drivers}/lib/ mv -t $osmesa/lib/ \ $out/lib/libOSMesa* - mv -t $drivers/lib/pkgconfig/ \ - $out/lib/pkgconfig/xatracker.pc - - mv -t $osmesa/lib/pkgconfig/ \ - $out/lib/pkgconfig/osmesa.pc - '' + /* now fix references in .la files */ '' sed "/^libdir=/s,$out,$osmesa," -i \ $osmesa/lib/libOSMesa*.la - '' + /* work around bug #529, but maybe $drivers should also be patchelf-ed */ '' - find $drivers/ $osmesa/ -type f -executable -print0 | xargs -0 strip -S || true + '' + /* set the default search path for DRI drivers; used e.g. by X server */ '' + substituteInPlace "$dev/lib/pkgconfig/dri.pc" --replace '$(drivers)' "${driverLink}" + '' + /* move vdpau drivers to $drivers/lib, so they are found */ '' + mv "$drivers"/lib/vdpau/* "$drivers"/lib/ && rmdir "$drivers"/lib/vdpau + ''; + #ToDo: @vcunat isn't sure if drirc will be found when in $out/etc/, but it doesn't seem important ATM */ - '' + /* add RPATH so the drivers can find the moved libgallium and libdricore9 */ '' + postFixup = + # add RPATH so the drivers can find the moved libgallium and libdricore9 + # moved here to avoid problems with stripping patchelfed files + '' for lib in $drivers/lib/*.so* $drivers/lib/*/*.so*; do if [[ ! -L "$lib" ]]; then patchelf --set-rpath "$(patchelf --print-rpath $lib):$drivers/lib" "$lib" fi done - '' + /* set the default search path for DRI drivers; used e.g. by X server */ '' - substituteInPlace "$out/lib/pkgconfig/dri.pc" --replace '$(drivers)' "${driverLink}" ''; - #ToDo: @vcunat isn't sure if drirc will be found when in $out/etc/, but it doesn't seem important ATM + # ToDo + /* check $out doesn't depend on llvm */ '' + # builder failures are ignored for some reason + # grep -qv '${llvmPackages.llvm}' -R "$out" passthru = { inherit libdrm version driverLink; }; - meta = { + meta = with stdenv.lib; { description = "An open source implementation of OpenGL"; homepage = http://www.mesa3d.org/; - license = "bsd"; - platforms = stdenv.lib.platforms.mesaPlatforms; - maintainers = with stdenv.lib.maintainers; [ eduarrrd simons vcunat ]; + license = licenses.mit; # X11 variant, in most files + platforms = platforms.mesaPlatforms; + maintainers = with maintainers; [ eduarrrd simons vcunat ]; }; } |