From 4fc999db624c4a8cfad8df359ef5fde8bedcf2fb Mon Sep 17 00:00:00 2001 From: Johannes Schleifenbaum Date: Mon, 4 Jan 2021 11:26:50 +0100 Subject: [PATCH 1/6] dbeaver: build from source --- pkgs/applications/misc/dbeaver/default.nix | 135 ++++++++++++++------- pkgs/top-level/all-packages.nix | 8 +- 2 files changed, 100 insertions(+), 43 deletions(-) diff --git a/pkgs/applications/misc/dbeaver/default.nix b/pkgs/applications/misc/dbeaver/default.nix index 05d282aaf06..0ffe7bf6e8e 100644 --- a/pkgs/applications/misc/dbeaver/default.nix +++ b/pkgs/applications/misc/dbeaver/default.nix @@ -1,14 +1,20 @@ -{ lib, stdenv, fetchurl, makeDesktopItem, makeWrapper -, fontconfig, freetype, glib, gtk3 -, jdk, libX11, libXrender, libXtst, zlib }: - -# The build process is almost like eclipse's. -# See `pkgs/applications/editors/eclipse/*.nix` - -stdenv.mkDerivation rec { - pname = "dbeaver-ce"; - version = "7.3.2"; - +{ lib +, stdenv +, fetchFromGitHub +, makeDesktopItem +, makeWrapper +, fontconfig +, freetype +, glib +, gtk3 +, jdk +, libX11 +, libXrender +, libXtst +, zlib +, maven +}: +let desktopItem = makeDesktopItem { name = "dbeaver"; exec = "dbeaver"; @@ -18,45 +24,90 @@ stdenv.mkDerivation rec { genericName = "SQL Integrated Development Environment"; categories = "Development;"; }; +in +stdenv.mkDerivation rec { + pname = "dbeaver-ce"; + version = "7.3.2"; # When updating also update fetchedMavenDeps.sha256 + + src = fetchFromGitHub { + owner = "dbeaver"; + repo = "dbeaver"; + rev = version; + sha256 = "sha256-gh3++IEQzWOKGsazqeMp0aHuZ835etAou62cgz0GoNQ="; + }; + + fetchedMavenDeps = stdenv.mkDerivation { + name = "dbeaver-${version}-maven-deps"; + inherit src; + + buildInputs = [ + maven + ]; + + buildPhase = "mvn package -Dmaven.repo.local=$out/.m2"; + + # keep only *.{pom,jar,sha1,nbm} and delete all ephemeral files with lastModified timestamps inside + installPhase = '' + find $out -type f \ + -name \*.lastUpdated -or \ + -name resolver-status.properties -or \ + -name _remote.repositories \ + -delete + ''; + + # don't do any fixup + dontFixup = true; + outputHashAlgo = "sha256"; + outputHashMode = "recursive"; + outputHash = "sha256-uTKevwZvKiYOBz0hshh1rLEj7htYF7FQiTq6vZiVs7Q="; + }; buildInputs = [ - fontconfig freetype glib gtk3 - jdk libX11 libXrender libXtst zlib + fontconfig + freetype + glib + gtk3 + jdk + libX11 + libXrender + libXtst + makeWrapper + zlib ]; nativeBuildInputs = [ - makeWrapper + maven ]; - src = fetchurl { - url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz"; - sha256 = "sha256-4BVXcR8/E4uIrPQJe9KU9577j4XLTxJWTO8g0vCHWts="; - }; - - installPhase = '' - # remove bundled jre - rm -rf jre - - mkdir -p $out/ - cp -r . $out/dbeaver - - # Patch binaries. - interpreter=$(cat $NIX_CC/nix-support/dynamic-linker) - patchelf --set-interpreter $interpreter $out/dbeaver/dbeaver - - makeWrapper $out/dbeaver/dbeaver $out/bin/dbeaver \ - --prefix PATH : ${jdk}/bin \ - --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath ([ glib gtk3 libXtst ])} \ - --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" - - # Create desktop item. - mkdir -p $out/share/applications - cp ${desktopItem}/share/applications/* $out/share/applications - - mkdir -p $out/share/pixmaps - ln -s $out/dbeaver/icon.xpm $out/share/pixmaps/dbeaver.xpm + buildPhase = '' + mvn package --offline -Dmaven.repo.local=$(cp -dpR ${fetchedMavenDeps}/.m2 ./ && chmod +w -R .m2 && pwd)/.m2 ''; + installPhase = + let + productTargetPath = "product/standalone/target/products/org.jkiss.dbeaver.core.product"; + in + '' + mkdir -p $out/ + cp -r ${productTargetPath}/linux/gtk/x86_64/dbeaver $out/dbeaver + + # Patch binaries. + interpreter=$(cat $NIX_CC/nix-support/dynamic-linker) + patchelf --set-interpreter $interpreter $out/dbeaver/dbeaver + + makeWrapper $out/dbeaver/dbeaver $out/bin/dbeaver \ + --prefix PATH : ${jdk}/bin \ + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath ([ glib gtk3 libXtst ])} \ + --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" + + # Create desktop item. + mkdir -p $out/share/applications + cp ${desktopItem}/share/applications/* $out/share/applications + + mkdir -p $out/share/pixmaps + ln -s $out/dbeaver/icon.xpm $out/share/pixmaps/dbeaver.xpm + ''; + meta = with lib; { homepage = "https://dbeaver.io/"; description = "Universal SQL Client for developers, DBA and analysts. Supports MySQL, PostgreSQL, MariaDB, SQLite, and more"; @@ -68,6 +119,6 @@ stdenv.mkDerivation rec { ''; license = licenses.asl20; platforms = [ "x86_64-linux" ]; - maintainers = [ maintainers.jojosch ]; + maintainers = with maintainers; [ jojosch ]; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 766e14abfdb..7e0263f7576 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3479,7 +3479,13 @@ in davfs2 = callPackage ../tools/filesystems/davfs2 { }; - dbeaver = callPackage ../applications/misc/dbeaver { }; + dbeaver = callPackage ../applications/misc/dbeaver { + # TODO: remove once maven uses JDK 11 + # error: org/eclipse/tycho/core/p2/P2ArtifactRepositoryLayout has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 + maven = maven.override { + jdk = jdk11; + }; + }; dbench = callPackage ../development/tools/misc/dbench { }; From a94edb03b1b04a875710c29d9b19dae7cc8c7425 Mon Sep 17 00:00:00 2001 From: Johannes Schleifenbaum Date: Mon, 4 Jan 2021 19:27:48 +0100 Subject: [PATCH 2/6] dbeaver: add build on darwin --- pkgs/applications/misc/dbeaver/default.nix | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/misc/dbeaver/default.nix b/pkgs/applications/misc/dbeaver/default.nix index 0ffe7bf6e8e..3f15058510e 100644 --- a/pkgs/applications/misc/dbeaver/default.nix +++ b/pkgs/applications/misc/dbeaver/default.nix @@ -87,7 +87,18 @@ stdenv.mkDerivation rec { let productTargetPath = "product/standalone/target/products/org.jkiss.dbeaver.core.product"; in - '' + if stdenv.isDarwin then '' + mkdir -p $out/Applications $out/bin + cp -r ${productTargetPath}/macosx/cocoa/x86_64/DBeaver.app $out/Applications + + sed -i "/^-vm/d; /bin\/java/d" $out/Applications/DBeaver.app/Contents/Eclipse/dbeaver.ini + + ln -s $out/Applications/DBeaver.app/Contents/MacOS/dbeaver $out/bin/dbeaver + + wrapProgram $out/Applications/DBeaver.app/Contents/MacOS/dbeaver \ + --prefix JAVA_HOME : ${jdk.home} \ + --prefix PATH : ${jdk}/bin + '' else '' mkdir -p $out/ cp -r ${productTargetPath}/linux/gtk/x86_64/dbeaver $out/dbeaver @@ -118,7 +129,7 @@ stdenv.mkDerivation rec { Teradata, Firebird, Derby, etc. ''; license = licenses.asl20; - platforms = [ "x86_64-linux" ]; + platforms = [ "x86_64-linux" "x86_64-darwin" ]; maintainers = with maintainers; [ jojosch ]; }; } From 7b6ee0e8483d313ae91d3e118f5ae319a1552911 Mon Sep 17 00:00:00 2001 From: Johannes Schleifenbaum Date: Mon, 18 Jan 2021 10:54:02 +0100 Subject: [PATCH 3/6] dbeaver: 7.3.2 -> 7.3.3 --- pkgs/applications/misc/dbeaver/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/misc/dbeaver/default.nix b/pkgs/applications/misc/dbeaver/default.nix index 3f15058510e..0e92fc9e62d 100644 --- a/pkgs/applications/misc/dbeaver/default.nix +++ b/pkgs/applications/misc/dbeaver/default.nix @@ -27,13 +27,13 @@ let in stdenv.mkDerivation rec { pname = "dbeaver-ce"; - version = "7.3.2"; # When updating also update fetchedMavenDeps.sha256 + version = "7.3.3"; # When updating also update fetchedMavenDeps.sha256 src = fetchFromGitHub { owner = "dbeaver"; repo = "dbeaver"; rev = version; - sha256 = "sha256-gh3++IEQzWOKGsazqeMp0aHuZ835etAou62cgz0GoNQ="; + sha256 = "sha256-FlnPPf7Fa4FH4/ORMgZbeUT3ScCRNtLDuZCRnqUAjU0="; }; fetchedMavenDeps = stdenv.mkDerivation { @@ -59,7 +59,7 @@ stdenv.mkDerivation rec { dontFixup = true; outputHashAlgo = "sha256"; outputHashMode = "recursive"; - outputHash = "sha256-uTKevwZvKiYOBz0hshh1rLEj7htYF7FQiTq6vZiVs7Q="; + outputHash = "sha256-M/10RGfhlBJzmFzTkEIo3AgA4B5yGDBL+elV0M65nn0="; }; buildInputs = [ From 3a9dfaf5fc0050d802988a8ed8b6c32f1e7bbcc6 Mon Sep 17 00:00:00 2001 From: Johannes Schleifenbaum Date: Mon, 18 Jan 2021 11:15:16 +0100 Subject: [PATCH 4/6] dbeaver: use jdk11 because AlgorithmId.md5WithRSAEncryption_oid was removed with jdk 15 --- pkgs/top-level/all-packages.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7e0263f7576..ba311822694 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3480,6 +3480,8 @@ in davfs2 = callPackage ../tools/filesystems/davfs2 { }; dbeaver = callPackage ../applications/misc/dbeaver { + jdk = jdk11; # AlgorithmId.md5WithRSAEncryption_oid was removed in jdk15 + # TODO: remove once maven uses JDK 11 # error: org/eclipse/tycho/core/p2/P2ArtifactRepositoryLayout has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 maven = maven.override { From 0c542cb1fc2b8d8fa9c6aa21f6bad2e15330b85b Mon Sep 17 00:00:00 2001 From: Johannes Schleifenbaum Date: Mon, 1 Feb 2021 10:12:03 +0100 Subject: [PATCH 5/6] dbeaver: 7.3.3 -> 7.3.4 --- pkgs/applications/misc/dbeaver/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/misc/dbeaver/default.nix b/pkgs/applications/misc/dbeaver/default.nix index 0e92fc9e62d..325511209d6 100644 --- a/pkgs/applications/misc/dbeaver/default.nix +++ b/pkgs/applications/misc/dbeaver/default.nix @@ -27,13 +27,13 @@ let in stdenv.mkDerivation rec { pname = "dbeaver-ce"; - version = "7.3.3"; # When updating also update fetchedMavenDeps.sha256 + version = "7.3.4"; # When updating also update fetchedMavenDeps.sha256 src = fetchFromGitHub { owner = "dbeaver"; repo = "dbeaver"; rev = version; - sha256 = "sha256-FlnPPf7Fa4FH4/ORMgZbeUT3ScCRNtLDuZCRnqUAjU0="; + sha256 = "sha256-fgQeKnDm3m453Rqg1tb9R+H5uZgFnSwpPR6DDrInK4U="; }; fetchedMavenDeps = stdenv.mkDerivation { From fdeca0ada26f1f41e0b4f5f3dff8fd0ff1e9d15e Mon Sep 17 00:00:00 2001 From: Johannes Schleifenbaum Date: Tue, 16 Feb 2021 01:24:45 +0100 Subject: [PATCH 6/6] dbeaver: 7.3.4 -> 7.3.5 --- pkgs/applications/misc/dbeaver/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/misc/dbeaver/default.nix b/pkgs/applications/misc/dbeaver/default.nix index 325511209d6..774fcc75b2d 100644 --- a/pkgs/applications/misc/dbeaver/default.nix +++ b/pkgs/applications/misc/dbeaver/default.nix @@ -27,13 +27,13 @@ let in stdenv.mkDerivation rec { pname = "dbeaver-ce"; - version = "7.3.4"; # When updating also update fetchedMavenDeps.sha256 + version = "7.3.5"; # When updating also update fetchedMavenDeps.sha256 src = fetchFromGitHub { owner = "dbeaver"; repo = "dbeaver"; rev = version; - sha256 = "sha256-fgQeKnDm3m453Rqg1tb9R+H5uZgFnSwpPR6DDrInK4U="; + sha256 = "sha256-gEE7rndOaXzruWL7TG+QgVkq1+06tIZwyGzU9cFc+oU="; }; fetchedMavenDeps = stdenv.mkDerivation { @@ -59,7 +59,7 @@ stdenv.mkDerivation rec { dontFixup = true; outputHashAlgo = "sha256"; outputHashMode = "recursive"; - outputHash = "sha256-M/10RGfhlBJzmFzTkEIo3AgA4B5yGDBL+elV0M65nn0="; + outputHash = "sha256-jT0Z154rVmafUbb6dqYSl3cUxMuK5MR4HUsprkrgSDw="; }; buildInputs = [