mirror of
https://git.tukaani.org/xz.git
synced 2026-10-31 03:14:56 +00:00
These workflows don't use any secrets other than GITHUB_TOKEN, which only has the 'contents: read' permission. That is, if an action was compromised, it shouldn't be able to modify the repository or steal any secrets. I recognize that a compromised action isn't completely harmless still. For example, the runners on GitHub have Internet access which the action could abuse until the workflow timeout (currently 10 or 20 minutes) expires. Now we always use the most recent actions instead of ones that are sometimes several months old. The hassle of updating the pinned commit IDs goes away. The benefits feel bigger than the risks. Link: https://github.com/tukaani-project/xz/pull/227
148 lines
4.1 KiB
YAML
148 lines
4.1 KiB
YAML
# SPDX-License-Identifier: 0BSD
|
|
|
|
#############################################################################
|
|
#
|
|
# Authors: Jia Tan
|
|
# Lasse Collin
|
|
#
|
|
#############################################################################
|
|
|
|
name: Windows-MSYS2
|
|
|
|
on:
|
|
push:
|
|
branches: [ master, ci_run ]
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
MSYS2:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
runner: [ windows-latest ]
|
|
sys: [ mingw32, ucrt64, clang64, msys ]
|
|
include:
|
|
- runner: windows-11-arm
|
|
sys: clangarm64
|
|
|
|
# Set the shell to be msys2 as a default to avoid setting it for
|
|
# every individual run command.
|
|
defaults:
|
|
run:
|
|
shell: msys2 {0}
|
|
|
|
runs-on: ${{ matrix.runner }}
|
|
timeout-minutes: 20
|
|
|
|
steps:
|
|
- name: Setup MSYS2
|
|
if: ${{ matrix.sys == 'msys' }}
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: ${{ matrix.sys }}
|
|
update: true
|
|
install: >
|
|
make
|
|
ninja
|
|
autotools
|
|
cmake
|
|
base-devel
|
|
gettext-devel
|
|
gcc
|
|
|
|
- name: Setup MSYS2
|
|
if: ${{ matrix.sys != 'msys' }}
|
|
uses: msys2/setup-msys2@v2
|
|
with:
|
|
msystem: ${{ matrix.sys }}
|
|
update: true
|
|
pacboy: >
|
|
make:p
|
|
ninja:p
|
|
autotools:p
|
|
cmake:p
|
|
toolchain:p
|
|
gettext:p
|
|
|
|
- name: Git configuration
|
|
# Need to explicitly set the shell here since we set the default
|
|
# shell as msys2 earlier. This avoids an extra msys2 dependency on
|
|
# git.
|
|
shell: powershell
|
|
# Avoid Windows line endings. Otherwise test_scripts.sh will fail
|
|
# because the expected output is stored in the test framework as a
|
|
# text file and will not match the output from xzgrep.
|
|
run: git config --global core.autocrlf false
|
|
|
|
- uses: actions/checkout@v7
|
|
|
|
- name: CMake (full, shared)
|
|
run: |
|
|
set -e
|
|
cmake -G Ninja -B b-cmake-full \
|
|
-DBUILD_SHARED_LIBS=ON \
|
|
-DCMAKE_C_FLAGS='-UNDEBUG -g -O2 -pipe' \
|
|
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON \
|
|
${{ startsWith(matrix.sys, 'mingw') && '-DXZ_NLS=OFF' || '' }}
|
|
ninja -C b-cmake-full
|
|
ctest --test-dir b-cmake-full --output-on-failure
|
|
|
|
- name: CMake (small, static)
|
|
if: ${{ matrix.runner == 'windows-latest' }}
|
|
run: |
|
|
set -e
|
|
cmake -G Ninja -B b-cmake-small \
|
|
-DBUILD_SHARED_LIBS=OFF \
|
|
-DCMAKE_C_FLAGS='-UNDEBUG -g -Os -pipe' \
|
|
-DCMAKE_COMPILE_WARNING_AS_ERROR=ON \
|
|
-DXZ_SMALL=ON \
|
|
-DXZ_THREADS=no \
|
|
-DXZ_NLS=OFF
|
|
ninja -C b-cmake-small
|
|
ctest --test-dir b-cmake-small --output-on-failure
|
|
|
|
- name: autogen.sh
|
|
run: ./autogen.sh --no-po4a
|
|
|
|
- name: Autotools (full, shared)
|
|
run: |
|
|
set -e
|
|
mkdir b-autotools-full
|
|
cd b-autotools-full
|
|
../configure \
|
|
--enable-debug \
|
|
--enable-werror \
|
|
--disable-static \
|
|
${{ startsWith(matrix.sys, 'mingw') && '--disable-nls' || '' }}
|
|
make -j"$(nproc)" check
|
|
|
|
- name: Autotools (small, static)
|
|
if: ${{ matrix.runner == 'windows-latest' }}
|
|
run: |
|
|
set -e
|
|
mkdir b-autotools-small
|
|
cd b-autotools-small
|
|
../configure \
|
|
--enable-debug \
|
|
--enable-werror \
|
|
--disable-shared \
|
|
--enable-small \
|
|
--disable-threads \
|
|
--disable-nls \
|
|
CFLAGS='-g -Os'
|
|
make -j"$(nproc)" check
|
|
|
|
# Upload the test logs as artifacts if any step has failed.
|
|
- uses: actions/upload-artifact@v7
|
|
if: failure()
|
|
with:
|
|
name: test-logs-${{ matrix.sys }}
|
|
path: |
|
|
b-cmake-*/Testing/Temporary/
|
|
b-cmake-*/test_*/
|
|
b-autotools-*/tests/*.log
|
|
b-autotools-*/tests/*output
|