From 45f4b8b3adabfe8f19ef358e0d7d84df2c3c4723 Mon Sep 17 00:00:00 2001 From: Nathaniel Baxter Date: Sat, 6 Sep 2014 14:17:00 +1000 Subject: ati_unfree: Towards using ati unfree 32bit binary libs --- pkgs/os-specific/linux/ati-drivers/builder.sh | 36 +++++++++++++++++--------- pkgs/os-specific/linux/ati-drivers/default.nix | 26 +++++++++---------- 2 files changed, 37 insertions(+), 25 deletions(-) (limited to 'pkgs/os-specific/linux/ati-drivers') 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; - } -- cgit 1.4.1