git.iko.soy/typeable/entropy
on main help sign in
2 files changed+56−36
since splitsnapshots
unifiedsplit
.github/workflows/haskell-ci.yml+49−28 entropy.cabal+7−8
.github/workflows/haskell-ci.yml+49−28
@@ -8,9 +8,9 @@
88#
99# For more information, see https://github.com/andreasabel/haskell-ci
1010#
11−# version: 0.19.20240630
11+# version: 0.19.20241219
1212#
13−# REGENDATA ("0.19.20240630",["github","entropy.cabal"])
13+# REGENDATA ("0.19.20241219",["github","entropy.cabal"])
1414#
1515name: Haskell-CI
1616on:
@@ -32,19 +32,24 @@ jobs:
3232 strategy:
3333 matrix:
3434 include:
35+ - compiler: ghc-9.12.1
36+ compilerKind: ghc
37+ compilerVersion: 9.12.1
38+ setup-method: ghcup
39+ allow-failure: false
3540 - compiler: ghc-9.10.1
3641 compilerKind: ghc
3742 compilerVersion: 9.10.1
3843 setup-method: ghcup
3944 allow-failure: false
40− - compiler: ghc-9.8.2
45+ - compiler: ghc-9.8.4
4146 compilerKind: ghc
42− compilerVersion: 9.8.2
47+ compilerVersion: 9.8.4
4348 setup-method: ghcup
4449 allow-failure: false
45− - compiler: ghc-9.6.5
50+ - compiler: ghc-9.6.6
4651 compilerKind: ghc
47− compilerVersion: 9.6.5
52+ compilerVersion: 9.6.6
4853 setup-method: ghcup
4954 allow-failure: false
5055 - compiler: ghc-9.4.8
@@ -87,22 +92,32 @@ jobs:
8792 compilerVersion: 8.2.2
8893 setup-method: ghcup
8994 allow-failure: false
90− - compiler: ghc-8.0.2
91− compilerKind: ghc
92− compilerVersion: 8.0.2
93− setup-method: ghcup
94− allow-failure: false
9595 fail-fast: false
9696 steps:
97− - name: apt
97+ - name: apt-get install
9898 run: |
9999 apt-get update
100100 apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5 libnuma-dev
101+ - name: Install GHCup
102+ run: |
101103 mkdir -p "$HOME/.ghcup/bin"
102− curl -sL https://downloads.haskell.org/ghcup/0.1.20.0/x86_64-linux-ghcup-0.1.20.0 > "$HOME/.ghcup/bin/ghcup"
104+ curl -sL https://downloads.haskell.org/ghcup/0.1.30.0/x86_64-linux-ghcup-0.1.30.0 > "$HOME/.ghcup/bin/ghcup"
103105 chmod a+x "$HOME/.ghcup/bin/ghcup"
106+ - name: Install cabal-install (prerelease)
107+ run: |
108+ "$HOME/.ghcup/bin/ghcup" config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.8.yaml;
109+ "$HOME/.ghcup/bin/ghcup" install cabal 3.15.0.0.2024.10.3 || (cat "$HOME"/.ghcup/logs/*.* && false)
110+ echo "CABAL=$HOME/.ghcup/bin/cabal-3.15.0.0.2024.10.3 -vnormal+nowrap" >> "$GITHUB_ENV"
111+ - name: Install GHC (GHCup)
112+ if: matrix.setup-method == 'ghcup'
113+ run: |
104114 "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
105− "$HOME/.ghcup/bin/ghcup" install cabal 3.12.1.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
115+ HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER")
116+ HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#')
117+ HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#')
118+ echo "HC=$HC" >> "$GITHUB_ENV"
119+ echo "HCPKG=$HCPKG" >> "$GITHUB_ENV"
120+ echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV"
106121 env:
107122 HCKIND: ${{ matrix.compilerKind }}
108123 HCNAME: ${{ matrix.compiler }}
@@ -113,21 +128,12 @@ jobs:
113128 echo "LANG=C.UTF-8" >> "$GITHUB_ENV"
114129 echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV"
115130 echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
116− HCDIR=/opt/$HCKIND/$HCVER
117− HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER")
118− HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#')
119− HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#')
120− echo "HC=$HC" >> "$GITHUB_ENV"
121− echo "HCPKG=$HCPKG" >> "$GITHUB_ENV"
122− echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV"
123− echo "CABAL=$HOME/.ghcup/bin/cabal-3.12.1.0 -vnormal+nowrap" >> "$GITHUB_ENV"
124131 HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
125132 echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
126133 echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
127134 echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV"
128− echo "HEADHACKAGE=false" >> "$GITHUB_ENV"
135+ if [ $((HCNUMVER >= 91200)) -ne 0 ] ; then echo "HEADHACKAGE=true" >> "$GITHUB_ENV" ; else echo "HEADHACKAGE=false" >> "$GITHUB_ENV" ; fi
129136 echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
130− echo "GHCJSARITH=0" >> "$GITHUB_ENV"
131137 env:
132138 HCKIND: ${{ matrix.compilerKind }}
133139 HCNAME: ${{ matrix.compiler }}
@@ -154,6 +160,18 @@ jobs:
154160 repository hackage.haskell.org
155161 url: http://hackage.haskell.org/
156162 EOF
163+ if $HEADHACKAGE; then
164+ cat >> $CABAL_CONFIG <<EOF
165+ repository head.hackage.ghc.haskell.org
166+ url: https://ghc.gitlab.haskell.org/head.hackage/
167+ secure: True
168+ root-keys: 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d
169+ 26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329
170+ f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89
171+ key-threshold: 3
172+ active-repositories: hackage.haskell.org, head.hackage.ghc.haskell.org:override
173+ EOF
174+ fi
157175 cat >> $CABAL_CONFIG <<EOF
158176 program-default-options
159177 ghc-options: $GHCJOBS +RTS -M3G -RTS
@@ -201,10 +219,13 @@ jobs:
201219 touch cabal.project
202220 touch cabal.project.local
203221 echo "packages: ${PKGDIR_entropy}" >> cabal.project
204− if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "package entropy" >> cabal.project ; fi
205− if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
222+ echo "package entropy" >> cabal.project
223+ echo " ghc-options: -Werror=missing-methods" >> cabal.project
206224 cat >> cabal.project <<EOF
207225 EOF
226+ if $HEADHACKAGE; then
227+ echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> cabal.project
228+ fi
208229 $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: any.$_ installed\n" unless /^(entropy)$/; }' >> cabal.project.local
209230 cat cabal.project
210231 cat cabal.project.local
@@ -230,14 +251,14 @@ jobs:
230251 $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --write-ghc-environment-files=always
231252 - name: haddock
232253 run: |
233− if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then $CABAL v2-haddock --disable-documentation --haddock-all $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all ; fi
254+ $CABAL v2-haddock --disable-documentation --haddock-all $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all
234255 - name: unconstrained build
235256 run: |
236257 rm -f cabal.project.local
237258 $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all
238259 - name: save cache
239− uses: actions/cache/save@v4
240260 if: always()
261+ uses: actions/cache/save@v4
241262 with:
242263 key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
243264 path: ~/.cabal/store
entropy.cabal+7−8
@@ -1,7 +1,6 @@
11cabal-version: >=1.10
22name: entropy
3−version: 0.4.1.10
4−x-revision: 2
3+version: 0.4.1.11
54description: A mostly platform independent method to obtain cryptographically strong entropy
65 (RDRAND, urandom, CryptAPI, and patches welcome)
76 Users looking for cryptographically strong (number-theoretically
@@ -20,9 +19,10 @@ stability: stable
2019build-type: Custom
2120
2221tested-with:
22+ GHC == 9.12.1
2323 GHC == 9.10.1
24− GHC == 9.8.2
25− GHC == 9.6.5
24+ GHC == 9.8.4
25+ GHC == 9.6.6
2626 GHC == 9.4.8
2727 GHC == 9.2.8
2828 GHC == 9.0.2
@@ -31,7 +31,6 @@ tested-with:
3131 GHC == 8.6.5
3232 GHC == 8.4.4
3333 GHC == 8.2.2
34− GHC == 8.0.2
3534
3635extra-source-files:
3736 ./cbits/getrandom.c
@@ -47,7 +46,7 @@ Flag DoNotGetEntropy
4746 Manual: True
4847
4948custom-setup
50− setup-depends: Cabal >= 1.10 && < 3.15
49+ setup-depends: Cabal >= 1.10 && < 3.17
5150 , base < 5
5251 , filepath < 1.6
5352 , directory < 1.4
@@ -56,7 +55,7 @@ custom-setup
5655library
5756 ghc-options: -O2
5857 exposed-modules: System.Entropy
59− if impl(ghcjs) || os(ghcjs)
58+ if impl(ghcjs) || os(ghcjs) || arch(wasm32)
6059 other-modules: System.EntropyGhcjs
6160 else {
6261 if os(windows)
@@ -71,7 +70,7 @@ library
7170
7271 default-language: Haskell2010
7372
74− if impl(ghcjs) || os(ghcjs) {
73+ if impl(ghcjs) || os(ghcjs) || arch(wasm32) {
7574 build-depends: ghcjs-dom >= 0.9.5.0 && < 1
7675 , jsaddle
7776 }