From c26262e72ed274ad756d53f921a30b14249a2e2a Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 2 Sep 2009 13:24:08 +0000 Subject: [PATCH] * Some cleanup of the Opera expression. It doesn't need the libstdcpp from GCC 3.3 anymore, GCC 4.x is fine. So we can use the regular Qt 3 build. Also, there don't seem to be any references to Motif anymore. svn path=/nixpkgs/trunk/; revision=16932 --- .../networking/browsers/opera/builder.sh | 25 ++++-------- .../networking/browsers/opera/default.nix | 40 +++++++++---------- pkgs/top-level/all-packages.nix | 11 +---- 3 files changed, 26 insertions(+), 50 deletions(-) diff --git a/pkgs/applications/networking/browsers/opera/builder.sh b/pkgs/applications/networking/browsers/opera/builder.sh index 99f6000ec93..0564b6e6230 100644 --- a/pkgs/applications/networking/browsers/opera/builder.sh +++ b/pkgs/applications/networking/browsers/opera/builder.sh @@ -5,38 +5,27 @@ buildPhase() { } installPhase() { - set -x - - sed -i 's=/bin/pwd=pwd=' install.sh + substituteInPlace install.sh --replace /bin/pwd pwd + # 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 - rpath=/no-such-path - for i in $libPath; do - 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:$libstdcpp5/lib$suf" - - for i in $out/lib/opera/*/opera $out/lib/opera/*/operaplugincleaner $out/lib/opera/*/operapluginwrapper-native; do - [ -h "$i" ] && i=$(readline "$i") + for i in $out/lib/opera/*/opera $out/lib/opera/*/operaplugincleaner $out/lib/opera/*/operapluginwrapper; do echo "$i <<<<<<<<<<<<" patchelf \ --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ - --set-rpath "$rpath" \ + --set-rpath "$libPath" \ "$i" done - # substitute pwd as late as possible so that the md5 checkusm check of opera passes - sed -i 's=/bin/pwd=pwd=' $out/bin/opera + + # Substitute pwd as late as possible so that the md5 checksum check of opera passes. + substituteInPlace $out/bin/opera --replace /bin/pwd pwd ensureDir $out/share/applications cp $desktopItem/share/applications/* $out/share/applications - } genericBuild diff --git a/pkgs/applications/networking/browsers/opera/default.nix b/pkgs/applications/networking/browsers/opera/default.nix index 810deb6823c..dc62030641b 100644 --- a/pkgs/applications/networking/browsers/opera/default.nix +++ b/pkgs/applications/networking/browsers/opera/default.nix @@ -1,37 +1,33 @@ -{ stdenv, fetchurl, qt, zlib, libX11, libXext, libSM, libICE, libstdcpp5, glibc -, motif ? null, libXt ? null +{ stdenv, fetchurl, qt, zlib, libX11, libXext, libSM, libICE, libXt, glibc , makeDesktopItem }: -assert motif != null -> libXt != null; - -# !!! Add Xinerama and Xrandr dependencies? Or should those be in Qt? - -# Hm, does Opera 9.x still use Motif for anything? +assert stdenv.isLinux; stdenv.mkDerivation rec { - version = "10.0"; - name = "opera-${version}"; - - inherit libstdcpp5; + name = "opera-10.00"; builder = ./builder.sh; - src = if (stdenv.system == "i686-linux") then + + src = + if stdenv.system == "i686-linux" then fetchurl { - url = http://mirror.liteserver.nl/pub/opera/linux/1000/final/en/i386/shared/opera-10.00.gcc4-shared-qt3.i386.tar.gz ; + url = "http://mirror.liteserver.nl/pub/opera/linux/1000/final/en/i386/shared/${name}.gcc4-shared-qt3.i386.tar.gz"; sha256 = "1l87rxdzq2mb92jbwj4gg79j177yzyfbkqb52gcdwicw8jcmhsad"; - } else if (stdenv.system == "x86_64-linux") then + } + else if stdenv.system == "x86_64-linux" then fetchurl { - url = http://mirror.liteserver.nl/pub/opera/linux/1000/final/en/x86_64/opera-10.00.gcc4-shared-qt3.x86_64.tar.gz ; + url = "http://mirror.liteserver.nl/pub/opera/linux/1000/final/en/x86_64/${name}.gcc4-shared-qt3.x86_64.tar.gz"; sha256 = "0w9a56j3jz0bjdj98k6n4xmrjnkvlxm32cfvh2c0f5pvgwcr642i"; - } else throw "unsupported platform ${stdenv.system} (only i686-linux and x86_64 linux supported yet)"; + } + else throw "Opera is not supported on ${stdenv.system} (only i686-linux and x86_64 linux are supported)"; dontStrip = 1; - # operapluginwrapper seems to require libXt ? - # Adding it makes startup faster and omits error messages (on x68) - libPath = - [glibc qt motif zlib libX11 libXt libXext libSM libICE libstdcpp5] - ++ (if motif != null then [motif ] else []); + + # `operapluginwrapper' requires libXt. Adding it makes startup faster + # and omits error messages (on x86). + libPath = stdenv.lib.makeLibraryPath + [ stdenv.gcc.gcc glibc qt zlib libX11 libXt libXext libSM libICE ]; desktopItem = makeDesktopItem { name = "Opera"; @@ -43,8 +39,8 @@ stdenv.mkDerivation rec { categories = "Application;Network;"; }; - meta = { homepage = http://www.opera.com; + description = "The Opera web browser"; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 33d06aadaee..71791c1f229 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4003,12 +4003,6 @@ let mysqlSupport = getConfig ["qt" "mysql"] false; }; - qt3gcc33 = qt3.override { - stdenv = overrideGCC stdenv gcc33; - openglSupport = false; - mysqlSupport = false; - }; - qt3mysql = qt3.override { mysqlSupport = true; }; @@ -6918,11 +6912,8 @@ let opera = import ../applications/networking/browsers/opera { inherit fetchurl zlib glibc stdenv makeDesktopItem; -# stdenv = overrideGCC stdenv gcc40; inherit (xlibs) libX11 libSM libICE libXt libXext; - #33motif = lesstif; - qt = if (stdenv.system == "i686-linux") then qt3gcc33 else qt3; - libstdcpp5 = (if (stdenv.system == "i686-linux") then gcc33 /* stdc++ 3.8 is used */ else gcc42).gcc; + qt = qt3; }; pan = import ../applications/networking/newsreaders/pan {