From 406a7146a4a9531d2127865225a2bbf65bd8f2c3 Mon Sep 17 00:00:00 2001 From: mlatus Date: Thu, 12 Mar 2020 21:46:32 +0800 Subject: [PATCH 1/2] wpsoffice: 11.1.0.9080 -> 11.1.0.9126 --- .../applications/office/wpsoffice/default.nix | 108 +++++++++--------- 1 file changed, 53 insertions(+), 55 deletions(-) diff --git a/pkgs/applications/office/wpsoffice/default.nix b/pkgs/applications/office/wpsoffice/default.nix index 7032632da884cb..63b1d1430bf514 100644 --- a/pkgs/applications/office/wpsoffice/default.nix +++ b/pkgs/applications/office/wpsoffice/default.nix @@ -1,22 +1,44 @@ -{ stdenv, fetchurl -, libX11, glib, xorg, fontconfig, freetype -, zlib, libpng12, libICE, libXrender, cups -, alsaLib, atk, cairo, dbus, expat -, gdk-pixbuf, gtk2-x11, lzma, pango, zotero -, sqlite, libuuid, qt5, dpkg }: - -stdenv.mkDerivation rec{ +# Build tools +{ stdenv, fetchurl, dpkg, +# Dependencies + alsaLib, atk, cairo, dbus, + expat, fontconfig, freetype, gdk-pixbuf, + gtk2-x11, glib, primusLib, xorg, + libtool, lzma, pango, nspr, qt5, qt4, + nss, sqlite, libuuid, zlib, cups, file, + wrapGAppsHook +}: +let + deps = [ + alsaLib atk cairo dbus.lib + expat fontconfig.lib + freetype gdk-pixbuf gtk2-x11 glib + primusLib xorg.libICE libtool.lib + lzma pango nspr qt5.qtbase qt4 + nss xorg.libSM sqlite libuuid + xorg.libX11 xorg.libxcb + xorg.libXcomposite xorg.libXcursor + xorg.libXdamage xorg.libXfixes + xorg.libXi xorg.libXrandr + xorg.libXrender xorg.libXScrnSaver + xorg.libXtst xorg.libXext zlib cups + ]; + libPath = stdenv.lib.makeLibraryPath deps; +in +stdenv.mkDerivation rec { pname = "wpsoffice"; - version = "11.1.0.9080"; + version = "11.1.0.9126"; src = fetchurl { - url = "http://wdl1.pcfg.cache.wpscdn.com/wpsdl/wpsoffice/download/linux/9080/wps-office_11.1.0.9080.XA_amd64.deb"; - sha256 = "1731e9aea22ef4e558ad66b1373d863452b4f570aecf09d448ae28a821333454"; + url = "http://wdl1.pcfg.cache.wpscdn.com/wpsdl/wpsoffice/download/linux/9126/wps-office_11.1.0.9126.XA_amd64.deb"; + sha256 = "10d5sgpl1i70rj2596i6865hj0xdlzwdrwiplz41zys6l4zbmfp7"; }; unpackCmd = "dpkg -x $src ."; sourceRoot = "."; - nativeBuildInputs = [ qt5.wrapQtAppsHook dpkg ]; + nativeBuildInputs = [ wrapGAppsHook qt5.wrapQtAppsHook dpkg ]; + dontWrapQtApps = true; + dontWrapGApps = true; meta = { description = "Office program originally named Kingsoft Office"; @@ -27,43 +49,6 @@ stdenv.mkDerivation rec{ maintainers = [ stdenv.lib.maintainers.mlatus ]; }; - libPath = with xorg; stdenv.lib.makeLibraryPath [ - libX11 - libpng12 - glib - libSM - libXext - fontconfig - zlib - freetype - libICE - cups - libXrender - libxcb - - alsaLib - atk - cairo - dbus.daemon.lib - expat - fontconfig.lib - gdk-pixbuf - gtk2-x11 - lzma - pango - zotero - sqlite - libuuid - libXcomposite - libXcursor - libXdamage - libXfixes - libXi - libXrandr - libXScrnSaver - libXtst - ]; - dontPatchELF = true; # wpsoffice uses `/build` in its own build system making nix things there @@ -77,18 +62,31 @@ stdenv.mkDerivation rec{ cp -r usr/* $out # Avoid forbidden reference error due use of patchelf rm -r * - for i in wps wpp et wpspdf; do - patchelf \ - --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - --force-rpath --set-rpath "$(patchelf --print-rpath $prefix/office6/$i):${stdenv.cc.cc.lib}/lib64:${libPath}" \ - $prefix/office6/$i + bins=$(find $prefix/office6 -maxdepth 1 -executable ! -type d|grep -v '.*\.so\.*') + for i in $bins; do + origin_rpath=$(patchelf --print-rpath $i) + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $i || true + patchelf --force-rpath --set-rpath "$origin_rpath''${origin_rpath:+:}${stdenv.cc.cc.lib}/lib64:${libPath}" $i || true + done + + for i in et wpp wps wpspdf;do substituteInPlace $out/bin/$i \ --replace /opt/kingsoft/wps-office $prefix done + for i in $out/share/applications/*;do substituteInPlace $i \ --replace /usr/bin $out/bin \ --replace /opt/kingsoft/wps-office $prefix done ''; -} \ No newline at end of file + + postFixup = '' + bins=$(find $prefix/office6 -maxdepth 1 -executable ! -type d|grep -v '.*\.so\.*') + for i in $bins;do + echo Wrapping $i + wrapQtApp $i + wrapGApp $i + done + ''; +} From 02f337ef1fde3cbbf58ffdba8875df42d49fc234 Mon Sep 17 00:00:00 2001 From: mlatus Date: Sun, 22 Mar 2020 11:35:14 +0800 Subject: [PATCH 2/2] autopatchelf --- .../applications/office/wpsoffice/default.nix | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/pkgs/applications/office/wpsoffice/default.nix b/pkgs/applications/office/wpsoffice/default.nix index 63b1d1430bf514..f8dd8134a5e268 100644 --- a/pkgs/applications/office/wpsoffice/default.nix +++ b/pkgs/applications/office/wpsoffice/default.nix @@ -1,29 +1,17 @@ # Build tools { stdenv, fetchurl, dpkg, + wrapGAppsHook, autoPatchelfHook, # Dependencies - alsaLib, atk, cairo, dbus, + alsaLib, atk, cairo, dbus, libsForQt5, expat, fontconfig, freetype, gdk-pixbuf, gtk2-x11, glib, primusLib, xorg, libtool, lzma, pango, nspr, qt5, qt4, - nss, sqlite, libuuid, zlib, cups, file, - wrapGAppsHook + nss, sqlite, libuuid, zlib, cups, file }: let - deps = [ - alsaLib atk cairo dbus.lib - expat fontconfig.lib - freetype gdk-pixbuf gtk2-x11 glib - primusLib xorg.libICE libtool.lib - lzma pango nspr qt5.qtbase qt4 - nss xorg.libSM sqlite libuuid - xorg.libX11 xorg.libxcb - xorg.libXcomposite xorg.libXcursor - xorg.libXdamage xorg.libXfixes - xorg.libXi xorg.libXrandr - xorg.libXrender xorg.libXScrnSaver - xorg.libXtst xorg.libXext zlib cups + runtimeLibPath = stdenv.lib.makeLibraryPath [ + cups.lib ]; - libPath = stdenv.lib.makeLibraryPath deps; in stdenv.mkDerivation rec { pname = "wpsoffice"; @@ -36,9 +24,25 @@ stdenv.mkDerivation rec { unpackCmd = "dpkg -x $src ."; sourceRoot = "."; - nativeBuildInputs = [ wrapGAppsHook qt5.wrapQtAppsHook dpkg ]; + nativeBuildInputs = [ wrapGAppsHook qt5.wrapQtAppsHook dpkg autoPatchelfHook ]; dontWrapQtApps = true; dontWrapGApps = true; + + buildInputs = [ + alsaLib atk cairo dbus.lib + expat fontconfig.lib stdenv.cc.cc.lib + freetype gdk-pixbuf gtk2-x11 glib + xorg.libICE libtool.lib + lzma pango nspr qt4 qt5.qtbase + nss xorg.libSM sqlite libuuid + xorg.libX11 xorg.libxcb + xorg.libXcomposite xorg.libXcursor + xorg.libXdamage xorg.libXfixes + xorg.libXi xorg.libXrandr + xorg.libXrender xorg.libXScrnSaver + xorg.libXtst xorg.libXext zlib + libsForQt5.qtstyleplugins + ]; meta = { description = "Office program originally named Kingsoft Office"; @@ -62,12 +66,6 @@ stdenv.mkDerivation rec { cp -r usr/* $out # Avoid forbidden reference error due use of patchelf rm -r * - bins=$(find $prefix/office6 -maxdepth 1 -executable ! -type d|grep -v '.*\.so\.*') - for i in $bins; do - origin_rpath=$(patchelf --print-rpath $i) - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $i || true - patchelf --force-rpath --set-rpath "$origin_rpath''${origin_rpath:+:}${stdenv.cc.cc.lib}/lib64:${libPath}" $i || true - done for i in et wpp wps wpspdf;do substituteInPlace $out/bin/$i \ @@ -85,8 +83,10 @@ stdenv.mkDerivation rec { bins=$(find $prefix/office6 -maxdepth 1 -executable ! -type d|grep -v '.*\.so\.*') for i in $bins;do echo Wrapping $i - wrapQtApp $i - wrapGApp $i + wrapProgram $i \ + "''${gappsWrapperArgs[@]}" \ + "''${qtWrapperArgs[@]}" \ + --suffix LD_LIBRARY_PATH : ${runtimeLibPath} done ''; }