diff --git a/srcpkgs/postgrest/patches/basement.patch b/srcpkgs/postgrest/patches/basement.patch new file mode 100644 index 00000000000..e934f8e67b2 --- /dev/null +++ b/srcpkgs/postgrest/patches/basement.patch @@ -0,0 +1,242 @@ +From 38be2c93acb6f459d24ed6c626981c35ccf44095 Mon Sep 17 00:00:00 2001 +From: Sylvain Henry +Date: Thu, 16 Feb 2023 15:40:45 +0100 +Subject: [PATCH] Fix build on 32-bit architectures + +--- + basement/Basement/Bits.hs | 4 ++++ + basement/Basement/From.hs | 24 ----------------------- + basement/Basement/Numerical/Additive.hs | 4 ++++ + basement/Basement/Numerical/Conversion.hs | 20 +++++++++++++++++++ + basement/Basement/PrimType.hs | 6 +++++- + basement/Basement/Types/OffsetSize.hs | 22 +++++++++++++++++++-- + 6 files changed, 53 insertions(+), 27 deletions(-) + +diff --git a/basement/Basement/Bits.hs b/basement/Basement/Bits.hs +index 7eeea0f5..24520ed7 100644 +--- a/basement/Basement/Bits.hs ++++ b/basement/Basement/Bits.hs +@@ -54,8 +54,12 @@ import GHC.Int + import Basement.Compat.Primitive + + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++import GHC.Exts ++#else + import GHC.IntWord64 + #endif ++#endif + + -- | operation over finite bits + class FiniteBitsOps bits where +diff --git a/basement/Basement/From.hs b/basement/Basement/From.hs +index 7bbe141c..80014b3e 100644 +--- a/basement/Basement/From.hs ++++ b/basement/Basement/From.hs +@@ -272,23 +272,11 @@ instance (NatWithinBound (CountOf ty) n, KnownNat n, PrimType ty) + tryFrom = BlockN.toBlockN . UArray.toBlock . BoxArray.mapToUnboxed id + + instance (KnownNat n, NatWithinBound Word8 n) => From (Zn64 n) Word8 where +-#if __GLASGOW_HASKELL__ >= 904 +- from = narrow . unZn64 where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# (GHC.Prim.word64ToWord# w))) +-#else + from = narrow . unZn64 where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# w)) +-#endif + instance (KnownNat n, NatWithinBound Word16 n) => From (Zn64 n) Word16 where +-#if __GLASGOW_HASKELL__ >= 904 +- from = narrow . unZn64 where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# (GHC.Prim.word64ToWord# w))) +-#else + from = narrow . unZn64 where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# w)) +-#endif + instance (KnownNat n, NatWithinBound Word32 n) => From (Zn64 n) Word32 where +-#if __GLASGOW_HASKELL__ >= 904 +- from = narrow . unZn64 where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# (GHC.Prim.word64ToWord# w))) +-#else + from = narrow . unZn64 where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# w)) +-#endif + instance From (Zn64 n) Word64 where + from = unZn64 + instance From (Zn64 n) Word128 where +@@ -297,23 +285,11 @@ instance From (Zn64 n) Word256 where + from = from . unZn64 + + instance (KnownNat n, NatWithinBound Word8 n) => From (Zn n) Word8 where +-#if __GLASGOW_HASKELL__ >= 904 +- from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# (GHC.Prim.word64ToWord# w))) +-#else + from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W8# (wordToWord8# (word64ToWord# w)) +-#endif + instance (KnownNat n, NatWithinBound Word16 n) => From (Zn n) Word16 where +-#if __GLASGOW_HASKELL__ >= 904 +- from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# (GHC.Prim.word64ToWord# w))) +-#else + from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W16# (wordToWord16# (word64ToWord# w)) +-#endif + instance (KnownNat n, NatWithinBound Word32 n) => From (Zn n) Word32 where +-#if __GLASGOW_HASKELL__ >= 904 +- from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# (GHC.Prim.word64ToWord# w))) +-#else + from = narrow . naturalToWord64 . unZn where narrow (W64# w) = W32# (wordToWord32# (word64ToWord# w)) +-#endif + instance (KnownNat n, NatWithinBound Word64 n) => From (Zn n) Word64 where + from = naturalToWord64 . unZn + instance (KnownNat n, NatWithinBound Word128 n) => From (Zn n) Word128 where +diff --git a/basement/Basement/Numerical/Additive.hs b/basement/Basement/Numerical/Additive.hs +index d0dfb973..8ab65aa0 100644 +--- a/basement/Basement/Numerical/Additive.hs ++++ b/basement/Basement/Numerical/Additive.hs +@@ -30,8 +30,12 @@ import qualified Basement.Types.Word128 as Word128 + import qualified Basement.Types.Word256 as Word256 + + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++import GHC.Exts ++#else + import GHC.IntWord64 + #endif ++#endif + + -- | Represent class of things that can be added together, + -- contains a neutral element and is commutative. +diff --git a/basement/Basement/Numerical/Conversion.hs b/basement/Basement/Numerical/Conversion.hs +index db502c07..fddc8232 100644 +--- a/basement/Basement/Numerical/Conversion.hs ++++ b/basement/Basement/Numerical/Conversion.hs +@@ -26,8 +26,12 @@ import GHC.Word + import Basement.Compat.Primitive + + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++import GHC.Exts ++#else + import GHC.IntWord64 + #endif ++#endif + + intToInt64 :: Int -> Int64 + #if WORD_SIZE_IN_BITS == 64 +@@ -96,11 +100,22 @@ int64ToWord64 (I64# i) = W64# (int64ToWord64# i) + #endif + + #if WORD_SIZE_IN_BITS == 64 ++#if __GLASGOW_HASKELL__ >= 904 ++word64ToWord# :: Word64# -> Word# ++word64ToWord# i = word64ToWord# i ++#else + word64ToWord# :: Word# -> Word# + word64ToWord# i = i ++#endif + {-# INLINE word64ToWord# #-} + #endif + ++#if WORD_SIZE_IN_BITS < 64 ++word64ToWord32# :: Word64# -> Word32# ++word64ToWord32# i = wordToWord32# (word64ToWord# i) ++{-# INLINE word64ToWord32# #-} ++#endif ++ + -- | 2 Word32s + data Word32x2 = Word32x2 {-# UNPACK #-} !Word32 + {-# UNPACK #-} !Word32 +@@ -113,9 +128,14 @@ word64ToWord32s (W64# w64) = Word32x2 (W32# (wordToWord32# (uncheckedShiftRL# (G + word64ToWord32s (W64# w64) = Word32x2 (W32# (wordToWord32# (uncheckedShiftRL# w64 32#))) (W32# (wordToWord32# w64)) + #endif + #else ++#if __GLASGOW_HASKELL__ >= 904 ++word64ToWord32s :: Word64 -> Word32x2 ++word64ToWord32s (W64# w64) = Word32x2 (W32# (word64ToWord32# (uncheckedShiftRL64# w64 32#))) (W32# (word64ToWord32# w64)) ++#else + word64ToWord32s :: Word64 -> Word32x2 + word64ToWord32s (W64# w64) = Word32x2 (W32# (word64ToWord# (uncheckedShiftRL64# w64 32#))) (W32# (word64ToWord# w64)) + #endif ++#endif + + wordToChar :: Word -> Char + wordToChar (W# word) = C# (chr# (word2Int# word)) +diff --git a/basement/Basement/PrimType.hs b/basement/Basement/PrimType.hs +index f8ca2926..a888ec91 100644 +--- a/basement/Basement/PrimType.hs ++++ b/basement/Basement/PrimType.hs +@@ -54,7 +54,11 @@ import Basement.Nat + import qualified Prelude (quot) + + #if WORD_SIZE_IN_BITS < 64 +-import GHC.IntWord64 ++#if __GLASGOW_HASKELL__ >= 904 ++import GHC.Exts ++#else ++import GHC.IntWord64 ++#endif + #endif + + #ifdef FOUNDATION_BOUNDS_CHECK +diff --git a/basement/Basement/Types/OffsetSize.hs b/basement/Basement/Types/OffsetSize.hs +index cd944927..1ea80dad 100644 +--- a/basement/Basement/Types/OffsetSize.hs ++++ b/basement/Basement/Types/OffsetSize.hs +@@ -70,8 +70,12 @@ import Data.List (foldl') + import qualified Prelude + + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++import GHC.Exts ++#else + import GHC.IntWord64 + #endif ++#endif + + -- | File size in bytes + newtype FileSize = FileSize Word64 +@@ -225,20 +229,26 @@ countOfRoundUp alignment (CountOf n) = CountOf ((n + (alignment-1)) .&. compleme + + csizeOfSize :: CountOf Word8 -> CSize + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++csizeOfSize (CountOf (I# sz)) = CSize (W32# (wordToWord32# (int2Word# sz))) ++#else + csizeOfSize (CountOf (I# sz)) = CSize (W32# (int2Word# sz)) ++#endif + #else + #if __GLASGOW_HASKELL__ >= 904 + csizeOfSize (CountOf (I# sz)) = CSize (W64# (wordToWord64# (int2Word# sz))) +- + #else + csizeOfSize (CountOf (I# sz)) = CSize (W64# (int2Word# sz)) +- + #endif + #endif + + csizeOfOffset :: Offset8 -> CSize + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++csizeOfOffset (Offset (I# sz)) = CSize (W32# (wordToWord32# (int2Word# sz))) ++#else + csizeOfOffset (Offset (I# sz)) = CSize (W32# (int2Word# sz)) ++#endif + #else + #if __GLASGOW_HASKELL__ >= 904 + csizeOfOffset (Offset (I# sz)) = CSize (W64# (wordToWord64# (int2Word# sz))) +@@ -250,7 +260,11 @@ csizeOfOffset (Offset (I# sz)) = CSize (W64# (int2Word# sz)) + sizeOfCSSize :: CSsize -> CountOf Word8 + sizeOfCSSize (CSsize (-1)) = error "invalid size: CSSize is -1" + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++sizeOfCSSize (CSsize (I32# sz)) = CountOf (I# (int32ToInt# sz)) ++#else + sizeOfCSSize (CSsize (I32# sz)) = CountOf (I# sz) ++#endif + #else + #if __GLASGOW_HASKELL__ >= 904 + sizeOfCSSize (CSsize (I64# sz)) = CountOf (I# (int64ToInt# sz)) +@@ -261,7 +275,11 @@ sizeOfCSSize (CSsize (I64# sz)) = CountOf (I# sz) + + sizeOfCSize :: CSize -> CountOf Word8 + #if WORD_SIZE_IN_BITS < 64 ++#if __GLASGOW_HASKELL__ >= 904 ++sizeOfCSize (CSize (W32# sz)) = CountOf (I# (word2Int# (word32ToWord# sz))) ++#else + sizeOfCSize (CSize (W32# sz)) = CountOf (I# (word2Int# sz)) ++#endif + #else + #if __GLASGOW_HASKELL__ >= 904 + sizeOfCSize (CSize (W64# sz)) = CountOf (I# (word2Int# (word64ToWord# sz))) diff --git a/srcpkgs/postgrest/patches/data-bword.patch b/srcpkgs/postgrest/patches/data-bword.patch new file mode 100644 index 00000000000..af2951d4bbd --- /dev/null +++ b/srcpkgs/postgrest/patches/data-bword.patch @@ -0,0 +1,38 @@ +diff -ru data-bword-old/src/Data/BinaryWord.hs data-bword/src/Data/BinaryWord.hs +--- a/data-bword/src/Data/BinaryWord.hs 2001-09-09 02:46:40.000000000 +0100 ++++ b/data-bword/src/Data/BinaryWord.hs 2025-07-09 15:54:46.655592632 +0100 +@@ -26,7 +26,7 @@ + #if __GLASGOW_HASKELL__ >= 705 + import GHC.Prim (plusWord2#, timesWord2#) + # if __GLASGOW_HASKELL__ >= 904 +-import GHC.Prim (word64ToWord#, wordToWord64#) ++import GHC.Prim (word32ToWord#, wordToWord32#, word64ToWord#, wordToWord64#) + # endif + # if WORD_SIZE_IN_BITS == 32 + import GHC.Word (Word32(..)) +@@ -217,9 +217,9 @@ + {-# INLINE signedWord #-} + #if __GLASGOW_HASKELL__ >= 705 && WORD_SIZE_IN_BITS == 32 + unwrappedAdd (W32# x) (W32# y) = hi `seq` lo `seq` (hi, lo) +- where !(# hi', lo' #) = plusWord2# x y +- lo = W32# lo' +- hi = W32# hi' ++ where !(# hi', lo' #) = plusWord2# (word32ToWord# x) (word32ToWord# y) ++ lo = W32# (wordToWord32# lo') ++ hi = W32# (wordToWord32# hi') + #else + unwrappedAdd x y = hi `seq` lo `seq` (hi, lo) + where s = fromIntegral x + fromIntegral y ∷ Word64 +@@ -229,9 +229,9 @@ + {-# INLINE unwrappedAdd #-} + #if __GLASGOW_HASKELL__ >= 705 && WORD_SIZE_IN_BITS == 32 + unwrappedMul (W32# x) (W32# y) = hi `seq` lo `seq` (hi, lo) +- where !(# hi', lo' #) = timesWord2# x y +- lo = W32# lo' +- hi = W32# hi' ++ where !(# hi', lo' #) = timesWord2# (word32ToWord# x) (word32ToWord# y) ++ lo = W32# (wordToWord32# lo') ++ hi = W32# (wordToWord32# hi') + #else + unwrappedMul x y = hi `seq` lo `seq` (hi, lo) + where p = fromIntegral x * fromIntegral y ∷ Word64 diff --git a/srcpkgs/postgrest/patches/memory.patch b/srcpkgs/postgrest/patches/memory.patch new file mode 100644 index 00000000000..2a6d85b720d --- /dev/null +++ b/srcpkgs/postgrest/patches/memory.patch @@ -0,0 +1,36 @@ +From 2738929ce15b4c8704bbbac24a08539b5d4bf30e Mon Sep 17 00:00:00 2001 +From: sternenseemann +Date: Mon, 14 Aug 2023 10:51:30 +0200 +Subject: [PATCH] Data.Memory.Internal.CompatPrim64: fix 32 bit with GHC >= 9.4 + +Since 9.4, GHC.Prim exports Word64# operations like timesWord64# even on +i686 whereas GHC.IntWord64 no longer exists. Therefore, we can just use +the ready made solution. + +Closes #98, as it should be the better solution. +--- + Data/Memory/Internal/CompatPrim64.hs | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Data/Memory/Internal/CompatPrim64.hs b/Data/Memory/Internal/CompatPrim64.hs +index b9eef8a..a134c88 100644 +--- a/memory/Data/Memory/Internal/CompatPrim64.hs ++++ b/memory/Data/Memory/Internal/CompatPrim64.hs +@@ -150,6 +150,7 @@ w64# :: Word# -> Word# -> Word# -> Word64# + w64# w _ _ = w + + #elif WORD_SIZE_IN_BITS == 32 ++#if __GLASGOW_HASKELL__ < 904 + import GHC.IntWord64 + import GHC.Prim (Word#) + +@@ -158,6 +159,9 @@ timesWord64# a b = + let !ai = word64ToInt64# a + !bi = word64ToInt64# b + in int64ToWord64# (timesInt64# ai bi) ++#else ++import GHC.Prim ++#endif + + w64# :: Word# -> Word# -> Word# -> Word64# + w64# _ hw lw = diff --git a/srcpkgs/postgrest/patches/project.patch b/srcpkgs/postgrest/patches/project.patch new file mode 100644 index 00000000000..cbaf996dd83 --- /dev/null +++ b/srcpkgs/postgrest/patches/project.patch @@ -0,0 +1,8 @@ +--- a/cabal.project 2025-07-07 17:29:28.447471490 +0100 ++++ b/cabal.project 2025-07-07 17:29:48.730469893 +0100 +@@ -1,4 +1,4 @@ +-packages: postgrest.cabal ++packages: ./basement ./memory ./data-bword postgrest.cabal + tests: true + package * + ghc-options: -split-sections diff --git a/srcpkgs/postgrest/template b/srcpkgs/postgrest/template index 9c7af3039fe..157af3bc65d 100644 --- a/srcpkgs/postgrest/template +++ b/srcpkgs/postgrest/template @@ -1,35 +1,32 @@ # Template file for 'postgrest' pkgname=postgrest -version=10.2.0 +version=13.0.4 revision=1 -hostmakedepends="cabal-install postgresql-libs-devel" +build_style=cabal makedepends="zlib-devel postgresql-libs-devel" short_desc="REST API for any Postgres database" maintainer="Piotr Wójcik " license="MIT" homepage="https://postgrest.org/" -distfiles="https://github.com/PostgREST/postgrest/archive/v${version}.tar.gz" -checksum=23d63292d50d303bf61154061704f642dd3d699367e2ccb159ec7604f2848487 +distfiles="https://github.com/PostgREST/postgrest/archive/v${version}.tar.gz + https://hackage.haskell.org/package/basement-0.0.16/basement-0.0.16.tar.gz + https://hackage.haskell.org/package/memory-0.18.0/memory-0.18.0.tar.gz + https://hackage.haskell.org/package/data-bword-0.1.0.2/data-bword-0.1.0.2.tar.gz" +checksum="515ea77c049ef69f4553940ef0f13018dc2b72792195ec11a2020fe8914ceab9 + 7fb77e249aef76ba5aed3059d556800ce02b614597c488ba01f0a16449146300 + fd4eb6f638e24b81b4e6cdd68772a531726f2f67686c8969d3407d82f7862e3e + d64880e7d6c7a2d635d7e79552888f415a417379ee637a29321abf08187e9635" nocross="cabal does not support cross compilation" nopie=yes # ghc is currently built without PIE support +skip_extraction="basement-0.0.16.tar.gz memory-0.18.0.tar.gz data-bword-0.1.0.2.tar.gz" +make_check=no # tests require running postgres instance -_cabal_opts="-g" - -if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then - _cabal_opts+=" --ghc-option -latomic" -fi - -if [ "$XBPS_MAKEJOBS" ]; then - _cabal_opts+=" --jobs=$XBPS_MAKEJOBS" -fi - -do_build() { - cabal update $_cabal_opts - cabal build $_cabal_opts - mv dist-newstyle/build/*/*/postgrest-${version}/x/postgrest/build/postgrest/postgrest postgrest +post_extract() { + vsrcextract -C basement basement-0.0.16.tar.gz + vsrcextract -C memory memory-0.18.0.tar.gz + vsrcextract -C data-bword data-bword-0.1.0.2.tar.gz } -do_install() { - vbin postgrest +post_install() { vlicense LICENSE }