summary refs log tree commit diff
path: root/pkgs/os-specific/linux/ati-drivers
diff options
context:
space:
mode:
authorNathaniel Baxter <nathaniel.baxter@gmail.com>2014-09-06 14:17:00 +1000
committerNathaniel Baxter <nathaniel.baxter@gmail.com>2014-09-07 12:40:40 +1000
commit45f4b8b3adabfe8f19ef358e0d7d84df2c3c4723 (patch)
treed34476fa43c2dd091f5ddb6a55dbaca349b87e40 /pkgs/os-specific/linux/ati-drivers
parentc16874c4c0e8f0980d1000b4024239146c02028d (diff)
downloadnixlib-45f4b8b3adabfe8f19ef358e0d7d84df2c3c4723.tar
nixlib-45f4b8b3adabfe8f19ef358e0d7d84df2c3c4723.tar.gz
nixlib-45f4b8b3adabfe8f19ef358e0d7d84df2c3c4723.tar.bz2
nixlib-45f4b8b3adabfe8f19ef358e0d7d84df2c3c4723.tar.lz
nixlib-45f4b8b3adabfe8f19ef358e0d7d84df2c3c4723.tar.xz
nixlib-45f4b8b3adabfe8f19ef358e0d7d84df2c3c4723.tar.zst
nixlib-45f4b8b3adabfe8f19ef358e0d7d84df2c3c4723.zip
ati_unfree: Towards using ati unfree 32bit binary libs
Diffstat (limited to 'pkgs/os-specific/linux/ati-drivers')
-rw-r--r--pkgs/os-specific/linux/ati-drivers/builder.sh36
-rw-r--r--pkgs/os-specific/linux/ati-drivers/default.nix26
2 files changed, 37 insertions, 25 deletions
diff --git a/pkgs/os-specific/linux/ati-drivers/builder.sh b/pkgs/os-specific/linux/ati-drivers/builder.sh
index ab347d976a5f..90d186ea1130 100644
--- a/pkgs/os-specific/linux/ati-drivers/builder.sh
+++ b/pkgs/os-specific/linux/ati-drivers/builder.sh
@@ -13,6 +13,21 @@ sh $run_file --extract .
 
 eval "$patchPhase"
 
+case "$system" in
+  x86_64-linux)
+    arch=x86_64
+    lib_arch=lib64
+    DIR_DEPENDING_ON_XORG_VERSION=xpic_64a
+  ;;
+  i686-linux)
+    arch=x86
+    lib_arch=lib
+    DIR_DEPENDING_ON_XORG_VERSION=xpic
+  ;;
+  *) exit 1;;
+esac
+
+if test -z "$libsOnly"; then
 kernelVersion=$(cd ${kernel}/lib/modules && ls)
 kernelBuild=$(echo ${kernel}/lib/modules/$kernelVersion/build)
 linuxsources=$(echo ${kernel}/lib/modules/$kernelVersion/source)
@@ -105,17 +120,6 @@ setSMP
 setModVersions
 CC=gcc
 MODULE=fglrx
-case "$system" in
-  x86_64-linux)
-    arch=x86_64
-    lib_arch=lib64
-  ;;
-  i686-linux)
-    arch=x86
-    lib_arch=lib
-  ;;
-  *) exit 1;;
-esac
 LIBIP_PREFIX=$TMP/arch/$arch/lib/modules/fglrx/build_mod
 [ -d $LIBIP_PREFIX ]
 GCC_MAJOR="`gcc --version | grep -o -e ") ." | head -1 | cut -d " " -f 2`"
@@ -138,6 +142,8 @@ GCC_MAJOR="`gcc --version | grep -o -e ") ." | head -1 | cut -d " " -f 2`"
   cd $TMP
 }
 
+fi
+
 { # install
 
   mkdir -p $out/lib/xorg
@@ -152,13 +158,15 @@ GCC_MAJOR="`gcc --version | grep -o -e ") ." | head -1 | cut -d " " -f 2`"
   # what are those files used for?
   cp -r common/etc $out
 
-  DIR_DEPENDING_ON_XORG_VERSION=xpic_64a
   cp -r $DIR_DEPENDING_ON_XORG_VERSION/usr/X11R6/$lib_arch/* $out/lib/xorg
 
+  # install kernel module
+  if test -z "$libsOnly"; then
   t=$out/lib/modules/${kernelVersion}/kernel/drivers/misc
   mkdir -p $t
 
   cp ./common/lib/modules/fglrx/build_mod/2.6.x/fglrx.ko $t
+  fi
 
   # should this be installed at all?
   # its used by the example fglrx_gamma only
@@ -185,6 +193,8 @@ GCC_MAJOR="`gcc --version | grep -o -e ") ." | head -1 | cut -d " " -f 2`"
   patchelf --set-rpath $gcc/$lib_arch $out/lib/libatiadlxx.so
 }
 
+if test -z "$libsOnly"; then
+
 { # build samples
   mkdir -p $out/bin
 
@@ -229,6 +239,8 @@ GCC_MAJOR="`gcc --version | grep -o -e ") ." | head -1 | cut -d " " -f 2`"
 
 }
 
+fi
+
 for p in $extraDRIlibs; do
   for lib in $p/lib/*.so*; do
     ln -s $lib $out/lib/
diff --git a/pkgs/os-specific/linux/ati-drivers/default.nix b/pkgs/os-specific/linux/ati-drivers/default.nix
index 10aeea18ceb4..45452c1ea6d2 100644
--- a/pkgs/os-specific/linux/ati-drivers/default.nix
+++ b/pkgs/os-specific/linux/ati-drivers/default.nix
@@ -1,10 +1,16 @@
-{ stdenv, fetchurl, kernel, xlibs, which, imake
+{ stdenv, fetchurl, kernel ? null, xlibs, which, imake
 , mesa # for fgl_glxgears
 , libXxf86vm, xf86vidmodeproto # for fglrx_gamma
 , xorg, makeWrapper, glibc, patchelf
 , unzip
+, # Whether to build the libraries only (i.e. not the kernel module or
+  # driver utils). Used to support 32-bit binaries on 64-bit
+  # Linux.
+  libsOnly ? false
 }:
 
+assert (!libsOnly) -> kernel != null;
+
 # If you want to use a different Xorg version probably
 # DIR_DEPENDING_ON_XORG_VERSION in builder.sh has to be adopted (?)
 # make sure libglx.so of ati is used. xorg.xorgserver does provide it as well
@@ -21,10 +27,10 @@
 # There is one issue left:
 # /usr/lib/dri/fglrx_dri.so must point to /run/opengl-driver/lib/fglrx_dri.so
 
-assert stdenv.system == "x86_64-linux";
+with stdenv.lib;
 
 stdenv.mkDerivation {
-  name = "ati-drivers-14.4-${kernel.version}";
+  name = "ati-drivers-14.4" + (optionalString (!libsOnly) "-${kernel.version}");
 
   builder = ./builder.sh;
 
@@ -49,7 +55,9 @@ stdenv.mkDerivation {
       mesa
     ];
 
-  kernel = kernel.dev;
+  inherit libsOnly;
+
+  kernel = if libsOnly then null else kernel.dev;
 
   inherit glibc /* glibc only used for setting interpreter */;
 
@@ -73,15 +81,7 @@ stdenv.mkDerivation {
     homepage = http://support.amd.com/us/gpudownload/Pages/index.aspx;
     license = licenses.unfree;
     maintainers = with maintainers; [marcweber offline];
-    platforms = [ "x86_64-linux" ];
+    platforms = platforms.linux;
     hydraPlatforms = [];
   };
-
-  # moved assertions here because the name is evaluated when the NixOS manual is generated
-  # Don't make that fail - fail lazily when a users tries to build this derivation only
-  dummy =
-    # assert xorg.xorgserver.name == "xorg-server-1.7.5";
-    assert stdenv.system == "x86_64-linux"; # i686-linux should work as well - however I didn't test it.
-    null;
-
 }