From 9f98f2904bb0b3fd80224c491440b6eb5ddcbed7 Mon Sep 17 00:00:00 2001 From: Ivan Mincik Date: Fri, 17 Nov 2023 22:26:20 +0100 Subject: [PATCH 1/3] geoserver: fix startup script Set GEOSERVER_DATA_DIR to current working directory if not provided. --- .../geospatial/geoserver/data-dir.patch | 18 ++++++++++++++++++ pkgs/servers/geospatial/geoserver/default.nix | 5 +++++ 2 files changed, 23 insertions(+) create mode 100644 pkgs/servers/geospatial/geoserver/data-dir.patch diff --git a/pkgs/servers/geospatial/geoserver/data-dir.patch b/pkgs/servers/geospatial/geoserver/data-dir.patch new file mode 100644 index 000000000000..869321627998 --- /dev/null +++ b/pkgs/servers/geospatial/geoserver/data-dir.patch @@ -0,0 +1,18 @@ +--- a/bin/startup.sh ++++ b/bin/startup.sh +@@ -66,12 +66,9 @@ fi + + #Find the configuration directory: GEOSERVER_DATA_DIR + if [ -z "${GEOSERVER_DATA_DIR:-}" ]; then +- if [ -r "${GEOSERVER_HOME}/data_dir" ]; then +- export GEOSERVER_DATA_DIR="${GEOSERVER_HOME}/data_dir" +- else +- echo "No GEOSERVER_DATA_DIR found, using application defaults" +- GEOSERVER_DATA_DIR="" +- fi ++ echo "GEOSERVER_DATA_DIR is not provided. Using $(pwd)/geoserver/data_dir directory" ++ mkdir -p "$(pwd)"/geoserver/data_dir ++ GEOSERVER_DATA_DIR="$(pwd)/geoserver/data_dir" + fi + + cd "${GEOSERVER_HOME}" || exit 1 diff --git a/pkgs/servers/geospatial/geoserver/default.nix b/pkgs/servers/geospatial/geoserver/default.nix index 4f0b657fda66..97e9c42b9b81 100644 --- a/pkgs/servers/geospatial/geoserver/default.nix +++ b/pkgs/servers/geospatial/geoserver/default.nix @@ -9,6 +9,11 @@ stdenv.mkDerivation rec { sha256 = "sha256-xX1rAONMh5XSWGPXkVMemAvG34DDNmu2018HsTvY7G0="; }; + patches = [ + # set GEOSERVER_DATA_DIR to current working directory if not provided + ./data-dir.patch + ]; + sourceRoot = "."; nativeBuildInputs = [ unzip makeWrapper ]; From 3d84496c930846948fb87bfc3dfce9997d5c713c Mon Sep 17 00:00:00 2001 From: Ivan Mincik Date: Fri, 17 Nov 2023 22:29:34 +0100 Subject: [PATCH 2/3] geoserver: add geospatial team to maintainers --- pkgs/servers/geospatial/geoserver/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/servers/geospatial/geoserver/default.nix b/pkgs/servers/geospatial/geoserver/default.nix index 97e9c42b9b81..543a602112ca 100644 --- a/pkgs/servers/geospatial/geoserver/default.nix +++ b/pkgs/servers/geospatial/geoserver/default.nix @@ -37,7 +37,7 @@ stdenv.mkDerivation rec { homepage = "https://geoserver.org/"; sourceProvenance = with sourceTypes; [ binaryBytecode ]; license = licenses.gpl2Plus; - maintainers = with maintainers; [ sikmir ]; + maintainers = teams.geospatial.members; platforms = platforms.all; }; } From a08880000dee157f618dc790ac3093e80cfc2b36 Mon Sep 17 00:00:00 2001 From: Ivan Mincik Date: Fri, 17 Nov 2023 23:29:45 +0100 Subject: [PATCH 3/3] geoserver: add nixos test --- nixos/tests/all-tests.nix | 1 + nixos/tests/geoserver.nix | 24 +++++++++++++++++++ pkgs/servers/geospatial/geoserver/default.nix | 14 ++++++++++- 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 nixos/tests/geoserver.nix diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 6c127efa4cea..7542d8185079 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -320,6 +320,7 @@ in { mimir = handleTest ./mimir.nix {}; garage = handleTest ./garage {}; gemstash = handleTest ./gemstash.nix {}; + geoserver = runTest ./geoserver.nix; gerrit = handleTest ./gerrit.nix {}; geth = handleTest ./geth.nix {}; ghostunnel = handleTest ./ghostunnel.nix {}; diff --git a/nixos/tests/geoserver.nix b/nixos/tests/geoserver.nix new file mode 100644 index 000000000000..7e5507a296ea --- /dev/null +++ b/nixos/tests/geoserver.nix @@ -0,0 +1,24 @@ +{ pkgs, lib, ... }: { + + name = "geoserver"; + meta = { + maintainers = with lib; [ teams.geospatial.members ]; + }; + + nodes = { + machine = { pkgs, ... }: { + virtualisation.diskSize = 2 * 1024; + + environment.systemPackages = [ pkgs.geoserver ]; + }; + }; + + testScript = '' + start_all() + + machine.execute("${pkgs.geoserver}/bin/geoserver-startup > /dev/null 2>&1 &") + machine.wait_until_succeeds("curl --fail --connect-timeout 2 http://localhost:8080/geoserver", timeout=60) + + machine.succeed("curl --fail --connect-timeout 2 http://localhost:8080/geoserver/ows?service=WMS&version=1.3.0&request=GetCapabilities") + ''; +} diff --git a/pkgs/servers/geospatial/geoserver/default.nix b/pkgs/servers/geospatial/geoserver/default.nix index 543a602112ca..c0a8bfbdf77e 100644 --- a/pkgs/servers/geospatial/geoserver/default.nix +++ b/pkgs/servers/geospatial/geoserver/default.nix @@ -1,4 +1,12 @@ -{ lib, stdenv, fetchurl, unzip, jre, makeWrapper }: +{ lib +, fetchurl +, makeWrapper +, nixosTests +, stdenv + +, jre +, unzip +}: stdenv.mkDerivation rec { pname = "geoserver"; @@ -32,6 +40,10 @@ stdenv.mkDerivation rec { runHook postInstall ''; + passthru = { + tests.geoserver = nixosTests.geoserver; + }; + meta = with lib; { description = "Open source server for sharing geospatial data"; homepage = "https://geoserver.org/";