Skip to content

Allow the return type of primitive functions to depend on arguments #619

Allow the return type of primitive functions to depend on arguments

Allow the return type of primitive functions to depend on arguments #619

name: CI-Clang
on: [push, pull_request]
env:
LANG: en_US.UTF-8
jobs:
ci-clang:
strategy:
fail-fast: false
matrix:
ghc: [8.10.7]
runs-on: ubuntu-latest
container:
image: ghcr.io/donsbot/hsthrift/ci-base:clang11rocksdb
options: --cpus 2 --security-opt=seccomp=unconfined
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install additional tools
run: |
apt-get update
apt install -y libxxhash-dev m4 rsync wget unzip libclang-12-dev llvm-12-dev libgmock-dev libre2-dev
- name: Make utf8 default locale
run: |
apt-get install -y locales
locale-gen en_US.UTF-8
update-locale LANG=en_US.UTF-8
- name: Install GHC ${{ matrix.ghc }}
run: ghcup install ghc ${{ matrix.ghc }} --set
- name: Install cabal-install
run: ghcup install cabal -u https://downloads.haskell.org/cabal/cabal-install-3.8.1.0/cabal-install-3.8.1.0-x86_64-linux-deb10.tar.xz 3.8.1.0 --set
- name: Add GHC and cabal to PATH
run: echo "$HOME/.ghcup/bin" >> "$GITHUB_PATH"
- name: Install indexer (flow)
run: |
export FLOW=0.209.1
wget "https://github.com/facebook/flow/releases/download/v${FLOW}/flow-linux64-v${FLOW}.zip"
unzip "flow-linux64-v${FLOW}.zip"
mkdir -p "$HOME"/.hsthrift/bin && mv flow/flow "$HOME"/.hsthrift/bin
- name: Install indexer (typescript)
run: |
export NODEARCH=node-v18.0.0-linux-x64
curl -LO "https://nodejs.org/dist/v18.0.0/${NODEARCH}.tar.xz"
tar -xvf "${NODEARCH}.tar.xz"
cp -r "${NODEARCH}"/* "$HOME"/.hsthrift/
npm install -g @sourcegraph/scip-typescript
- name: Install indexer (python)
run: |
export NODEARCH=node-v18.0.0-linux-x64
curl -LO "https://nodejs.org/dist/v18.0.0/${NODEARCH}.tar.xz"
tar -xvf "${NODEARCH}.tar.xz"
cp -r "${NODEARCH}"/* "$HOME"/.hsthrift/
npm install -g @sourcegraph/scip-python
apt install -y python3-pip
- name: Install indexer (dotnet)
run: |
export DOTNET=7.0
wget https://dot.net/v1/dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh --channel ${DOTNET}
export DOTNET_ROOT=$HOME/.dotnet
$DOTNET_ROOT/dotnet tool install --global scip-dotnet
- name: Install indexer (go)
run: |
export GOLANG=1.17.8
export SCIPGO=0.1.4
mkdir go-install; cd go-install
wget "https://go.dev/dl/go${GOLANG}.linux-amd64.tar.gz"
tar -C "$HOME/.hsthrift" -xzf "go${GOLANG}.linux-amd64.tar.gz"
wget "https://github.com/sourcegraph/scip-go/releases/download/v${SCIPGO}/scip-go_${SCIPGO}_linux_amd64.tar.gz"
tar xzf "scip-go_${SCIPGO}_linux_amd64.tar.gz"
mkdir -p "$HOME"/.hsthrift/bin && mv scip-go "$HOME"/.hsthrift/bin
echo "$HOME/.hsthrift/go/bin" >> "$GITHUB_PATH"
- name: Install indexer (rust)
run: |
export RUST_ANALYZER=2023-11-06
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
mkdir -p "$HOME"/.hsthrift/bin
curl -L https://github.com/rust-analyzer/rust-analyzer/releases/download/${RUST_ANALYZER}/rust-analyzer-x86_64-unknown-linux-gnu.gz | gunzip -c - > "$HOME"/.hsthrift/bin/rust-analyzer
chmod +x "$HOME"/.hsthrift/bin/rust-analyzer
- name: Install indexer (java)
run: |
apt-get install -y default-jdk maven
curl -fLo coursier https://git.io/coursier-cli && chmod +x coursier
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
./coursier bootstrap --standalone -o lsif-java com.sourcegraph:lsif-java_2.13:0.8.0-RC1 --main-class com.sourcegraph.lsif_java.LsifJava
mkdir -p "$HOME"/.hsthrift/bin && cp lsif-java "$HOME"/.hsthrift/bin
# no hhvm builds yet for jammy/ubuntu 22.00, so we skip the hack indexer
- name: Fetch hsthrift and build folly
run: ./install_deps.sh --use-system-libs
- name: Nuke build artifacts
run: rm -rf /tmp/fbcode_builder_getdeps-Z__wZGleanZGleanZhsthriftZbuildZfbcode_builder-root/
- name: Add thrift compiler to path
run: echo "$HOME/.hsthrift/bin" >> "$GITHUB_PATH"
- name: Populate hackage index
run: cabal update
- name: Build hsthrift and Glean
run: env LD_LIBRARY_PATH="$HOME/.hsthrift/lib" PKG_CONFIG_PATH="$HOME/.hsthrift/lib/pkgconfig" make
- name: Build glass
run: env LD_LIBRARY_PATH="$HOME/.hsthrift/lib" PKG_CONFIG_PATH="$HOME/.hsthrift/lib/pkgconfig" make glass
# no hhvm/hack or typescript indexer, so we run without hack regression tests
- name: Build glean-clang
run: env LD_LIBRARY_PATH="$HOME/.hsthrift/lib" PKG_CONFIG_PATH="$HOME/.hsthrift/lib/pkgconfig" make glean-clang
- name: Run tests
run: env LD_LIBRARY_PATH="$HOME/.hsthrift/lib" PKG_CONFIG_PATH="$HOME/.hsthrift/lib/pkgconfig" cabal test glean:tests -f-hack-tests