diff --git a/.cirrus.yml b/.cirrus.yml index 5666c05707d..6f01cf669bd 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -1,5 +1,5 @@ freebsd_instance: - image_family: freebsd-13-1 + image_family: freebsd-14-0 build_task: name: Build FreeBSD (Stack) diff --git a/.github/workflows/cachix.yaml b/.github/workflows/cachix.yaml index 071d08ac2ea..2642a679934 100644 --- a/.github/workflows/cachix.yaml +++ b/.github/workflows/cachix.yaml @@ -57,13 +57,7 @@ jobs: - name: Seed static toolchain if: matrix.os == 'Linux' run: | - nix-build -A packagesStatic.haskellPackages.hello - postgrest-push-cachix - - - name: Seed static postgresql build (for libpq) - if: matrix.os == 'Linux' - run: | - nix-build -A packagesStatic.pkgs.postgresql + nix-build -A packagesStatic.hello postgrest-push-cachix - name: Seed static postgrest build diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 2c6cdccdbcb..1994769714a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -27,14 +27,8 @@ jobs: uses: ./.github/actions/setup-nix with: cache-id: common - - name: Put all tools to store to be cached afterwards - run: | - # shellcheck disable=SC2046 - nix-store -v --realize $( nix-instantiate default.nix \ - -A style -A withTools -A memory -A tests -A release -A postgrestPackage \ - ) - shell: bash - + tools: style withTools memory tests release postgrestPackage + Lint-Style: name: Lint & check code style runs-on: ubuntu-latest @@ -135,19 +129,13 @@ jobs: Build-Static-Nix: name: Build Linux static (Nix) runs-on: ubuntu-latest - needs: [Prepopulate-Nix-Cache-Linux] steps: - uses: actions/checkout@v4 - name: Setup Nix Environment uses: ./.github/actions/setup-nix - with: - tools: tests - cache-id: common - name: Build static executable run: nix-build -A postgrestStatic - - name: Check static executable - run: postgrest-check-static result/bin/postgrest - name: Save built executable as artifact uses: actions/upload-artifact@v4 with: @@ -251,7 +239,7 @@ jobs: Build-Cabal: strategy: matrix: - ghc: ['9.4.8'] + ghc: ['9.4.8', '9.6.4', '9.8.1'] fail-fast: false name: Build Linux (Cabal, GHC ${{ matrix.ghc }}) runs-on: ubuntu-latest diff --git a/CHANGELOG.md b/CHANGELOG.md index b54256e552a..82638228532 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Fixed - #3149, Misleading "Starting PostgREST.." logs on schema cache reloading - @steve-chavez + - #2815, Build static executable with GSSAPI support - @wolfgangwalther ### Deprecated diff --git a/cabal.project.freeze b/cabal.project.freeze index b9a591a7c4e..b141317cbf5 100644 --- a/cabal.project.freeze +++ b/cabal.project.freeze @@ -1 +1 @@ -index-state: hackage.haskell.org 2024-01-06T00:00:00Z +index-state: hackage.haskell.org 2024-01-22T00:00:00Z diff --git a/cabal.project.non-nix b/cabal.project.non-nix index 1380b64e894..f37e81ef158 100644 --- a/cabal.project.non-nix +++ b/cabal.project.non-nix @@ -16,5 +16,32 @@ packages: . source-repository-package type: git - location: https://github.com/PostgREST/postgresql-libpq.git - tag: 890a0a16cf57dd401420fdc6c7d576fb696003bc + location: https://github.com/postgrest/configurator-pg.git + tag: e4d2dd34da2746af2fdf927d3f0a5baf9d4c5baf + +source-repository-package + type: git + location: https://github.com/phadej/insert-ordered-containers.git + tag: 61de4ad588f3d5e8935368abf87312c0d2560d55 + +source-repository-package + type: git + location: https://github.com/well-typed/optics.git + tag: f82800306797f255974829e7b87380f20217dff3 + subdir: optics-extra optics-th + +source-repository-package + type: git + location: https://github.com/haskellari/postgresql-libpq.git + tag: 05417491872ba4b74382673e834518610b993b28 + +source-repository-package + type: git + location: https://github.com/qfpl/tasty-hedgehog.git + tag: 1ec8ee4c5e4e231026363673bc460eaf5c649b2d + +source-repository-package + type: git + location: https://github.com/wolfgangwalther/swagger2.git + tag: dcc6fbec4b650c779f1a2ffbdc6464b006001def + diff --git a/default.nix b/default.nix index 918a96f52de..6cf227b66aa 100644 --- a/default.nix +++ b/default.nix @@ -36,7 +36,7 @@ let allOverlays.build-toolbox allOverlays.checked-shell-script allOverlays.gitignore - (allOverlays.postgresql-default { inherit patches; }) + allOverlays.postgresql-libpq allOverlays.postgresql-legacy allOverlays.postgresql-future allOverlays.postgis @@ -60,23 +60,11 @@ let { name = "postgresql-9.6"; postgresql = pkgs.postgresql_9_6.withPackages (p: [ p.postgis p.pg_safeupdate ]); } ]; - patches = - pkgs.callPackage nix/patches { }; - # Dynamic derivation for PostgREST postgrest = pkgs.haskell.packages."${compiler}".callCabal2nix name src { }; - # Functionality that derives a fully static Haskell package based on - # nh2/static-haskell-nix - staticHaskellPackage = - import nix/static-haskell-package.nix { inherit nixpkgs system compiler patches allOverlays; }; - - # Static executable. - postgrestStatic = - lib.justStaticExecutables (lib.dontCheck (staticHaskellPackage name src).package); - - packagesStatic = (staticHaskellPackage name src).survey; + staticHaskellPackage = import nix/static.nix { inherit compiler name pkgs src; }; # Options passed to cabal in dev tools and tests devCabalOptions = @@ -160,8 +148,8 @@ rec { }; } // pkgs.lib.optionalAttrs pkgs.stdenv.isLinux rec { # Static executable. - inherit postgrestStatic; - inherit packagesStatic; + inherit (staticHaskellPackage) postgrestStatic; + inherit (staticHaskellPackage) packagesStatic; # Docker images and loading script. docker = diff --git a/nix/UPGRADE.md b/nix/UPGRADE.md index 5fd6d68a237..5c747e44802 100644 --- a/nix/UPGRADE.md +++ b/nix/UPGRADE.md @@ -33,15 +33,6 @@ postgrest-nixpkgs-upgrade ``` -## Update pinned version of `static-haskell-nix` - -We pin [`static-haskell-nix`](https://github.com/nh2/static-haskell-nix) in -[`nix/static-haskell-package.nix`](static-haskell-package.nix). Upgrade the -pinned revision and the tarball hash if necessary. See -[`nix/nixpkgs-upgrade.nix`](nixpkgs-upgrade.nix) for how to get the correct -tarball hash, or just change the hash to an arbitrary value of correct length, -run `nix-build` and use the expected value from the resulting error message. - ## Review overlays Check whether the individual [overlays](overlays) are still required. diff --git a/nix/libpq.nix b/nix/libpq.nix new file mode 100644 index 00000000000..c45956cbcc7 --- /dev/null +++ b/nix/libpq.nix @@ -0,0 +1,65 @@ +# Creating a separate libpq package is is discussed in +# https://github.com/NixOS/nixpkgs/issues/61580, but nixpkgs has not moved +# forward, yet. +# This package is passed to postgresql-libpq (haskell) which needs to be +# cross-compiled to the static build and possibly other architectures as +# as well. To reduce the number of dependencies that need to be built with +# it, this derivation focuses on building the client libraries only. No +# server, no tests. +{ stdenv +, lib +, openssl +, zlib +, libkrb5 +, icu +, postgresql +, pkg-config +, tzdata +}: + +stdenv.mkDerivation { + pname = "libpq"; + inherit (postgresql) src version; + + configureFlags = [ + "--without-gssapi" + "--without-icu" + "--without-readline" + "--with-gssapi" + "--with-openssl" + "--with-system-tzdata=${tzdata}/share/zoneinfo" + ]; + + nativeBuildInputs = [ pkg-config tzdata ]; + buildInputs = [ libkrb5 openssl zlib ]; + + buildFlags = [ "submake-libpq" "submake-libpgport" ]; + + installPhase = '' + runHook preInstall + + make -C src/bin/pg_config install + make -C src/common install + make -C src/include install + make -C src/interfaces/libpq install + make -C src/port install + + rm -rfv $out/share + + runHook postInstall + ''; + + # To avoid linking errors in the static build with gssapi + postInstall = '' + substituteInPlace $out/lib/pkgconfig/libpq.pc\ + --replace "Requires.private:" "Requires.private: krb5-gssapi," + ''; + + outputs = [ "out" ]; + + meta = with lib; { + homepage = "https://www.postgresql.org"; + description = "Client API library for PostgreSQL"; + license = licenses.postgresql; + }; +} diff --git a/nix/overlays/default.nix b/nix/overlays/default.nix index 8b0b3af4ff2..434ccc72d8f 100644 --- a/nix/overlays/default.nix +++ b/nix/overlays/default.nix @@ -4,7 +4,7 @@ gitignore = import ./gitignore.nix; haskell-packages = import ./haskell-packages.nix; postgis = import ./postgis.nix; - postgresql-default = import ./postgresql-default.nix; + postgresql-libpq = import ./postgresql-libpq.nix; postgresql-legacy = import ./postgresql-legacy.nix; postgresql-future = import ./postgresql-future.nix; slocat = import ./slocat.nix; diff --git a/nix/overlays/haskell-packages.nix b/nix/overlays/haskell-packages.nix index 01764e63ad7..b8515170f95 100644 --- a/nix/overlays/haskell-packages.nix +++ b/nix/overlays/haskell-packages.nix @@ -1,4 +1,4 @@ -{ compiler, extraOverrides ? (final: prev: { }) }: +{ compiler }: self: super: let @@ -42,18 +42,13 @@ let fuzzyset = lib.markUnbroken prev.fuzzyset; postgresql-libpq = lib.dontCheck - (prev.callCabal2nix "postgresql-libpq" - (super.fetchFromGitHub { - owner = "PostgREST"; - repo = "postgresql-libpq"; - rev = "890a0a16cf57dd401420fdc6c7d576fb696003bc"; # master - sha256 = "1wmyhldk0k14y8whp1p4akrkqxf5snh8qsbm7fv5f7kz95nyffd0"; - }) - { }); + (prev.postgresql-libpq_0_10_0_0.override { + postgresql = super.libpq; + }); hasql-pool = lib.dontCheck prev.hasql-pool_0_10; - } // extraOverrides final prev; + }; in { haskell = diff --git a/nix/overlays/postgresql-default.nix b/nix/overlays/postgresql-default.nix deleted file mode 100644 index 1e38b8fea1b..00000000000 --- a/nix/overlays/postgresql-default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ patches }: self: super: -# Overlay that sets the default version of PostgreSQL. -with patches; -{ - postgresql = super.postgresql_15.overrideAttrs ({ patches ? [ ], ... }: { - patches = patches ++ [ postgresql-atexit ]; - }); -} diff --git a/nix/overlays/postgresql-libpq.nix b/nix/overlays/postgresql-libpq.nix new file mode 100644 index 00000000000..5f342bd866e --- /dev/null +++ b/nix/overlays/postgresql-libpq.nix @@ -0,0 +1,6 @@ +self: super: +{ + libpq = super.callPackage ../libpq.nix { + postgresql = super.postgresql_16; + }; +} diff --git a/nix/patches/default.nix b/nix/patches/default.nix deleted file mode 100644 index e3c5a974522..00000000000 --- a/nix/patches/default.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ runCommand }: - -{ - applyPatches = - name: src: patches: - runCommand - name - { inherit src patches; } - '' - set -eou pipefail - - cp -r $src $out - chmod -R u+w $out - - for patch in $patches; do - echo "Applying patch $patch" - patch -d "$out" -p1 < "$patch" - done - ''; - - static-haskell-nix-ncurses = - ./static-haskell-nix-ncurses.patch; - static-haskell-nix-ghc-bignum = - ./static-haskell-nix-ghc-bignum.patch; - static-haskell-nix-openssl = - ./static-haskell-nix-openssl.patch; - postgresql-atexit = - ./postgresql-atexit.patch; -} diff --git a/nix/patches/postgresql-atexit.patch b/nix/patches/postgresql-atexit.patch deleted file mode 100644 index 3c111191497..00000000000 --- a/nix/patches/postgresql-atexit.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/src/interfaces/libpq/Makefile -+++ b/src/interfaces/libpq/Makefile -@@ -118,7 +118,7 @@ backend_src = $(top_srcdir)/src/backend - libpq-refs-stamp: $(shlib) - ifneq ($(enable_coverage), yes) - ifeq (,$(filter aix solaris,$(PORTNAME))) -- @if nm -A -u $< 2>/dev/null | grep -v __cxa_atexit | grep exit; then \ -+ @if nm -A -u $< 2>/dev/null | grep " exit"; then \ - echo 'libpq must not be calling any function which invokes exit'; exit 1; \ - fi - endif diff --git a/nix/patches/static-haskell-nix-ghc-bignum.patch b/nix/patches/static-haskell-nix-ghc-bignum.patch deleted file mode 100644 index 568880d9260..00000000000 --- a/nix/patches/static-haskell-nix-ghc-bignum.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/survey/default.nix b/survey/default.nix -index 70afbbc..28cb0e9 100644 ---- a/survey/default.nix -+++ b/survey/default.nix -@@ -81,6 +81,7 @@ let - # `.override` and the likes). - isProperHaskellPackage = val: - lib.isDerivation val && # must pass lib.isDerivation -+ val.pname != "ghc-bignum" && - val ? env; # must have an .env key - - # Function that tells us if a given Haskell package has an executable. diff --git a/nix/patches/static-haskell-nix-ncurses.patch b/nix/patches/static-haskell-nix-ncurses.patch deleted file mode 100644 index 195f8422078..00000000000 --- a/nix/patches/static-haskell-nix-ncurses.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/survey/default.nix b/survey/default.nix -index 46d8066..a47f214 100644 ---- a/survey/default.nix -+++ b/survey/default.nix -@@ -1519,7 +1519,7 @@ let - [ - "--enable-executable-static" # requires `useFixedCabal` - # `enableShared` seems to be required to avoid `recompile with -fPIC` errors on some packages. -- "--extra-lib-dirs=${final.ncurses.override { enableStatic = true; enableShared = true; }}/lib" -+ "--extra-lib-dirs=${final.ncurses.override { enableStatic = true; }}/lib" - ] - # TODO Figure out why this and the below libffi are necessary. - # `working` and `workingStackageExecutables` don't seem to need that, diff --git a/nix/patches/static-haskell-nix-openssl.patch b/nix/patches/static-haskell-nix-openssl.patch deleted file mode 100644 index e580549f173..00000000000 --- a/nix/patches/static-haskell-nix-openssl.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/survey/default.nix b/survey/default.nix -index cf1bd31..9d34753 100644 ---- a/survey/default.nix -+++ b/survey/default.nix -@@ -736,6 +736,7 @@ let - openblas = previous.openblas.override { enableStatic = true; }; - - openssl = previous.openssl.override { static = true; }; -+ openssl_1_1 = previous.openssl_1_1.override { static = true; }; - - libsass = previous.libsass.overrideAttrs (old: { dontDisableStatic = true; }); - diff --git a/nix/static-haskell-package.nix b/nix/static-haskell-package.nix deleted file mode 100644 index 01ba11ee61c..00000000000 --- a/nix/static-haskell-package.nix +++ /dev/null @@ -1,65 +0,0 @@ -# Derive a fully static Haskell package based on musl instead of glibc. -{ nixpkgs, system, compiler, patches, allOverlays }: - -name: src: -let - # The nh2/static-haskell-nix project does all the hard work for us. - static-haskell-nix = - let - rev = "bd66b86b72cff4479e1c76d5916a853c38d09837"; - in - builtins.fetchTarball { - url = "https://github.com/nh2/static-haskell-nix/archive/${rev}.tar.gz"; - sha256 = "0rnsxaw7v27znsg9lgqk1i4007ydqrc8gfgimrmhf24lv6galbjh"; - }; - - patched-static-haskell-nix = - patches.applyPatches "patched-static-haskell-nix" - static-haskell-nix - [ - patches.static-haskell-nix-ncurses - patches.static-haskell-nix-ghc-bignum - patches.static-haskell-nix-openssl - ]; - - extraOverrides = - final: prev: - rec { - # We need to add our package needs to the package set that we pass to - # static-haskell-nix. Using callCabal2nix on the haskellPackages that - # it returns would result in a dynamic build based on musl, and not the - # fully static build that we want. - "${name}" = prev.callCabal2nix name src { }; - }; - - overlays = - [ - allOverlays.postgresql-future - (allOverlays.postgresql-default { inherit patches; }) - (allOverlays.haskell-packages { inherit compiler extraOverrides; }) - # Disable failing tests for postgresql on musl that should have no impact - # on the libpq that we need (collate.icu.utf8 and foreign regression - # tests) - (self: super: - { postgresql = super.postgresql.overrideAttrs (_: { doCheck = false; }); } - ) - ]; - - # Apply our overlay to nixpkgs. - normalPkgs = - import nixpkgs { inherit overlays system; }; - - defaultCabalPackageVersionComingWithGhc = - { - ghc948 = "Cabal_3_8_1_0"; - }."${compiler}"; - - # The static-haskell-nix 'survey' derives a full static set of Haskell - # packages, applying fixes where necessary. - survey = - import "${patched-static-haskell-nix}/survey" { inherit normalPkgs compiler defaultCabalPackageVersionComingWithGhc; }; -in -{ - inherit survey; - package = survey.haskellPackages."${name}"; -} diff --git a/nix/static.nix b/nix/static.nix new file mode 100644 index 00000000000..410ff13cf6a --- /dev/null +++ b/nix/static.nix @@ -0,0 +1,70 @@ +{ compiler +, name +, pkgs +, src +}: +let + # This builds a static PostgREST exectuable based on pkgsStatic. + # pkgsStatic is based on musl, so is a kind of cross-compilation. + # We still make this explicit here via pkgsCross, because we need + # to get postgresql/libpq for musl, too. + pkgsCross = pkgs.pkgsCross.musl64; + inherit (pkgsCross) pkgsStatic; + inherit (pkgsStatic.haskell) lib; + + packagesStatic = + pkgsStatic.haskell.packages."${compiler}".override (old: { + ghc = pkgsStatic.pkgsBuildHost.haskell.compiler."${compiler}".override { + # Using the bundled libffi generally works better for cross-compiling + libffi = null; + # Building sphinx fails on some platforms + enableDocs = false; + # Cross compiling with native bignum works better than with gmp + enableNativeBignum = true; + }; + + overrides = pkgs.lib.composeExtensions old.overrides (final: prev: { + postgresql-libpq = (prev.postgresql-libpq.override { + # postgresql doesn't build in the fully static overlay - but the default + # derivation is built with static libraries anyway. + postgresql = pkgsCross.libpq; + }).overrideAttrs (finalAttrs: prevAttrs: { + # Using use-pkg-config flag, because pg_config won't work when cross-compiling + configureFlags = prevAttrs.configureFlags ++ [ "-fuse-pkg-config" ]; + # Using pkg-config without pkgsCross, because "pkg-config" is hardcoded in + # postgresql-libpq's Setup.hs. Using pkgsStatic to make pkg-config return the + # static libs for libpq. + nativeBuildInputs = prevAttrs.nativeBuildInputs ++ [ pkgs.pkgsStatic.pkg-config ]; + + buildInputs = prevAttrs.buildInputs ++ [ + (pkgsStatic.libkrb5.overrideAttrs (finalAttrs: prevAttrs: { + # disable keyutils dependency, to avoid linking errors + configureFlags = prevAttrs.configureFlags ++ [ "--without-keyutils" ]; + })) + ]; + }); + }); + }); + + makeExecutableStatic = drv: pkgs.lib.pipe drv [ + (lib.compose.appendConfigureFlags [ "--enable-executable-static" ]) + lib.compose.justStaticExecutables + (lib.compose.overrideCabal (drv: { + postInstall = '' + exe="$out/bin/postgrest" + if ! (file "$exe" | grep 'statically linked') then + echo "not a static executable, ldd output:" + ldd "$exe" + exit 1 + fi + "$exe" --help + ''; + })) + ]; + +in +{ + inherit packagesStatic; + + postgrestStatic = makeExecutableStatic (packagesStatic.callCabal2nix name src { }); +} diff --git a/nix/tools/tests.nix b/nix/tools/tests.nix index a5da6f05469..469208e9f63 100644 --- a/nix/tools/tests.nix +++ b/nix/tools/tests.nix @@ -192,26 +192,6 @@ let sed -i 's|^module \(.*\):|module \1/|g' test/coverage.overlay ''; - checkStatic = - checkedShellScript - { - name = "postgrest-check-static"; - docs = "Verify that the argument is a static executable."; - args = [ "ARG_POSITIONAL_SINGLE([executable], [Executable])" ]; - inRootDir = true; - withEnv = postgrest.env; - } - '' - exe="$_arg_executable" - ldd_output=$(ldd "$exe" 2>&1 || true) - if ! grep -q "not a dynamic executable" <<< "$ldd_output"; then - echo "not a static executable, ldd output:" - echo "$ldd_output" - exit 1 - fi - "$exe" --help - ''; - in buildToolbox { @@ -225,6 +205,5 @@ buildToolbox dumpSchema coverage coverageDraftOverlay - checkStatic ]; } diff --git a/postgrest.cabal b/postgrest.cabal index 689ef77cd45..ebef807f229 100644 --- a/postgrest.cabal +++ b/postgrest.cabal @@ -75,13 +75,13 @@ library PostgREST.Response.Performance PostgREST.Version other-modules: Paths_postgrest - build-depends: base >= 4.9 && < 4.18 + build-depends: base >= 4.9 && < 4.20 , HTTP >= 4000.3.7 && < 4000.5 , Ranged-sets >= 0.3 && < 0.5 - , aeson >= 2.0.3 && < 2.2 + , aeson >= 2.0.3 && < 2.3 , auto-update >= 0.1.4 && < 0.2 , base64-bytestring >= 1 && < 1.3 - , bytestring >= 0.10.8 && < 0.12 + , bytestring >= 0.10.8 && < 0.13 , cache >= 0.1.3 && < 0.2.0 , case-insensitive >= 1.2 && < 1.3 , cassava >= 0.4.5 && < 0.6 @@ -104,21 +104,22 @@ library , http-types >= 0.12.2 && < 0.13 , insert-ordered-containers >= 0.2.2 && < 0.3 , interpolatedstring-perl6 >= 1 && < 1.1 - , jose >= 0.8.5.1 && < 0.11 + , jose >= 0.8.5.1 && < 0.12 , lens >= 4.14 && < 5.3 , lens-aeson >= 1.0.1 && < 1.3 - , mtl >= 2.2.2 && < 2.3 + , mtl >= 2.2.2 && < 2.4 , network >= 2.6 && < 3.2 , network-uri >= 2.6.1 && < 2.8 , optparse-applicative >= 0.13 && < 0.18 , parsec >= 3.1.11 && < 3.2 + , postgresql-libpq >= 0.10 , protolude >= 0.3.1 && < 0.4 , regex-tdfa >= 1.2.2 && < 1.4 , retry >= 0.7.4 && < 0.10 , scientific >= 0.3.4 && < 0.4 , streaming-commons >= 0.1.1 && < 0.3 , swagger2 >= 2.4 && < 2.9 - , text >= 1.2.2 && < 2.1 + , text >= 1.2.2 && < 2.2 , time >= 1.6 && < 1.13 , timeit >= 2.0 && < 2.1 , unordered-containers >= 0.2.8 && < 0.3 @@ -159,7 +160,7 @@ executable postgrest NoImplicitPrelude hs-source-dirs: main main-is: Main.hs - build-depends: base >= 4.9 && < 4.18 + build-depends: base >= 4.9 && < 4.20 , containers >= 0.5.7 && < 0.7 , postgrest , protolude >= 0.3.1 && < 0.4 @@ -233,19 +234,19 @@ test-suite spec Feature.RollbackSpec Feature.RpcPreRequestGucsSpec SpecHelper - build-depends: base >= 4.9 && < 4.18 - , aeson >= 2.0.3 && < 2.2 + build-depends: base >= 4.9 && < 4.20 + , aeson >= 2.0.3 && < 2.3 , aeson-qq >= 0.8.1 && < 0.9 , async >= 2.1.1 && < 2.3 , auto-update >= 0.1.4 && < 0.2 , base64-bytestring >= 1 && < 1.3 - , bytestring >= 0.10.8 && < 0.12 + , bytestring >= 0.10.8 && < 0.13 , case-insensitive >= 1.2 && < 1.3 , containers >= 0.5.7 && < 0.7 , hasql-pool >= 0.10 && < 0.11 , hasql-transaction >= 1.0.1 && < 1.1 , heredoc >= 0.2 && < 0.3 - , hspec >= 2.3 && < 2.11 + , hspec >= 2.3 && < 2.12 , hspec-wai >= 0.10 && < 0.12 , hspec-wai-json >= 0.10 && < 0.12 , http-types >= 0.12.3 && < 0.13 @@ -257,7 +258,7 @@ test-suite spec , protolude >= 0.3.1 && < 0.4 , regex-tdfa >= 1.2.2 && < 1.4 , scientific >= 0.3.4 && < 0.4 - , text >= 1.2.2 && < 2.1 + , text >= 1.2.2 && < 2.2 , transformers-base >= 0.4.4 && < 0.5 , wai >= 3.2.1 && < 3.3 , wai-extra >= 3.0.19 && < 3.2 @@ -275,7 +276,7 @@ test-suite doctests NoImplicitPrelude hs-source-dirs: test/doc main-is: Main.hs - build-depends: base >= 4.9 && < 4.18 + build-depends: base >= 4.9 && < 4.20 , doctest >= 0.8 , postgrest , pretty-simple diff --git a/stack.yaml b/stack.yaml index ba4ad97b4f9..32a0c70aefe 100644 --- a/stack.yaml +++ b/stack.yaml @@ -11,9 +11,8 @@ nix: extra-deps: - configurator-pg-0.2.7 - - git: https://github.com/PostgREST/postgresql-libpq.git - commit: 890a0a16cf57dd401420fdc6c7d576fb696003bc + - fuzzyset-0.3.1 - hasql-notifications-0.2.0.6 - hasql-pool-0.10 - - fuzzyset-0.3.1 - megaparsec-9.2.2 + - postgresql-libpq-0.10.0.0