Merge pull request #273098 from nicolas-goudry/gitkraken-bundled-git

gitkraken: devendor bundled git
This commit is contained in:
kirillrdy 2024-01-22 17:27:37 +09:00 committed by GitHub
commit 6ca1d21489
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -3,7 +3,8 @@
, libX11, libXi, libxcb, libXext, libXcursor, glib, libXScrnSaver, libxkbfile, libXtst , libX11, libXi, libxcb, libXext, libXcursor, glib, libXScrnSaver, libxkbfile, libXtst
, nss, nspr, cups, fetchzip, expat, gdk-pixbuf, libXdamage, libXrandr, dbus , nss, nspr, cups, fetchzip, expat, gdk-pixbuf, libXdamage, libXrandr, dbus
, makeDesktopItem, openssl, wrapGAppsHook, at-spi2-atk, at-spi2-core, libuuid , makeDesktopItem, openssl, wrapGAppsHook, at-spi2-atk, at-spi2-core, libuuid
, e2fsprogs, krb5, libdrm, mesa, unzip, copyDesktopItems, libxshmfence, libxkbcommon , e2fsprogs, krb5, libdrm, mesa, unzip, copyDesktopItems, libxshmfence, libxkbcommon, git
, libGL, zlib, cacert
}: }:
with lib; with lib;
@ -91,12 +92,14 @@ let
mesa mesa
libxshmfence libxshmfence
libxkbcommon libxkbcommon
libGL
zlib
]; ];
desktopItems = [ (makeDesktopItem { desktopItems = [ (makeDesktopItem {
name = pname; name = "GitKraken";
exec = pname; exec = "gitkraken";
icon = pname; icon = "gitkraken";
desktopName = "GitKraken"; desktopName = "GitKraken";
genericName = "Git Client"; genericName = "Git Client";
categories = [ "Development" ]; categories = [ "Development" ];
@ -112,25 +115,37 @@ let
mkdir -p $out/share/${pname}/ mkdir -p $out/share/${pname}/
cp -R $src/* $out/share/${pname} cp -R $src/* $out/share/${pname}
mkdir -p $out/bin
ln -s $out/share/${pname}/${pname} $out/bin/
mkdir -p $out/share/pixmaps mkdir -p $out/share/pixmaps
cp ${pname}.png $out/share/pixmaps/${pname}.png cp gitkraken.png $out/share/pixmaps/
runHook postInstall runHook postInstall
''; '';
postFixup = '' postFixup = ''
pushd $out/share/${pname} pushd $out/share/${pname}
for file in ${pname} chrome-sandbox chrome_crashpad_handler; do for file in gitkraken chrome-sandbox chrome_crashpad_handler; do
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $file patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $file
done done
for file in $(find . -type f \( -name \*.node -o -name ${pname} -o -name \*.so\* \) ); do for file in $(find . -type f \( -name \*.node -o -name gitkraken -o -name git -o -name git-\* -o -name scalar -o -name \*.so\* \) ); do
patchelf --set-rpath ${libPath}:$out/share/${pname} $file || true patchelf --set-rpath ${libPath}:$out/share/${pname} $file || true
done done
popd popd
# SSL and permissions fix for bundled nodegit
pushd $out/share/${pname}/resources/app.asar.unpacked/node_modules/@axosoft/nodegit/build/Release
mv nodegit-ubuntu-18.node nodegit-ubuntu-18-ssl-1.1.1.node
mv nodegit-ubuntu-18-ssl-static.node nodegit-ubuntu-18.node
chmod 755 nodegit-ubuntu-18.node
popd
# Devendor bundled git
rm -rf $out/share/${pname}/resources/app.asar.unpacked/git
ln -s ${git} $out/share/${pname}/resources/app.asar.unpacked/git
# GitKraken expects the CA bundle to be located in the bundled git directory. Since we replace it with
# the one from nixpkgs, which doesn't provide a CA bundle, we need to explicitly set its location at runtime
makeWrapper $out/share/${pname}/gitkraken $out/bin/gitkraken --set GIT_SSL_CAINFO "${cacert}/etc/ssl/certs/ca-bundle.crt"
''; '';
}; };