Merge pull request #320205 from yzx9/update-dbeaver-bin-darwin

dbeaver-bin: add darwin support
This commit is contained in:
Weijia Wang 2024-06-16 20:26:25 +02:00 committed by GitHub
commit 33c992ca44
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 73 additions and 34 deletions

View File

@ -23018,6 +23018,15 @@
githubId = 5253988; githubId = 5253988;
name = "yvt"; name = "yvt";
}; };
yzx9 = {
email = "yuan.zx@outlook.com";
github = "yzx9";
githubId = 41458459;
name = "Zexin Yuan";
keys = [{
fingerprint = "FE16 B281 90EF 6C3F F661 6441 C2DD 1916 FE47 1BE2";
}];
};
zachcoyle = { zachcoyle = {
email = "zach.coyle@gmail.com"; email = "zach.coyle@gmail.com";
github = "zachcoyle"; github = "zachcoyle";

View File

@ -1,23 +1,27 @@
{ lib {
, stdenvNoCC lib,
, fetchurl stdenvNoCC,
, makeWrapper fetchurl,
, openjdk17 undmg,
, gnused makeWrapper,
, autoPatchelfHook openjdk17,
, wrapGAppsHook3 gnused,
autoPatchelfHook,
wrapGAppsHook3,
}: }:
stdenvNoCC.mkDerivation (finalAttrs: { stdenvNoCC.mkDerivation (finalAttrs: {
pname = "dbeaver-bin"; pname = "dbeaver-bin";
version = "24.0.5"; version = "24.0.5";
nativeBuildInputs = [ nativeBuildInputs =
makeWrapper [ makeWrapper ]
gnused ++ lib.optionals (!stdenvNoCC.isDarwin) [
autoPatchelfHook gnused
wrapGAppsHook3 wrapGAppsHook3
]; autoPatchelfHook
]
++ lib.optionals stdenvNoCC.isDarwin [ undmg ];
src = src =
let let
@ -26,10 +30,14 @@ stdenvNoCC.mkDerivation (finalAttrs: {
suffix = selectSystem { suffix = selectSystem {
x86_64-linux = "linux.gtk.x86_64-nojdk.tar.gz"; 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";
}; };
hash = selectSystem { hash = selectSystem {
x86_64-linux = "sha256-q6VIr55hXn47kZrE2i6McEOfp2FBOvwB0CcUnRHFMZs="; x86_64-linux = "sha256-q6VIr55hXn47kZrE2i6McEOfp2FBOvwB0CcUnRHFMZs=";
aarch64-linux = "sha256-Xn3X1C31UALBAsZIGyMWdp0HNhJEm5N+7Go7nMs8W64="; aarch64-linux = "sha256-Xn3X1C31UALBAsZIGyMWdp0HNhJEm5N+7Go7nMs8W64=";
x86_64-darwin = "sha256-XOQaMNQHOC4dVJXIUn4l4Oa7Gohbq+JMDFusIy/U+tc=";
aarch64-darwin = "sha256-554ea5p1MR4XIHtSeByd4S/Ke4cKRZbITTNRRDoRqPI=";
}; };
in in
fetchurl { fetchurl {
@ -40,28 +48,44 @@ stdenvNoCC.mkDerivation (finalAttrs: {
dontConfigure = true; dontConfigure = true;
dontBuild = true; dontBuild = true;
installPhase = '' sourceRoot = lib.optional stdenvNoCC.isDarwin "dbeaver.app";
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}"
mkdir -p $out/share/icons/hicolor/256x256/apps installPhase =
ln -s $out/opt/dbeaver/dbeaver.png $out/share/icons/hicolor/256x256/apps/dbeaver.png 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}"
mkdir -p $out/share/applications mkdir -p $out/share/icons/hicolor/256x256/apps
ln -s $out/opt/dbeaver/dbeaver-ce.desktop $out/share/applications/dbeaver.desktop ln -s $out/opt/dbeaver/dbeaver.png $out/share/icons/hicolor/256x256/apps/dbeaver.png
substituteInPlace $out/opt/dbeaver/dbeaver-ce.desktop \ mkdir -p $out/share/applications
--replace-fail "/usr/share/dbeaver-ce/dbeaver.png" "dbeaver" \ ln -s $out/opt/dbeaver/dbeaver-ce.desktop $out/share/applications/dbeaver.desktop
--replace-fail "/usr/share/dbeaver-ce/dbeaver" "$out/bin/dbeaver"
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 sed -i '/^Path=/d' $out/share/applications/dbeaver.desktop
'';
runHook postInstall
''
else
''
runHook preInstall
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
'';
passthru.updateScript = ./update.sh; passthru.updateScript = ./update.sh;
@ -76,8 +100,12 @@ stdenvNoCC.mkDerivation (finalAttrs: {
''; '';
sourceProvenance = with sourceTypes; [ binaryNativeCode ]; sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.asl20; license = licenses.asl20;
platforms = platforms.linux; platforms = platforms.linux ++ platforms.darwin;
maintainers = with maintainers; [ gepbird mkg20001 ]; maintainers = with maintainers; [
gepbird
mkg20001
yzx9
];
mainProgram = "dbeaver"; mainProgram = "dbeaver";
}; };
}) })

View File

@ -14,7 +14,9 @@ fi
for i in \ for i in \
"x86_64-linux linux.gtk.x86_64-nojdk.tar.gz" \ "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 do
set -- $i set -- $i
prefetch=$(nix-prefetch-url "https://github.com/dbeaver/dbeaver/releases/download/$latestVersion/dbeaver-ce-$latestVersion-$2") prefetch=$(nix-prefetch-url "https://github.com/dbeaver/dbeaver/releases/download/$latestVersion/dbeaver-ce-$latestVersion-$2")