diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index d07fd0e20558..bb674910e700 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -814,7 +814,6 @@ in { postfix = handleTest ./postfix.nix {}; postfix-raise-smtpd-tls-security-level = handleTest ./postfix-raise-smtpd-tls-security-level.nix {}; postfixadmin = handleTest ./postfixadmin.nix {}; - postgis = handleTest ./postgis.nix {}; postgresql = handleTest ./postgresql.nix {}; postgresql-jit = handleTest ./postgresql-jit.nix {}; postgresql-wal-receiver = handleTest ./postgresql-wal-receiver.nix {}; diff --git a/nixos/tests/postgis.nix b/nixos/tests/postgis.nix deleted file mode 100644 index 5b63e2ba73eb..000000000000 --- a/nixos/tests/postgis.nix +++ /dev/null @@ -1,38 +0,0 @@ -import ./make-test-python.nix ({ pkgs, ...} : { - name = "postgis"; - meta = with pkgs.lib.maintainers; { - maintainers = [ lsix ]; - }; - - nodes = { - master = - { pkgs, ... }: - - { - services.postgresql = { - enable = true; - package = pkgs.postgresql; - extraPlugins = ps: with ps; [ - postgis - ]; - }; - }; - }; - - testScript = '' - start_all() - master.wait_for_unit("postgresql") - master.sleep(10) # Hopefully this is long enough!! - master.succeed("sudo -u postgres psql -c 'CREATE EXTENSION postgis;'") - master.succeed("sudo -u postgres psql -c 'CREATE EXTENSION postgis_raster;'") - master.succeed("sudo -u postgres psql -c 'CREATE EXTENSION postgis_topology;'") - master.succeed("sudo -u postgres psql -c 'select postgis_version();'") - master.succeed("[ \"$(sudo -u postgres psql --no-psqlrc --tuples-only -c 'select postgis_version();')\" = \" ${ - pkgs.lib.versions.major pkgs.postgis.version - }.${ - pkgs.lib.versions.minor pkgs.postgis.version - } USE_GEOS=1 USE_PROJ=1 USE_STATS=1\" ]") - # st_makepoint goes through c code - master.succeed("sudo -u postgres psql --no-psqlrc --tuples-only -c 'select st_makepoint(1, 1)'") - ''; -}) diff --git a/pkgs/servers/sql/postgresql/ext/postgis.nix b/pkgs/servers/sql/postgresql/ext/postgis.nix index aa62c778a3fd..afd24f85928e 100644 --- a/pkgs/servers/sql/postgresql/ext/postgis.nix +++ b/pkgs/servers/sql/postgresql/ext/postgis.nix @@ -18,7 +18,7 @@ docbook5, cunit, pcre2, - nixosTests, + postgresqlTestExtension, jitSupport, llvm, }: @@ -26,7 +26,7 @@ let gdal = gdalMinimal; in -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "postgis"; version = "3.5.0"; @@ -36,7 +36,7 @@ stdenv.mkDerivation rec { ]; src = fetchurl { - url = "https://download.osgeo.org/postgis/source/postgis-${version}.tar.gz"; + url = "https://download.osgeo.org/postgis/source/postgis-${finalAttrs.version}.tar.gz"; hash = "sha256-ymmKIswrKzRnrE4GO0OihBPzAE3dUFvczddMVqZH9RA="; }; @@ -70,9 +70,9 @@ stdenv.mkDerivation rec { preConfigure = '' sed -i 's@/usr/bin/file@${file}/bin/file@' configure - configureFlags="--datadir=$out/share/postgresql --datarootdir=$out/share/postgresql --bindir=$out/bin --docdir=$doc/share/doc/${pname} --with-gdalconfig=${gdal}/bin/gdal-config --with-jsondir=${json_c.dev} --disable-extension-upgrades-install" + configureFlags="--datadir=$out/share/postgresql --datarootdir=$out/share/postgresql --bindir=$out/bin --docdir=$doc/share/doc/${finalAttrs.pname} --with-gdalconfig=${gdal}/bin/gdal-config --with-jsondir=${json_c.dev} --disable-extension-upgrades-install" - makeFlags="PERL=${perl}/bin/perl datadir=$out/share/postgresql pkglibdir=$out/lib bindir=$out/bin docdir=$doc/share/doc/${pname}" + makeFlags="PERL=${perl}/bin/perl datadir=$out/share/postgresql pkglibdir=$out/lib bindir=$out/bin docdir=$doc/share/doc/${finalAttrs.pname}" ''; postConfigure = '' sed -i "s|@mkdir -p \$(DESTDIR)\$(PGSQL_BINDIR)||g ; @@ -106,19 +106,39 @@ stdenv.mkDerivation rec { rm $out/bin/postgres for prog in $out/bin/*; do # */ - ln -s $prog $prog-${version} + ln -s $prog $prog-${finalAttrs.version} done mkdir -p $doc/share/doc/postgis mv doc/* $doc/share/doc/postgis/ ''; - passthru.tests.postgis = nixosTests.postgis; + passthru.tests.extension = postgresqlTestExtension { + inherit (finalAttrs) finalPackage; + sql = + let + expectedVersion = "${lib.versions.major finalAttrs.version}.${lib.versions.minor finalAttrs.version} USE_GEOS=1 USE_PROJ=1 USE_STATS=1"; + in + '' + CREATE EXTENSION postgis; + CREATE EXTENSION postgis_raster; + CREATE EXTENSION postgis_topology; + select postgis_version(); + do $$ + begin + if postgis_version() <> '${expectedVersion}' then + raise '"%" does not match "${expectedVersion}"', postgis_version(); + end if; + end$$; + -- st_makepoint goes through c code + select st_makepoint(1, 1); + ''; + }; meta = with lib; { description = "Geographic Objects for PostgreSQL"; homepage = "https://postgis.net/"; - changelog = "https://git.osgeo.org/gitea/postgis/postgis/raw/tag/${version}/NEWS"; + changelog = "https://git.osgeo.org/gitea/postgis/postgis/raw/tag/${finalAttrs.version}/NEWS"; license = licenses.gpl2Plus; maintainers = with maintainers; @@ -129,4 +149,4 @@ stdenv.mkDerivation rec { ]; inherit (postgresql.meta) platforms; }; -} +})