Skip to content

fix potential deadlock in the global watcher callback #148

fix potential deadlock in the global watcher callback

fix potential deadlock in the global watcher callback #148

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
ghc: ["8.10.7", "9.0.2", "9.2.8", "9.4.8"]
cabal: ["3.8"]
# TODO:
# zk_server: ["3.4.14", "3.6.2"]
# zk_client: ["3.4.14", "3.6.2"]
#os: [ubuntu-latest, macOS-latest]
os: [macOS-latest]
name: ghc-${{ matrix.ghc }} cabal-${{matrix.cabal}} on ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
# FIXME: use the same client version as the one in the matrix
- name: Install zookeeper-dev on ubuntu
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install libzookeeper-mt-dev
# FIXME: use the same server & client version as the one in the matrix
- name: Install zookeeper-dev on osx
if: runner.os == 'macOS'
run: brew install zookeeper
# FIXME: use the same server version as the one in the matrix
- name: Setup zookeeper server on ubuntu
if: runner.os == 'Linux'
run: docker run --name some-zookeeper -p 2182:2181 -d zookeeper:3.6
- name: Setup zookeeper server on osx
if: runner.os == 'macOS'
run: |
# https://docs.brew.sh/Installation
if [ "$(uname -m)" == "arm64" ]; then
sed -i'.bak' -e "s/^clientPort=2181$/clientPort=2182/g" /opt/homebrew/etc/zookeeper/zoo.cfg
cat /opt/homebrew/etc/zookeeper/zoo.cfg
else
sed -i'.bak' -e "s/^clientPort=2181$/clientPort=2182/g" /usr/local/etc/zookeeper/zoo.cfg
cat /usr/local/etc/zookeeper/zoo.cfg
fi
zkServer start
# - name: remove xcode devtools on osx
# if: runner.os == 'macOS'
# run: sudo rm -rf /Library/Developer/CommandLineTools/SDKs
- name: Setup Haskell
uses: haskell-actions/setup@v2
with:
ghc-version: ${{ matrix.ghc }}
cabal-version: ${{ matrix.cabal }}
- uses: actions/cache@v4
with:
path: |
~/.cabal/packages
~/.cabal/store
dist-newstyle
key: ${{ runner.os }}-${{ matrix.ghc }}-${{ matrix.cabal }}-v1-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('**/cabal.project') }}
restore-keys: |
${{ runner.os }}-${{ matrix.ghc }}-${{ matrix.cabal }}-v1-
# echo "BUILD_ARGS=--extra-include-dirs=/opt/homebrew/include --extra-lib-dirs=/opt/homebrew/lib" >> $GITHUB_ENV
- name: Set environment variables
run: |
if [ "$RUNNER_OS" == "macOS" ]; then
echo "PATH=\"$(brew --prefix llvm@15)/bin:$PATH\"" >> $GITHUB_ENV
echo "C_INCLUDE_PATH=\"$C_INCLUDE_PATH:/opt/homebrew/include\"" >> $GITHUB_ENV
echo "LD_LIBRARY_PATH=\"$LD_LIBRARY_PATH:/opt/homebrew/lib\"" >> $GITHUB_ENV
fi
- name: sdist
run: |
mkdir -p $HOME/sdist
cabal sdist --output-dir $HOME/sdist
- name: unpack
run: |
rm -rf $GITHUB_WORKSPACE/*
find $HOME/sdist -maxdepth 1 -type f -name '*.tar.gz' -exec tar -C $GITHUB_WORKSPACE -xzvf {} --strip 1 \;
- name: build
run: |
export PATH="$(brew --prefix llvm@15)/bin:$PATH"
export C_INCLUDE_PATH="$C_INCLUDE_PATH:/opt/homebrew/include"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/homebrew/lib"
type opt
cabal build --upgrade-dependencies --enable-tests --enable-benchmarks
- name: test
run: cabal test --enable-tests --test-show-details=always
- name: check
run: cabal check
- name: haddock
run: cabal haddock