diff options
author | Thomas Tuegel <ttuegel@gmail.com> | 2015-02-24 15:59:14 -0600 |
---|---|---|
committer | Thomas Tuegel <ttuegel@gmail.com> | 2015-02-24 15:59:14 -0600 |
commit | 030eed83078d668224edfbe741f2d2d5318db843 (patch) | |
tree | 9c33f4e9c430294b2931fe8bc75a414290d0e99e /pkgs | |
parent | 8300898f98e235dcfa321887d52b7f72f80b5ad5 (diff) | |
parent | f12536f1511fc045b3a12a1f9421c40c87f7be59 (diff) | |
download | nixlib-030eed83078d668224edfbe741f2d2d5318db843.tar nixlib-030eed83078d668224edfbe741f2d2d5318db843.tar.gz nixlib-030eed83078d668224edfbe741f2d2d5318db843.tar.bz2 nixlib-030eed83078d668224edfbe741f2d2d5318db843.tar.lz nixlib-030eed83078d668224edfbe741f2d2d5318db843.tar.xz nixlib-030eed83078d668224edfbe741f2d2d5318db843.tar.zst nixlib-030eed83078d668224edfbe741f2d2d5318db843.zip |
Merge branch 'dropbox'
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/applications/networking/dropbox/default.nix | 77 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 4 |
2 files changed, 54 insertions, 27 deletions
diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix index d49162d07232..ad6dac31dece 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 +{ stdenv, fetchurl, makeDesktopItem, makeWrapper +, dbus_libs, gcc, glib, libdrm, libffi, libICE, libSM +, libX11, libXmu, ncurses, popt, qt5, zlib }: # this package contains the daemon version of dropbox @@ -11,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" @@ -25,22 +26,19 @@ 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 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 libSM libX11 + libXmu ncurses popt qt5.base qt5.declarative qt5.webkit + zlib ]; desktopItem = makeDesktopItem { @@ -56,7 +54,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; }; @@ -67,15 +64,39 @@ 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" - 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}/libX11-xcb.so.1" + + rm "$out/${appdir}/qt.conf" + 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 \ @@ -83,6 +104,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 = { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2371fbaaa985..4dea95572d6e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11384,7 +11384,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 { }; |