all: CI and misc updates

This commit is contained in:
Markus F.X.J. Oberhumer 2023-06-30 01:20:48 +02:00
parent ece5af2895
commit b75e7687f4
16 changed files with 192 additions and 80 deletions

View File

@ -11,8 +11,8 @@ on: [push, workflow_dispatch]
env: env:
DEBIAN_FRONTEND: noninteractive DEBIAN_FRONTEND: noninteractive
UPX_CMAKE_BUILD_FLAGS: --verbose UPX_CMAKE_BUILD_FLAGS: --verbose
# 2023-06-27 # 2023-06-29
ZIG_DIST_VERSION: 0.11.0-dev.3859+88284c124 ZIG_DIST_VERSION: 0.11.0-dev.3886+0c1bfe271
jobs: jobs:
job-rebuild-and-verify-stubs: job-rebuild-and-verify-stubs:
@ -144,6 +144,7 @@ jobs:
run: | run: |
# testsuite needs working "readlink -en" and "sha256sum" # testsuite needs working "readlink -en" and "sha256sum"
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
brew update brew update
brew install coreutils brew install coreutils
fi fi

View File

@ -58,8 +58,10 @@ jobs:
name: ${{ env.artifact_name }} name: ${{ env.artifact_name }}
path: 'upx*/build/*/upx' path: 'upx*/build/*/upx'
job-alpine-by-hand: # uses shell job-alpine-by-hand: # uses a POSIX-compliant shell
# and also uses a subdirectory "upx with space" in order to detect possible quoting issues # ...and also uses a subdirectory "upx with space" in order to detect possible quoting issues
# ...and also uses ccache as we are running the same build-script again and again
if: ${{ true }}
strategy: { matrix: { container: ['alpine:3.9','alpine:edge'] } } strategy: { matrix: { container: ['alpine:3.9','alpine:edge'] } }
name: ${{ format('gcc by-hand {0}', matrix.container) }} name: ${{ format('gcc by-hand {0}', matrix.container) }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -67,7 +69,15 @@ jobs:
steps: steps:
- name: ${{ format('Install packages {0}', matrix.container) }} - name: ${{ format('Install packages {0}', matrix.container) }}
run: | run: |
apk update && apk upgrade && apk add bash dash g++ git mksh zsh # install ccache, g++, git and various POSIX shells
shells="bash dash loksh mksh zsh"
case ${{ matrix.container }} in
*:edge) shells="$shells oksh yash" ;;
esac
echo "installing shells: $shells"
apk update && apk upgrade && apk add ccache g++ git $shells
# enable ccache
echo -e "CC=ccache gcc\nCXX=ccache g++ -std=gnu++17" >> $GITHUB_ENV
# this seems to be needed when running in a container (beause of UID mismatch??) # this seems to be needed when running in a container (beause of UID mismatch??)
git config --global --add safe.directory '*' git config --global --add safe.directory '*'
- name: 'Check out code' - name: 'Check out code'
@ -77,11 +87,45 @@ jobs:
path: 'upx with space' path: 'upx with space'
- name: 'Build by-hand with bash' - name: 'Build by-hand with bash'
run: 'bash "./upx with space/misc/scripts/build_upx_by_hand.sh"' run: 'bash "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with bash --posix'
run: 'bash --posix "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with busybox ash'
run: 'busybox ash "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with busybox sh' - name: 'Build by-hand with busybox sh'
run: 'busybox sh "./upx with space/misc/scripts/build_upx_by_hand.sh"' run: 'busybox sh "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with dash' - name: 'Build by-hand with dash'
run: 'dash "./upx with space/misc/scripts/build_upx_by_hand.sh"' run: 'dash "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with loksh'
run: 'ksh "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with loksh -o posix'
run: 'ksh -o posix "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with loksh -o sh'
run: 'ksh -o sh "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with mksh' - name: 'Build by-hand with mksh'
run: 'mksh "./upx with space/misc/scripts/build_upx_by_hand.sh"' run: 'mksh "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with mksh -o posix'
run: 'mksh -o posix "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with mksh -o sh'
run: 'mksh -o sh "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with oksh'
if: ${{ contains(matrix.container, ':edge') }}
run: 'oksh "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with oksh -o posix'
if: ${{ contains(matrix.container, ':edge') }}
run: 'oksh -o posix "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with oksh -o sh'
if: ${{ contains(matrix.container, ':edge') }}
run: 'oksh -o sh "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with yash'
if: ${{ contains(matrix.container, ':edge') }}
run: 'yash "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with zsh' - name: 'Build by-hand with zsh'
run: 'zsh "./upx with space/misc/scripts/build_upx_by_hand.sh"' run: 'zsh "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with zsh --emulate ksh'
run: 'zsh --emulate ksh "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with zsh --emulate sh'
run: 'zsh --emulate sh "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Show ccache stats'
run: |
ccache -s
ccache -p

View File

@ -8,8 +8,8 @@ on:
workflow_dispatch: workflow_dispatch:
env: env:
# 2023-06-27 # 2023-06-29
ZIG_DIST_VERSION: 0.11.0-dev.3859+88284c124 ZIG_DIST_VERSION: 0.11.0-dev.3886+0c1bfe271
jobs: jobs:
job-linux-zigcc: # uses cmake + make job-linux-zigcc: # uses cmake + make

View File

@ -416,10 +416,6 @@ endif() # UPX_CONFIG_CMAKE_DISABLE_INSTALL
# finally print some info about the build configuration # finally print some info about the build configuration
#*********************************************************************** #***********************************************************************
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/maint/make/CMakeLists.maint.txt")
include("${CMAKE_CURRENT_SOURCE_DIR}/maint/make/CMakeLists.maint.txt")
endif()
function(print_var) function(print_var)
foreach(v ${ARGV}) foreach(v ${ARGV})
if(${v}) if(${v})
@ -427,6 +423,11 @@ function(print_var)
endif() endif()
endforeach() endforeach()
endfunction() endfunction()
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/maint/make/CMakeLists.maint.txt")
include("${CMAKE_CURRENT_SOURCE_DIR}/maint/make/CMakeLists.maint.txt")
endif()
print_var(CMAKE_VERSION UPX_CONFIG_CMAKE_MINIMUM_REQUIRED_VERSION) print_var(CMAKE_VERSION UPX_CONFIG_CMAKE_MINIMUM_REQUIRED_VERSION)
if(NOT UPX_CONFIG_CMAKE_DISABLE_PRINT_INFO) if(NOT UPX_CONFIG_CMAKE_DISABLE_PRINT_INFO)
print_var(CMAKE_HOST_SYSTEM_NAME CMAKE_HOST_SYSTEM_VERSION) print_var(CMAKE_HOST_SYSTEM_NAME CMAKE_HOST_SYSTEM_VERSION)

View File

@ -6,10 +6,10 @@ argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")"
# create the image from Dockerfile # create the image from Dockerfile
# using a rootless Podman container # using a rootless Podman container
# NOTE: this image is based on rebuild-stubs-with-podman/upx-stubtools-20221212-v5, # NOTE: this image is based on rebuild-stubs-with-podman/upx-stubtools-20221212-v6,
# so you have to create that image first # so you have to create that image first
# WARNING: we install many packages, so the resulting image needs A LOT of disk space! # WARNING: we install many packages, so the resulting image needs A LOT of disk space!
image=upx-cross-compile-20230115-v3 image=upx-cross-compile-20230115-v4
podman build -t "$image" -f "$argv0dir/Dockerfile" "$argv0dir" podman build -t "$image" -f "$argv0dir/Dockerfile" "$argv0dir"

View File

@ -6,7 +6,7 @@ argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")"
# list all system packages that are installed in the image # list all system packages that are installed in the image
# using a rootless Podman container # using a rootless Podman container
image=upx-cross-compile-20230115-v3 image=upx-cross-compile-20230115-v4
podman image list "$image" podman image list "$image"
echo echo

View File

@ -6,7 +6,7 @@ argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")"
# run an interactive shell in the image # run an interactive shell in the image
# using a rootless Podman container # using a rootless Podman container
image=upx-cross-compile-20230115-v3 image=upx-cross-compile-20230115-v4
flags=( --read-only --rm --pull=never ) flags=( --read-only --rm --pull=never )
flags+=( --cap-drop=all ) # drop all capabilities flags+=( --cap-drop=all ) # drop all capabilities
@ -23,6 +23,8 @@ if [[ 1 == 1 ]]; then
# INFO: SELinux users *may* have to add ":z" to the volume mount flags; check the docs! # INFO: SELinux users *may* have to add ":z" to the volume mount flags; check the docs!
flags+=( -v "${argv0dir}/../..:/home/upx/src/upx" ) flags+=( -v "${argv0dir}/../..:/home/upx/src/upx" )
flags+=( -w /home/upx/src/upx ) # set working directory flags+=( -w /home/upx/src/upx ) # set working directory
flags+=( --tmpfs /home/upx/.cache:rw,exec ) # mount a writeable tmpfs
flags+=( --tmpfs /home/upx/.local:rw,exec ) # mount a writeable tmpfs
else else
# run as user root 0:0 # run as user root 0:0
# ONLY FOR DEBUGGING THE IMAGE # ONLY FOR DEBUGGING THE IMAGE

View File

@ -1,8 +1,8 @@
# NOTE: this image is based on rebuild-stubs-with-podman/upx-stubtools-20221212-v5, # NOTE: this image is based on rebuild-stubs-with-podman/upx-stubtools-20221212-v6,
# so you have to create that image first # so you have to create that image first
# WARNING: we install many packages, so the resulting image needs A LOT of disk space! # WARNING: we install many packages, so the resulting image needs A LOT of disk space!
FROM localhost/upx-stubtools-20221212-v5 FROM localhost/upx-stubtools-20221212-v6
ENV UPX_CONTAINER_IMAGE_NAME=upx-cross-compile-20230115-v3 ENV UPX_CONTAINER_IMAGE_NAME=upx-cross-compile-20230115-v4
ARG DEBIAN_FRONTEND=noninteractive ARG DEBIAN_FRONTEND=noninteractive
USER root USER root

View File

@ -15,6 +15,7 @@ fi
# go to upx top-level directory # go to upx top-level directory
cd "$argv0dir/../.." || exit 1 cd "$argv0dir/../.." || exit 1
pwd pwd
test -f doc/upx.pod || exit 1 # sanity check
test -f src/version.h || exit 1 # sanity check test -f src/version.h || exit 1 # sanity check
function run_config_and_build { function run_config_and_build {

View File

@ -41,9 +41,11 @@ ii binutils-sparc64-linux-gnu 2.38-4ubuntu2.2
ii binutils-x86-64-linux-gnu 2.38-4ubuntu2.2 amd64 GNU binary utilities, for x86-64-linux-gnu target ii binutils-x86-64-linux-gnu 2.38-4ubuntu2.2 amd64 GNU binary utilities, for x86-64-linux-gnu target
ii binutils-x86-64-linux-gnux32 2.38-4ubuntu2.2 amd64 GNU binary utilities, for x86-64-linux-gnux32 target ii binutils-x86-64-linux-gnux32 2.38-4ubuntu2.2 amd64 GNU binary utilities, for x86-64-linux-gnux32 target
ii bsdutils 1:2.37.2-4ubuntu3 amd64 basic utilities from 4.4BSD-Lite ii bsdutils 1:2.37.2-4ubuntu3 amd64 basic utilities from 4.4BSD-Lite
ii busybox 1:1.30.1-7ubuntu3 amd64 Tiny utilities for small and embedded systems
ii bzip2 1.0.8-5build1 amd64 high-quality block-sorting file compressor - utilities ii bzip2 1.0.8-5build1 amd64 high-quality block-sorting file compressor - utilities
ii ca-certificates 20230311ubuntu0.22.04.1 all Common CA certificates ii ca-certificates 20230311ubuntu0.22.04.1 all Common CA certificates
ii cabextract 1.9-3 amd64 Microsoft Cabinet file unpacker ii cabextract 1.9-3 amd64 Microsoft Cabinet file unpacker
ii ccache 4.5.1-1 amd64 Compiler cache for fast recompilation of C/C++ code
ii chrpath 0.16-2 amd64 Tool to edit the rpath in ELF binaries ii chrpath 0.16-2 amd64 Tool to edit the rpath in ELF binaries
ii clang-14 1:14.0.0-1ubuntu1 amd64 C, C++ and Objective-C compiler ii clang-14 1:14.0.0-1ubuntu1 amd64 C, C++ and Objective-C compiler
ii clang-format-14 1:14.0.0-1ubuntu1 amd64 Tool to format C/C++/Obj-C code ii clang-format-14 1:14.0.0-1ubuntu1 amd64 Tool to format C/C++/Obj-C code
@ -166,6 +168,7 @@ ii g++-s390x-linux-gnu 4:11.2.0-1ubuntu1
ii g++-sh4-linux-gnu 4:11.2.0--1ubuntu1 amd64 GNU C++ compiler for the sh4 architecture ii g++-sh4-linux-gnu 4:11.2.0--1ubuntu1 amd64 GNU C++ compiler for the sh4 architecture
ii g++-sparc64-linux-gnu 4:11.2.0--1ubuntu1 amd64 GNU C++ compiler for the sparc64 architecture ii g++-sparc64-linux-gnu 4:11.2.0--1ubuntu1 amd64 GNU C++ compiler for the sparc64 architecture
ii g++-x86-64-linux-gnux32 4:11.2.0--1ubuntu1 amd64 GNU C++ compiler for the x32 architecture ii g++-x86-64-linux-gnux32 4:11.2.0--1ubuntu1 amd64 GNU C++ compiler for the x32 architecture
ii gawk 1:5.1.0-1build3 amd64 GNU awk, a pattern scanning and processing language
ii gcc 4:11.2.0-1ubuntu1 amd64 GNU C compiler ii gcc 4:11.2.0-1ubuntu1 amd64 GNU C compiler
ii gcc-10-cross-base-mipsen 10.3.0-1ubuntu1cross2 all GCC, the GNU Compiler Collection (library base package) ii gcc-10-cross-base-mipsen 10.3.0-1ubuntu1cross2 all GCC, the GNU Compiler Collection (library base package)
ii gcc-10-mips-linux-gnu 10.3.0-1ubuntu1cross2 amd64 GNU C compiler (cross compiler for mips architecture) ii gcc-10-mips-linux-gnu 10.3.0-1ubuntu1cross2 amd64 GNU C compiler (cross compiler for mips architecture)
@ -628,6 +631,7 @@ ii libgudev-1.0-0:amd64 1:237-2build1
ii libgudev-1.0-0:i386 1:237-2build1 i386 GObject-based wrapper library for libudev ii libgudev-1.0-0:i386 1:237-2build1 i386 GObject-based wrapper library for libudev
ii libharfbuzz0b:amd64 2.7.4-1ubuntu3.1 amd64 OpenType text shaping engine (shared library) ii libharfbuzz0b:amd64 2.7.4-1ubuntu3.1 amd64 OpenType text shaping engine (shared library)
ii libharfbuzz0b:i386 2.7.4-1ubuntu3.1 i386 OpenType text shaping engine (shared library) ii libharfbuzz0b:i386 2.7.4-1ubuntu3.1 i386 OpenType text shaping engine (shared library)
ii libhiredis0.14:amd64 0.14.1-2 amd64 minimalistic C client library for Redis
ii libhogweed6:amd64 3.7.3-1build2 amd64 low level cryptographic library (public-key cryptos) ii libhogweed6:amd64 3.7.3-1build2 amd64 low level cryptographic library (public-key cryptos)
ii libhogweed6:i386 3.7.3-1build2 i386 low level cryptographic library (public-key cryptos) ii libhogweed6:i386 3.7.3-1build2 i386 low level cryptographic library (public-key cryptos)
ii libhwasan0-arm64-cross 12.1.0-2ubuntu1~22.04cross1 all AddressSanitizer -- a fast memory error detector ii libhwasan0-arm64-cross 12.1.0-2ubuntu1~22.04cross1 all AddressSanitizer -- a fast memory error detector
@ -820,6 +824,7 @@ ii libsensors5:i386 1:3.6.0-7ubuntu1
ii libsepol2:amd64 3.3-1build1 amd64 SELinux library for manipulating binary security policies ii libsepol2:amd64 3.3-1build1 amd64 SELinux library for manipulating binary security policies
ii libshout3:amd64 2.4.5-1build3 amd64 MP3/Ogg Vorbis broadcast streaming library ii libshout3:amd64 2.4.5-1build3 amd64 MP3/Ogg Vorbis broadcast streaming library
ii libshout3:i386 2.4.5-1build3 i386 MP3/Ogg Vorbis broadcast streaming library ii libshout3:i386 2.4.5-1build3 i386 MP3/Ogg Vorbis broadcast streaming library
ii libsigsegv2:amd64 2.13-1ubuntu3 amd64 Library for handling page faults in a portable way
ii libslang2:amd64 2.3.2-5build4 amd64 S-Lang programming library - runtime version ii libslang2:amd64 2.3.2-5build4 amd64 S-Lang programming library - runtime version
ii libslang2:i386 2.3.2-5build4 i386 S-Lang programming library - runtime version ii libslang2:i386 2.3.2-5build4 i386 S-Lang programming library - runtime version
ii libslirp0:amd64 4.6.1-1build1 amd64 General purpose TCP-IP emulator library ii libslirp0:amd64 4.6.1-1build1 amd64 General purpose TCP-IP emulator library
@ -1070,7 +1075,7 @@ ii linux-libc-dev-s390x-cross 5.15.0-22.22cross3
ii linux-libc-dev-sh4-cross 5.15.0-22.22cross4 all Linux Kernel Headers for development (for cross-compiling) ii linux-libc-dev-sh4-cross 5.15.0-22.22cross4 all Linux Kernel Headers for development (for cross-compiling)
ii linux-libc-dev-sparc64-cross 5.15.0-22.22cross4 all Linux Kernel Headers for development (for cross-compiling) ii linux-libc-dev-sparc64-cross 5.15.0-22.22cross4 all Linux Kernel Headers for development (for cross-compiling)
ii linux-libc-dev-x32-cross 5.15.0-22.22cross4 all Linux Kernel Headers for development (for cross-compiling) ii linux-libc-dev-x32-cross 5.15.0-22.22cross4 all Linux Kernel Headers for development (for cross-compiling)
ii linux-libc-dev:amd64 5.15.0-75.82 amd64 Linux Kernel Headers for development ii linux-libc-dev:amd64 5.15.0-76.83 amd64 Linux Kernel Headers for development
ii lldb-14 1:14.0.0-1ubuntu1 amd64 Next generation, high-performance debugger ii lldb-14 1:14.0.0-1ubuntu1 amd64 Next generation, high-performance debugger
ii llvm-14 1:14.0.0-1ubuntu1 amd64 Modular compiler and toolchain technologies ii llvm-14 1:14.0.0-1ubuntu1 amd64 Modular compiler and toolchain technologies
ii llvm-14-dev 1:14.0.0-1ubuntu1 amd64 Modular compiler and toolchain technologies, libraries and headers ii llvm-14-dev 1:14.0.0-1ubuntu1 amd64 Modular compiler and toolchain technologies, libraries and headers
@ -1091,6 +1096,7 @@ ii mesa-vulkan-drivers:i386 22.2.5-0ubuntu0.1~22.04.3
ii mingw-w64-common 8.0.0-1 all Common files for Mingw-w64 ii mingw-w64-common 8.0.0-1 all Common files for Mingw-w64
ii mingw-w64-i686-dev 8.0.0-1 all Development files for MinGW-w64 targeting Win32 ii mingw-w64-i686-dev 8.0.0-1 all Development files for MinGW-w64 targeting Win32
ii mingw-w64-x86-64-dev 8.0.0-1 all Development files for MinGW-w64 targeting Win64 ii mingw-w64-x86-64-dev 8.0.0-1 all Development files for MinGW-w64 targeting Win64
ii mksh 59c-16 amd64 MirBSD Korn Shell
ii moreutils 0.66-1 amd64 additional Unix utilities ii moreutils 0.66-1 amd64 additional Unix utilities
ii mount 2.37.2-4ubuntu3 amd64 tools for mounting and manipulating filesystems ii mount 2.37.2-4ubuntu3 amd64 tools for mounting and manipulating filesystems
ii msr-tools 1.3-4 amd64 Utilities for modifying MSRs from userspace ii msr-tools 1.3-4 amd64 Utilities for modifying MSRs from userspace
@ -1161,6 +1167,7 @@ ii systemd-sysv 249.11-0ubuntu3.9
ii systemd-timesyncd 249.11-0ubuntu3.9 amd64 minimalistic service to synchronize local time with NTP servers ii systemd-timesyncd 249.11-0ubuntu3.9 amd64 minimalistic service to synchronize local time with NTP servers
ii sysvinit-utils 3.01-1ubuntu1 amd64 System-V-like utilities ii sysvinit-utils 3.01-1ubuntu1 amd64 System-V-like utilities
ii tar 1.34+dfsg-1ubuntu0.1.22.04.1 amd64 GNU version of the tar archiving utility ii tar 1.34+dfsg-1ubuntu0.1.22.04.1 amd64 GNU version of the tar archiving utility
ii time 1.9-0.1build2 amd64 GNU time program for measuring CPU resource usage
ii ubuntu-keyring 2021.03.26 all GnuPG keys of the Ubuntu archive ii ubuntu-keyring 2021.03.26 all GnuPG keys of the Ubuntu archive
ii ubuntu-mono 20.10-0ubuntu2 all Ubuntu Mono Icon theme ii ubuntu-mono 20.10-0ubuntu2 all Ubuntu Mono Icon theme
ii ucf 3.0043 all Update Configuration File(s): preserve user changes to config files ii ucf 3.0043 all Update Configuration File(s): preserve user changes to config files
@ -1181,6 +1188,7 @@ ii xdg-user-dirs 0.17-2ubuntu4
ii xkb-data 2.33-1 all X Keyboard Extension (XKB) configuration data ii xkb-data 2.33-1 all X Keyboard Extension (XKB) configuration data
ii xxd 2:8.2.3995-1ubuntu2.8 amd64 tool to make (or reverse) a hex dump ii xxd 2:8.2.3995-1ubuntu2.8 amd64 tool to make (or reverse) a hex dump
ii xz-utils 5.2.5-2ubuntu1 amd64 XZ-format compression utilities ii xz-utils 5.2.5-2ubuntu1 amd64 XZ-format compression utilities
ii yash 2.51-1 amd64 yet another shell
ii zip 3.0-12build2 amd64 Archiver for .zip files ii zip 3.0-12build2 amd64 Archiver for .zip files
ii zlib1g-dev:amd64 1:1.2.11.dfsg-2ubuntu9.2 amd64 compression library - development ii zlib1g-dev:amd64 1:1.2.11.dfsg-2ubuntu9.2 amd64 compression library - development
ii zlib1g:amd64 1:1.2.11.dfsg-2ubuntu9.2 amd64 compression library - runtime ii zlib1g:amd64 1:1.2.11.dfsg-2ubuntu9.2 amd64 compression library - runtime
@ -1193,7 +1201,7 @@ ii zstd 1.4.8+dfsg-3build1
||/ Name Version Architecture Description ||/ Name Version Architecture Description
Packages sorted by Installed-Size: Packages sorted by Installed-Size:
7715290 ===== TOTAL (1187 packages) 7722308 ===== TOTAL (1195 packages)
474522 libwine i386 474522 libwine i386
270993 llvm-14-dev amd64 270993 llvm-14-dev amd64
264247 qemu-efi-aarch64 all 264247 qemu-efi-aarch64 all
@ -1549,11 +1557,13 @@ Packages sorted by Installed-Size:
1746 libunistring2 amd64 1746 libunistring2 amd64
1730 libsdl2-2.0-0 amd64 1730 libsdl2-2.0-0 amd64
1695 libgcc-11-dev-alpha-cross all 1695 libgcc-11-dev-alpha-cross all
1680 gawk amd64
1655 zstd amd64 1655 zstd amd64
1628 libslang2 amd64 1628 libslang2 amd64
1602 libsqlite3-0 amd64 1602 libsqlite3-0 amd64
1534 libcairo2 i386 1534 libcairo2 i386
1516 e2fsprogs amd64 1516 e2fsprogs amd64
1508 mksh amd64
1487 libstdc++6-armhf-cross all 1487 libstdc++6-armhf-cross all
1484 libsamplerate0 amd64 1484 libsamplerate0 amd64
1483 libsamplerate0 i386 1483 libsamplerate0 i386
@ -1562,6 +1572,7 @@ Packages sorted by Installed-Size:
1455 libx11-6 i386 1455 libx11-6 i386
1445 hyperfine amd64 1445 hyperfine amd64
1436 libobjc-11-dev amd64 1436 libobjc-11-dev amd64
1429 yash amd64
1429 libx11-data all 1429 libx11-data all
1425 libp11-kit0 i386 1425 libp11-kit0 i386
1408 llvm-14-runtime amd64 1408 llvm-14-runtime amd64
@ -1571,6 +1582,7 @@ Packages sorted by Installed-Size:
1373 libslang2 i386 1373 libslang2 i386
1354 libgcrypt20 amd64 1354 libgcrypt20 amd64
1351 libcairo2 amd64 1351 libcairo2 amd64
1343 ccache amd64
1328 libzstd-dev amd64 1328 libzstd-dev amd64
1292 libp11-kit0 amd64 1292 libp11-kit0 amd64
1285 libasound2 i386 1285 libasound2 i386
@ -1619,6 +1631,7 @@ Packages sorted by Installed-Size:
806 libsoup2.4-1 i386 806 libsoup2.4-1 i386
794 rsync amd64 794 rsync amd64
793 libbrotli1 i386 793 libbrotli1 i386
791 busybox amd64
787 libcurl4 amd64 787 libcurl4 amd64
784 libbrotli1 amd64 784 libbrotli1 amd64
783 libcups2 amd64 783 libcups2 amd64
@ -2035,6 +2048,7 @@ Packages sorted by Installed-Size:
130 dbus-user-session amd64 130 dbus-user-session amd64
128 libtasn1-6 i386 128 libtasn1-6 i386
128 libdrm2 amd64 128 libdrm2 amd64
126 time amd64
125 libmpc3 amd64 125 libmpc3 amd64
125 libitm1-alpha-cross all 125 libitm1-alpha-cross all
123 libtimedate-perl all 123 libtimedate-perl all
@ -2103,6 +2117,7 @@ Packages sorted by Installed-Size:
94 libcairo-gobject2 i386 94 libcairo-gobject2 i386
93 libsasl2-modules-db amd64 93 libsasl2-modules-db amd64
92 libsasl2-modules-db i386 92 libsasl2-modules-db i386
92 libhiredis0.14 amd64
92 libgsm1 i386 92 libgsm1 i386
92 libgcc-s1-sparc64-cross all 92 libgcc-s1-sparc64-cross all
92 libgcc-s1-riscv64-cross all 92 libgcc-s1-riscv64-cross all
@ -2206,6 +2221,7 @@ Packages sorted by Installed-Size:
50 libkeyutils1 i386 50 libkeyutils1 i386
50 glib-networking-services amd64 50 glib-networking-services amd64
50 gcc amd64 50 gcc amd64
49 libsigsegv2 amd64
48 libxtst6 amd64 48 libxtst6 amd64
48 libatomic1-armel-cross all 48 libatomic1-armel-cross all
48 glib-networking-common all 48 glib-networking-common all

View File

@ -6,7 +6,7 @@ argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")"
# create the image from Dockerfile # create the image from Dockerfile
# using a rootless Podman container # using a rootless Podman container
image=upx-stubtools-20221212-v5 image=upx-stubtools-20221212-v6
podman build -t "$image" -f "$argv0dir/Dockerfile" "$argv0dir" podman build -t "$image" -f "$argv0dir/Dockerfile" "$argv0dir"

View File

@ -6,7 +6,7 @@ argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")"
# list all system packages that are installed in the image # list all system packages that are installed in the image
# using a rootless Podman container # using a rootless Podman container
image=upx-stubtools-20221212-v5 image=upx-stubtools-20221212-v6
podman image list "$image" podman image list "$image"
echo echo

View File

@ -6,7 +6,7 @@ argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")"
# run an interactive shell in the image # run an interactive shell in the image
# using a rootless Podman container # using a rootless Podman container
image=upx-stubtools-20221212-v5 image=upx-stubtools-20221212-v6
flags=( --read-only --rm --pull=never ) flags=( --read-only --rm --pull=never )
flags+=( --cap-drop=all ) # drop all capabilities flags+=( --cap-drop=all ) # drop all capabilities
@ -23,6 +23,8 @@ if [[ 1 == 1 ]]; then
# INFO: SELinux users *may* have to add ":z" to the volume mount flags; check the docs! # INFO: SELinux users *may* have to add ":z" to the volume mount flags; check the docs!
flags+=( -v "${argv0dir}/../..:/home/upx/src/upx" ) flags+=( -v "${argv0dir}/../..:/home/upx/src/upx" )
flags+=( -w /home/upx/src/upx ) # set working directory flags+=( -w /home/upx/src/upx ) # set working directory
flags+=( --tmpfs /home/upx/.cache:rw,exec ) # mount a writeable tmpfs
flags+=( --tmpfs /home/upx/.local:rw,exec ) # mount a writeable tmpfs
else else
# run as user root 0:0 # run as user root 0:0
# ONLY FOR DEBUGGING THE IMAGE # ONLY FOR DEBUGGING THE IMAGE

View File

@ -1,5 +1,5 @@
FROM docker.io/library/ubuntu:22.04 FROM docker.io/library/ubuntu:22.04
ENV UPX_CONTAINER_IMAGE_NAME=upx-stubtools-20221212-v5 ENV UPX_CONTAINER_IMAGE_NAME=upx-stubtools-20221212-v6
ARG DEBIAN_FRONTEND=noninteractive ARG DEBIAN_FRONTEND=noninteractive
ENV LANG=C.UTF-8 ENV LANG=C.UTF-8
@ -7,16 +7,16 @@ ENV LANG=C.UTF-8
RUN dpkg --add-architecture i386 \ RUN dpkg --add-architecture i386 \
&& apt-get update && apt-get upgrade -y \ && apt-get update && apt-get upgrade -y \
&& apt-get install -y --no-install-recommends \ && apt-get install -y --no-install-recommends \
aria2 bash-completion ca-certificates git less libmpc3 libncurses5 \ aria2 bash bash-completion ca-certificates dash git less libmpc3 libncurses5 \
make ncurses-term perl-base python2-minimal wget xz-utils \ make ncurses-term perl-base python2-minimal time wget xz-utils \
libc6:i386 zlib1g:i386 \ libc6:i386 zlib1g:i386 \
# the following packages are not required for rebuilding the stubs, but # the following packages are not required for rebuilding the stubs, but
# they do make the image much more convenient and also allow building # they do make the image *much* more convenient and also allow building
# the full UPX binary inside the container via CMake: # the full UPX binary inside the container via CMake:
7zip bfs bzip2 cabextract chrpath cmake cpio curl elfutils fd-find file fzf g++ gdb gojq \ 7zip bfs busybox bzip2 cabextract ccache chrpath cmake cpio curl elfutils fd-find file fzf \
ht htop hyperfine jq libzstd-dev lsb-release lz4 lzip lzop moreutils ninja-build \ g++ gawk gdb gojq ht htop hyperfine jq libzstd-dev lsb-release lz4 lzip lzop \
p7zip parallel patch patchelf pax-utils paxctl re2c ripgrep rsync \ mksh moreutils ninja-build p7zip parallel patch patchelf pax-utils paxctl \
screen universal-ctags unzip vim zip zlib1g-dev zsh zstd \ re2c ripgrep rsync screen universal-ctags unzip vim yash zip zlib1g-dev zsh zstd \
# extra packages for compiling with "gcc -m32" and and "gcc -mx32": # extra packages for compiling with "gcc -m32" and and "gcc -mx32":
g++-multilib gcc-multilib \ g++-multilib gcc-multilib \
&& true && true
@ -52,8 +52,12 @@ RUN cd /root \
# create default user upx 2000:2000 # create default user upx 2000:2000
RUN useradd upx -U --uid 2000 --shell /bin/bash -m \ RUN useradd upx -U --uid 2000 --shell /bin/bash -m \
&& mkdir -p /home/upx/.cache/zig /home/upx/.local/bin /home/upx/.wine /home/upx/src/upx \ && cd /home/upx && chmod 700 . \
&& ln -s /usr/local/bin/bin-upx-20221212 /home/upx/.local/bin/bin-upx \ && mkdir -p .cache .local src/upx \
&& chown -R upx:upx /home/upx \ && for d in ccache go-build tmp wine zig; do mkdir -p .cache/$d; done \
&& for d in bin share state; do mkdir -p .local/$d; done \
&& ln -s .cache/wine .wine && ln -s .cache/tmp tmp \
&& ln -s /usr/local/bin/bin-upx-20221212 .local/bin/bin-upx \
&& chown -R upx:upx . \
&& true && true
USER upx USER upx

View File

@ -14,9 +14,11 @@ ii binutils 2.38-4ubuntu2.2 amd64
ii binutils-common:amd64 2.38-4ubuntu2.2 amd64 Common files for the GNU assembler, linker and binary utilities ii binutils-common:amd64 2.38-4ubuntu2.2 amd64 Common files for the GNU assembler, linker and binary utilities
ii binutils-x86-64-linux-gnu 2.38-4ubuntu2.2 amd64 GNU binary utilities, for x86-64-linux-gnu target ii binutils-x86-64-linux-gnu 2.38-4ubuntu2.2 amd64 GNU binary utilities, for x86-64-linux-gnu target
ii bsdutils 1:2.37.2-4ubuntu3 amd64 basic utilities from 4.4BSD-Lite ii bsdutils 1:2.37.2-4ubuntu3 amd64 basic utilities from 4.4BSD-Lite
ii busybox 1:1.30.1-7ubuntu3 amd64 Tiny utilities for small and embedded systems
ii bzip2 1.0.8-5build1 amd64 high-quality block-sorting file compressor - utilities ii bzip2 1.0.8-5build1 amd64 high-quality block-sorting file compressor - utilities
ii ca-certificates 20230311ubuntu0.22.04.1 all Common CA certificates ii ca-certificates 20230311ubuntu0.22.04.1 all Common CA certificates
ii cabextract 1.9-3 amd64 Microsoft Cabinet file unpacker ii cabextract 1.9-3 amd64 Microsoft Cabinet file unpacker
ii ccache 4.5.1-1 amd64 Compiler cache for fast recompilation of C/C++ code
ii chrpath 0.16-2 amd64 Tool to edit the rpath in ELF binaries ii chrpath 0.16-2 amd64 Tool to edit the rpath in ELF binaries
ii cmake 3.22.1-1ubuntu1.22.04.1 amd64 cross-platform, open-source make system ii cmake 3.22.1-1ubuntu1.22.04.1 amd64 cross-platform, open-source make system
ii cmake-data 3.22.1-1ubuntu1.22.04.1 all CMake data files (modules, templates and documentation) ii cmake-data 3.22.1-1ubuntu1.22.04.1 all CMake data files (modules, templates and documentation)
@ -43,6 +45,7 @@ ii g++ 4:11.2.0-1ubuntu1 amd64
ii g++-11 11.3.0-1ubuntu1~22.04.1 amd64 GNU C++ compiler ii g++-11 11.3.0-1ubuntu1~22.04.1 amd64 GNU C++ compiler
ii g++-11-multilib 11.3.0-1ubuntu1~22.04.1 amd64 GNU C++ compiler (multilib support) ii g++-11-multilib 11.3.0-1ubuntu1~22.04.1 amd64 GNU C++ compiler (multilib support)
ii g++-multilib 4:11.2.0-1ubuntu1 amd64 GNU C++ compiler (multilib files) ii g++-multilib 4:11.2.0-1ubuntu1 amd64 GNU C++ compiler (multilib files)
ii gawk 1:5.1.0-1build3 amd64 GNU awk, a pattern scanning and processing language
ii gcc 4:11.2.0-1ubuntu1 amd64 GNU C compiler ii gcc 4:11.2.0-1ubuntu1 amd64 GNU C compiler
ii gcc-11 11.3.0-1ubuntu1~22.04.1 amd64 GNU C compiler ii gcc-11 11.3.0-1ubuntu1~22.04.1 amd64 GNU C compiler
ii gcc-11-base:amd64 11.3.0-1ubuntu1~22.04.1 amd64 GCC, the GNU Compiler Collection (base package) ii gcc-11-base:amd64 11.3.0-1ubuntu1~22.04.1 amd64 GCC, the GNU Compiler Collection (base package)
@ -135,6 +138,7 @@ ii libgomp1:amd64 12.1.0-2ubuntu1~22.04 amd64
ii libgpg-error0:amd64 1.43-3 amd64 GnuPG development runtime library ii libgpg-error0:amd64 1.43-3 amd64 GnuPG development runtime library
ii libgpm2:amd64 1.20.7-10build1 amd64 General Purpose Mouse - shared library ii libgpm2:amd64 1.20.7-10build1 amd64 General Purpose Mouse - shared library
ii libgssapi-krb5-2:amd64 1.19.2-2ubuntu0.2 amd64 MIT Kerberos runtime libraries - krb5 GSS-API Mechanism ii libgssapi-krb5-2:amd64 1.19.2-2ubuntu0.2 amd64 MIT Kerberos runtime libraries - krb5 GSS-API Mechanism
ii libhiredis0.14:amd64 0.14.1-2 amd64 minimalistic C client library for Redis
ii libhogweed6:amd64 3.7.3-1build2 amd64 low level cryptographic library (public-key cryptos) ii libhogweed6:amd64 3.7.3-1build2 amd64 low level cryptographic library (public-key cryptos)
ii libicu70:amd64 70.1-2 amd64 International Components for Unicode ii libicu70:amd64 70.1-2 amd64 International Components for Unicode
ii libidn2-0:amd64 2.3.2-2build1 amd64 Internationalized domain names (IDNA2008/TR46) library ii libidn2-0:amd64 2.3.2-2build1 amd64 Internationalized domain names (IDNA2008/TR46) library
@ -202,6 +206,7 @@ ii libsemanage2:amd64 3.3-1build2 amd64
ii libsensors-config 1:3.6.0-7ubuntu1 all lm-sensors configuration files ii libsensors-config 1:3.6.0-7ubuntu1 all lm-sensors configuration files
ii libsensors5:amd64 1:3.6.0-7ubuntu1 amd64 library to read temperature/voltage/fan sensors ii libsensors5:amd64 1:3.6.0-7ubuntu1 amd64 library to read temperature/voltage/fan sensors
ii libsepol2:amd64 3.3-1build1 amd64 SELinux library for manipulating binary security policies ii libsepol2:amd64 3.3-1build1 amd64 SELinux library for manipulating binary security policies
ii libsigsegv2:amd64 2.13-1ubuntu3 amd64 Library for handling page faults in a portable way
ii libsmartcols1:amd64 2.37.2-4ubuntu3 amd64 smart column output alignment library ii libsmartcols1:amd64 2.37.2-4ubuntu3 amd64 smart column output alignment library
ii libsodium23:amd64 1.0.18-1build2 amd64 Network communication, cryptography and signaturing library ii libsodium23:amd64 1.0.18-1build2 amd64 Network communication, cryptography and signaturing library
ii libsource-highlight-common 3.1.9-4.1build2 all architecture-independent files for source highlighting library ii libsource-highlight-common 3.1.9-4.1build2 all architecture-independent files for source highlighting library
@ -249,7 +254,7 @@ ii libxxhash0:amd64 0.8.1-1 amd64
ii libyaml-0-2:amd64 0.2.2-1build2 amd64 Fast YAML 1.1 parser and emitter library ii libyaml-0-2:amd64 0.2.2-1build2 amd64 Fast YAML 1.1 parser and emitter library
ii libzstd-dev:amd64 1.4.8+dfsg-3build1 amd64 fast lossless compression algorithm -- development files ii libzstd-dev:amd64 1.4.8+dfsg-3build1 amd64 fast lossless compression algorithm -- development files
ii libzstd1:amd64 1.4.8+dfsg-3build1 amd64 fast lossless compression algorithm ii libzstd1:amd64 1.4.8+dfsg-3build1 amd64 fast lossless compression algorithm
ii linux-libc-dev:amd64 5.15.0-75.82 amd64 Linux Kernel Headers for development ii linux-libc-dev:amd64 5.15.0-76.83 amd64 Linux Kernel Headers for development
ii login 1:4.8.1-2ubuntu2.1 amd64 system login tools ii login 1:4.8.1-2ubuntu2.1 amd64 system login tools
ii logsave 1.46.5-2ubuntu1.1 amd64 save the output of a command in a log file ii logsave 1.46.5-2ubuntu1.1 amd64 save the output of a command in a log file
ii lsb-base 11.1.0ubuntu4 all Linux Standard Base init script functionality ii lsb-base 11.1.0ubuntu4 all Linux Standard Base init script functionality
@ -260,6 +265,7 @@ ii lzop 1.04-2build2 amd64
ii make 4.3-4.1build1 amd64 utility for directing compilation ii make 4.3-4.1build1 amd64 utility for directing compilation
ii mawk 1.3.4.20200120-3 amd64 Pattern scanning and text processing language ii mawk 1.3.4.20200120-3 amd64 Pattern scanning and text processing language
ii media-types 7.0.0 all List of standard media types and their usual file extension ii media-types 7.0.0 all List of standard media types and their usual file extension
ii mksh 59c-16 amd64 MirBSD Korn Shell
ii moreutils 0.66-1 amd64 additional Unix utilities ii moreutils 0.66-1 amd64 additional Unix utilities
ii mount 2.37.2-4ubuntu3 amd64 tools for mounting and manipulating filesystems ii mount 2.37.2-4ubuntu3 amd64 tools for mounting and manipulating filesystems
ii ncurses-base 6.3-2ubuntu0.1 all basic terminal type definitions ii ncurses-base 6.3-2ubuntu0.1 all basic terminal type definitions
@ -295,6 +301,7 @@ ii sensible-utils 0.0.17 all
ii sysstat 12.5.2-2ubuntu0.2 amd64 system performance tools for Linux ii sysstat 12.5.2-2ubuntu0.2 amd64 system performance tools for Linux
ii sysvinit-utils 3.01-1ubuntu1 amd64 System-V-like utilities ii sysvinit-utils 3.01-1ubuntu1 amd64 System-V-like utilities
ii tar 1.34+dfsg-1ubuntu0.1.22.04.1 amd64 GNU version of the tar archiving utility ii tar 1.34+dfsg-1ubuntu0.1.22.04.1 amd64 GNU version of the tar archiving utility
ii time 1.9-0.1build2 amd64 GNU time program for measuring CPU resource usage
ii ubuntu-keyring 2021.03.26 all GnuPG keys of the Ubuntu archive ii ubuntu-keyring 2021.03.26 all GnuPG keys of the Ubuntu archive
ii ucf 3.0043 all Update Configuration File(s): preserve user changes to config files ii ucf 3.0043 all Update Configuration File(s): preserve user changes to config files
ii universal-ctags 5.9.20210829.0-1 amd64 build tag file indexes of source code definitions ii universal-ctags 5.9.20210829.0-1 amd64 build tag file indexes of source code definitions
@ -307,6 +314,7 @@ ii vim-runtime 2:8.2.3995-1ubuntu2.8 all
ii wget 1.21.2-2ubuntu1 amd64 retrieves files from the web ii wget 1.21.2-2ubuntu1 amd64 retrieves files from the web
ii xxd 2:8.2.3995-1ubuntu2.8 amd64 tool to make (or reverse) a hex dump ii xxd 2:8.2.3995-1ubuntu2.8 amd64 tool to make (or reverse) a hex dump
ii xz-utils 5.2.5-2ubuntu1 amd64 XZ-format compression utilities ii xz-utils 5.2.5-2ubuntu1 amd64 XZ-format compression utilities
ii yash 2.51-1 amd64 yet another shell
ii zip 3.0-12build2 amd64 Archiver for .zip files ii zip 3.0-12build2 amd64 Archiver for .zip files
ii zlib1g-dev:amd64 1:1.2.11.dfsg-2ubuntu9.2 amd64 compression library - development ii zlib1g-dev:amd64 1:1.2.11.dfsg-2ubuntu9.2 amd64 compression library - development
ii zlib1g:amd64 1:1.2.11.dfsg-2ubuntu9.2 amd64 compression library - runtime ii zlib1g:amd64 1:1.2.11.dfsg-2ubuntu9.2 amd64 compression library - runtime
@ -319,7 +327,7 @@ ii zstd 1.4.8+dfsg-3build1 amd64
||/ Name Version Architecture Description ||/ Name Version Architecture Description
Packages sorted by Installed-Size: Packages sorted by Installed-Size:
741791 ===== TOTAL (313 packages) 748809 ===== TOTAL (321 packages)
52577 gcc-11 amd64 52577 gcc-11 amd64
34444 libicu70 amd64 34444 libicu70 amd64
32780 vim-runtime all 32780 vim-runtime all
@ -401,16 +409,20 @@ Packages sorted by Installed-Size:
1854 aria2 amd64 1854 aria2 amd64
1750 libdb5.3 amd64 1750 libdb5.3 amd64
1746 libunistring2 amd64 1746 libunistring2 amd64
1680 gawk amd64
1655 zstd amd64 1655 zstd amd64
1602 libsqlite3-0 amd64 1602 libsqlite3-0 amd64
1516 e2fsprogs amd64 1516 e2fsprogs amd64
1508 mksh amd64
1472 sysstat amd64 1472 sysstat amd64
1464 bash-completion all 1464 bash-completion all
1445 hyperfine amd64 1445 hyperfine amd64
1429 yash amd64
1429 libx11-data all 1429 libx11-data all
1388 procps amd64 1388 procps amd64
1386 libx11-6 amd64 1386 libx11-6 amd64
1354 libgcrypt20 amd64 1354 libgcrypt20 amd64
1343 ccache amd64
1328 libzstd-dev amd64 1328 libzstd-dev amd64
1292 libp11-kit0 amd64 1292 libp11-kit0 amd64
1138 libpam-modules amd64 1138 libpam-modules amd64
@ -424,6 +436,7 @@ Packages sorted by Installed-Size:
876 libarchive13 amd64 876 libarchive13 amd64
846 libzstd1 amd64 846 libzstd1 amd64
794 rsync amd64 794 rsync amd64
791 busybox amd64
787 libcurl4 amd64 787 libcurl4 amd64
784 libbrotli1 amd64 784 libbrotli1 amd64
771 libcurl3-gnutls amd64 771 libcurl3-gnutls amd64
@ -558,6 +571,7 @@ Packages sorted by Installed-Size:
133 init-system-helpers all 133 init-system-helpers all
132 libipt2 amd64 132 libipt2 amd64
131 libprocps8 amd64 131 libprocps8 amd64
126 time amd64
125 libmpc3 amd64 125 libmpc3 amd64
123 libtimedate-perl all 123 libtimedate-perl all
123 libnsl2 amd64 123 libnsl2 amd64
@ -583,6 +597,7 @@ Packages sorted by Installed-Size:
96 libmspack0 amd64 96 libmspack0 amd64
95 libpsl5 amd64 95 libpsl5 amd64
93 libsasl2-modules-db amd64 93 libsasl2-modules-db amd64
92 libhiredis0.14 amd64
91 libjansson4 amd64 91 libjansson4 amd64
90 python3 amd64 90 python3 amd64
83 sysvinit-utils amd64 83 sysvinit-utils amd64
@ -608,6 +623,7 @@ Packages sorted by Installed-Size:
51 libutempter0 amd64 51 libutempter0 amd64
51 hostname amd64 51 hostname amd64
50 gcc amd64 50 gcc amd64
49 libsigsegv2 amd64
47 libkeyutils1 amd64 47 libkeyutils1 amd64
45 libgdbm-compat4 amd64 45 libgdbm-compat4 amd64
45 libcap-ng0 amd64 45 libcap-ng0 amd64

View File

@ -3,49 +3,78 @@
set -e set -e
# #
# build UPX "by hand", using POSIX shell and a minimal number of compilation flags # build UPX "by hand", using a POSIX-compliant shell and
# a minimal number of compilation flags
# Copyright (C) Markus Franz Xaver Johannes Oberhumer # Copyright (C) Markus Franz Xaver Johannes Oberhumer
# #
# uses optional environment variables: AR, CC, CXX, OPTIMIZE, top_srcdir
# shell init # shell init
### set -x # enable logging ### set -x # enable logging
DUALCASE=1; export DUALCASE # for MKS sh DUALCASE=1; export DUALCASE # for MKS sh
test -n "${ZSH_VERSION+set}" && emulate sh # for zsh test -n "${ZSH_VERSION+set}" && emulate sh # for zsh
argv0="$0"; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")" my_argv0="$0"
# HINT: set "argv0dir" manually if your system does not have "readlink"
# toolchain settings and flags # toolchain settings and compilation flags
AR="${AR:-ar}"
CC="${CC:-cc}" CC="${CC:-cc}"
CXX="${CXX:-c++ -std=gnu++17}" CXX="${CXX:-c++ -std=gnu++17}"
AR="${AR:-ar}"
# HINT: use "export AR=false" if "$AR rcs" does not work on your system; see below # HINT: use "export AR=false" if "$AR rcs" does not work on your system; see below
if test "x$AR" = "x0" || test "x$AR" = "xfalse" || test "x$AR" = "x/bin/false"; then if test "x$AR" = "x0" || test "x$AR" = "xfalse" || test "x$AR" = "x/bin/false"; then
AR="" # do not use $AR AR="" # do not use $AR
fi fi
# protect against security threats caused by misguided compiler "optimizations" # protect against security threats caused by misguided compiler "optimizations"
mandatory_flags="-fno-strict-aliasing -fno-strict-overflow -funsigned-char" mandatory_flags="-fno-strict-aliasing -fno-strict-overflow -funsigned-char"
# not mandatory and not minimal, but usually a good idea: if test "x$OPTIMIZE" != "x" && test "x$OPTIMIZE" != "x0"; then
### mandatory_flags="-Wall -O2 $mandatory_flags" # not mandatory and not minimal, but usually a good idea:
mandatory_flags="-Wall -O2 $mandatory_flags"
fi
CC="$CC $mandatory_flags" CC="$CC $mandatory_flags"
CXX="$CXX $mandatory_flags" CXX="$CXX $mandatory_flags"
# go to upx top-level directory # go to upx top-level directory
cd "$argv0dir/../.." || exit 1 # HINT: set "top_srcdir" manually if your system does not have "readlink"
pwd if test "x$top_srcdir" = "x"; then
my_argv0abs="$(readlink -fn "$my_argv0")"
my_argv0dir="$(dirname "$my_argv0abs")"
cd "$my_argv0dir/../.." || exit 1
else
cd "$top_srcdir" || exit 1
fi
top_srcdir="$(pwd)" # absolute
rel_top_srcdir=. # relative top_srcdir
echo "# current directory: '$(pwd)'"
test -f doc/upx.pod || exit 1 # sanity check
test -f src/version.h || exit 1 # sanity check test -f src/version.h || exit 1 # sanity check
top_srcdir="$PWD"
rm -rf ./build/by-hand # WARNING: existing build-directory gets deleted! rm -rf ./build/by-hand # WARNING: existing build-directory gets deleted!
mkdir -p ./build/by-hand
# helper function
run() {
if test 0 = 1; then
# DEBUG dry-run: print command, but don't actually run unless $1 is "+"
if test "x$1" = "x+"; then
shift; echo "$@"; "$@"; return
fi
shift; echo "$@"; return
fi
# print short info and run command
test "x$1" != "x" && test "x$1" != "x+" && echo "$1"
shift; "$@"
}
# helper function # helper function
check_submodule() { check_submodule() {
local f #local ff # "local" seems unsupported by some versions of ksh
for f in COPYING LICENSE LICENSE.txt; do for ff in COPYING LICENSE LICENSE.txt; do
if test -f "$top_srcdir/vendor/$1/$f"; then if test -f "$rel_top_srcdir/vendor/$1/$ff"; then
# create and enter build directory # create and enter build directory; updates global $rel_top_srcdir
mkdir -p "$top_srcdir/build/by-hand/$1" run "+" cd "$rel_top_srcdir" || exit 1
cd "$top_srcdir/build/by-hand/$1" || exit 1 rel_top_srcdir=.
echo "===== build $1 =====" echo "#==== build $1 ====="
run "+" mkdir "build/by-hand/$1"
run "+" cd "build/by-hand/$1" || exit 1
rel_top_srcdir=../../..
return 0 return 0
fi fi
done done
@ -53,48 +82,44 @@ check_submodule() {
} }
# build # build
run "+" mkdir -p "build/by-hand"
if check_submodule bzip2; then if check_submodule bzip2; then
for f in "$top_srcdir"/vendor/bzip2/*.c; do for f in "$rel_top_srcdir"/vendor/bzip2/*.c; do
echo "CC $f" run "CC $f" $CC -c "$f"
$CC -c "$f"
done done
fi fi
if check_submodule ucl; then if check_submodule ucl; then
for f in "$top_srcdir"/vendor/ucl/src/*.c; do for f in "$rel_top_srcdir"/vendor/ucl/src/*.c; do
echo "CC $f" run "CC $f" $CC -I"$rel_top_srcdir"/vendor/ucl/include -I"$rel_top_srcdir"/vendor/ucl -c "$f"
$CC -I"$top_srcdir"/vendor/ucl/include -I"$top_srcdir"/vendor/ucl -c "$f"
done done
fi fi
if check_submodule zlib; then if check_submodule zlib; then
for f in "$top_srcdir"/vendor/zlib/*.c; do for f in "$rel_top_srcdir"/vendor/zlib/*.c; do
echo "CC $f" run "CC $f" $CC -DHAVE_STDARG_H -DHAVE_VSNPRINTF -DHAVE_UNISTD_H -c "$f"
$CC -DHAVE_STDARG_H -DHAVE_VSNPRINTF -DHAVE_UNISTD_H -c "$f"
done done
fi fi
if check_submodule zstd; then if check_submodule zstd; then
for f in "$top_srcdir"/vendor/zstd/lib/*/*.c; do for f in "$rel_top_srcdir"/vendor/zstd/lib/*/*.c; do
echo "CC $f" run "CC $f" $CC -DDYNAMIC_BMI2=0 -DZSTD_DISABLE_ASM -c "$f"
$CC -DDYNAMIC_BMI2=0 -DZSTD_DISABLE_ASM -c "$f"
done done
fi fi
echo "===== build UPX =====" run "+" cd "$rel_top_srcdir" || exit 1
cd "$top_srcdir"/build/by-hand || exit 1 rel_top_srcdir=.
for f in "$top_srcdir"/src/*.cpp "$top_srcdir"/src/*/*.cpp; do echo "#==== build UPX ====="
echo "CXX $f" run "+" cd "build/by-hand" || exit 1
$CXX -I"$top_srcdir"/vendor -c "$f" rel_top_srcdir=../..
for f in "$rel_top_srcdir"/src/*.cpp "$rel_top_srcdir"/src/*/*.cpp; do
run "CXX $f" $CXX -I"$rel_top_srcdir"/vendor -c "$f"
done done
# echo "===== link UPX =====" # echo "#==== link UPX ====="
if test "x$AR" = "x"; then if test "x$AR" = "x"; then
# link without using $AR # link without using $AR
echo "CXX upx" run "CXX upx" $CXX -o upx *.o */*.o
$CXX -o upx *.o */*.o
else else
echo "AR libupx" run "AR libupx" $AR rcs libupx_submodules.a */*.o
$AR rcs libupx_submodules.a */*.o run "CXX upx" $CXX -o upx *.o -L. -lupx_submodules
echo "CXX upx"
$CXX -o upx *.o -L. -lupx_submodules
fi fi
pwd echo "# current directory: '$(pwd)'"
ls -l upx* ls -l upx*
echo "All done." echo "# All done."