File tree Expand file tree Collapse file tree 8 files changed +965
-1
lines changed Expand file tree Collapse file tree 8 files changed +965
-1
lines changed Original file line number Diff line number Diff line change 1+ name : ' Download artifact'
2+ description : ' Donwload artifacts with normalized names'
3+ inputs :
4+ name :
5+ required : true
6+ type : string
7+ path :
8+ required : true
9+ type : string
10+
11+ runs :
12+ using : " composite"
13+ steps :
14+ - name : Normalise name
15+ run : |
16+ name=${{ inputs.name }}
17+ echo "NAME=${name//\//_}" >> "$GITHUB_ENV"
18+ shell : bash
19+
20+ - name : Download artifact
21+ uses : actions/download-artifact@v4
22+ with :
23+ name : ${{ env.NAME }}
24+ path : ${{ inputs.path }}
25+
Original file line number Diff line number Diff line change 1+ name : ' Upload artifact'
2+ description : ' Upload artifacts with normalized names'
3+ inputs :
4+ if-no-files-found :
5+ default : ' error'
6+ type : string
7+ name :
8+ required : true
9+ type : string
10+ path :
11+ required : true
12+ type : string
13+ retention-days :
14+ default : 0
15+ type : number
16+
17+ runs :
18+ using : " composite"
19+ steps :
20+ - name : Normalise name
21+ run : |
22+ name=${{ inputs.name }}
23+ echo "NAME=${name//\//_}" >> "$GITHUB_ENV"
24+ shell : bash
25+
26+ - name : Upload artifact
27+ uses : actions/upload-artifact@v4
28+ with :
29+ if-no-files-found : ${{ inputs.if-no-files-found }}
30+ retention-days : ${{ inputs.retention-days }}
31+ name : ${{ env.NAME }}
32+ path : ${{ inputs.path }}
33+
Original file line number Diff line number Diff line change 1+ #! /bin/bash
2+
3+ set -eux
4+
5+ uname -a
6+ uname -p
7+ uname
8+ pwd
9+ env
10+
11+ if [ " ${RUNNER_OS} " = Windows ] ; then
12+ ext=" .exe"
13+ else
14+ ext=" "
15+ fi
16+
17+ ghcup --no-verbose install ghc --set --install-targets " ${GHC_TARGETS} " " ${GHC_VERSION} "
18+
19+ sed -i.bak -e ' /DELETE MARKER FOR CI/,/END DELETE/d' cabal.project # see comment in cabal.project
20+ cabal update
21+ cabal user-config diff
22+ cabal user-config init -f
23+ " ghc-${GHC_VERSION} " --info
24+ " ghc" --info
25+
26+ # https://github.com/haskell/cabal/issues/7313#issuecomment-811851884
27+ if [ " $( getconf LONG_BIT) " == " 32" ] || [ " ${DISTRO} " == " CentOS" ] ; then
28+ echo ' constraints: lukko -ofd-locking' >> cabal.release.project.local
29+ fi
30+
31+ # shellcheck disable=SC2206
32+ args=(
33+ -w " ghc-$GHC_VERSION "
34+ --disable-profiling
35+ --enable-executable-stripping
36+ --project-file=cabal.release.project
37+ ${ADD_CABAL_ARGS}
38+ )
39+
40+ cabal v2-build " ${args[@]} " cabal-install
41+
42+ mkdir -p " out"
43+ # shellcheck disable=SC2154
44+ cp " $( cabal list-bin " ${args[@]} " cabal-install:exe:cabal) " " out/cabal$ext "
45+ cp dist-newstyle/cache/plan.json " out/plan.json"
46+ cd " out/"
47+
48+ # create tarball/zip
49+ TARBALL_PREFIX=" cabal-install-$( " ./cabal" --numeric-version) "
50+ case " ${TARBALL_EXT} " in
51+ zip)
52+ zip " ${TARBALL_PREFIX} -${ARTIFACT} .${TARBALL_EXT} " " cabal${ext} " plan.json
53+ ;;
54+ tar.xz)
55+ tar caf " ${TARBALL_PREFIX} -${ARTIFACT} .${TARBALL_EXT} " " cabal${ext} " plan.json
56+ ;;
57+ * )
58+ fail " Unknown TARBALL_EXT: ${TARBALL_EXT} "
59+ ;;
60+ esac
61+
62+ rm " cabal${ext} " plan.json
63+
Original file line number Diff line number Diff line change 1+ #! /bin/bash
2+
3+ set -eux
4+
5+ env
6+ pwd
7+ ls -lah
8+
9+ cd out
10+ case " ${TARBALL_EXT} " in
11+ zip)
12+ unzip ./cabal-install-* -" ${ARTIFACT} .${TARBALL_EXT} "
13+ ;;
14+ tar.xz)
15+ tar xf ./cabal-install-* -" ${ARTIFACT} .${TARBALL_EXT} "
16+ ;;
17+ * )
18+ fail " Unknown TARBALL_EXT: ${TARBALL_EXT} "
19+ ;;
20+ esac
21+ cd ..
22+
23+ ghcup --no-verbose install ghc --set --install-targets " ${GHC_TARGETS} " " ${GHC_VERSION} "
24+
25+ cabal update
26+
27+ # TODO: we want to avoid building here... we should just
28+ # be using the previously built 'cabal-tests' binary
29+ cabal run ${ADD_CABAL_ARGS} cabal-testsuite:cabal-tests -- \
30+ --with-cabal " $( pwd) /out/cabal" \
31+ --intree-cabal-lib " $( pwd) " \
32+ --test-tmp " $( pwd) /testdb" \
33+ --skip-setup-tests \
34+ -j " $( nproc) "
35+
Original file line number Diff line number Diff line change 1+ name : Build and release
2+
3+ on :
4+ push :
5+ branches :
6+ - master
7+ tags :
8+ - ' v*'
9+ - ' cabal-install-*'
10+ pull_request :
11+ branches :
12+ - master
13+ schedule :
14+ - cron : ' 0 0 * * *'
15+
16+ jobs :
17+ release-workflow :
18+ uses : ./.github/workflows/reusable-release.yml
19+ with :
20+ branches : ' ["${{ github.ref }}"]'
21+
22+ release :
23+ name : release
24+ needs : [ "release-workflow" ]
25+ runs-on : ubuntu-latest
26+ if : ${{ startsWith(github.ref, 'refs/tags/') }}
27+ steps :
28+ - name : Checkout code
29+ uses : actions/checkout@v4
30+
31+ - name : Download artifacts
32+ uses : actions/download-artifact@v4
33+ with :
34+ pattern : artifacts-*
35+ merge-multiple : true
36+ path : ./out
37+
38+ - name : Install requirements
39+ run : |
40+ sudo apt-get update && sudo apt-get install -y tar xz-utils
41+ shell : bash
42+
43+ - name : build sdists
44+ run : |
45+ cabal sdist -o out all
46+ shell : bash
47+
48+ - name : Release
49+ if : startsWith(github.ref, 'refs/tags/')
50+ uses : softprops/action-gh-release@v1
51+ with :
52+ draft : true
53+ files : |
54+ ./out/*
55+
You can’t perform that action at this time.
0 commit comments