mirror of
https://github.com/curl/curl.git
synced 2025-01-12 13:55:11 +08:00
395b9175b7
Also skip builds on non-Windows platforms when only Windows build files have changed. This should reduce the number of useless builds and the associated waiting time and chance of spurious failures, freeing resources for new PRs. Closes #10742
187 lines
6.6 KiB
YAML
187 lines
6.6 KiB
YAML
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
|
#
|
|
# SPDX-License-Identifier: curl
|
|
|
|
name: macOS
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- '*/ci'
|
|
paths-ignore:
|
|
- '**/*.md'
|
|
- '.azure-pipelines.yml'
|
|
- '.circleci/**'
|
|
- '.cirrus.yml'
|
|
- 'appveyor.yml'
|
|
- 'packages/**'
|
|
- 'plan9/**'
|
|
- 'projects/**'
|
|
- 'winbuild/**'
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
paths-ignore:
|
|
- '**/*.md'
|
|
- '.azure-pipelines.yml'
|
|
- '.circleci/**'
|
|
- '.cirrus.yml'
|
|
- 'appveyor.yml'
|
|
- 'packages/**'
|
|
- 'plan9/**'
|
|
- 'projects/**'
|
|
- 'winbuild/**'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
|
cancel-in-progress: true
|
|
|
|
permissions: {}
|
|
|
|
env:
|
|
DEVELOPER_DIR: /Applications/Xcode_14.0.1.app/Contents/Developer
|
|
|
|
jobs:
|
|
autotools:
|
|
name: ${{ matrix.build.name }}
|
|
runs-on: 'macos-latest'
|
|
timeout-minutes: 90
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
build:
|
|
- name: normal
|
|
install: nghttp2
|
|
configure: --without-ssl
|
|
macosx-version-min: 10.9
|
|
- name: debug
|
|
install: nghttp2
|
|
configure: --enable-debug --without-ssl
|
|
macosx-version-min: 10.9
|
|
- name: libssh2
|
|
install: nghttp2 libssh2
|
|
configure: --enable-debug --with-libssh2 --without-ssl
|
|
macosx-version-min: 10.9
|
|
- name: libssh-c-ares
|
|
install: openssl nghttp2 libssh
|
|
configure: --enable-debug --with-libssh --with-openssl=/usr/local/opt/openssl --enable-ares
|
|
macosx-version-min: 10.9
|
|
- name: libssh
|
|
install: openssl nghttp2 libssh
|
|
configure: --enable-debug --with-libssh --with-openssl=/usr/local/opt/openssl
|
|
macosx-version-min: 10.9
|
|
- name: c-ares
|
|
install: nghttp2
|
|
configure: --enable-debug --enable-ares --without-ssl
|
|
macosx-version-min: 10.9
|
|
- name: HTTP only
|
|
install: nghttp2
|
|
configure: --enable-debug --enable-maintainer-mode --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-ldap --disable-pop3 --disable-rtmp --disable-rtsp --disable-scp --disable-sftp --disable-smb --disable-smtp --disable-telnet --disable-tftp --disable-unix-sockets --disable-shared --without-brotli --without-gssapi --without-libidn2 --without-libpsl --without-librtmp --without-libssh2 --without-nghttp2 --without-ntlm-auth --without-ssl --without-zlib
|
|
macosx-version-min: 10.15
|
|
- name: SecureTransport http2
|
|
install: nghttp2
|
|
configure: --enable-debug --with-secure-transport
|
|
macosx-version-min: 10.8
|
|
- name: OpenSSL http2
|
|
install: nghttp2 openssl
|
|
configure: --enable-debug --with-openssl=/usr/local/opt/openssl
|
|
macosx-version-min: 10.9
|
|
- name: LibreSSL http2
|
|
install: nghttp2 libressl
|
|
configure: --enable-debug --with-openssl=/usr/local/opt/libressl
|
|
macosx-version-min: 10.9
|
|
- name: torture
|
|
install: nghttp2 openssl
|
|
configure: --enable-debug --disable-shared --disable-threaded-resolver --with-openssl=/usr/local/opt/openssl
|
|
tflags: -n -t --shallow=25 !FTP
|
|
macosx-version-min: 10.9
|
|
- name: torture-ftp
|
|
install: nghttp2 openssl
|
|
configure: --enable-debug --disable-shared --disable-threaded-resolver --with-openssl=/usr/local/opt/openssl
|
|
tflags: -n -t --shallow=20 FTP
|
|
macosx-version-min: 10.9
|
|
- name: macOS 10.15
|
|
install: nghttp2 libssh2 openssl
|
|
configure: --enable-debug --disable-ldap --with-openssl=/usr/local/opt/openssl
|
|
macosx-version-min: 10.15
|
|
steps:
|
|
- run: echo libtool autoconf automake pkg-config ${{ matrix.build.install }} | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
|
|
name: 'brew bundle'
|
|
|
|
# Run this command with retries because of spurious failures seen
|
|
# while running the tests, for example
|
|
# https://github.com/curl/curl/runs/4095721123?check_suite_focus=true
|
|
- run: "while [[ $? == 0 ]]; do for i in 1 2 3; do brew update && brew bundle install --no-lock --file /tmp/Brewfile && break 2 || { echo Error: wait to try again; sleep 10; false; } done; false Too many retries; done"
|
|
name: 'brew install'
|
|
|
|
- run: python3 -m pip install impacket
|
|
name: 'pip3 install'
|
|
|
|
- uses: actions/checkout@v3
|
|
|
|
- run: autoreconf -fi
|
|
name: 'autoreconf'
|
|
|
|
- run: ./configure --enable-warnings --enable-werror ${{ matrix.build.configure }} --enable-websockets
|
|
name: 'configure'
|
|
env:
|
|
# -Wvla is caused by brotli
|
|
CFLAGS: "-Wno-vla -mmacosx-version-min=${{ matrix.build.macosx-version-min }}"
|
|
|
|
- run: make V=1
|
|
name: 'make'
|
|
|
|
- run: make V=1 examples
|
|
name: 'make examples'
|
|
|
|
- run: make V=1 -C tests
|
|
name: 'make tests'
|
|
|
|
- run: make V=1 test-ci
|
|
name: 'run tests'
|
|
env:
|
|
TFLAGS: "${{ matrix.build.tflags }} ~1452"
|
|
|
|
cmake:
|
|
name: cmake ${{ matrix.compiler.CC }} ${{ matrix.build.name }}
|
|
runs-on: 'macos-latest'
|
|
env: ${{ matrix.compiler }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
compiler:
|
|
- CC: clang
|
|
CXX: clang++
|
|
CFLAGS: "-mmacosx-version-min=10.15 -Wno-deprecated-declarations"
|
|
- CC: gcc-12
|
|
CXX: g++-12
|
|
CFLAGS: "-mmacosx-version-min=10.15 -Wno-error=undef -Wno-error=conversion"
|
|
build:
|
|
- name: OpenSSL
|
|
install: nghttp2 openssl
|
|
generate: -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON
|
|
- name: LibreSSL
|
|
install: nghttp2 libressl
|
|
generate: -DOPENSSL_ROOT_DIR=/usr/local/opt/libressl -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON
|
|
- name: libssh2
|
|
install: nghttp2 openssl libssh2
|
|
generate: -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DCURL_USE_LIBSSH2=ON
|
|
steps:
|
|
- run: echo libtool autoconf automake pkg-config ${{ matrix.build.install }} | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
|
|
name: 'brew bundle'
|
|
|
|
- run: "while [[ $? == 0 ]]; do for i in 1 2 3; do brew update && brew bundle install --no-lock --file /tmp/Brewfile && break 2 || { echo Error: wait to try again; sleep 10; false; } done; false Too many retries; done"
|
|
name: 'brew install'
|
|
|
|
- run: python3 -m pip install impacket
|
|
name: 'pip3 install'
|
|
|
|
- uses: actions/checkout@v3
|
|
|
|
- run: cmake -S. -Bbuild -DCURL_WERROR=ON -DPICKY_COMPILER=ON ${{ matrix.build.generate }}
|
|
name: 'cmake generate'
|
|
|
|
- run: cmake --build build
|
|
name: 'cmake build'
|