summary refs log tree commit diff
path: root/pkgs/os-specific/linux/amdgpu-pro/default.nix
diff options
context:
space:
mode:
authorDavid McFarland <corngood@gmail.com>2016-10-27 23:10:44 -0300
committerDavid McFarland <corngood@gmail.com>2016-11-13 12:44:28 -0400
commit3d4a280c354bb21b711055ca7e02ee3e7999292b (patch)
tree82166f6873d6e1f0a0415bbe171c4720db4ab636 /pkgs/os-specific/linux/amdgpu-pro/default.nix
parente1a25aeb656d7f458936a83d1c2937a8778714a1 (diff)
downloadnixpkgs-3d4a280c354bb21b711055ca7e02ee3e7999292b.tar
nixpkgs-3d4a280c354bb21b711055ca7e02ee3e7999292b.tar.gz
nixpkgs-3d4a280c354bb21b711055ca7e02ee3e7999292b.tar.bz2
nixpkgs-3d4a280c354bb21b711055ca7e02ee3e7999292b.tar.lz
nixpkgs-3d4a280c354bb21b711055ca7e02ee3e7999292b.tar.xz
nixpkgs-3d4a280c354bb21b711055ca7e02ee3e7999292b.tar.zst
nixpkgs-3d4a280c354bb21b711055ca7e02ee3e7999292b.zip
amdgpu-pro: 16.30.3-315407 -> 16.40-348864
Diffstat (limited to 'pkgs/os-specific/linux/amdgpu-pro/default.nix')
-rw-r--r--pkgs/os-specific/linux/amdgpu-pro/default.nix107
1 files changed, 59 insertions, 48 deletions
diff --git a/pkgs/os-specific/linux/amdgpu-pro/default.nix b/pkgs/os-specific/linux/amdgpu-pro/default.nix
index 5c11fad3597..4a0527242c7 100644
--- a/pkgs/os-specific/linux/amdgpu-pro/default.nix
+++ b/pkgs/os-specific/linux/amdgpu-pro/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, elfutils, mesa_noglu
 , xorg, patchelf, openssl, libdrm, libudev
 , libxcb, libxshmfence, epoxy, perl, zlib
-, fetchFromGitHub
+, fetchFromGitHub, ncurses
 , libsOnly ? false, kernel ? null
 }:
 
@@ -26,11 +26,13 @@ let
 
   libReplaceDir = "/usr/lib/${libArch}";
 
+  ncurses5 = ncurses.override { abiVersion = "5"; };
+
 in stdenv.mkDerivation rec {
 
-  version = "16.30";
+  version = "16.40";
   pname = "amdgpu-pro";
-  build = "16.30.3-315407";
+  build = "16.40-348864";
 
   libCompatDir = "/run/lib/${libArch}";
 
@@ -38,16 +40,9 @@ in stdenv.mkDerivation rec {
 
   src = fetchurl {
     url =
-    "https://www2.ati.com/drivers/linux/amdgpu-pro_${build}.tar.xz";
-    sha256 = "97d6fb64617cf2cefe780e5fb83b29d8ee4e3e7886b71fe3d92b0113847b2354";
-    curlOpts = "--referer http://support.amd.com/en-us/kb-articles/Pages/AMDGPU-PRO-Beta-Driver-for-Vulkan-Release-Notes.aspx";
-  };
-
-  vulkanOverlay = fetchFromGitHub {
-    owner = "Lucretia";
-    repo = "vulkan-overlay";
-    rev = "70558192e7ac16103e1ec6100c1bebd6f162c818";
-    sha256 = "1ycl55m3wc72q0a6pkyhhzji7llliw8076aiynr60jyv6cnmcgdz";
+    "https://www2.ati.com/drivers/linux/ubuntu/amdgpu-pro-${build}.tar.xz";
+    sha256 = "1c06lx07irmlpmbmgb3qcgpzj6q6rimszrbbdrgz8kqnfpcv3mjr";
+    curlOpts = "--referer http://support.amd.com/en-us/kb-articles/Pages/AMD-Radeon-GPU-PRO-Linux-Beta-Driver%e2%80%93Release-Notes.aspx";
   };
 
   hardeningDisable = [ "pic" "format" ];
@@ -58,19 +53,30 @@ in stdenv.mkDerivation rec {
     cd $sourceRoot
     mkdir root
     cd root
-    for deb in ../*.deb; do echo $deb; ar p $deb data.tar.xz | tar -xJ; done
+    for deb in ../*_all.deb ../*_i386.deb '' + optionalString stdenv.is64bit "../*_amd64.deb" + ''; do echo $deb; ar p $deb data.tar.xz | tar -xJ; done
     sourceRoot=.
   '';
 
   modulePatches = [
-    ./patches/0001-Add-vga-switcheroo-handler-flag-for-4.8.patch
-    ./patches/0002-Remove-dependency-on-System.map.patch
-    ./patches/0003-disable-dal-by-default.patch
+    ./patches/0001-Find-correct-System.map.patch
+    ./patches/0002-Fix-kernel-module-install-location.patch
+    ./patches/0003-Add-Gentoo-as-build-option.patch
+    ./patches/0004-Remove-extra-parameter-from-ttm_bo_reserve-for-4.7.0.patch
+    ./patches/0005-Remove-first-param-from-drm_gem_object_lookup.patch
+    ./patches/0006-Remove-vblank_disable_allowed-assignment.patch
+    ./patches/0007-Fix-__drm_atomic_helper_connector_destroy_state-call.patch
+    ./patches/0008-Change-seq_printf-format-for-64-bit-context.patch
+    ./patches/0009-Fix-vblank-calls.patch
+    ./patches/0010-Fix-crtc_gamma-functions-for-4.8.0.patch
+    ./patches/0011-Fix-drm_atomic_helper_swap_state-for-4.8.0.patch
+    ./patches/0012-Add-extra-flag-to-ttm_bo_move_ttm-for-4.8.0-rc2.patch
+    ./patches/0013-Remove-dependency-on-System.map.patch
+    ./patches/0014-disable-dal-by-default.patch
   ];
 
   patchPhase = optionalString (!libsOnly) ''
     pushd usr/src/amdgpu-pro-${build}
-    for patch in $vulkanOverlay/sys-kernel/amdgpu-pro-dkms/files/${build}/*.patch $modulePatches
+    for patch in $modulePatches
     do
       echo $patch
       patch -f -p1 < $patch || true
@@ -91,55 +97,60 @@ in stdenv.mkDerivation rec {
 
   depLibPath = makeLibraryPath [
     stdenv.cc.cc.lib xorg.libXext xorg.libX11 xorg.libXdamage xorg.libXfixes zlib
-    xorg.libXxf86vm libxcb libxshmfence epoxy openssl libdrm elfutils libudev
+    xorg.libXxf86vm libxcb libxshmfence epoxy openssl libdrm elfutils libudev ncurses5
   ];
 
   installPhase = ''
     mkdir -p $out
-    cp -r usr/bin $out/bin
-    cp -r usr/share $out/share
+
     cp -r etc $out/etc
-    mv $out/etc/vulkan $out/share
-    cp -r usr/include $out/include
-    cp -r usr/lib/${libArch} $out/lib
-    mv $out/lib/amdgpu-pro/* $out/lib/
-    rmdir $out/lib/amdgpu-pro
+    cp -r lib $out/lib
+
+    pushd usr
+    cp -r lib/${libArch}/* $out/lib
+  '' + optionalString (!libsOnly) ''
+    cp -r src/amdgpu-pro-${build}/firmware $out/lib/firmware
+  '' + ''
+    cp -r share $out/share
+    popd
+
+    pushd opt/amdgpu-pro
+  '' + optionalString (!stdenv.is64bit) ''
+    cp -r bin $out/bin
+  '' + ''
+    cp -r include $out/include
+    cp -r lib/${libArch}/* $out/lib
+  '' + optionalString (!libsOnly) ''
+    mv lib/xorg $out/lib/xorg
+  '' + ''
+    popd
+
   '' + optionalString (!libsOnly) ''
-    if [ -d $out/lib/xorg ]; then
-      rm $out/lib/xorg
-      mv $out/lib/1.18 $out/lib/xorg
-      rm -r $out/lib/1.*
-    fi
-    cp -r lib/firmware $out/lib/firmware
     mkdir -p $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko.xz
     cp usr/src/amdgpu-pro-${build}/amd/amdgpu/amdgpu.ko.xz $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko.xz
   '' + ''
+    mv $out/etc/vulkan $out/share
     interpreter="$(cat $NIX_CC/nix-support/dynamic-linker)"
     libPath="$out/lib:$out/lib/gbm:$depLibPath"
-    echo patching with $interpreter $libPath
-    for prog in "$out"/bin/*; do
-      echo patching program $prog
-      patchelf --interpreter "$interpreter" --set-rpath "$libPath" "$prog"
-    done
-    for lib in `find "$out/lib/" -name '*.so*'`; do
-      echo patching library $lib
-      patchelf --set-rpath "$libPath" "$lib"
+  '' + optionalString (!stdenv.is64bit) ''
+    for prog in clinfo modetest vbltest kms-universal-planes kms-steal-crtc modeprint amdgpu_test kmstest proptest; do
+      patchelf --interpreter "$interpreter" --set-rpath "$libPath" "$out/bin/$prog"
     done
+  '' + ''
+    ln -s libgbm.so.1.0.0 $out/lib/libgbm.so.1
+    ln -s ${makeLibraryPath [ncurses5]}/libncursesw.so.5 $out/lib/libtinfo.so.5
   '';
 
+  # we'll just set the full rpath on everything to avoid having to track down dlopen problems
   postFixup = assert (stringLength libReplaceDir == stringLength libCompatDir); ''
     libPath="$out/lib:$out/lib/gbm:$depLibPath"
-    for lib in libgbm.so.1.0.0 ${optionalString (!libsOnly) "xorg/modules/drivers/amdgpu_drv.so"} amdvlk${bitness}.so vdpau/libvdpau_amdgpu.so; do
-      if [ -e "$out/lib/$lib" ]; then
-        patchelf --set-rpath "$libPath" "$out/lib/$lib"
-      fi
+    for lib in `find "$out/lib/" -name '*.so*' -type f`; do
+      patchelf --set-rpath "$libPath" "$lib"
     done
     for lib in libEGL.so.1 libGL.so.1.2 ${optionalString (!libsOnly) "xorg/modules/extensions/libglx.so"} dri/amdgpu_dri.so; do
-      if [ -e "$out/lib/$lib" ]; then
-        perl -pi -e 's:${libReplaceDir}:${libCompatDir}:g' "$out/lib/$lib"
-      fi
+      perl -pi -e 's:${libReplaceDir}:${libCompatDir}:g' "$out/lib/$lib"
     done
-    substituteInPlace "$out/share/vulkan/icd.d/amd_icd${bitness}.json" --replace "/usr/lib/${libArch}" "$out/lib"
+    substituteInPlace "$out/share/vulkan/icd.d/amd_icd${bitness}.json" --replace "/opt/amdgpu-pro/lib/${libArch}" "$out/lib"
   '';
 
   buildInputs = [