diff --git a/.github/workflows/windows-artifacts.yml b/.github/workflows/windows-artifacts.yml index 9b74969d3..4c79c9420 100644 --- a/.github/workflows/windows-artifacts.yml +++ b/.github/workflows/windows-artifacts.yml @@ -2,7 +2,7 @@ name: windows-artifacts on: push: - branches: [ test_artifacts, win_artifacts ] + branches: [ test_artifacts, win_artifacts, release ] release: types: - published @@ -11,6 +11,8 @@ permissions: read-all jobs: windows-artifacts: + permissions: + contents: write # to fetch code and upload artifacts # see https://ariya.io/2020/07/on-github-actions-with-msys2 runs-on: windows-latest # see https://github.com/msys2/setup-msys2 @@ -27,7 +29,7 @@ jobs: - uses: msys2/setup-msys2@61f9e5e925871ba6c9e3e8da24ede83ea27fa91f # tag=v2.27.0 with: msystem: ${{ matrix.msystem }} - install: make zlib git p7zip mingw-w64-${{matrix.env}}-gcc + install: make zlib p7zip git mingw-w64-${{matrix.env}}-gcc update: true - name: display versions @@ -37,22 +39,36 @@ jobs: - name: Building zlib to static link run: | - git clone --depth 1 --branch v1.2.11 https://github.com/madler/zlib + git clone --depth 1 --branch v1.3.1 https://github.com/madler/zlib make -C zlib -f win32/Makefile.gcc libz.a - name: Building zstd programs run: | - CPPFLAGS=-I../zlib LDFLAGS=../zlib/libz.a make -j allzstd MOREFLAGS=-static V=1 + CPPFLAGS=-I../zlib LDLIBS=../zlib/libz.a LDFLAGS=-static make -j allzstd V=1 - name: Create artifacts run: | ./lib/dll/example/build_package.bat || exit 1 mv bin/ zstd-${{ github.ref_name }}-${{matrix.ziparch}}/ - 7z a -tzip -mx9 zstd-${{ github.ref_name }}-${{matrix.ziparch}}.zip zstd-${{ github.ref_name }}-${{matrix.ziparch}}/ - cd .. - - name: Publish zstd-$VERSION-${{matrix.ziparch}}.zip + - name: Publish zstd-$VERSION-${{matrix.ziparch}}.zip for manual inspection uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # tag=v4.3.1 with: - path: ${{ github.workspace }}/zstd-${{ github.ref_name }}-${{matrix.ziparch}}.zip - name: zstd-${{ github.ref_name }}-${{matrix.ziparch}}.zip + compression-level: 9 # maximum compression + if-no-files-found: error # defaults to `warn` + path: ${{ github.workspace }}/zstd-${{ github.ref_name }}-${{matrix.ziparch}}/ + name: zstd-${{ github.ref_name }}-${{matrix.ziparch}} + + - name: Package artifact for upload + run: | + 7z a -tzip -mx9 "$(cygpath -u '${{ github.workspace }}/zstd-${{ github.ref_name }}-${{ matrix.ziparch }}.zip')" "$(cygpath -u '${{ github.workspace }}/zstd-${{ github.ref_name }}-${{ matrix.ziparch }}')" + + - name: Upload release asset + if: github.event_name == 'release' + shell: pwsh + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release upload "${{ github.ref_name }}" "$env:GITHUB_WORKSPACE/zstd-${{ github.ref_name }}-${{ matrix.ziparch }}.zip" --clobber + + diff --git a/lib/dll/example/build_package.bat b/lib/dll/example/build_package.bat index 65ce367c2..5a03bdf25 100644 --- a/lib/dll/example/build_package.bat +++ b/lib/dll/example/build_package.bat @@ -1,30 +1,36 @@ -@ECHO OFF -MKDIR bin\dll bin\static bin\example bin\include -SET CpyError= -COPY tests\fullbench.c bin\example\ || (SET CpyError=%CpyError% tests\fullbench.c) -COPY programs\datagen.c bin\example\ || (SET CpyError=%CpyError% programs\datagen.c) -COPY programs\datagen.h bin\example\ || (SET CpyError=%CpyError% programs\datagen.h) -COPY programs\util.h bin\example\ || (SET CpyError=%CpyError% programs\util.h) -COPY programs\platform.h bin\example\ || (SET CpyError=%CpyError% programs\platform.h) -COPY lib\common\mem.h bin\example\ || (SET CpyError=%CpyError% lib\common\mem.h) -COPY lib\common\zstd_internal.h bin\example\ || (SET CpyError=%CpyError% lib\common\zstd_internal.h) -COPY lib\common\error_private.h bin\example\ || (SET CpyError=%CpyError% lib\common\error_private.h) -COPY lib\common\xxhash.h bin\example\ || (SET CpyError=%CpyError% lib\common\xxhash.h) -COPY lib\libzstd.a bin\static\libzstd_static.lib || (SET CpyError=%CpyError% lib\libzstd.a) -COPY lib\dll\libzstd.* bin\dll\ || (SET CpyError=%CpyError% lib\dll\libzstd.*) -COPY lib\dll\example\Makefile bin\example\ || (SET CpyError=%CpyError% lib\dll\example\Makefile) -COPY lib\dll\example\fullbench-dll.* bin\example\ || (SET CpyError=%CpyError% lib\dll\example\fullbench) -COPY lib\dll\example\README.md bin\ || (SET CpyError=%CpyError% lib\dll\example\README.md) -COPY lib\zstd.h bin\include\ || (SET CpyError=%CpyError% lib\zstd.h) -COPY lib\zstd_errors.h bin\include\ || (SET CpyError=%CpyError% lib\zstd_errors.h) -COPY lib\dictBuilder\zdict.h bin\include\ || (SET CpyError=%CpyError% lib\dictBuilder\zdict.h) -COPY programs\zstd.exe bin\zstd.exe || (SET CpyError=%CpyError% programs\zstd.exe) +@echo off +setlocal -IF "[%CpyError%]" == "[]" goto :EOF +rem Create required directories. +mkdir bin\dll bin\static bin\example bin\include -:error -echo Failed with error #%errorlevel%: unable to copy following files: -echo %CpyError% -exit /b %errorlevel% +rem Copy files using a subroutine. Exits immediately on failure. +call :copyFile "tests\fullbench.c" "bin\example\" +call :copyFile "programs\datagen.c" "bin\example\" +call :copyFile "programs\datagen.h" "bin\example\" +call :copyFile "programs\util.h" "bin\example\" +call :copyFile "programs\platform.h" "bin\example\" +call :copyFile "lib\common\mem.h" "bin\example\" +call :copyFile "lib\common\zstd_internal.h" "bin\example\" +call :copyFile "lib\common\error_private.h" "bin\example\" +call :copyFile "lib\common\xxhash.h" "bin\example\" +call :copyFile "lib\libzstd.a" "bin\static\libzstd_static.lib" +call :copyFile "lib\dll\libzstd.*" "bin\dll\" +call :copyFile "lib\dll\example\Makefile" "bin\example\" +call :copyFile "lib\dll\example\fullbench-dll.*" "bin\example\" +call :copyFile "lib\dll\example\README.md" "bin\" +call :copyFile "lib\zstd.h" "bin\include\" +call :copyFile "lib\zstd_errors.h" "bin\include\" +call :copyFile "lib\zdict.h" "bin\include\" +call :copyFile "programs\zstd.exe" "bin\zstd.exe" -:EOF +endlocal +exit /b 0 + +:copyFile +copy "%~1" "%~2" +if errorlevel 1 ( + echo Failed to copy "%~1" + exit 1 +) +exit /b