From 52cc26eb3e59c199adfad110fb70df2613a81ed9 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Mon, 23 Feb 2015 21:18:19 -0600 Subject: [PATCH 1/6] Revert "Revert "dropbox: update to version 3.2.6"" This reverts commit a9b2dee6e6fa86fde332daf3c264a50e8613c621. --- pkgs/applications/networking/dropbox/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix index d49162d0723..df64ea1f2d8 100644 --- a/pkgs/applications/networking/dropbox/default.nix +++ b/pkgs/applications/networking/dropbox/default.nix @@ -25,9 +25,9 @@ let else if stdenv.system == "i686-linux" then "ld-linux.so.2" else throw "Dropbox client for: ${stdenv.system} not supported!"; - version = "2.10.52"; - sha256 = if stdenv.system == "x86_64-linux" then "0fn2frp00f0p0r6v5czzxfbw1ifan9w12k3ry8gq1m4bvx6g27p6" - else if stdenv.system == "i686-linux" then "1rm5kspb53zqgaz48v8x3ffk1mcfi0nh0zsmsdniyrgqbis5mmm9" + version = "3.2.6"; + sha256 = if stdenv.system == "x86_64-linux" then "1pih4dgqsxx9s8vjmn49qdrrgfkkw8wl3m68x7mdz6wqb4lj3sry" + else if stdenv.system == "i686-linux" then "0nnxj32xvhn312a16fhhxjf0brbivaw6m0s8d8qdn44qmg9fr4bz" else throw "Dropbox client for: ${stdenv.system} not supported!"; # relative location where the dropbox libraries are stored From 32643c010e95dbe9f44184ac9cb522a81898e530 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Mon, 23 Feb 2015 21:10:57 -0600 Subject: [PATCH 2/6] dropbox: update to 3.2.6 (fixed) --- .../networking/dropbox/default.nix | 49 +++++++++++++------ pkgs/top-level/all-packages.nix | 4 +- 2 files changed, 37 insertions(+), 16 deletions(-) diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix index df64ea1f2d8..9de4afc5287 100644 --- a/pkgs/applications/networking/dropbox/default.nix +++ b/pkgs/applications/networking/dropbox/default.nix @@ -1,8 +1,6 @@ { stdenv, fetchurl, makeDesktopItem -, libSM, libX11, libXext, libXcomposite, libXcursor, libXdamage -, libXfixes, libXi, libXinerama, libXrandr, libXrender -, dbus, dbus_glib, fontconfig, gcc, patchelf -, atk, glib, gdk_pixbuf, gtk, pango, zlib +, dbus_libs, gcc, glib, libdrm, libffi, libICE, librsync, libSM +, libX11, libXmu, mesa, ncurses, popt, qt5, zlib }: # this package contains the daemon version of dropbox @@ -33,14 +31,11 @@ let # relative location where the dropbox libraries are stored appdir = "opt/dropbox"; - # Libraries referenced by dropbox binary. - # Be aware that future versions of the dropbox binary may refer - # to different versions than are currently in these packages. - ldpath = stdenv.lib.makeSearchPath "lib" [ - libSM libX11 libXext libXcomposite libXcursor libXdamage - libXfixes libXi libXinerama libXrandr libXrender - atk dbus dbus_glib glib fontconfig gcc gdk_pixbuf - gtk pango zlib + ldpath = stdenv.lib.makeSearchPath "lib" + [ + dbus_libs gcc glib libdrm libffi libICE librsync libSM libX11 + libXmu mesa ncurses popt qt5.base qt5.declarative qt5.webkit + zlib ]; desktopItem = makeDesktopItem { @@ -73,9 +68,33 @@ in stdenv.mkDerivation { mkdir -p "$out/bin" ln -s "$out/${appdir}/dropbox" "$out/bin/dropbox" - patchelf --set-interpreter ${stdenv.glibc}/lib/${interpreter} \ - "$out/${appdir}/dropbox" - + rm "$out/${appdir}/libdrm.so.2" + rm "$out/${appdir}/libffi.so.6" + rm "$out/${appdir}/libicudata.so.42" + rm "$out/${appdir}/libicui18n.so.42" + rm "$out/${appdir}/libicuuc.so.42" + rm "$out/${appdir}/libGL.so.1" + rm "$out/${appdir}/libpopt.so.0" + rm "$out/${appdir}/libQt5Core.so.5" + rm "$out/${appdir}/libQt5DBus.so.5" + rm "$out/${appdir}/libQt5Gui.so.5" + rm "$out/${appdir}/libQt5Network.so.5" + rm "$out/${appdir}/libQt5OpenGL.so.5" + rm "$out/${appdir}/libQt5PrintSupport.so.5" + rm "$out/${appdir}/libQt5Qml.so.5" + rm "$out/${appdir}/libQt5Quick.so.5" + rm "$out/${appdir}/libQt5Sql.so.5" + rm "$out/${appdir}/libQt5WebKit.so.5" + rm "$out/${appdir}/libQt5WebKitWidgets.so.5" + rm "$out/${appdir}/libQt5Widgets.so.5" + rm "$out/${appdir}/librsync.so.1" + rm "$out/${appdir}/libX11-xcb.so.1" + + rm -fr "$out/${appdir}/plugins" + + find "$out/${appdir}" -type f -a -perm +0100 \ + -print -exec patchelf --set-interpreter ${stdenv.glibc}/lib/${interpreter} {} \; + RPATH=${ldpath}:${gcc.cc}/lib:$out/${appdir} echo "updating rpaths to: $RPATH" find "$out/${appdir}" -type f -a -perm +0100 \ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d0bdc43d78e..d47c440ad8d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11380,7 +11380,9 @@ let copy-com = callPackage ../applications/networking/copy-com { }; - dropbox = callPackage ../applications/networking/dropbox { }; + dropbox = callPackage ../applications/networking/dropbox { + qt5 = qt54; + }; dropbox-cli = callPackage ../applications/networking/dropbox-cli { }; From d36af8e0ae59b5cb33ab355e278bfee7e7535829 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Tue, 24 Feb 2015 10:26:00 -0600 Subject: [PATCH 3/6] dropbox: don't wrap with Mesa --- pkgs/applications/networking/dropbox/default.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix index 9de4afc5287..ff2e82d18dd 100644 --- a/pkgs/applications/networking/dropbox/default.nix +++ b/pkgs/applications/networking/dropbox/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, makeDesktopItem , dbus_libs, gcc, glib, libdrm, libffi, libICE, librsync, libSM -, libX11, libXmu, mesa, ncurses, popt, qt5, zlib +, libX11, libXmu, ncurses, popt, qt5, zlib }: # this package contains the daemon version of dropbox @@ -34,7 +34,7 @@ let ldpath = stdenv.lib.makeSearchPath "lib" [ dbus_libs gcc glib libdrm libffi libICE librsync libSM libX11 - libXmu mesa ncurses popt qt5.base qt5.declarative qt5.webkit + libXmu ncurses popt qt5.base qt5.declarative qt5.webkit zlib ]; @@ -51,7 +51,6 @@ in stdenv.mkDerivation { name = "dropbox-${version}-bin"; src = fetchurl { name = "dropbox-${version}.tar.gz"; - url = "https://dl-web.dropbox.com/u/17/dropbox-lnx.${arch}-${version}.tar.gz"; inherit sha256; }; From 115e8110f7616b15dd8adddc87613a8292bbf933 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Tue, 24 Feb 2015 10:26:22 -0600 Subject: [PATCH 4/6] dropbox: wrap for LD_LIBRARY_PATH (runtime loads) --- pkgs/applications/networking/dropbox/default.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix index ff2e82d18dd..a3958b9512e 100644 --- a/pkgs/applications/networking/dropbox/default.nix +++ b/pkgs/applications/networking/dropbox/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, makeDesktopItem +{ stdenv, fetchurl, makeDesktopItem, makeWrapper , dbus_libs, gcc, glib, libdrm, libffi, libICE, librsync, libSM , libX11, libXmu, ncurses, popt, qt5, zlib }: @@ -61,11 +61,11 @@ in stdenv.mkDerivation { rm -f .dropbox-dist/dropboxd ''; + buildInputs = [ makeWrapper ]; + installPhase = '' mkdir -p "$out/${appdir}" cp -r ".dropbox-dist/dropbox-lnx.${arch}-${version}"/* "$out/${appdir}/" - mkdir -p "$out/bin" - ln -s "$out/${appdir}/dropbox" "$out/bin/dropbox" rm "$out/${appdir}/libdrm.so.2" rm "$out/${appdir}/libffi.so.6" @@ -101,6 +101,10 @@ in stdenv.mkDerivation { mkdir -p "$out/share/applications" cp "${desktopItem}/share/applications/"* $out/share/applications + + mkdir -p "$out/bin" + makeWrapper "$out/${appdir}/dropbox" "$out/bin/dropbox" \ + --prefix LD_LIBRARY_PATH : "${ldpath}" ''; meta = { From bd6a15d6d3323cbbc4774db40258961c5c2c6a9b Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Tue, 24 Feb 2015 10:54:54 -0600 Subject: [PATCH 5/6] dropbox: rm qt.conf --- pkgs/applications/networking/dropbox/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix index a3958b9512e..bb87da2decb 100644 --- a/pkgs/applications/networking/dropbox/default.nix +++ b/pkgs/applications/networking/dropbox/default.nix @@ -89,6 +89,7 @@ in stdenv.mkDerivation { rm "$out/${appdir}/librsync.so.1" rm "$out/${appdir}/libX11-xcb.so.1" + rm "$out/${appdir}/qt.conf" rm -fr "$out/${appdir}/plugins" find "$out/${appdir}" -type f -a -perm +0100 \ From f12536f1511fc045b3a12a1f9421c40c87f7be59 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Tue, 24 Feb 2015 11:12:56 -0600 Subject: [PATCH 6/6] dropbox: use bundled librsync (working) --- pkgs/applications/networking/dropbox/default.nix | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix index bb87da2decb..ad6dac31dec 100644 --- a/pkgs/applications/networking/dropbox/default.nix +++ b/pkgs/applications/networking/dropbox/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, makeDesktopItem, makeWrapper -, dbus_libs, gcc, glib, libdrm, libffi, libICE, librsync, libSM +, dbus_libs, gcc, glib, libdrm, libffi, libICE, libSM , libX11, libXmu, ncurses, popt, qt5, zlib }: @@ -9,10 +9,13 @@ # note: the resulting program has to be invoced as # 'dropbox' because the internal python engine takes # uses the name of the program as starting point. -# -# todo: dropbox is shipped with some copies of libraries. -# replace these libraries with the appropriate ones in -# nixpkgs. + +# Dropbox ships with its own copies of some libraries. +# Unfortunately, upstream makes changes to the source of +# some libraries, rendering them incompatible with the +# open-source versions. Wherever possible, we must try +# to make the bundled libraries work, rather than replacing +# them with our own. let arch = if stdenv.system == "x86_64-linux" then "x86_64" @@ -33,7 +36,7 @@ let ldpath = stdenv.lib.makeSearchPath "lib" [ - dbus_libs gcc glib libdrm libffi libICE librsync libSM libX11 + dbus_libs gcc glib libdrm libffi libICE libSM libX11 libXmu ncurses popt qt5.base qt5.declarative qt5.webkit zlib ]; @@ -86,7 +89,6 @@ in stdenv.mkDerivation { rm "$out/${appdir}/libQt5WebKit.so.5" rm "$out/${appdir}/libQt5WebKitWidgets.so.5" rm "$out/${appdir}/libQt5Widgets.so.5" - rm "$out/${appdir}/librsync.so.1" rm "$out/${appdir}/libX11-xcb.so.1" rm "$out/${appdir}/qt.conf"