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

[Backport release-24.05] dbeaver-bin: add webkitgkt and glib-networking for webbrowser support #339947

Open
wants to merge 12 commits into
base: release-24.05
Choose a base branch
from
7 changes: 7 additions & 0 deletions maintainers/maintainer-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -21898,6 +21898,13 @@
githubId = 5253988;
name = "yvt";
};
yzx9 = {
email = "[email protected]";
github = "yzx9";
githubId = 41458459;
name = "Zexin Yuan";
keys = [ { fingerprint = "FE16 B281 90EF 6C3F F661 6441 C2DD 1916 FE47 1BE2"; } ];
};
zachcoyle = {
email = "[email protected]";
github = "zachcoyle";
Expand Down
119 changes: 82 additions & 37 deletions pkgs/by-name/db/dbeaver-bin/package.nix
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
{ lib
, stdenvNoCC
, fetchurl
, makeWrapper
, openjdk17
, gnused
, autoPatchelfHook
, wrapGAppsHook3
{
lib,
stdenvNoCC,
fetchurl,
undmg,
makeWrapper,
openjdk17,
gnused,
autoPatchelfHook,
wrapGAppsHook3,
gtk3,
swt,
glib,
webkitgtk,
glib-networking,
}:

stdenvNoCC.mkDerivation (finalAttrs: {
pname = "dbeaver-bin";
version = "24.0.5";

nativeBuildInputs = [
makeWrapper
gnused
autoPatchelfHook
wrapGAppsHook3
];
version = "24.1.5";

src =
let
Expand All @@ -26,42 +26,83 @@ stdenvNoCC.mkDerivation (finalAttrs: {
suffix = selectSystem {
x86_64-linux = "linux.gtk.x86_64-nojdk.tar.gz";
aarch64-linux = "linux.gtk.aarch64-nojdk.tar.gz";
x86_64-darwin = "macos-x86_64.dmg";
aarch64-darwin = "macos-aarch64.dmg";
};
hash = selectSystem {
x86_64-linux = "sha256-q6VIr55hXn47kZrE2i6McEOfp2FBOvwB0CcUnRHFMZs=";
aarch64-linux = "sha256-Xn3X1C31UALBAsZIGyMWdp0HNhJEm5N+7Go7nMs8W64=";
x86_64-linux = "sha256-FdrQDQ+2nsZp44+sARXT89/ZXlkl/OGej1JuezXGgU4=";
aarch64-linux = "sha256-oNP0ntsQ79ckNXuQ3TeVf9ooGzwCq7WXI0TbjTLC5DI=";
x86_64-darwin = "sha256-YcmMZPigykA9vNEF32NzCQWMWPt1GM7VaWGSAZp/1YM=";
aarch64-darwin = "sha256-tz+Ap/YZJbc+obCLqq2b2HgRUORWkaOHVGEEJtwEJXo=";
};
in
fetchurl {
url = "https://github.com/dbeaver/dbeaver/releases/download/${finalAttrs.version}/dbeaver-ce-${finalAttrs.version}-${suffix}";
inherit hash;
};

sourceRoot = lib.optional stdenvNoCC.isDarwin "dbeaver.app";

nativeBuildInputs =
[ makeWrapper ]
++ lib.optionals (!stdenvNoCC.isDarwin) [
gnused
wrapGAppsHook3
autoPatchelfHook
]
++ lib.optionals stdenvNoCC.isDarwin [ undmg ];

dontConfigure = true;
dontBuild = true;

installPhase = ''
runHook preInstall
mkdir -p $out/opt/dbeaver $out/bin
cp -r * $out/opt/dbeaver
makeWrapper $out/opt/dbeaver/dbeaver $out/bin/dbeaver \
--prefix PATH : "${openjdk17}/bin" \
--set JAVA_HOME "${openjdk17.home}"
installPhase =
if !stdenvNoCC.isDarwin then
''
runHook preInstall

mkdir -p $out/opt/dbeaver $out/bin
cp -r * $out/opt/dbeaver
makeWrapper $out/opt/dbeaver/dbeaver $out/bin/dbeaver \
--prefix PATH : "${openjdk17}/bin" \
--set JAVA_HOME "${openjdk17.home}" \
--prefix CLASSPATH : "$out/dbeaver/plugins/*:${swt}/jars/swt.jar" \
--prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules" \
--prefix LD_LIBRARY_PATH : "$out/lib:${
lib.makeLibraryPath [
swt
gtk3
glib
webkitgtk
glib-networking
]
}"

mkdir -p $out/share/icons/hicolor/256x256/apps
ln -s $out/opt/dbeaver/dbeaver.png $out/share/icons/hicolor/256x256/apps/dbeaver.png

mkdir -p $out/share/applications
ln -s $out/opt/dbeaver/dbeaver-ce.desktop $out/share/applications/dbeaver.desktop

mkdir -p $out/share/icons/hicolor/256x256/apps
ln -s $out/opt/dbeaver/dbeaver.png $out/share/icons/hicolor/256x256/apps/dbeaver.png
substituteInPlace $out/opt/dbeaver/dbeaver-ce.desktop \
--replace-fail "/usr/share/dbeaver-ce/dbeaver.png" "dbeaver" \
--replace-fail "/usr/share/dbeaver-ce/dbeaver" "$out/bin/dbeaver"

mkdir -p $out/share/applications
ln -s $out/opt/dbeaver/dbeaver-ce.desktop $out/share/applications/dbeaver.desktop
sed -i '/^Path=/d' $out/share/applications/dbeaver.desktop

substituteInPlace $out/opt/dbeaver/dbeaver-ce.desktop \
--replace-fail "/usr/share/dbeaver-ce/dbeaver.png" "dbeaver" \
--replace-fail "/usr/share/dbeaver-ce/dbeaver" "$out/bin/dbeaver"
runHook postInstall
''
else
''
runHook preInstall

sed -i '/^Path=/d' $out/share/applications/dbeaver.desktop
mkdir -p $out/{Applications/dbeaver.app,bin}
cp -R . $out/Applications/dbeaver.app
makeWrapper $out/{Applications/dbeaver.app/Contents/MacOS,bin}/dbeaver \
--prefix PATH : "${openjdk17}/bin" \
--set JAVA_HOME "${openjdk17.home}"

runHook postInstall
'';
runHook postInstall
'';

passthru.updateScript = ./update.sh;

Expand All @@ -76,8 +117,12 @@ stdenvNoCC.mkDerivation (finalAttrs: {
'';
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.asl20;
platforms = platforms.linux;
maintainers = with maintainers; [ gepbird mkg20001 ];
platforms = platforms.linux ++ platforms.darwin;
maintainers = with maintainers; [
gepbird
mkg20001
yzx9
];
mainProgram = "dbeaver";
};
})
4 changes: 3 additions & 1 deletion pkgs/by-name/db/dbeaver-bin/update.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ fi

for i in \
"x86_64-linux linux.gtk.x86_64-nojdk.tar.gz" \
"aarch64-linux linux.gtk.aarch64-nojdk.tar.gz"
"aarch64-linux linux.gtk.aarch64-nojdk.tar.gz" \
"x86_64-darwin macos-x86_64.dmg" \
"aarch64-darwin macos-aarch64.dmg"
do
set -- $i
prefetch=$(nix-prefetch-url "https://github.com/dbeaver/dbeaver/releases/download/$latestVersion/dbeaver-ce-$latestVersion-$2")
Expand Down