diff options
Diffstat (limited to 'nixpkgs/pkgs/development/tools/database/liquibase/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/tools/database/liquibase/default.nix | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/database/liquibase/default.nix b/nixpkgs/pkgs/development/tools/database/liquibase/default.nix new file mode 100644 index 000000000000..ffc9e712381e --- /dev/null +++ b/nixpkgs/pkgs/development/tools/database/liquibase/default.nix @@ -0,0 +1,97 @@ +{ lib +, stdenv +, fetchurl +, gitUpdater +, jre +, makeWrapper +, mysqlSupport ? true +, mysql_jdbc +, postgresqlSupport ? true +, postgresql_jdbc +, redshiftSupport ? true +, redshift_jdbc +, liquibase_redshift_extension +}: + +let + extraJars = + lib.optional mysqlSupport mysql_jdbc + ++ lib.optional postgresqlSupport postgresql_jdbc + ++ lib.optionals redshiftSupport [ + redshift_jdbc + liquibase_redshift_extension + ]; +in + +stdenv.mkDerivation rec { + pname = "liquibase"; + version = "4.23.1"; + + src = fetchurl { + url = "https://github.com/liquibase/liquibase/releases/download/v${version}/${pname}-${version}.tar.gz"; + hash = "sha256-uWZ9l6C6QlVHqp/ma6/sz07zuCHpGucy7GhNDq8v1/U="; + }; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ jre ]; + + unpackPhase = '' + tar xfz ${src} + ''; + + installPhase = + let addJars = dir: '' + for jar in ${dir}/*.jar; do + CP="\$CP":"\$jar" + done + ''; + in + '' + mkdir -p $out + mv ./{lib,licenses} $out/ + + mkdir -p $out/internal/lib + mv ./internal/lib/*.jar $out/internal/lib/ + + mkdir -p $out/share/doc/${pname}-${version} + mv LICENSE.txt \ + README.txt \ + ABOUT.txt \ + changelog.txt \ + $out/share/doc/${pname}-${version} + + mkdir -p $out/bin + # there’s a lot of escaping, but I’m not sure how to improve that + cat > $out/bin/liquibase <<EOF + #!/usr/bin/env bash + # taken from the executable script in the source + CP="" + ${addJars "$out/internal/lib"} + ${addJars "$out/lib"} + ${addJars "$out"} + ${lib.concatStringsSep "\n" (map (p: addJars "${p}/share/java") extraJars)} + ${lib.getBin jre}/bin/java -cp "\$CP" \$JAVA_OPTS \ + liquibase.integration.commandline.LiquibaseCommandLine \''${1+"\$@"} + EOF + chmod +x $out/bin/liquibase + ''; + + passthru.updateScript = gitUpdater { + url = "https://github.com/liquibase/liquibase"; + rev-prefix = "v"; + # The latest versions are in the 4.xx series. I am not sure where + # 10.10.10 and 5.0.0 came from, though it appears like they are + # for the commercial product. + ignoredVersions = "10.10.10|5.0.0|.*-beta.*"; + }; + + meta = with lib; { + description = "Version Control for your database"; + homepage = "https://www.liquibase.org/"; + changelog = "https://raw.githubusercontent.com/liquibase/liquibase/v${version}/changelog.txt"; + sourceProvenance = with sourceTypes; [ binaryBytecode ]; + license = licenses.asl20; + maintainers = with maintainers; [ jsoo1 ]; + platforms = with platforms; unix; + }; +} |