mirror of
https://github.com/upx/upx.git
synced 2024-11-23 04:39:59 +00:00
CI and build updates
This commit is contained in:
parent
891dc87064
commit
fc4dcd46db
10
.github/workflows/ci.yml
vendored
10
.github/workflows/ci.yml
vendored
@ -12,8 +12,8 @@ env:
|
|||||||
CMAKE_REQUIRED_QUIET: OFF
|
CMAKE_REQUIRED_QUIET: OFF
|
||||||
DEBIAN_FRONTEND: noninteractive
|
DEBIAN_FRONTEND: noninteractive
|
||||||
UPX_CMAKE_BUILD_FLAGS: --verbose
|
UPX_CMAKE_BUILD_FLAGS: --verbose
|
||||||
# 2023-07-19
|
# 2023-07-20
|
||||||
ZIG_DIST_VERSION: 0.11.0-dev.4009+11695745e
|
ZIG_DIST_VERSION: 0.11.0-dev.4059+17255bed4
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
job-rebuild-and-verify-stubs:
|
job-rebuild-and-verify-stubs:
|
||||||
@ -149,7 +149,7 @@ jobs:
|
|||||||
- name: 'Install brew packages'
|
- name: 'Install brew packages'
|
||||||
if: ${{ matrix.testsuite }}
|
if: ${{ matrix.testsuite }}
|
||||||
run: |
|
run: |
|
||||||
# testsuite needs working "readlink -en" and "sha256sum"
|
# testsuite needs working "readlink -en" and "sha256sum -b"
|
||||||
if ! test -e /usr/local/opt/coreutils/libexec/gnubin/readlink; then
|
if ! test -e /usr/local/opt/coreutils/libexec/gnubin/readlink; then
|
||||||
echo "===== brew leaves:"; brew leaves; echo "===== brew list:"; brew list
|
echo "===== brew leaves:"; brew leaves; echo "===== brew list:"; brew list
|
||||||
# only run "brew update" if needed
|
# only run "brew update" if needed
|
||||||
@ -320,12 +320,12 @@ jobs:
|
|||||||
%RUN_LIB% -out:ucl.lib *.obj
|
%RUN_LIB% -out:ucl.lib *.obj
|
||||||
@REM ===== build zlib =====
|
@REM ===== build zlib =====
|
||||||
cd %BDIR%\zlib
|
cd %BDIR%\zlib
|
||||||
%RUN_CL% -J -O2 -W3 -WX %DEFS% -c %H%\vendor\zlib\*.c
|
%RUN_CL% -J -O2 -W3 -WX %DEFS% -DHAVE_VSNPRINTF -c %H%\vendor\zlib\*.c
|
||||||
%RUN_LIB% -out:zlib.lib *.obj
|
%RUN_LIB% -out:zlib.lib *.obj
|
||||||
@REM ===== build zstd =====
|
@REM ===== build zstd =====
|
||||||
cd %BDIR%\zstd
|
cd %BDIR%\zstd
|
||||||
set s=%H%\vendor\zstd\lib
|
set s=%H%\vendor\zstd\lib
|
||||||
@rem %RUN_CL% -J -O2 -W4 -WX -DDYNAMIC_BMI2=0 -DZSTD_DISABLE_ASM %DEFS% -c %s%\common\*.c %s%\compress\*.c %s%\decompress\*.c
|
@rem %RUN_CL% -J -O2 -W4 -WX %DEFS% -DDYNAMIC_BMI2=0 -DZSTD_DISABLE_ASM -c %s%\common\*.c %s%\compress\*.c %s%\decompress\*.c
|
||||||
@rem %RUN_LIB% -out:zstd.lib *.obj
|
@rem %RUN_LIB% -out:zstd.lib *.obj
|
||||||
@REM ===== build UPX =====
|
@REM ===== build UPX =====
|
||||||
cd %BDIR%\upx
|
cd %BDIR%\upx
|
||||||
|
12
.github/workflows/weekly-ci-alpine-linux.yml
vendored
12
.github/workflows/weekly-ci-alpine-linux.yml
vendored
@ -15,6 +15,7 @@ on:
|
|||||||
env:
|
env:
|
||||||
CMAKE_REQUIRED_QUIET: OFF
|
CMAKE_REQUIRED_QUIET: OFF
|
||||||
DEBIAN_FRONTEND: noninteractive
|
DEBIAN_FRONTEND: noninteractive
|
||||||
|
UPX_TESTSUITE_LEVEL: 2
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
job-alpine-cmake: # uses cmake + make
|
job-alpine-cmake: # uses cmake + make
|
||||||
@ -141,4 +142,15 @@ jobs:
|
|||||||
(cd "upx with space"/build/xtarget/gcc-static/release && DESTDIR="$PWD/Install with cmake" cmake --install .)
|
(cd "upx with space"/build/xtarget/gcc-static/release && DESTDIR="$PWD/Install with cmake" cmake --install .)
|
||||||
(cd "upx with space"/build/xtarget/gcc-static/release && DESTDIR="$PWD/Install with make" make install)
|
(cd "upx with space"/build/xtarget/gcc-static/release && DESTDIR="$PWD/Install with make" make install)
|
||||||
|
|
||||||
|
# test suite
|
||||||
|
- name: ${{ format('Run test suite level {0}', env.UPX_TESTSUITE_LEVEL) }}
|
||||||
|
run: |
|
||||||
|
# use a directory that contains whitespace to detect possible quoting issues
|
||||||
|
git clone --depth=1 https://github.com/upx/upx-testsuite "upx-testsuite with space"
|
||||||
|
export upx_testsuite_SRCDIR="$(readlink -fn "upx-testsuite with space")"
|
||||||
|
testsuite_1="$(readlink -fn "upx with space"/misc/testsuite/upx_testsuite_1.sh)"
|
||||||
|
# testsuite needs bash and working "readlink -en" and "sha256sum -b"
|
||||||
|
apk add bash coreutils
|
||||||
|
(cd "upx with space"/build/xtarget/gcc-static/release && upx_exe=./upx bash "$testsuite_1")
|
||||||
|
|
||||||
# vim:set ts=2 sw=2 et:
|
# vim:set ts=2 sw=2 et:
|
||||||
|
4
.github/workflows/weekly-ci-zigcc.yml
vendored
4
.github/workflows/weekly-ci-zigcc.yml
vendored
@ -8,8 +8,8 @@ on:
|
|||||||
env:
|
env:
|
||||||
CMAKE_REQUIRED_QUIET: OFF
|
CMAKE_REQUIRED_QUIET: OFF
|
||||||
DEBIAN_FRONTEND: noninteractive
|
DEBIAN_FRONTEND: noninteractive
|
||||||
# 2023-07-19
|
# 2023-07-20
|
||||||
ZIG_DIST_VERSION: 0.11.0-dev.4009+11695745e
|
ZIG_DIST_VERSION: 0.11.0-dev.4059+17255bed4
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
job-linux-zigcc: # uses cmake + make
|
job-linux-zigcc: # uses cmake + make
|
||||||
|
@ -371,7 +371,7 @@ endif()
|
|||||||
set(t upx_vendor_zlib)
|
set(t upx_vendor_zlib)
|
||||||
upx_compile_target_debug_with_O2(${t})
|
upx_compile_target_debug_with_O2(${t})
|
||||||
upx_sanitize_target(${t})
|
upx_sanitize_target(${t})
|
||||||
target_compile_definitions(${t} PRIVATE HAVE_STDARG_H=1 HAVE_VSNPRINTF=1)
|
target_compile_definitions(${t} PRIVATE HAVE_VSNPRINTF=1)
|
||||||
if(MSVC_FRONTEND)
|
if(MSVC_FRONTEND)
|
||||||
target_compile_options(${t} PRIVATE -W3 ${warn_WX})
|
target_compile_options(${t} PRIVATE -W3 ${warn_WX})
|
||||||
else()
|
else()
|
||||||
|
@ -100,7 +100,7 @@ Developer quick start
|
|||||||
12) $ cd src # my-upx/upx/src
|
12) $ cd src # my-upx/upx/src
|
||||||
12a) On MacOS: install homebrew (https:://brew.sh), then "brew install coreutils"
|
12a) On MacOS: install homebrew (https:://brew.sh), then "brew install coreutils"
|
||||||
and put <some_prefix>/opt/coreutils/libexec/gnubin into PATH so that
|
and put <some_prefix>/opt/coreutils/libexec/gnubin into PATH so that
|
||||||
"readlink -en" and 'sha256sum' work.
|
"readlink -en" and "sha256sum -b" work.
|
||||||
13) $ make run-testsuite 2>&1 | tee testsuite.log
|
13) $ make run-testsuite 2>&1 | tee testsuite.log
|
||||||
|
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ if check_submodule ucl; then
|
|||||||
fi
|
fi
|
||||||
if check_submodule zlib; then
|
if check_submodule zlib; then
|
||||||
for f in "$rel_top_srcdir"/vendor/zlib/*.c; do
|
for f in "$rel_top_srcdir"/vendor/zlib/*.c; do
|
||||||
run "CC $f" $CC -DHAVE_STDARG_H -DHAVE_VSNPRINTF -DHAVE_UNISTD_H -c "$f"
|
run "CC $f" $CC -DHAVE_UNISTD_H -DHAVE_VSNPRINTF -c "$f"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
if check_submodule zstd; then
|
if check_submodule zstd; then
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#! /usr/bin/env bash
|
#! /usr/bin/env bash
|
||||||
## vim:set ts=4 sw=4 et:
|
## vim:set ts=4 sw=4 et:
|
||||||
set -e; set -o pipefail
|
set -e; set -o pipefail
|
||||||
argv0=$0; argv0abs=$(readlink -en -- "$argv0"); argv0dir=$(dirname "$argv0abs")
|
argv0=$0; argv0abs=$(readlink -fn "$argv0"); argv0dir=$(dirname "$argv0abs")
|
||||||
|
|
||||||
# very first version of the upx-testsuite; requires:
|
# very first version of the upx-testsuite; requires:
|
||||||
# $upx_exe (required, but with convenience fallback "./upx")
|
# $upx_exe (required, but with convenience fallback "./upx")
|
||||||
@ -23,7 +23,8 @@ argv0=$0; argv0abs=$(readlink -en -- "$argv0"); argv0dir=$(dirname "$argv0abs")
|
|||||||
[[ -z $upx_exe && -f ./upx && -x ./upx ]] && upx_exe=./upx # convenience fallback
|
[[ -z $upx_exe && -f ./upx && -x ./upx ]] && upx_exe=./upx # convenience fallback
|
||||||
if [[ -z $upx_exe ]]; then echo "UPX-ERROR: please set \$upx_exe"; exit 1; fi
|
if [[ -z $upx_exe ]]; then echo "UPX-ERROR: please set \$upx_exe"; exit 1; fi
|
||||||
if [[ ! -f $upx_exe ]]; then echo "UPX-ERROR: file '$upx_exe' does not exist"; exit 1; fi
|
if [[ ! -f $upx_exe ]]; then echo "UPX-ERROR: file '$upx_exe' does not exist"; exit 1; fi
|
||||||
upx_exe=$(readlink -en -- "$upx_exe") # make absolute
|
upx_exe=$(readlink -fn "$upx_exe") # make absolute
|
||||||
|
[[ -f $upx_exe ]] || exit 1
|
||||||
upx_run=()
|
upx_run=()
|
||||||
if [[ -n $upx_exe_runner ]]; then
|
if [[ -n $upx_exe_runner ]]; then
|
||||||
# usage examples:
|
# usage examples:
|
||||||
@ -57,14 +58,16 @@ if [[ ! -d "$upx_testsuite_SRCDIR/files/packed" ]]; then
|
|||||||
echo " and set (export) the envvar upx_testsuite_SRCDIR to the local file path"
|
echo " and set (export) the envvar upx_testsuite_SRCDIR to the local file path"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
upx_testsuite_SRCDIR=$(readlink -en -- "$upx_testsuite_SRCDIR") # make absolute
|
upx_testsuite_SRCDIR=$(readlink -fn "$upx_testsuite_SRCDIR") # make absolute
|
||||||
|
[[ -d $upx_testsuite_SRCDIR ]] || exit 1
|
||||||
|
|
||||||
# upx_testsuite_BUILDDIR
|
# upx_testsuite_BUILDDIR
|
||||||
if [[ -z $upx_testsuite_BUILDDIR ]]; then
|
if [[ -z $upx_testsuite_BUILDDIR ]]; then
|
||||||
upx_testsuite_BUILDDIR="./tmp-upx-testsuite"
|
upx_testsuite_BUILDDIR="./tmp-upx-testsuite"
|
||||||
fi
|
fi
|
||||||
mkdir -p "$upx_testsuite_BUILDDIR" || exit 1
|
mkdir -p "$upx_testsuite_BUILDDIR" || exit 1
|
||||||
upx_testsuite_BUILDDIR=$(readlink -en -- "$upx_testsuite_BUILDDIR") # make absolute
|
upx_testsuite_BUILDDIR=$(readlink -fn "$upx_testsuite_BUILDDIR") # make absolute
|
||||||
|
[[ -d $upx_testsuite_BUILDDIR ]] || exit 1
|
||||||
|
|
||||||
cd / && cd "$upx_testsuite_BUILDDIR" || exit 1
|
cd / && cd "$upx_testsuite_BUILDDIR" || exit 1
|
||||||
|
|
||||||
@ -137,7 +140,7 @@ testsuite_split_f() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
testsuite_check_sha() {
|
testsuite_check_sha() {
|
||||||
(cd "$1" && sha256sum -b -- */* | LC_ALL=C sort -k2) > $1/.sha256sums.current
|
(cd "$1" && sha256sum -b [0-9a-zA-Z]*/* | LC_ALL=C sort -k2) > $1/.sha256sums.current
|
||||||
echo
|
echo
|
||||||
cat $1/.sha256sums.current
|
cat $1/.sha256sums.current
|
||||||
if ! cmp -s $1/.sha256sums.expected $1/.sha256sums.current; then
|
if ! cmp -s $1/.sha256sums.expected $1/.sha256sums.current; then
|
||||||
@ -152,7 +155,7 @@ testsuite_check_sha() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
testsuite_check_sha_decompressed() {
|
testsuite_check_sha_decompressed() {
|
||||||
(cd "$1" && sha256sum -b -- */* | LC_ALL=C sort -k2) > $1/.sha256sums.current
|
(cd "$1" && sha256sum -b [0-9a-zA-Z]*/* | LC_ALL=C sort -k2) > $1/.sha256sums.current
|
||||||
if ! cmp -s $1/.sha256sums.expected $1/.sha256sums.current; then
|
if ! cmp -s $1/.sha256sums.expected $1/.sha256sums.current; then
|
||||||
cat $1/.sha256sums.current
|
cat $1/.sha256sums.current
|
||||||
echo "UPX-ERROR: FATAL: $1 FAILED: decompressed checksum mismatch"
|
echo "UPX-ERROR: FATAL: $1 FAILED: decompressed checksum mismatch"
|
||||||
@ -301,12 +304,12 @@ fi
|
|||||||
# recreate checksums from current version for an easy update in case of changes
|
# recreate checksums from current version for an easy update in case of changes
|
||||||
recreate_expected_sha256sums .sha256sums.recreate
|
recreate_expected_sha256sums .sha256sums.recreate
|
||||||
|
|
||||||
testsuite_header "UPX testsuite summary"
|
testsuite_header "UPX testsuite summary: level $UPX_TESTSUITE_LEVEL"
|
||||||
run_upx --version-short
|
run_upx --version-short
|
||||||
echo
|
echo
|
||||||
echo "upx_exe='$upx_exe'"
|
echo "upx_exe='$upx_exe'"
|
||||||
if [[ -f $upx_exe ]]; then
|
ls -l "$upx_exe"
|
||||||
ls -l "$upx_exe"
|
if command -v file >/dev/null; then
|
||||||
file "$upx_exe" || true
|
file "$upx_exe" || true
|
||||||
fi
|
fi
|
||||||
echo "upx_run='${upx_run[*]}'"
|
echo "upx_run='${upx_run[*]}'"
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "compress.h"
|
#include "compress.h"
|
||||||
#include "../util/membuffer.h"
|
#include "../util/membuffer.h"
|
||||||
// NOLINTBEGIN(clang-analyzer-optin.performance.Padding)
|
// NOLINTBEGIN(clang-analyzer-optin.performance.Padding)
|
||||||
|
#define ZLIB_CONST 1
|
||||||
#include <zlib/zlib.h>
|
#include <zlib/zlib.h>
|
||||||
#include <zlib/deflate.h>
|
#include <zlib/deflate.h>
|
||||||
// NOLINTEND(clang-analyzer-optin.performance.Padding)
|
// NOLINTEND(clang-analyzer-optin.performance.Padding)
|
||||||
@ -101,7 +102,7 @@ int upx_zlib_compress(const upx_bytep src, unsigned src_len, upx_bytep dst, unsi
|
|||||||
z_stream s;
|
z_stream s;
|
||||||
s.zalloc = (alloc_func) nullptr;
|
s.zalloc = (alloc_func) nullptr;
|
||||||
s.zfree = (free_func) nullptr;
|
s.zfree = (free_func) nullptr;
|
||||||
s.next_in = ACC_UNCONST_CAST(upx_bytep, src);
|
s.next_in = src;
|
||||||
s.avail_in = src_len;
|
s.avail_in = src_len;
|
||||||
s.next_out = dst;
|
s.next_out = dst;
|
||||||
s.avail_out = *dst_len;
|
s.avail_out = *dst_len;
|
||||||
@ -150,7 +151,7 @@ int upx_zlib_decompress(const upx_bytep src, unsigned src_len, upx_bytep dst, un
|
|||||||
z_stream s;
|
z_stream s;
|
||||||
s.zalloc = (alloc_func) nullptr;
|
s.zalloc = (alloc_func) nullptr;
|
||||||
s.zfree = (free_func) nullptr;
|
s.zfree = (free_func) nullptr;
|
||||||
s.next_in = ACC_UNCONST_CAST(upx_bytep, src);
|
s.next_in = src;
|
||||||
s.avail_in = src_len;
|
s.avail_in = src_len;
|
||||||
s.next_out = dst;
|
s.next_out = dst;
|
||||||
s.avail_out = *dst_len;
|
s.avail_out = *dst_len;
|
||||||
|
Loading…
Reference in New Issue
Block a user