summary refs log tree commit diff
path: root/pkgs/applications/misc/playonlinux/default.nix
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2015-12-09 23:28:31 +0300
committerNikolay Amiantov <ab@fmap.me>2015-12-09 23:29:24 +0300
commita5a481e7ee6af1c52d72f6cda48f7db3969e50d1 (patch)
tree56af8fe6cb9ca2531741db32c3603d8c79722430 /pkgs/applications/misc/playonlinux/default.nix
parentc8eaa71caeb68dd3310c82941b78e4415230a4fc (diff)
downloadnixpkgs-a5a481e7ee6af1c52d72f6cda48f7db3969e50d1.tar
nixpkgs-a5a481e7ee6af1c52d72f6cda48f7db3969e50d1.tar.gz
nixpkgs-a5a481e7ee6af1c52d72f6cda48f7db3969e50d1.tar.bz2
nixpkgs-a5a481e7ee6af1c52d72f6cda48f7db3969e50d1.tar.lz
nixpkgs-a5a481e7ee6af1c52d72f6cda48f7db3969e50d1.tar.xz
nixpkgs-a5a481e7ee6af1c52d72f6cda48f7db3969e50d1.tar.zst
nixpkgs-a5a481e7ee6af1c52d72f6cda48f7db3969e50d1.zip
playonlinux: fix with new wxPython, fix OpenGL check
Diffstat (limited to 'pkgs/applications/misc/playonlinux/default.nix')
-rw-r--r--pkgs/applications/misc/playonlinux/default.nix98
1 files changed, 42 insertions, 56 deletions
diff --git a/pkgs/applications/misc/playonlinux/default.nix b/pkgs/applications/misc/playonlinux/default.nix
index b39eeac6878..65a703d8c89 100644
--- a/pkgs/applications/misc/playonlinux/default.nix
+++ b/pkgs/applications/misc/playonlinux/default.nix
@@ -1,8 +1,6 @@
 { stdenv
 , makeWrapper
 , fetchurl
-, wxPython
-, libXmu
 , cabextract
 , gettext
 , glxinfo
@@ -11,29 +9,22 @@
 , imagemagick
 , netcat
 , p7zip
-, python
+, python2Packages
 , unzip
 , wget
 , wine
 , xdg-user-dirs
 , xterm
+, pkgs
+, pkgsi686Linux
 }:
 
-stdenv.mkDerivation rec {
-  name = "playonlinux-${version}";
+let
   version = "4.2.9";
 
-  src = fetchurl {
-    url = "https://www.playonlinux.com/script_files/PlayOnLinux/${version}/PlayOnLinux_${version}.tar.gz";
-    sha256 = "89bb0fd7cce8cf598ebf38cad716b8587eaca5b916d54386fb24b3ff66b48624";
-  };
-
-  nativeBuildInputs = [ makeWrapper ];
-
-  buildInputs =
-    [ wxPython
-      libXmu
-      cabextract
+  binpath = stdenv.lib.makeSearchPath "bin"
+    [ cabextract
+      python2Packages.python
       gettext
       glxinfo
       gnupg1compat
@@ -41,7 +32,6 @@ stdenv.mkDerivation rec {
       imagemagick
       netcat
       p7zip
-      python
       unzip
       wget
       wine
@@ -49,56 +39,52 @@ stdenv.mkDerivation rec {
       xterm
     ];
 
+  ld32 =
+    if stdenv.system == "x86_64-linux" then "${stdenv.cc}/nix-support/dynamic-linker-m32"
+    else if stdenv.system == "i686-linux" then "${stdenv.cc}/nix-support/dynamic-linker"
+    else abort "Unsupported platform for PlayOnLinux";
+  ld64 = "${stdenv.cc}/nix-support/dynamic-linker";
+  libs = pkgs: stdenv.lib.makeLibraryPath [ pkgs.xlibs.libX11 ];
+
+in stdenv.mkDerivation {
+  name = "playonlinux-${version}";
+
+  src = fetchurl {
+    url = "https://www.playonlinux.com/script_files/PlayOnLinux/${version}/PlayOnLinux_${version}.tar.gz";
+    sha256 = "89bb0fd7cce8cf598ebf38cad716b8587eaca5b916d54386fb24b3ff66b48624";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs =
+    [ python2Packages.python
+      python2Packages.wxPython
+      python2Packages.setuptools
+    ];
+
   patchPhase = ''
-    PYFILES="python/*.py python/lib/*.py tests/python/*.py"
-    sed -i "s/env python[0-9.]*/python/" $PYFILES
+    patchShebangs python tests/python
     sed -i "s/ %F//g" etc/PlayOnLinux.desktop
   '';
 
   installPhase = ''
     install -d $out/share/playonlinux
-    install -d $out/bin
     cp -r . $out/share/playonlinux/
 
-    echo "#!${stdenv.shell}" > $out/bin/playonlinux
-    echo "$prefix/share/playonlinux/playonlinux \"\$@\"" >> $out/bin/playonlinux
-    chmod +x $out/bin/playonlinux
-
     install -D -m644 etc/PlayOnLinux.desktop $out/share/applications/playonlinux.desktop
-  '';
-
-  preFixupPhases = [ "preFixupPhase" ];
-
-  preFixupPhase = ''
-    for f in $out/bin/*; do
-      wrapProgram $f \
-        --prefix PYTHONPATH : $PYTHONPATH:$(toPythonPath "$out") \
-        --prefix PATH : \
-    ${cabextract}/bin:\
-    ${gettext}/bin:\
-    ${glxinfo}/bin:\
-    ${gnupg1compat}/bin:\
-    ${icoutils}/bin:\
-    ${imagemagick}/bin:\
-    ${netcat}/bin:\
-    ${p7zip}/bin:\
-    ${python}/bin:\
-    ${unzip}/bin:\
-    ${wget}/bin:\
-    ${wine}/bin:\
-    ${xdg-user-dirs}/bin:\
-    ${xterm}/bin
-
-    done
-
-    for f in $out/share/playonlinux/bin/*; do
-      bunzip2 $f
-    done
-  '';
 
-  postFixupPhases = [ "postFixupPhase" ];
+    makeWrapper $out/share/playonlinux/playonlinux $out/bin/playonlinux \
+      --prefix PYTHONPATH : $PYTHONPATH:$(toPythonPath "$out") \
+      --prefix PATH : ${binpath}
 
-  postFixupPhase = ''
+    bunzip2 $out/share/playonlinux/bin/check_dd_x86.bz2
+    patchelf --set-interpreter $(cat ${ld32}) --set-rpath ${libs pkgsi686Linux} $out/share/playonlinux/bin/check_dd_x86
+    ${if stdenv.system == "x86_64-linux" then ''
+      bunzip2 $out/share/playonlinux/bin/check_dd_amd64.bz2
+      patchelf --set-interpreter $(cat ${ld64}) --set-rpath ${libs pkgs} $out/share/playonlinux/bin/check_dd_amd64
+    '' else ''
+      rm $out/share/playonlinux/bin/check_dd_amd64.bz2
+    ''}
     for f in $out/share/playonlinux/bin/*; do
       bzip2 $f
     done