community/git-annex: upgrade to 10.20230828

This commit is contained in:
Antoine Martin 2023-08-28 14:26:30 -04:00
parent cc23fe6f94
commit f06a24abed
4 changed files with 30 additions and 351 deletions

View file

@ -1,14 +1,13 @@
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=git-annex
pkgver=10.20230802
_bloomfilterver=2.0.1.0
_connectionver=0.3.1
pkgver=10.20230828
pkgrel=0
pkgdesc="Manage files with git, without checking their contents into git"
url="http://git-annex.branchable.com"
arch="x86_64 aarch64" # limited by ghc
license="AGPL-3.0-or-later"
options="net"
depends="
curl
git
@ -31,10 +30,8 @@ makedepends="
"
source="
https://git.joeyh.name/index.cgi/git-annex.git/snapshot/git-annex-$pkgver.tar.gz
https://hackage.haskell.org/package/bloomfilter-$_bloomfilterver/bloomfilter-$_bloomfilterver.tar.gz
git-annex.config
git-annex-block-crypton.patch
bloomfilter-ghc9.2.diff
fix-makefile.patch
"
subpackages="$pkgname-doc $pkgname-bash-completion $pkgname-fish-completion $pkgname-zsh-completion"
@ -55,29 +52,21 @@ _feature_flags="
-fHttpClientRestricted \
"
_cabal_home="$srcdir/dist"
_cabal_config="git-annex"
cabal_update() {
default_prepare
msg "Freezing $pkgname dependencies"
msg "Installing dependency bloomfilter-$_bloomfilterver out-of-tree"
cd "$srcdir"/bloomfilter-*
patch -p1 -i "$srcdir"/bloomfilter-ghc9.2.diff
HOME="$_cabal_home" cabal v1-install
# Resolve deps and generate fresh cabal.config with version constraints.
HOME="$_cabal_home" cabal update
for i in $_cabal_config; do
cd "$srcdir/$i"*
HOME="$_cabal_home" cabal v1-freeze --shadow-installed-packages
cd "$builddir"
HOME="$_cabal_home" cabal v1-freeze --shadow-installed-packages
# Add version tag at the first line.
sed -i "1i--$pkgver" "cabal.config"
# Add version tag at the first line.
sed -i "1i--$pkgver" "cabal.config"
mv "cabal.config" "$startdir/$i.config"
cd "$startdir"
done
mv "cabal.config" "$startdir/git-annex.config"
cd "$startdir"
if ! abuild checksum; then
die "Failed to update checksum, run 'abuild checksum' manually"
@ -91,21 +80,13 @@ prepare() {
die "Requirements file is outdated, run 'abuild cabal_update'"
fi
for i in $_cabal_config; do
cd "$srcdir"/$i*
ln -sf "$srcdir/$i.config" cabal.config
done
ln -sf "$srcdir/git-annex.config" cabal.config
# ghc version path
export PATH="$PATH:/usr/lib/llvm14/bin"
# problematic depend install
HOME="$_cabal_home" cabal update
msg "Installing dependency bloomfilter-$_bloomfilterver out-of-tree"
cd "$srcdir"/bloomfilter-*
patch -p1 -i "$srcdir"/bloomfilter-ghc9.2.diff
HOME="$_cabal_home" cabal v1-install
}
build() {
@ -116,6 +97,7 @@ build() {
HOME="$_cabal_home" cabal update
HOME="$_cabal_home" cabal v1-install \
--only-dependencies \
--allow-newer=feed:base-compat \
$_feature_flags
HOME="$_cabal_home" cabal v1-configure $_feature_flags
HOME="$_cabal_home" cabal v1-build -j
@ -132,10 +114,8 @@ package() {
}
sha512sums="
1cf8626ba58869ecb7cd2965660e30e8e56590e19470a87f91b0c326b9d19478b7265663c7a03cf5f4785361429744827d4ef90718431a59cb2ede9f94ee7b68 git-annex-10.20230802.tar.gz
1031cc28c5e5c1b7687355b709d436ebab1956ffd7591a010fa3852a1bc7412925a365f99937feeacf4b1a5d3c7b34bc0370707ad6e4533280dcac4ea3fa7c21 bloomfilter-2.0.1.0.tar.gz
1d73754b22c797c541e351f001f953f7845f2df70768ef03f4ecc00eafc3d2fb6241efbeca4c1ec9ab5d6e8fa1e8e676c8b23522414038ce4ea9983db8cc31ee git-annex.config
6c8b2055ddffc49a8572aec4880514808be01e00721617d157d51974131164e9663e656e8af7c81905e9b248a56ee4cfc7c048a5b55a09b9eab0c5827c75bd55 git-annex-block-crypton.patch
500ebfd84e5771ed62ad2491b3f484d9a049091cd9bced072f34e64d81fd4db8aff2cfd9a0b2278335ac86198bfca551aec6ce3a2bd07d4484393a4288d3af35 bloomfilter-ghc9.2.diff
a25e57f0cb632934c521ab34dd2b71bf3c98de768b817cb6fc4af76fb00ea281bb0f1e9a33f347ed69ddded71018562ac8061debd7189d12d067408cec5282b5 git-annex-10.20230828.tar.gz
e0fd71ebdf7d3a0f3894e296fd4ede4f2f7ce6e2ef1133fdc09c37d86b19403d65077c2cf883673f72fa75383d4422c2c7a4c55e586a788d68336797af8c6c16 git-annex.config
700e561b79e186839dfb8c63b185ce5f83745f8c43473e0fd99df3cdae2165073a8fe4b1cfb2798b3ad852e22e3eea84a05b884ef10b89f80f9881e0921aab2f git-annex-block-crypton.patch
178be26bc808f6a5c065957b04e3a32b02f0a6b5eb8c422c9d8960b6e9a1f90d689360c5ad491156783b25e80f4c2f9861e9ccff5091c302be713fa3063df670 fix-makefile.patch
"

View file

@ -1,302 +0,0 @@
From fb79b39c44404fd791a3bed973e9d844fb084f1e Mon Sep 17 00:00:00 2001
From: Simon Jakobi <simon.jakobi@gmail.com>
Date: Fri, 12 Nov 2021 01:37:36 +0100
Subject: [PATCH 1/2] Fix build with GHC 9.2
The `FastShift.shift{L,R}` methods are replaced with `unsafeShift{L,R}`
introduced in base-4.5.
Fixes #19.
---
Data/BloomFilter.hs | 16 +++++------
Data/BloomFilter/Hash.hs | 15 +++++-----
Data/BloomFilter/Mutable.hs | 20 +++++++-------
Data/BloomFilter/Util.hs | 55 ++++++-------------------------------
bloomfilter.cabal | 2 +-
5 files changed, 34 insertions(+), 74 deletions(-)
diff --git a/Data/BloomFilter.hs b/Data/BloomFilter.hs
index 2210cef..6b47c21 100644
--- a/Data/BloomFilter.hs
+++ b/Data/BloomFilter.hs
@@ -78,8 +78,8 @@ import Control.DeepSeq (NFData(..))
import Data.Array.Base (unsafeAt)
import qualified Data.Array.Base as ST
import Data.Array.Unboxed (UArray)
-import Data.Bits ((.&.))
-import Data.BloomFilter.Util (FastShift(..), (:*)(..))
+import Data.Bits ((.&.), unsafeShiftL, unsafeShiftR)
+import Data.BloomFilter.Util ((:*)(..))
import qualified Data.BloomFilter.Mutable as MB
import qualified Data.BloomFilter.Mutable.Internal as MB
import Data.BloomFilter.Mutable.Internal (Hash, MBloom)
@@ -98,7 +98,7 @@ data Bloom a = B {
}
instance Show (Bloom a) where
- show ub = "Bloom { " ++ show ((1::Int) `shiftL` shift ub) ++ " bits } "
+ show ub = "Bloom { " ++ show ((1::Int) `unsafeShiftL` shift ub) ++ " bits } "
instance NFData (Bloom a) where
rnf !_ = ()
@@ -172,7 +172,7 @@ singleton hash numBits elt = create hash numBits (\mb -> MB.insert mb elt)
-- | Given a filter's mask and a hash value, compute an offset into
-- a word array and a bit offset within that word.
hashIdx :: Int -> Word32 -> (Int :* Int)
-hashIdx mask x = (y `shiftR` logBitsInHash) :* (y .&. hashMask)
+hashIdx mask x = (y `unsafeShiftR` logBitsInHash) :* (y .&. hashMask)
where hashMask = 31 -- bitsInHash - 1
y = fromIntegral x .&. mask
@@ -191,7 +191,7 @@ hashesU ub elt = hashIdx (mask ub) `map` hashes ub elt
-- /still/ some possibility that @True@ will be returned.
elem :: a -> Bloom a -> Bool
elem elt ub = all test (hashesU ub elt)
- where test (off :* bit) = (bitArray ub `unsafeAt` off) .&. (1 `shiftL` bit) /= 0
+ where test (off :* bit) = (bitArray ub `unsafeAt` off) .&. (1 `unsafeShiftL` bit) /= 0
modify :: (forall s. (MBloom s a -> ST s z)) -- ^ mutation function (result is discarded)
-> Bloom a
@@ -255,11 +255,11 @@ insertList elts = modify $ \mb -> mapM_ (MB.insert mb) elts
-- is /still/ some possibility that @True@ will be returned.
notElem :: a -> Bloom a -> Bool
notElem elt ub = any test (hashesU ub elt)
- where test (off :* bit) = (bitArray ub `unsafeAt` off) .&. (1 `shiftL` bit) == 0
+ where test (off :* bit) = (bitArray ub `unsafeAt` off) .&. (1 `unsafeShiftL` bit) == 0
-- | Return the size of an immutable Bloom filter, in bits.
length :: Bloom a -> Int
-length = shiftL 1 . shift
+length = unsafeShiftL 1 . shift
-- | Build an immutable Bloom filter from a seed value. The seeding
-- function populates the filter as follows.
@@ -318,7 +318,7 @@ fromList hashes numBits = unfold hashes numBits convert
logPower2 :: Int -> Int
logPower2 k = go 0 k
where go j 1 = j
- go j n = go (j+1) (n `shiftR` 1)
+ go j n = go (j+1) (n `unsafeShiftR` 1)
-- $overview
--
diff --git a/Data/BloomFilter/Hash.hs b/Data/BloomFilter/Hash.hs
index 132a3a4..d071fd4 100644
--- a/Data/BloomFilter/Hash.hs
+++ b/Data/BloomFilter/Hash.hs
@@ -38,8 +38,7 @@ module Data.BloomFilter.Hash
) where
import Control.Monad (foldM)
-import Data.Bits ((.&.), (.|.), xor)
-import Data.BloomFilter.Util (FastShift(..))
+import Data.Bits ((.&.), (.|.), unsafeShiftL, unsafeShiftR, xor)
import Data.List (unfoldr)
import Data.Int (Int8, Int16, Int32, Int64)
import Data.Word (Word8, Word16, Word32, Word64)
@@ -91,11 +90,11 @@ class Hashable a where
-> Word64 -- ^ salt
-> IO Word64
hashIO64 v salt = do
- let s1 = fromIntegral (salt `shiftR` 32) .&. maxBound
+ let s1 = fromIntegral (salt `unsafeShiftR` 32) .&. maxBound
s2 = fromIntegral salt
h1 <- hashIO32 v s1
h2 <- hashIO32 v s2
- return $ (fromIntegral h1 `shiftL` 32) .|. fromIntegral h2
+ return $ (fromIntegral h1 `unsafeShiftL` 32) .|. fromIntegral h2
-- | Compute a 32-bit hash.
hash32 :: Hashable a => a -> Word32
@@ -149,8 +148,8 @@ cheapHashes :: Hashable a => Int -- ^ number of hashes to compute
cheapHashes k v = go 0
where go i | i == j = []
| otherwise = hash : go (i + 1)
- where !hash = h1 + (h2 `shiftR` i)
- h1 = fromIntegral (h `shiftR` 32)
+ where !hash = h1 + (h2 `unsafeShiftR` i)
+ h1 = fromIntegral (h `unsafeShiftR` 32)
h2 = fromIntegral h
h = hashSalt64 0x9150a946c4a8966e v
j = fromIntegral k
@@ -163,7 +162,7 @@ instance Hashable Integer where
(salt `xor` 0x3ece731e)
| otherwise = hashIO32 (unfoldr go k) salt
where go 0 = Nothing
- go i = Just (fromIntegral i :: Word32, i `shiftR` 32)
+ go i = Just (fromIntegral i :: Word32, i `unsafeShiftR` 32)
instance Hashable Bool where
hashIO32 = hashOne32
@@ -224,7 +223,7 @@ instance Hashable Word64 where
-- | A fast unchecked shift. Nasty, but otherwise GHC 6.8.2 does a
-- test and branch on every shift.
div4 :: CSize -> CSize
-div4 k = fromIntegral ((fromIntegral k :: HTYPE_SIZE_T) `shiftR` 2)
+div4 k = fromIntegral ((fromIntegral k :: HTYPE_SIZE_T) `unsafeShiftR` 2)
alignedHash :: Ptr a -> CSize -> Word32 -> IO Word32
alignedHash ptr bytes salt
diff --git a/Data/BloomFilter/Mutable.hs b/Data/BloomFilter/Mutable.hs
index edff1fc..0bb5cc9 100644
--- a/Data/BloomFilter/Mutable.hs
+++ b/Data/BloomFilter/Mutable.hs
@@ -65,9 +65,9 @@ module Data.BloomFilter.Mutable
import Control.Monad (liftM, forM_)
import Control.Monad.ST (ST)
import Data.Array.Base (unsafeRead, unsafeWrite)
-import Data.Bits ((.&.), (.|.))
+import Data.Bits ((.&.), (.|.), unsafeShiftL, unsafeShiftR)
import Data.BloomFilter.Array (newArray)
-import Data.BloomFilter.Util (FastShift(..), (:*)(..), nextPowerOfTwo)
+import Data.BloomFilter.Util ((:*)(..), nextPowerOfTwo)
import Data.Word (Word32)
import Data.BloomFilter.Mutable.Internal
@@ -86,9 +86,9 @@ new hash numBits = MB hash shft msk `liftM` newArray numElems numBytes
| numBits > maxHash = maxHash
| isPowerOfTwo numBits = numBits
| otherwise = nextPowerOfTwo numBits
- numElems = max 2 (twoBits `shiftR` logBitsInHash)
- numBytes = numElems `shiftL` logBytesInHash
- trueBits = numElems `shiftL` logBitsInHash
+ numElems = max 2 (twoBits `unsafeShiftR` logBitsInHash)
+ numBytes = numElems `unsafeShiftL` logBytesInHash
+ trueBits = numElems `unsafeShiftL` logBitsInHash
shft = logPower2 trueBits
msk = trueBits - 1
isPowerOfTwo n = n .&. (n - 1) == 0
@@ -109,7 +109,7 @@ logBytesInHash = 2 -- logPower2 (sizeOf (undefined :: Hash))
-- | Given a filter's mask and a hash value, compute an offset into
-- a word array and a bit offset within that word.
hashIdx :: Int -> Word32 -> (Int :* Int)
-hashIdx msk x = (y `shiftR` logBitsInHash) :* (y .&. hashMask)
+hashIdx msk x = (y `unsafeShiftR` logBitsInHash) :* (y .&. hashMask)
where hashMask = 31 -- bitsInHash - 1
y = fromIntegral x .&. msk
@@ -125,7 +125,7 @@ insert mb elt = do
let mu = bitArray mb
forM_ (hashesM mb elt) $ \(word :* bit) -> do
old <- unsafeRead mu word
- unsafeWrite mu word (old .|. (1 `shiftL` bit))
+ unsafeWrite mu word (old .|. (1 `unsafeShiftL` bit))
-- | Query a mutable Bloom filter for membership. If the value is
-- present, return @True@. If the value is not present, there is
@@ -135,7 +135,7 @@ elem elt mb = loop (hashesM mb elt)
where mu = bitArray mb
loop ((word :* bit):wbs) = do
i <- unsafeRead mu word
- if i .&. (1 `shiftL` bit) == 0
+ if i .&. (1 `unsafeShiftL` bit) == 0
then return False
else loop wbs
loop _ = return True
@@ -145,7 +145,7 @@ elem elt mb = loop (hashesM mb elt)
-- | Return the size of a mutable Bloom filter, in bits.
length :: MBloom s a -> Int
-length = shiftL 1 . shift
+length = unsafeShiftL 1 . shift
-- | Slow, crummy way of computing the integer log of an integer known
@@ -153,7 +153,7 @@ length = shiftL 1 . shift
logPower2 :: Int -> Int
logPower2 k = go 0 k
where go j 1 = j
- go j n = go (j+1) (n `shiftR` 1)
+ go j n = go (j+1) (n `unsafeShiftR` 1)
-- $overview
--
diff --git a/Data/BloomFilter/Util.hs b/Data/BloomFilter/Util.hs
index 7f695dc..6ade6e5 100644
--- a/Data/BloomFilter/Util.hs
+++ b/Data/BloomFilter/Util.hs
@@ -2,15 +2,11 @@
module Data.BloomFilter.Util
(
- FastShift(..)
- , nextPowerOfTwo
+ nextPowerOfTwo
, (:*)(..)
) where
-import Data.Bits ((.|.))
-import qualified Data.Bits as Bits
-import GHC.Base
-import GHC.Word
+import Data.Bits ((.|.), unsafeShiftR)
-- | A strict pair type.
data a :* b = !a :* !b
@@ -22,46 +18,11 @@ nextPowerOfTwo :: Int -> Int
{-# INLINE nextPowerOfTwo #-}
nextPowerOfTwo n =
let a = n - 1
- b = a .|. (a `shiftR` 1)
- c = b .|. (b `shiftR` 2)
- d = c .|. (c `shiftR` 4)
- e = d .|. (d `shiftR` 8)
- f = e .|. (e `shiftR` 16)
- g = f .|. (f `shiftR` 32) -- in case we're on a 64-bit host
+ b = a .|. (a `unsafeShiftR` 1)
+ c = b .|. (b `unsafeShiftR` 2)
+ d = c .|. (c `unsafeShiftR` 4)
+ e = d .|. (d `unsafeShiftR` 8)
+ f = e .|. (e `unsafeShiftR` 16)
+ g = f .|. (f `unsafeShiftR` 32) -- in case we're on a 64-bit host
!h = g + 1
in h
-
--- | This is a workaround for poor optimisation in GHC 6.8.2. It
--- fails to notice constant-width shifts, and adds a test and branch
--- to every shift. This imposes about a 10% performance hit.
-class FastShift a where
- shiftL :: a -> Int -> a
- shiftR :: a -> Int -> a
-
-instance FastShift Word32 where
- {-# INLINE shiftL #-}
- shiftL (W32# x#) (I# i#) = W32# (x# `uncheckedShiftL#` i#)
-
- {-# INLINE shiftR #-}
- shiftR (W32# x#) (I# i#) = W32# (x# `uncheckedShiftRL#` i#)
-
-instance FastShift Word64 where
- {-# INLINE shiftL #-}
- shiftL (W64# x#) (I# i#) = W64# (x# `uncheckedShiftL64#` i#)
-
- {-# INLINE shiftR #-}
- shiftR (W64# x#) (I# i#) = W64# (x# `uncheckedShiftRL64#` i#)
-
-instance FastShift Int where
- {-# INLINE shiftL #-}
- shiftL (I# x#) (I# i#) = I# (x# `iShiftL#` i#)
-
- {-# INLINE shiftR #-}
- shiftR (I# x#) (I# i#) = I# (x# `iShiftRA#` i#)
-
-instance FastShift Integer where
- {-# INLINE shiftL #-}
- shiftL = Bits.shiftL
-
- {-# INLINE shiftR #-}
- shiftR = Bits.shiftR
diff --git a/bloomfilter.cabal b/bloomfilter.cabal
index 821a5d7..c621f7f 100644
--- a/bloomfilter.cabal
+++ b/bloomfilter.cabal
@@ -18,7 +18,7 @@ extra-source-files: README.markdown cbits/lookup3.c cbits/lookup3.h
library
build-depends:
array,
- base >= 4.4 && < 5,
+ base >= 4.5 && < 5,
bytestring >= 0.9,
deepseq
exposed-modules: Data.BloomFilter

View file

@ -2,13 +2,14 @@ diff --git a/git-annex.cabal.orig b/git-annex.cabal
index e916003..cddc2d6 100644
--- a/git-annex.cabal.orig
+++ b/git-annex.cabal
@@ -381,7 +381,8 @@ Executable git-annex
@@ -381,7 +381,9 @@ Executable git-annex
aws (>= 0.20),
DAV (>= 1.0),
network (>= 3.0.0.0),
- network-bsd
+ network-bsd,
+ warp (< 3.3.26)
+ warp (< 3.3.26),
+ http-client-tls ( <0.3.6.2)
CC-Options: -Wall
GHC-Options: -Wall -fno-warn-tabs -Wincomplete-uni-patterns
Default-Language: Haskell2010

View file

@ -1,4 +1,4 @@
--10.20230802
--10.20230828
constraints: Cabal ==3.8.1.0,
Cabal-syntax ==3.8.1.0,
DAV ==1.3.4,
@ -28,8 +28,8 @@ constraints: Cabal ==3.8.1.0,
auto-update ==0.1.6,
aws ==0.24.1,
base ==4.17.0.0,
base-compat ==0.12.3,
base-compat-batteries ==0.12.3,
base-compat ==0.13.0,
base-compat-batteries ==0.13.0,
base-orphans ==0.9.0,
base16-bytestring ==1.0.2.0,
base64-bytestring ==1.2.1.0,
@ -38,11 +38,11 @@ constraints: Cabal ==3.8.1.0,
bifunctors ==5.6.1,
binary ==0.8.9.1,
binary-orphans ==1.0.4.1,
bitvec ==1.1.4.0,
blaze-builder ==0.4.2.2,
bitvec ==1.1.5.0,
blaze-builder ==0.4.2.3,
blaze-html ==0.9.1.2,
blaze-markup ==0.8.2.8,
bloomfilter ==2.0.1.0,
bloomfilter ==2.0.1.2,
bsb-http-chunked ==0.0.0.4,
byteable ==0.1.1,
byteorder ==1.0.4,
@ -64,7 +64,7 @@ constraints: Cabal ==3.8.1.0,
containers ==0.6.6,
contravariant ==1.5.5,
cookie ==0.4.6,
criterion ==1.6.2.0,
criterion ==1.6.3.0,
criterion-measurement ==0.2.1.0,
crypto-api ==0.13.3,
cryptohash-md5 ==0.11.101.0,
@ -78,7 +78,7 @@ constraints: Cabal ==3.8.1.0,
data-default-instances-dlist ==0.0.1,
data-default-instances-old-locale ==0.0.1,
data-fix ==0.3.2,
dbus ==1.2.29,
dbus ==1.3.0,
deepseq ==1.4.8.0,
dense-linear-algebra ==0.1.0.0,
directory ==1.3.7.1,
@ -111,7 +111,7 @@ constraints: Cabal ==3.8.1.0,
hourglass ==0.2.12,
hsc2hs ==0.68.9,
http-api-data ==0.5.1,
http-client ==0.7.13.1,
http-client ==0.7.14,
http-client-restricted ==0.0.5,
http-client-tls ==0.3.6.1,
http-conduit ==2.3.8.3,
@ -122,12 +122,12 @@ constraints: Cabal ==3.8.1.0,
indexed-traversable-instances ==0.1.1.2,
integer-gmp ==1.1,
integer-logarithms ==1.0.3.1,
invariant ==0.6.1,
invariant ==0.6.2,
iproute ==1.7.12,
js-chart ==2.9.4.1,
kan-extensions ==5.2.5,
language-javascript ==0.7.1.0,
lens ==5.2.2,
lens ==5.2.3,
libyaml ==0.1.2,
lift-type ==0.1.1.1,
lifted-base ==0.2.3.12,
@ -198,7 +198,7 @@ constraints: Cabal ==3.8.1.0,
streaming-commons ==0.2.2.6,
strict ==0.5,
syb ==0.7.2.4,
tagged ==0.8.7,
tagged ==0.8.8,
tagsoup ==0.14.8,
tasty ==1.4.3,
tasty-hunit ==0.10.0.3,
@ -217,7 +217,7 @@ constraints: Cabal ==3.8.1.0,
time ==1.12.2,
time-compat ==1.9.6.1,
time-locale-compat ==0.1.1.5,
time-manager ==0.0.0,
time-manager ==0.0.1,
tls ==1.6.0,
tls-session-manager ==0.0.4,
torrent ==10000.1.3,
@ -226,7 +226,7 @@ constraints: Cabal ==3.8.1.0,
transformers-compat ==0.7.2,
typed-process ==0.2.11.0,
unix ==2.7.3,
unix-compat ==0.6,
unix-compat ==0.7,
unix-time ==0.4.10,
unliftio ==0.2.25.0,
unliftio-core ==0.2.1.0,