From bb77ca4f2583893b4df18a26b7129b57d659ab9b Mon Sep 17 00:00:00 2001 From: Maxim Koltsov Date: Thu, 24 Mar 2022 09:17:41 +0100 Subject: [PATCH] Support GHC-9.2 libraries, add haskell-ci (#64) * Support GHC-9.2 libraries, add haskell-ci * Add hpack to haskell-ci * Add test data to extra-source-files * version 0.1.4.3 --- .github/workflows/haskell-ci.yml | 208 +++++++++++++++++++++++++++++++ .travis.yml | 29 ----- ChangeLog.md | 4 + cabal.haskell-ci | 5 + package.yaml | 20 ++- 5 files changed, 233 insertions(+), 33 deletions(-) create mode 100644 .github/workflows/haskell-ci.yml delete mode 100644 .travis.yml create mode 100644 cabal.haskell-ci diff --git a/.github/workflows/haskell-ci.yml b/.github/workflows/haskell-ci.yml new file mode 100644 index 0000000..e61ba8f --- /dev/null +++ b/.github/workflows/haskell-ci.yml @@ -0,0 +1,208 @@ +# This GitHub workflow config has been generated by a script via +# +# haskell-ci 'github' 'cobot-io.cabal' +# +# To regenerate the script (for example after adjusting tested-with) run +# +# haskell-ci regenerate +# +# For more information, see https://github.com/haskell-CI/haskell-ci +# +# version: 0.14.3 +# +# REGENDATA ("0.14.3",["github","cobot-io.cabal"]) +# +name: Haskell-CI +on: + push: + branches: + - master + pull_request: + branches: + - master +jobs: + linux: + name: Haskell-CI - Linux - ${{ matrix.compiler }} + runs-on: ubuntu-18.04 + timeout-minutes: + 60 + container: + image: buildpack-deps:focal + continue-on-error: ${{ matrix.allow-failure }} + strategy: + matrix: + include: + - compiler: ghc-9.2.2 + compilerKind: ghc + compilerVersion: 9.2.2 + setup-method: ghcup + allow-failure: true + - compiler: ghc-9.0.2 + compilerKind: ghc + compilerVersion: 9.0.2 + setup-method: ghcup + allow-failure: false + - compiler: ghc-8.10.7 + compilerKind: ghc + compilerVersion: 8.10.7 + setup-method: ghcup + allow-failure: false + fail-fast: false + steps: + - name: apt + run: | + apt-get update + apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5 + mkdir -p "$HOME/.ghcup/bin" + curl -sL https://downloads.haskell.org/ghcup/0.1.17.5/x86_64-linux-ghcup-0.1.17.5 > "$HOME/.ghcup/bin/ghcup" + chmod a+x "$HOME/.ghcup/bin/ghcup" + "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" + "$HOME/.ghcup/bin/ghcup" install cabal 3.6.2.0 + env: + HCKIND: ${{ matrix.compilerKind }} + HCNAME: ${{ matrix.compiler }} + HCVER: ${{ matrix.compilerVersion }} + - name: Set PATH and environment variables + run: | + echo "$HOME/.cabal/bin" >> $GITHUB_PATH + echo "LANG=C.UTF-8" >> "$GITHUB_ENV" + echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV" + echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV" + HCDIR=/opt/$HCKIND/$HCVER + HC=$HOME/.ghcup/bin/$HCKIND-$HCVER + echo "HC=$HC" >> "$GITHUB_ENV" + echo "HCPKG=$HOME/.ghcup/bin/$HCKIND-pkg-$HCVER" >> "$GITHUB_ENV" + echo "HADDOCK=$HOME/.ghcup/bin/haddock-$HCVER" >> "$GITHUB_ENV" + echo "CABAL=$HOME/.ghcup/bin/cabal-3.6.2.0 -vnormal+nowrap" >> "$GITHUB_ENV" + HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))') + echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV" + echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV" + echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV" + echo "HEADHACKAGE=false" >> "$GITHUB_ENV" + echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV" + echo "GHCJSARITH=0" >> "$GITHUB_ENV" + env: + HCKIND: ${{ matrix.compilerKind }} + HCNAME: ${{ matrix.compiler }} + HCVER: ${{ matrix.compilerVersion }} + - name: env + run: | + env + - name: write cabal config + run: | + mkdir -p $CABAL_DIR + cat >> $CABAL_CONFIG <> $CABAL_CONFIG < cabal-plan.xz + echo 'de73600b1836d3f55e32d80385acc055fd97f60eaa0ab68a755302685f5d81bc cabal-plan.xz' | sha256sum -c - + xz -d < cabal-plan.xz > $HOME/.cabal/bin/cabal-plan + rm -f cabal-plan.xz + chmod a+x $HOME/.cabal/bin/cabal-plan + cabal-plan --version + - name: install hpack + run: | + curl -sL https://github.com/sol/hpack/releases/download/0.34.2/hpack_linux.gz > hpack_linux.gz + gzip -d < hpack_linux.gz > $HOME/.cabal/bin/hpack + rm -f hpack_linux.gz + chmod a+x $HOME/.cabal/bin/hpack + hpack --version + - name: checkout + uses: actions/checkout@v2 + with: + path: source + - name: generate cabal file + run: | + cd $GITHUB_WORKSPACE/source + hpack + - name: initial cabal.project for sdist + run: | + touch cabal.project + echo "packages: $GITHUB_WORKSPACE/source/." >> cabal.project + cat cabal.project + - name: sdist + run: | + mkdir -p sdist + $CABAL sdist all --output-dir $GITHUB_WORKSPACE/sdist + - name: unpack + run: | + mkdir -p unpacked + find sdist -maxdepth 1 -type f -name '*.tar.gz' -exec tar -C $GITHUB_WORKSPACE/unpacked -xzvf {} \; + - name: generate cabal.project + run: | + PKGDIR_cobot_io="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/cobot-io-[0-9.]*')" + echo "PKGDIR_cobot_io=${PKGDIR_cobot_io}" >> "$GITHUB_ENV" + rm -f cabal.project cabal.project.local + touch cabal.project + touch cabal.project.local + echo "packages: ${PKGDIR_cobot_io}" >> cabal.project + echo "package cobot-io" >> cabal.project + echo " ghc-options: -Werror=missing-methods" >> cabal.project + cat >> cabal.project <> cabal.project.local + cat cabal.project + cat cabal.project.local + - name: dump install plan + run: | + $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dry-run all + cabal-plan + - name: cache + uses: actions/cache@v2 + with: + key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }} + path: ~/.cabal/store + restore-keys: ${{ runner.os }}-${{ matrix.compiler }}- + - name: install dependencies + run: | + $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --dependencies-only -j2 all + $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dependencies-only -j2 all + - name: build w/o tests + run: | + $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all + - name: build + run: | + $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --write-ghc-environment-files=always + - name: tests + run: | + $CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-details=direct + - name: cabal check + run: | + cd ${PKGDIR_cobot_io} || false + ${CABAL} -vnormal check + - name: haddock + run: | + $CABAL v2-haddock $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all + - name: unconstrained build + run: | + rm -f cabal.project.local + $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 665739d..0000000 --- a/.travis.yml +++ /dev/null @@ -1,29 +0,0 @@ -sudo: false -language: generic - -env: - global: - # HACKAGE_PASSWORD - - secure: p4viJPiZUbANBNWynxsHERHnofPaZgrhmZEMZrsocWNV0snrRpYOoFogL1G2WQ7LJH2eMAfWUuwL0kCqoPOu4fiXXliG6h/zL8uKGgikOZ96C4oCptuOG/Ew117Hj1Ao9cp+9hieu4IADjORe7/BtCcpqDTV2kG7No0+O6bano1Ws+X6IVfrMHHB0DfUNqz9nfg6u3+6wAnPqh3AWOTULIdcV+eq2HD3+iBpR+laPiTATQayDMjC8FYWMVr8NsS07Z0I/jYBN1/lhvRH27beH02CzXpqaEcNn8yfuX6bKEPdjOtdPbl01YHBCnBtZpiluDuwj7a7ITDLqhsQ6pA5iduKQthOX75mooyhwQCEhH0KqlwysOT37k9Q4b/DMQAG6cuwyhZrAtXSprDQVDGgOr72RSUDwkiYmORpTno1VWGFg1ToOVPIN2Rel2HEyb/M/SVozV8lmSZ5D+CvomRg7H6SqCxBi8jP1MsRRBeZ1bBXolfVL7+OR2T4d8zmluDJwOrtQ4zfI/mbnvBg91N4fDY4ibdF/fCDav3/I5timmfyqRCGOVzWlhIovbKwo0OYj3xd9q7SP/EL4Xg8IcZedQF8/viCsltWcceLPBKL63eI9XUbk5enB1WDsDMIae7IUAuUjJ9JmX1XzNiSwG+omD+OCLZbh4UUAS3SngZK4KQ= - -# Caching so the next build will be fast too. -cache: - directories: - - $HOME/.stack - -before_install: - - curl -sSL https://get.haskellstack.org/ | sh - - stack --version - -install: - - stack build --test --bench --only-dependencies - -jobs: - include: - - stage: Build and test - script: stack build --pedantic --test --bench --no-run-benchmarks - - stage: Hackage deploy - # n is for "store credentials" question - # --pvp-bounds is broken in stack-2.3.1 - script: echo -e "ozzzzz\n${HACKAGE_PASSWORD}\nn" | stack upload . - if: tag IS present diff --git a/ChangeLog.md b/ChangeLog.md index 59dc1e6..0329369 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -2,6 +2,10 @@ ## [Unreleased] +## [0.1.4.3] - 2022-03-23 +### Changed +- Support GHC-9.2 packages in dependencies. + ## [0.1.4.2] - 2021-10-14 ### Changed - More types of multiline properties are supported. diff --git a/cabal.haskell-ci b/cabal.haskell-ci new file mode 100644 index 0000000..16b6211 --- /dev/null +++ b/cabal.haskell-ci @@ -0,0 +1,5 @@ +distribution: focal + +branches: master + +allow-failures: >=9.2 diff --git a/package.yaml b/package.yaml index faf595e..1025919 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: cobot-io -version: 0.1.4.2 +version: 0.1.4.3 github: "biocad/cobot-io" license: BSD3 category: Bio @@ -11,6 +11,18 @@ synopsis: Biological data file formats and IO extra-source-files: - README.md - ChangeLog.md +- test/**/*.gb +- test/**/*.fasta +- test/**/*.mae +- test/**/*.pdb +- test/**/*.ab1 +- test/**/*.txt +- test/**/*.dms + +tested-with: | + GHC ==8.10.7 + || ==9.0.2 + || ==9.2.2 # Metadata used when publishing your package @@ -24,14 +36,14 @@ dependencies: - array >= 0.5 && < 0.6 - attoparsec >= 0.10 && < 0.15 - binary >= 0.8.3.0 && < 1.0 -- bytestring >= 0.10.8.1 && < 0.11 -- cobot >= 0.1.1.7 +- bytestring >= 0.10.8.1 && < 0.12 +- cobot >= 0.1.1.7 - containers >= 0.5.7.1 && < 0.7 - data-msgpack >= 0.0.9 && < 0.1 - deepseq >= 1.4 && < 1.5 - http-conduit >= 2.3 && < 2.4 - hyraxAbif >= 0.2.3.27 && < 0.2.4.0 -- lens >= 4.16 && < 5.1 +- lens >= 4.16 && < 5.2 - linear >= 1.20 && < 1.22 - megaparsec >= 9.0.1 - mtl >= 2.2.1 && < 2.3.0