Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Zotero: Fix to use patchelf instead of FHS Env. #56809

Merged
merged 2 commits into from
Apr 10, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
181 changes: 127 additions & 54 deletions pkgs/applications/office/zotero/default.nix
Original file line number Diff line number Diff line change
@@ -1,67 +1,140 @@
{ stdenv, fetchurl, buildFHSUserEnv, makeDesktopItem, runCommand, bash, wrapGAppsHook, gsettings-desktop-schemas, gtk3, gnome3 }:

let
version = "5.0.60";
meta = with stdenv.lib; {
homepage = https://www.zotero.org;
description = "Collect, organize, cite, and share your research sources";
license = licenses.agpl3;
platforms = platforms.linux;
};

zoteroSrc = stdenv.mkDerivation rec {
inherit version;
name = "zotero-${version}-pkg";
{ stdenv, fetchurl, wrapGAppsHook, makeDesktopItem
, atk
, cairo
, curl
, cups
, dbus-glib
, dbus
, fontconfig
, freetype
, gdk_pixbuf
, glib
, glibc
, gtk3
, libX11
, libXScrnSaver
, libxcb
, libXcomposite
, libXcursor
, libXdamage
, libXext
, libXfixes
, libXi
, libXinerama
, libXrender
, libXt
, libnotify
, gnome3
, libGLU_combined
, nspr
, nss
, pango
, coreutils
, gnused
, gsettings-desktop-schemas
}:

stdenv.mkDerivation rec {
name = "zotero-${version}";
version = "5.0.60";

src = fetchurl {
url = "https://download.zotero.org/client/release/${version}/Zotero-${version}_linux-x86_64.tar.bz2";
sha256 = "0753xk95shhxma4dvdxrj2q6y81z8lianxg7jnab9m17fb67jy2d";
};

buildInputs= [ wrapGAppsHook gsettings-desktop-schemas gtk3 gnome3.adwaita-icon-theme gnome3.dconf ];
phases = [ "unpackPhase" "installPhase" "fixupPhase"];

installPhase = ''
mkdir -p $out/data
cp -r * $out/data
mkdir $out/bin
ln -s $out/data/zotero $out/bin/zotero
phases = [ "unpackPhase" "patchPhase" "installPhase" "fixupPhase" ];

dontStrip = true;
dontPatchELF = true;

libPath = stdenv.lib.makeLibraryPath
[ stdenv.cc.cc
atk
cairo
curl
cups
dbus-glib
dbus
fontconfig
freetype
gdk_pixbuf
glib
glibc
gtk3
libX11
libXScrnSaver
libXcomposite
libXcursor
libxcb
libXdamage
libXext
libXfixes
libXi
libXinerama
libXrender
libXt
libnotify
libGLU_combined
nspr
nss
pango
] + ":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" [
stdenv.cc.cc
];

patchPhase = ''
sed -i '/pref("app.update.enabled", true);/c\pref("app.update.enabled", false);' defaults/preferences/prefs.js
'';
};

fhsEnv = buildFHSUserEnv {
name = "zotero-fhs-env";
targetPkgs = pkgs: with pkgs; with xorg; [
gtk3 dbus-glib glib
libXt nss
libX11
];
};
desktopItem = makeDesktopItem rec {
name = "zotero-${version}";
exec = "zotero -url %U";
icon = "zotero";
type = "Application";
comment = meta.description;
desktopName = "Zotero";
genericName = "Reference Management";
categories = "Office;Database;";
startupNotify = "true";
mimeType = "text/plain";
};

desktopItem = makeDesktopItem rec {
name = "zotero-${version}";
exec = "zotero -url %U";
icon = "zotero";
type = "Application";
comment = meta.description;
desktopName = "Zotero";
genericName = "Reference Management";
categories = "Office;Database;";
startupNotify = "true";
};
installPhase =
''
mkdir -p "$prefix/usr/lib/zotero-bin-${version}"
cp -r * "$prefix/usr/lib/zotero-bin-${version}"
mkdir -p "$out/bin"
ln -s "$prefix/usr/lib/zotero-bin-${version}/zotero" "$out/bin/"

in runCommand "zotero-${version}" { inherit meta; } ''
mkdir -p $out/bin $out/share/applications
cat >$out/bin/zotero <<EOF
#!${bash}/bin/bash
${fhsEnv}/bin/zotero-fhs-env ${zoteroSrc}/bin/zotero
EOF
chmod +x $out/bin/zotero
# install desktop file and icons.
mkdir -p $out/share/applications
cp ${desktopItem}/share/applications/* $out/share/applications/
for size in 16 32 48 256; do
install -Dm444 chrome/icons/default/default$size.png \
$out/share/icons/hicolor/''${size}x''${size}/apps/zotero.png
done

cp ${desktopItem}/share/applications/* $out/share/applications/
for executable in \
zotero-bin plugin-container \
updater minidump-analyzer
do
if [ -e "$out/usr/lib/zotero-bin-${version}/$executable" ]; then
patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
"$out/usr/lib/zotero-bin-${version}/$executable"
fi
done
find . -executable -type f -exec \
patchelf --set-rpath "$libPath" \
"$out/usr/lib/zotero-bin-${version}/{}" \;
'';

for size in 16 32 48 256; do
install -Dm444 ${zoteroSrc}/data/chrome/icons/default/default$size.png \
$out/share/icons/hicolor/''${size}x''${size}/apps/zotero.png
done
''
meta = with stdenv.lib; {
homepage = https://www.zotero.org;
description = "Collect, organize, cite, and share your research sources";
license = licenses.agpl3;
platforms = platforms.linux;
};
}