From 0bcad0a39c60fcb968a5d31940961279a855b287 Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Wed, 17 Apr 2024 17:38:40 -1000 Subject: [PATCH] ci: binaries-linux-x64: try ghc 9.0 and cabal 3.8 again --- .github/workflows/binaries-linux-x64.yml | 212 ++++++++++++----------- 1 file changed, 107 insertions(+), 105 deletions(-) diff --git a/.github/workflows/binaries-linux-x64.yml b/.github/workflows/binaries-linux-x64.yml index 4092f1480..eebd4c618 100644 --- a/.github/workflows/binaries-linux-x64.yml +++ b/.github/workflows/binaries-linux-x64.yml @@ -41,72 +41,72 @@ jobs: restore-keys: | ${{ runner.os }}-ghcup - # - name: process cache of cabal-installed libs - # id: cabal + - name: process cache of cabal-installed libs + id: cabal + uses: actions/cache@v4 + with: + path: ~/.cabal + key: ${{ runner.os }}-cabal-${{ hashFiles('**.yaml') }} + restore-keys: | + ${{ runner.os }}-cabal + + # - name: process cache of stack global package db + # id: stack-global # uses: actions/cache@v4 # with: - # path: ~/.cabal - # key: ${{ runner.os }}-cabal-${{ hashFiles('**.yaml') }} + # path: ~/.stack + # key: ${{ runner.os }}-stack-global-20240417-${{ hashFiles('**.yaml') }} # restore-keys: | - # ${{ runner.os }}-cabal + # ${{ runner.os }}-stack-global-20240417 - - name: process cache of stack global package db - id: stack-global - uses: actions/cache@v4 - with: - path: ~/.stack - key: ${{ runner.os }}-stack-global-20240417-${{ hashFiles('**.yaml') }} - restore-keys: | - ${{ runner.os }}-stack-global-20240417 + # - name: process cache of stack-installed programs in ~/.local/bin + # id: stack-programs + # uses: actions/cache@v4 + # with: + # path: ~/.local/bin + # key: ${{ runner.os }}-stack-programs-20240417-${{ hashFiles('**.yaml') }} + # restore-keys: | + # ${{ runner.os }}-stack-programs-20240417 - - name: process cache of stack-installed programs in ~/.local/bin - id: stack-programs - uses: actions/cache@v4 - with: - path: ~/.local/bin - key: ${{ runner.os }}-stack-programs-20240417-${{ hashFiles('**.yaml') }} - restore-keys: | - ${{ runner.os }}-stack-programs-20240417 + # - name: process cache of .stack-work + # uses: actions/cache@v4 + # with: + # path: .stack-work + # key: ${{ runner.os }}-stack-work-20240417-${{ hashFiles('**.yaml') }} + # restore-keys: | + # ${{ runner.os }}-stack-work-20240417 - - name: process cache of .stack-work - uses: actions/cache@v4 - with: - path: .stack-work - key: ${{ runner.os }}-stack-work-20240417-${{ hashFiles('**.yaml') }} - restore-keys: | - ${{ runner.os }}-stack-work-20240417 + # - name: process cache of hledger-lib/.stack-work + # uses: actions/cache@v4 + # with: + # path: hledger-lib/.stack-work + # key: ${{ runner.os }}-hledger-lib-stack-work-20240417-${{ hashFiles('hledger-lib/package.yaml') }} + # restore-keys: | + # ${{ runner.os }}-hledger-lib-stack-work-20240417 - - name: process cache of hledger-lib/.stack-work - uses: actions/cache@v4 - with: - path: hledger-lib/.stack-work - key: ${{ runner.os }}-hledger-lib-stack-work-20240417-${{ hashFiles('hledger-lib/package.yaml') }} - restore-keys: | - ${{ runner.os }}-hledger-lib-stack-work-20240417 + # - name: process cache of hledger/.stack-work + # uses: actions/cache@v4 + # with: + # path: hledger/.stack-work + # key: ${{ runner.os }}-hledger-stack-work-20240417-${{ hashFiles('hledger/package.yaml') }} + # restore-keys: | + # ${{ runner.os }}-hledger-stack-work-20240417 - - name: process cache of hledger/.stack-work - uses: actions/cache@v4 - with: - path: hledger/.stack-work - key: ${{ runner.os }}-hledger-stack-work-20240417-${{ hashFiles('hledger/package.yaml') }} - restore-keys: | - ${{ runner.os }}-hledger-stack-work-20240417 + # - name: process cache of hledger-ui/.stack-work + # uses: actions/cache@v4 + # with: + # path: hledger-ui/.stack-work + # key: ${{ runner.os }}-hledger-ui-stack-work-20240417-${{ hashFiles('hledger-ui/package.yaml') }} + # restore-keys: | + # ${{ runner.os }}-hledger-ui-stack-work-20240417 - - name: process cache of hledger-ui/.stack-work - uses: actions/cache@v4 - with: - path: hledger-ui/.stack-work - key: ${{ runner.os }}-hledger-ui-stack-work-20240417-${{ hashFiles('hledger-ui/package.yaml') }} - restore-keys: | - ${{ runner.os }}-hledger-ui-stack-work-20240417 - - - name: process cache of hledger-web/.stack-work - uses: actions/cache@v4 - with: - path: hledger-web/.stack-work - key: ${{ runner.os }}-hledger-web-stack-work-20240417-${{ hashFiles('hledger-web/package.yaml') }} - restore-keys: | - ${{ runner.os }}-hledger-web-stack-work-20240417 + # - name: process cache of hledger-web/.stack-work + # uses: actions/cache@v4 + # with: + # path: hledger-web/.stack-work + # key: ${{ runner.os }}-hledger-web-stack-work-20240417-${{ hashFiles('hledger-web/package.yaml') }} + # restore-keys: | + # ${{ runner.os }}-hledger-web-stack-work-20240417 # actions: @@ -115,11 +115,11 @@ jobs: apk --no-cache add binutils-gold curl gcc g++ git gmp-dev ncurses-dev ncurses-static libffi-dev make xz tar perl zlib-dev zlib-static # needed by stack, at least; do it here in case it matters for ghcup too - - name: Fix $HOME for following steps (workaround from https://github.com/actions/runner/issues/863) - run: | - apk --no-cache add sudo - echo "setting HOME=/root" - echo HOME=/root | sudo tee -a $GITHUB_ENV + # - name: Fix $HOME for following steps (workaround from https://github.com/actions/runner/issues/863) + # run: | + # apk --no-cache add sudo + # echo "setting HOME=/root" + # echo HOME=/root | sudo tee -a $GITHUB_ENV - name: Add .ghcup/bin to PATH for following steps run: | @@ -128,65 +128,67 @@ jobs: - name: Install haskell tools with ghcup if needed run: | if [[ ! -x ~/.ghcup/bin/ghcup ]]; then mkdir -p ~/.ghcup/bin && curl https://downloads.haskell.org/~ghcup/x86_64-linux-ghcup > ~/.ghcup/bin/ghcup && chmod +x ~/.ghcup/bin/ghcup; fi; printf "ghcup: "; ghcup --version + if [[ ! -x ~/.ghcup/bin/ghc-9.0.2 ]]; then ~/.ghcup/bin/ghcup install ghc 9.0.2 && ~/.ghcup/bin/ghcup set ghc 9.0.2; fi; printf "ghc: "; ghc --version # if [[ ! -x ~/.ghcup/bin/ghc-9.8.2 ]]; then ~/.ghcup/bin/ghcup install ghc 9.8.2 && ~/.ghcup/bin/ghcup set ghc 9.8.2; fi; printf "ghc: "; ghc --version - if [[ ! -x ~/.ghcup/bin/cabal ]]; then ~/.ghcup/bin/ghcup install cabal 3.10.3.0 && ~/.ghcup/bin/ghcup set cabal 3.10.3.0; fi; printf "cabal: "; cabal --version - if [[ ! -x ~/.ghcup/bin/stack ]]; then ~/.ghcup/bin/ghcup install stack 2.15.5 && ~/.ghcup/bin/ghcup set stack 2.15.5; fi; printf "stack: "; stack --version + if [[ ! -x ~/.ghcup/bin/cabal ]]; then ~/.ghcup/bin/ghcup install cabal 3.8.1.0 && ~/.ghcup/bin/ghcup set cabal 3.8.1.0; fi; printf "cabal: "; cabal --version + # if [[ ! -x ~/.ghcup/bin/cabal ]]; then ~/.ghcup/bin/ghcup install cabal 3.10.3.0 && ~/.ghcup/bin/ghcup set cabal 3.10.3.0; fi; printf "cabal: "; cabal --version + # if [[ ! -x ~/.ghcup/bin/stack ]]; then ~/.ghcup/bin/ghcup install stack 2.15.5 && ~/.ghcup/bin/ghcup set stack 2.15.5; fi; printf "stack: "; stack --version ## build with cabal # failing with: lto1: fatal error: bytecode stream in file '/usr/lib/gcc/x86_64-alpine-linux-musl/13.2.1/../../../../lib/libgmp.a' generated with LTO version 13.0 instead of the expected 13.1 - # - name: Update cabal package index - # run: | - # cabal update + - name: Update cabal package index + run: | + cabal update - # - name: Build with cabal - # run: | - # cabal build --enable-executable-static hledger || (echo "ERROR: building hledger failed"; false) - # cabal build --enable-executable-static hledger-ui || (echo "ERROR: building hledger-ui failed"; false) - # cabal build --enable-executable-static hledger-web || (echo "ERROR: building hledger-web failed"; false) + - name: Build with cabal + run: | + cabal build --enable-executable-static hledger || (echo "ERROR: building hledger failed"; false) + cabal build --enable-executable-static hledger-ui || (echo "ERROR: building hledger-ui failed"; false) + cabal build --enable-executable-static hledger-web || (echo "ERROR: building hledger-web failed"; false) - # - name: Gather binaries - # run: | - # mkdir tmp - # cp dist-newstyle/build/x86_64-linux/ghc-*/hledger-*/x/hledger/build/hledger/hledger tmp - # cp dist-newstyle/build/x86_64-linux/ghc-*/hledger-ui-*/x/hledger-ui/build/hledger-ui/hledger-ui tmp - # cp dist-newstyle/build/x86_64-linux/ghc-*/hledger-web-*/x/hledger-web/build/hledger-web/hledger-web tmp - # cd tmp - # strip hledger - # strip hledger-ui - # strip hledger-web - # tar cvf hledger-linux-x64.tar hledger hledger-ui hledger-web + - name: Gather binaries + run: | + mkdir tmp + cp dist-newstyle/build/x86_64-linux/ghc-*/hledger-*/x/hledger/build/hledger/hledger tmp + cp dist-newstyle/build/x86_64-linux/ghc-*/hledger-ui-*/x/hledger-ui/build/hledger-ui/hledger-ui tmp + cp dist-newstyle/build/x86_64-linux/ghc-*/hledger-web-*/x/hledger-web/build/hledger-web/hledger-web tmp + cd tmp + strip hledger + strip hledger-ui + strip hledger-web + tar cvf hledger-linux-x64.tar hledger hledger-ui hledger-web ## build with stack # --allow-different-user is needed because of #863 above, or because we're in a docker container and stack didn't notice # failing with: /usr/lib/gcc/x86_64-alpine-linux-musl/13.2.1/../../../../x86_64-alpine-linux-musl/bin/ld.gold: error: /usr/lib/gcc/x86_64-alpine-linux-musl/13.2.1/crtbeginT.o: requires dynamic R_X86_64_32 reloc against '__TMC_END__' which may overflow at runtime; recompile with -fPIC - - name: Install GHC with stack - run: | - stack --allow-different-user setup --install-ghc + # - name: Install GHC with stack + # run: | + # stack --allow-different-user setup --install-ghc - - name: Build with stack - run: | - stack --allow-different-user build --ghc-options='-optl-static -fPIC' hledger # || (echo "ERROR: building hledger failed"; false) - stack --allow-different-user build --ghc-options='-optl-static -fPIC' hledger-ui # || (echo "ERROR: building hledger-ui failed"; false) - stack --allow-different-user build --ghc-options='-optl-static -fPIC' hledger-web # || (echo "ERROR: building hledger-web failed"; false) + # - name: Build with stack + # run: | + # stack --allow-different-user build --ghc-options='-optl-static -fPIC' hledger # || (echo "ERROR: building hledger failed"; false) + # stack --allow-different-user build --ghc-options='-optl-static -fPIC' hledger-ui # || (echo "ERROR: building hledger-ui failed"; false) + # stack --allow-different-user build --ghc-options='-optl-static -fPIC' hledger-web # || (echo "ERROR: building hledger-web failed"; false) - - name: Run built-in unit tests - run: | - stack exec -- hledger test + # - name: Run built-in unit tests + # run: | + # stack exec -- hledger test - - name: Gather binaries - run: | - mkdir tmp - cd tmp - cp ~/.local/bin/hledger . - cp ~/.local/bin/hledger-ui . - cp ~/.local/bin/hledger-web . - strip hledger - strip hledger-ui - strip hledger-web - tar cvf hledger-mac-x64.tar hledger hledger-ui hledger-web + # - name: Gather binaries + # run: | + # mkdir tmp + # cd tmp + # cp ~/.local/bin/hledger . + # cp ~/.local/bin/hledger-ui . + # cp ~/.local/bin/hledger-web . + # strip hledger + # strip hledger-ui + # strip hledger-web + # tar cvf hledger-mac-x64.tar hledger hledger-ui hledger-web ##