Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
Dat Chu committed Aug 3, 2023
2 parents 12f4c1b + 8c7e0fd commit 062662b
Show file tree
Hide file tree
Showing 393 changed files with 92,478 additions and 11,887 deletions.
34 changes: 34 additions & 0 deletions .cirrus.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
env:
CIRRUS_CLONE_DEPTH: 1

freebsd_task:
matrix:
- name: FreeBSD 13.0 (GCC 10 from packages)
# RunCatchingExceptionsOtherException fails on 13.0 with system Clang
# 11.0 and ports Clang 10/11 as well, so GCC 10 is used instead.
freebsd_instance:
image_family: freebsd-13-0
preinstall_script:
# Stock clang11 fails some exception unit tests
pkg install -y gcc10
env:
CC: gcc10
CXX: g++10
- name: FreeBSD 12.2 (System Clang 10)
freebsd_instance:
image_family: freebsd-12-2
- name: FreeBSD 11.4 (System Clang 10)
freebsd_instance:
image_family: freebsd-11-4
install_script:
pkg install -y automake autoconf libtool
compiler_version_script:
${CXX:-"c++"} --version
autoreconf_script:
- cd c++ && autoreconf -i
configure_script:
- cd c++ && ./configure
build_script:
- make -C c++
test_script:
- make -C c++ check
207 changes: 207 additions & 0 deletions .github/workflows/quick-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
name: Quick Tests

on:
pull_request:
paths-ignore:
- 'doc/**'
push:
branches:
- master
- 'release-*'

jobs:
Linux-musl:
runs-on: ubuntu-20.04
# We depend on both clang and libc++. Alpine Linux 3.17 seems to be the first version to include
# a libc++ package (based on LLVM 15), but building capnproto failed when I tried it.
# Alpine Linux 3.18's libc++ package is from LLVM 16, however, and worked out-of-the-box, so
# Clang 16 appears to be the earliest Clang version we can run easily on Alpine Linux.
container: alpine:3.18.2
steps:
- uses: actions/checkout@v2
- name: install dependencies
run: apk add autoconf automake bash build-base cmake libtool libucontext-dev linux-headers openssl-dev clang16 libc++-dev
- name: super-test
run: ./super-test.sh quick clang-16
Linux-old:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
compiler: [g++-7, clang-6.0]
steps:
- uses: actions/checkout@v2
- name: install dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get install -y build-essential git zlib1g-dev cmake libssl-dev ${{ matrix.compiler }}
- name: super-test
run: |
./super-test.sh quick ${{ matrix.compiler }}
Linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
compiler: [g++-12, clang-14]
steps:
- uses: actions/checkout@v2
- name: install dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get install -y build-essential git zlib1g-dev cmake libssl-dev ${{ matrix.compiler }}
- name: super-test
run: |
./super-test.sh quick ${{ matrix.compiler }}
Linux-lock-tracking:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
compiler: [clang-9]
features: ["-DKJ_TRACK_LOCK_BLOCKING=1 -DKJ_SAVE_ACQUIRED_LOCK_INFO=1 -DKJ_CONTENTION_WARNING_THRESHOLD=200"]
steps:
- uses: actions/checkout@v2
- name: install dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get install -y build-essential git zlib1g-dev cmake libssl-dev ${{ matrix.compiler }}
- name: super-test
run: |
# librt is used for timer_create in the unit tests for lock tracking (mutex-test.c++).
./super-test.sh quick ${{ matrix.compiler }} cpp-features "${{matrix.features}}" extra-libs "-lrt"
ManyLinux:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
include:
- cross-compiler: manylinux2014-x64
- cross-compiler: manylinux2014-x86
docker-run-args: --platform linux/386
steps:
- uses: actions/checkout@v2
- name: install dockcross
run: |
docker run ${{ matrix.docker-run-args }} --rm dockcross/${{ matrix.cross-compiler }} > ./dockcross
chmod +x ./dockcross
- name: super-test
run: |
./dockcross ./super-test.sh quick g++
MacOS:
runs-on: macos-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
- name: install dependencies
run: |
brew install autoconf automake libtool pkg-config
- name: super-test
run: |
./super-test.sh quick
MSVC:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ['windows-2019', 'windows-latest']
include:
- os: windows-2019
target: 'Visual Studio 16 2019'
arch: -A x64
- os: windows-latest
target: 'Visual Studio 17 2022'
arch: -A x64
steps:
- uses: actions/checkout@v2
- name: Include $CONDA in $PATH
run: |
echo "$Env:CONDA\condabin" >> $env:GITHUB_PATH
- name: Install dependencies via Conda
run: |
conda update -n base -c defaults -q conda
conda install -n base -c defaults -q ninja openssl zlib
- name: Build and test
shell: cmd
run: |
echo "Activate conda base environment"
call activate base
echo "Building Cap'n Proto with ${{ matrix.target }}"
cmake -Hc++ -Bbuild-output ${{ matrix.arch }} -G "${{ matrix.target }}" -DCMAKE_BUILD_TYPE=debug -DCMAKE_PREFIX_PATH="%CONDA_PREFIX%" -DCMAKE_INSTALL_PREFIX=%CD%\capnproto-c++-install
cmake --build build-output --config debug --target install
echo "Building Cap'n Proto samples with ${{ matrix.target }}"
cmake -Hc++/samples -Bbuild-output-samples ${{ matrix.arch }} -G "${{ matrix.target }}" -DCMAKE_BUILD_TYPE=debug -DCMAKE_PREFIX_PATH=%CD%\capnproto-c++-install
cmake --build build-output-samples --config debug
cd build-output\src
ctest -V -C debug
MinGW:
runs-on: windows-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
- name: Build and test
shell: cmd
run: |
echo "Deleting broken Postgres install until https://github.com/actions/virtual-environments/issues/1089 is fixed..."
rmdir /s /q C:\PROGRA~1\POSTGR~1
echo "Building Cap'n Proto with MinGW"
cmake -Hc++ -Bbuild-output -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX=%CD%\capnproto-c++-install -DCMAKE_SH="CMAKE_SH-NOTFOUND" -DCMAKE_CXX_STANDARD_LIBRARIES="-static-libgcc -static-libstdc++"
cmake --build build-output --target install -- -j2
echo "Building Cap'n Proto samples with MinGW"
cmake -Hc++/samples -Bbuild-output-samples -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=debug -DCMAKE_PREFIX_PATH=%CD%\capnproto-c++-install -DCMAKE_SH="CMAKE_SH-NOTFOUND"
cmake --build build-output-samples
cd build-output\src
ctest -V -C debug
# Cygwin:
# runs-on: windows-latest
# strategy:
# fail-fast: false
# steps:
# - run: git config --global core.autocrlf false
# - uses: actions/checkout@v2
# # TODO(someday): If we could cache the Cygwin installation we wouldn't have to spend three
# # minutes installing it for every build. Unfortuntaley, actions/cache@v1 does not preserve
# # DOS file attributes, which corrupts the Cygwin install. In particular, Cygwin marks
# # symlinks with the "DOS SYSTEM" attribute. We could cache just the downloaded packages,
# # but it turns out that only saves a couple seconds; most of the time is spend unpacking.
# - name: Install Cygwin
# run: |
# choco config get cacheLocation
# choco install --no-progress cygwin
# - name: Install Cygwin additional packages
# shell: cmd
# run: |
# C:\tools\cygwin\cygwinsetup.exe -qgnNdO -R C:/tools/cygwin -l C:/tools/cygwin/packages -s http://mirrors.kernel.org/sourceware/cygwin/ -P autoconf,automake,libtool,gcc,gcc-g++,binutils,libssl-devel,make,zlib-devel,pkg-config,cmake,xxd
# - name: Build and test
# shell: cmd
# run: |
# C:\tools\cygwin\bin\bash -lc 'export PATH=/usr/local/bin:/usr/bin:/bin; cd /cygdrive/d/a/capnproto/capnproto; ./super-test.sh quick'
Linux-bazel-clang:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
clang_version: [16]
steps:
- uses: actions/checkout@v3
- uses: bazelbuild/setup-bazelisk@v2
- name: install dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get install -y build-essential git
# todo: replace with apt-get when clang-16 is part of ubuntu lts
- name: install clang
uses: egor-tensin/setup-clang@v1
with:
version: ${{ matrix.clang_version }}
- name: super-test
run: |
cd c++
bazel test --verbose_failures --test_output=errors //...
130 changes: 130 additions & 0 deletions .github/workflows/release-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
name: Release Tests

on:
push:
branches:
- master
- 'release-*'
- 'fix-release*'

jobs:
Linux:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
# We can only run extended tests with the default version of g++, because it has to match
# the version of g++-multilib for 32-bit cross-compilation, and alternate versions of
# g++-multilib generally aren't available. Clang is more lenient, but we might as well be
# consistent. The quick tests should be able to catch issues with older and newer compiler
# versions.
compiler: [g++, clang]
steps:
- uses: actions/checkout@v2
- name: install dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get update
sudo apt-get install -y build-essential git zlib1g-dev cmake libssl-dev valgrind gcc-multilib g++-multilib ${{ matrix.compiler }}
- name: super-test
run: |
./super-test.sh ${{ matrix.compiler }}
MacOS:
runs-on: macos-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
- name: install dependencies
run: |
brew install autoconf automake libtool pkg-config
- name: super-test
run: |
./super-test.sh
MinGW-Wine:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
# See: https://github.com/actions/virtual-environments/issues/4589#issuecomment-1100899313
# GitHub's Ubuntu image installs all kinds of stuff from non-Ubuntu repositories which cause
# conflicts with Ubuntu packages ultimately preventing installation of wine32. Let's try to
# fix that...
- name: remove unwanted packages and repositories
run: |
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update -qq
sudo apt-get install -yqq --allow-downgrades libgd3/focal libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
sudo apt-get purge -yqq libmono* moby* mono* php* libgdiplus libpcre2-posix3 libzip4
- name: install dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y build-essential git cmake mingw-w64 wine-stable wine64 wine32 wine-binfmt
sudo update-binfmts --import wine
- name: 64-bit Build and Test
run: |
./super-test.sh mingw x86_64-w64-mingw32
- name: 32-bit Build and Test
run: |
./super-test.sh mingw i686-w64-mingw32
cmake-packaging:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
- name: install dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get install -y build-essential git cmake
- name: autotools-shared
run: |
./super-test.sh cmake-package autotools-shared
- name: autotools-static
run: |
./super-test.sh cmake-package autotools-static
- name: cmake-shared
run: |
./super-test.sh cmake-package cmake-shared
- name: cmake-static
run: |
./super-test.sh cmake-package cmake-static
Android:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v2
- name: install dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
sudo apt-get install -y build-essential git
- name: fetch Android tools
if: steps.cache-android-sdk.outputs.cache-hit != 'true'
run: |
# The installed Android SDK is broken.
unset ANDROID_SDK_ROOT
unset ANDROID_HOME
mkdir android-sdk
cd android-sdk
curl -o commandlinetools.zip https://dl.google.com/android/repository/commandlinetools-linux-6200805_latest.zip
unzip commandlinetools.zip
(yes || true) | tools/bin/sdkmanager --sdk_root=$PWD platform-tools 'platforms;android-25' 'system-images;android-25;google_apis;armeabi-v7a' emulator 'build-tools;25.0.2' ndk-bundle
- name: 32-bit Build and Test
run: |
# The installed Android SDK is broken.
unset ANDROID_SDK_ROOT
unset ANDROID_HOME
echo | android-sdk/tools/bin/avdmanager create avd -n capnp -k 'system-images;android-25;google_apis;armeabi-v7a' -b google_apis/armeabi-v7a
# avdmanager seems to set image.sysdir.1 incorrectly in the AVD's config.ini, which
# causes the emulator to fail. I don't know why. I don't know how to fix it, other than
# to patch the config like so.
sed -i -re 's,^image\.sysdir\.1=android-sdk/,image.sysdir.1=,g' $HOME/.android/avd/capnp.avd/config.ini
./super-test.sh android $PWD/android-sdk arm-linux-androideabi armv7a-linux-androideabi24
Loading

0 comments on commit 062662b

Please sign in to comment.