mirror of
				https://github.com/upx/upx
				synced 2025-10-19 23:42:44 +08:00 
			
		
		
		
	![dependabot[bot]](/assets/img/avatar_default.png) 0192b0b7e4
			
		
	
	
		0192b0b7e4
		
			
		
	
	
	
	
		
			
			Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
		
			
				
	
	
		
			129 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # Copyright (C) Markus Franz Xaver Johannes Oberhumer
 | |
| # CC CompilationCheck: test zigcc
 | |
| 
 | |
| # build with "zig cc"; see https://ziglang.org/download/
 | |
| 
 | |
| name: 'Weekly CI CC - zigcc'
 | |
| on:
 | |
|   schedule: [cron: '40 2 * * 3'] # run weekly Wednesday 02:40 UTC
 | |
|   workflow_dispatch:
 | |
| env:
 | |
|   CMAKE_REQUIRED_QUIET: OFF
 | |
|   DEBIAN_FRONTEND: noninteractive
 | |
|   # 2023-09-05
 | |
|   ZIG_DIST_VERSION: 0.12.0-dev.280+64d03faae
 | |
| 
 | |
| jobs:
 | |
|   job-linux-zigcc: # uses cmake + make
 | |
|     if: github.repository_owner == 'upx'
 | |
|     strategy:
 | |
|       fail-fast: false
 | |
|       matrix:
 | |
|         include:
 | |
|           - { zig_target: aarch64-linux-musl }
 | |
|           - { zig_target: aarch64-linux-musl, zig_pic: -fPIE }
 | |
|           - { zig_target: aarch64-macos-none }
 | |
|           - { zig_target: aarch64-macos.11.0-none }
 | |
|           - { zig_target: aarch64-macos.12.0-none }
 | |
|           - { zig_target: aarch64-macos.13.0-none }
 | |
|           - { zig_target: aarch64-windows-gnu }
 | |
|           - { zig_target: arm-linux-musleabihf }
 | |
|           - { zig_target: arm-linux-musleabihf, zig_pic: -fPIE }
 | |
|           - { zig_target: i386-linux-musl }
 | |
|           - { zig_target: i386-linux-musl, zig_pic: -fPIE }
 | |
|           - { zig_target: i386-windows-gnu }
 | |
|           - { zig_target: mips-linux-musl }
 | |
|           - { zig_target: mipsel-linux-musl }
 | |
|           - { zig_target: powerpc-linux-musl }
 | |
|           - { zig_target: powerpc64-linux-musl }
 | |
|           - { zig_target: powerpc64le-linux-musl }
 | |
|           - { zig_target: x86_64-linux-musl }
 | |
|           - { zig_target: x86_64-linux-musl, zig_pic: -fPIE }
 | |
|           - { zig_target: x86_64-macos-none }
 | |
|           - { zig_target: x86_64-macos.11.0-none }
 | |
|           - { zig_target: x86_64-macos.12.0-none }
 | |
|           - { zig_target: x86_64-macos.13.0-none }
 | |
|           - { zig_target: x86_64-windows-gnu }
 | |
|     name: ${{ format('zigcc {0} {1}', matrix.zig_target, matrix.zig_pic) }}
 | |
|     runs-on: ubuntu-latest
 | |
|     container: 'alpine:3.18' # older versions such as alpine:3.12 also work; no-container also works
 | |
|     env:
 | |
|       # for zig-cc wrapper scripts (see below):
 | |
|       ZIG_CPPFLAGS: -DUPX_DOCTEST_CONFIG_MULTITHREADING
 | |
|       ZIG_FLAGS: ${{ matrix.zig_flags }}
 | |
|       ZIG_PIC: ${{ matrix.zig_pic }}
 | |
|       ZIG_TARGET: ${{ matrix.zig_target }}
 | |
|     steps:
 | |
|       - name: 'Install Alpine Linux container packages'
 | |
|         if: ${{ job.container }}
 | |
|         shell: sh
 | |
|         run: |
 | |
|           apk update && apk upgrade && apk add bash cmake file git make tar xz
 | |
|           # set PATH like in Ubuntu
 | |
|           echo "PATH=$HOME/.local/bin:$PATH" >> $GITHUB_ENV
 | |
|           # this seems to be needed when running in a container (beause of UID mismatch??)
 | |
|           git config --global --add safe.directory '*'          
 | |
|       - name: 'Check out code'
 | |
|         uses: actions/checkout@v4
 | |
|         with: { submodules: true }
 | |
|       - name: ${{ format('Install Zig {0}', env.ZIG_DIST_VERSION) }}
 | |
|         shell: bash
 | |
|         run: |
 | |
|           # GitHub Actions magic: set "UPX_GITREV_SHORT" environment value for use in steps below
 | |
|           rev=$(git rev-parse --short=7 HEAD)
 | |
|           echo "UPX_GITREV_SHORT=$rev" >> $GITHUB_ENV
 | |
|           # update ZIG_TARGET (i386 => x86)
 | |
|           ZIG_TARGET=${ZIG_TARGET/i386-/x86-}
 | |
|           echo "ZIG_TARGET=$ZIG_TARGET" >> $GITHUB_ENV
 | |
|           # install zig; note that ~/.local/bin is included in the default $PATH on Ubuntu
 | |
|           mkdir -p -v ~/.local/bin
 | |
|           cd ~/.local/bin
 | |
|           ZIG_DIST_NAME=zig-linux-x86_64-${ZIG_DIST_VERSION}
 | |
|           wget -q https://ziglang.org/builds/${ZIG_DIST_NAME}.tar.xz
 | |
|           ls -l ${ZIG_DIST_NAME}.tar.xz
 | |
|           tar -xoJf ${ZIG_DIST_NAME}.tar.xz
 | |
|           rm ${ZIG_DIST_NAME}.tar.xz
 | |
|           ln -s -v ${ZIG_DIST_NAME}/zig zig
 | |
|           #echo "PATH=$PATH" && which zig
 | |
|           echo -n 'zig version: '; zig version
 | |
|           # create wrapper scripts (needed for CMake)
 | |
|           echo -e '#!/bin/sh\nexec zig ar "$@"' > zig-ar
 | |
|           echo -e '#!/bin/sh\nexec zig cc  -target $ZIG_TARGET $ZIG_PIC $ZIG_FLAGS $ZIG_CPPFLAGS $ZIG_CFLAGS   "$@"' > zig-cc
 | |
|           echo -e '#!/bin/sh\nexec zig c++ -target $ZIG_TARGET $ZIG_PIC $ZIG_FLAGS $ZIG_CPPFLAGS $ZIG_CXXFLAGS "$@"' > zig-cxx
 | |
|           echo -e '#!/bin/sh\nexec zig ranlib "$@"' > zig-ranlib
 | |
|           chmod +x zig-ar zig-cc zig-cxx zig-ranlib
 | |
|           ls -la; head zig-ar zig-cc zig-cxx zig-ranlib          
 | |
|       - name: ${{ format('Build Release with zig-cc -target {0} {1}', env.ZIG_TARGET, env.ZIG_PIC) }}
 | |
|         run: |
 | |
|           mkdir -p build/zig/${ZIG_TARGET}${ZIG_PIC}/release
 | |
|           cd       build/zig/${ZIG_TARGET}${ZIG_PIC}/release
 | |
|           cmake ../../../.. -DCMAKE_BUILD_TYPE=Release -DCMAKE_AR=$HOME/.local/bin/zig-ar -DCMAKE_C_COMPILER=zig-cc -DCMAKE_CXX_COMPILER=zig-cxx -DCMAKE_RANLIB=$HOME/.local/bin/zig-ranlib $EXTRA_CMAKE_CONFIG_FLAGS_RELEASE
 | |
|           cmake --build . --config Release --parallel --verbose
 | |
|           file ./upx*          
 | |
|       - name: ${{ format('Build Debug with zig-cc -target {0} {1}', env.ZIG_TARGET, env.ZIG_PIC) }}
 | |
|         run: |
 | |
|           mkdir -p build/zig/${ZIG_TARGET}${ZIG_PIC}/debug
 | |
|           cd       build/zig/${ZIG_TARGET}${ZIG_PIC}/debug
 | |
|           cmake ../../../.. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_AR=$HOME/.local/bin/zig-ar -DCMAKE_C_COMPILER=zig-cc -DCMAKE_CXX_COMPILER=zig-cxx -DCMAKE_RANLIB=$HOME/.local/bin/zig-ranlib $EXTRA_CMAKE_CONFIG_FLAGS_DEBUG
 | |
|           cmake --build . --config Debug --parallel --verbose
 | |
|           file ./upx*          
 | |
|       - name: ${{ format('Make artifact from upx-{0}-{1}', github.ref_name, env.UPX_GITREV_SHORT) }}
 | |
|         shell: bash
 | |
|         run: |
 | |
|           N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-weekly-ci-zigcc-${{ matrix.zig_target }}${ZIG_PIC}" | sed 's/[^0-9a-zA-Z_.-]/-/g')
 | |
|           mkdir -p "tmp/artifact/$N"
 | |
|           (cd build && shopt -s nullglob && cp -ai --parents */upx{,.exe} */*/*/upx{,.exe} "../tmp/artifact/$N")
 | |
|           (cd tmp/artifact && tar --sort=name -czf "$N.tar.gz" "$N" && rm -rf "./$N")
 | |
|           # GitHub Actions magic: set "artifact_name" environment value for use in next step
 | |
|           echo "artifact_name=$N" >> $GITHUB_ENV          
 | |
|       - name: ${{ format('Upload artifact {0}', env.artifact_name) }}
 | |
|         uses: actions/upload-artifact@v3
 | |
|         with:
 | |
|           name: ${{ env.artifact_name }}
 | |
|           path: tmp/artifact
 | |
|       - name: 'Run install tests'
 | |
|         if: ${{ contains(matrix.zig_target, '-linux') }}
 | |
|         run: |
 | |
|           (cd build/zig/${ZIG_TARGET}${ZIG_PIC}/release && DESTDIR=$PWD/Install-with-cmake cmake --install .)
 | |
|           (cd build/zig/${ZIG_TARGET}${ZIG_PIC}/release && DESTDIR=$PWD/Install-with-make  make install)          
 |