From 0250bd7bac03701f3a043e9fef8f90523a9e7b17 Mon Sep 17 00:00:00 2001
From: Marc Weber <marco-oweber@gmx.de>
Date: Wed, 28 Nov 2007 02:10:27 +0000
Subject: [PATCH] Opera updated - works now on x64-linux as well

svn path=/nixpkgs/trunk/; revision=9805
---
 .../networking/browsers/opera/builder.sh      | 11 ++++----
 .../networking/browsers/opera/default.nix     | 26 ++++++++++++-------
 pkgs/top-level/all-packages.nix               |  7 ++---
 3 files changed, 26 insertions(+), 18 deletions(-)

diff --git a/pkgs/applications/networking/browsers/opera/builder.sh b/pkgs/applications/networking/browsers/opera/builder.sh
index 26d5df1cc4dc..1de82fdfa724 100644
--- a/pkgs/applications/networking/browsers/opera/builder.sh
+++ b/pkgs/applications/networking/browsers/opera/builder.sh
@@ -7,6 +7,7 @@ buildPhase() {
 
 installPhase=installPhase
 installPhase() {
+    sed -i 's=/bin/pwd=pwd=' opera install.sh 
     # Note: the "no" is because the install scripts asks whether we
     # want to install icons in some system-wide directories.
     echo no | ./install.sh --prefix=$out
@@ -16,20 +17,18 @@ installPhase() {
         rpath="$rpath:$i/lib"
     done
 
+    [ -z ${system##*64*} ] && suf=64
+
     # !!! ugh, should fix this eventually; just make a normal gcc dependency
     gcc=$(cat $NIX_GCC/nix-support/orig-gcc)
-    rpath="$rpath:$gcc/lib"
+    rpath="$rpath:$libstdcpp5/lib$suf"
     
-    for i in $out/lib/opera/*/opera $out/lib/opera/plugins/opera*; do
+    for i in $out/lib/opera/*/opera $out/lib/opera/*/operaplugin{wrapper,cleaner}; do
         patchelf \
             --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
             --set-rpath "$rpath" \
             "$i"
     done
-
-    # opera seems to need libnpp.so in the same path ?
-    # (search the opera help for libnpp..
-    cp $out/lib/opera/plugins/libnpp.so $out/lib/opera/9*
 }
 
 genericBuild
diff --git a/pkgs/applications/networking/browsers/opera/default.nix b/pkgs/applications/networking/browsers/opera/default.nix
index 754a018c3286..d807add5111f 100644
--- a/pkgs/applications/networking/browsers/opera/default.nix
+++ b/pkgs/applications/networking/browsers/opera/default.nix
@@ -1,7 +1,6 @@
-{ stdenv, fetchurl, qt, zlib, libX11, libXext, libSM, libICE, libstdcpp5
+{ stdenv, fetchurl, qt, zlib, libX11, libXext, libSM, libICE, libstdcpp5, glibc
 , motif ? null, libXt ? null}:
 
-assert stdenv.system == "i686-linux";
 assert motif != null -> libXt != null;
 
 # !!! Add Xinerama and Xrandr dependencies?  Or should those be in Qt?
@@ -12,13 +11,22 @@ stdenv.mkDerivation rec {
   version = "9.24-20071015.5";
   name = "opera-${version}";
 
-  builder = ./builder.sh;
-  src = fetchurl {
-    url = ftp://ftp.task.gda.pl/pub/opera/linux/924/final/en/i386/shared/opera-9.24-20071015.5-shared-qt.i386-en.tar.bz2;
-    sha256 = "1frhnrp63k4lz29a8z9c99h383xrsrby432xp20hxrylh0zypzb5";
-  };
+  inherit libstdcpp5;
 
+  builder = ./builder.sh;
+    src = if (stdenv.system == "i686-linux") then
+      fetchurl {
+        url = ftp://ftp.task.gda.pl/pub/opera/linux/950b/final/en/i386/shared/opera-9.50b-20071024.5-shared-qt.i386-en.tar.bz2;
+        sha256 = "0vv1q86is9x6vw8fx92wrnvlyn4x29zgk9zjn66rcx37n6grqqah";
+      } else if (stdenv.system == "x86_64-linux") then
+      fetchurl {
+        url = ftp://ftp.task.gda.pl/pub/opera/linux/950b/final/en/x86_64/opera-9.50-20071024.2-shared-qt.x86_64-1643.tar.bz2;
+        sha256 = "1gv1r18ar3vz1l24nf8qixjlba1yb5d3xvg3by41i4dy0vlznqn6";
+      } else throw "unsupported platform ${stdenv.system} (only i686-linux and x86_64 linux supported yet)";
+
+  # operapluginwrapper seems to require libXt ?
+  # Adding it makes startup faster and omits error messages (on x68)
   libPath =
-    [qt motif zlib libX11 libXext libSM libICE libstdcpp5]
-    ++ (if motif != null then [motif libXt ] else []);
+    [glibc qt motif zlib libX11 libXt libXext libSM libICE libstdcpp5]
+    ++ (if motif != null then [motif ] else []);
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index b82f113cad7b..fe19441f91fd 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -4057,11 +4057,12 @@ rec {
   };
 
   opera = import ../applications/networking/browsers/opera {
-    inherit fetchurl stdenv zlib;
+    inherit fetchurl zlib glibc;
+    stdenv = overrideGCC stdenv gcc40;
     inherit (xlibs) libX11 libSM libICE libXt libXext;
     qt = qt3;
-    #motif = lesstif;
-    libstdcpp5 = gcc33.gcc;
+    #33motif = lesstif;
+    libstdcpp5 = (if (stdenv.system == "i686-linux") then gcc33 /* stdc++ 3.8 is used */ else gcc).gcc;
   };
 
   pan = import ../applications/networking/newsreaders/pan {