Change Log

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.

Unreleased

Added

  • Added support for Python 3.12 (#272)

Changed

  • Introduced pyproject.toml and moved metadata from setup.py (#267)

  • Removed use of deprecated pkg_resources (#271, #274)

Fixed

  • Fixed an issue with non-ELF “binary” files in PyInstaller archives causing a crash (#270)

0.14.1 - 2023-08-07

Fixed

  • Reverted invalid fix (#255) for libnssfix link failure (#262)

  • Fixed issue causing libnssfix link failure when building on GLIBC 2.34 again, by linking against versioned SONAME (.2) (#259)

0.14.0 - 2023-07-10

This release was pulled from PyPI due to an incorrect fix in #255.

Fixed

  • Fixed issue causing libnssfix link failure when building on GLIBC 2.34 (#255)

Removed

  • Dropped support for Python 3.5 and 3.6 (#247)

0.13.9 - 2023-04-16

Fixed

  • Updated to support PyInstaller 5.10 archive API changes (#236, #237)

  • Refuse to process files with PyInstaller 4.1 or 4.2 (#238)

    • Note: This applies even if the files were built with a different version of PyInstaller; if that version is 4.1 or 4.2, the original bug will manifest.

0.13.8 - 2022-08-07

Fixed

  • Fixed a problem with 0.13.7 release whl (PyPI won’t allow re-uploads)

0.13.7 - 2022-08-07

Fixed

  • Fixed an issue where library symlinks with the same basename would present problems (#225)

  • Don’t crash if .git/ dir is present but git is not installed (#226)

  • Fixed potential issue where bootloader linked against glibc could result in target NSS libraries being loaded and causing a cash at startup ([#228])

0.13.6 - 2021-12-02

Changed

  • Change --debug option to appear in CLI help output

Fixed

  • Fix bug sometimes causing a crash when -l is used (#217)

0.13.5 - 2021-10-26

Fixed

  • Handle variables in DT_NEEDED tags as seen in ldd output on RaspPI OS (#210)

0.13.4 - 2021-10-22

Changed

  • Perform RUNPATH auditing on all PyInstaller archive libraries before aborting (#208)

0.13.3 - 2021-10-14

Fixed

  • Fix ldd warning about libnssfix.so not being executable (#204)

0.13.2 - 2021-10-09

Added

  • Log additional diagnostic information at startup (#199)

0.13.1 - 2021-10-06

Added

  • Log staticx version and arguments at startup (#197)

0.13.0 - 2021-10-04

Added

  • Added auditing of all shared libraries to detect problematic usages of RPATH/RUNPATH. Libraries now have RPATH/RUNPATH removed while being added, unless those libraries come from a PyInstalled application. (#173)

Changed

  • Rework library-adding code to lazily copy libraries before modifying (#192)

0.12.3 - 2021-09-04

Added

  • Added STATICX_LDD environment variable to override the ldd executable used by Staticx to discover library dependencies. (#180)

Changed

  • LD_LIBRARY_PATH enviroment variable is now maintained when invoking ldd to discover dependencies (#185)

0.12.2 - 2021-05-22

Fixed

  • Worked around patchelf bug which caused Couldn't find DT_RPATH tag error at runtime (#175)

  • Fixed a bug which caused the glibc hook to crash on non-glibc executables (#179)

0.12.1 - 2021-02-06

Fixed

  • Fixed bug causing libnssfix to be built incorrectly under SCons v4.1.0 (#168)

0.12.0 - 2020-09-29

Added

  • Added support for native 32-bit builds of bootloader (#149)

Changed

  • Binary wheels now identify as manylinux1_x86_64 (#151)

Fixed

  • Source distributions build correctly again (#153, #157)

Removed

  • Removed more Python 2.7 compatibility cruft (#142, #146, #148)

  • Removed additional unnecessary elements of libtar (#154)

0.11.0 - 2020-07-27

Changed

  • Improved tar extraction to minimize number of write() calls (#131)

  • Set NODEFLIB flag to prevent any libraries from the target system from being loaded (#138)

  • “nssfix” is used to prevent target system /etc/nssswitch.conf from being used which would attempt to load system libnss_*.so libraries ([#139])

Fixed

  • Bundled applications retain their original name (#135)

0.10.0 - 2020-05-30

Added

  • Added sx-extract archive extraction/dumping tool (#114)

Removed

  • Drop support for Python 2.7 (#115)

0.9.1 - 2020-01-29

Fixed

  • Correct handling of absolute path symlink in ldd output (#118)

  • Fixed null tmpdir argument error on GCC9 (#120)

  • Fixed ldd “you do not have execution permission…” warning (#122)

0.9.0 - 2020-01-11

Added

  • Staticx binaries now respect $TMPDIR for creating temporary directory (#101)

Changed

  • Ensure user program is always marked executable in archive (#112)

Fixed

  • Don’t hard-code exclusion of linux-vdso.so.1 (#102)

Removed

  • Drop support for Python 3.4 (#111)

0.8.1 - 2019-12-30

Changed

  • Changed setup.py to respect BOOTLOADER_CC, to simplify .travis.yml and ensure that released wheels are always built with musl-libc.

0.8.0 - 2019-12-30

Added

  • Set STATICX_BUNDLE_DIR and STATICX_PROG_PATH in child process (#81)

  • Add --debug flag to bundle debug bootloader (#87)

Changed

  • Changed pyinstaller hook to ignore static executables (#83)

Fixed

  • Always generate tar archive in GNU format. Python 3.8 changed the default to PAX which is not supported by our libtar. (#85)

  • Add backports.lzma to setup.py for Python 2, removing manual requirement (#89)

0.7.0 - 2019-03-10

Changed

  • Refactored and trimmed libtar (#74)

Fixed

  • Correctly handle applications and libraries that specify an RPATH including $ORIGIN, including apps built with PyInstaller (#75)

  • Fixed potential issue in ignored libraries list (#77)

  • Fixed missing libxz in source distributions (#77)

0.6.0 - 2018-11-13

Added

  • Add --no-compress option to store archive uncompressed (#58)

Changed

  • Detect if user app is a different machine type than the bootloader (#56)

  • Drop support for Python 3.2 and 3.3 (#65)

Fixed

  • Use <sys/sysmacros.h> for makedev() (#63)

  • Handle subdirectories when extracting Pyinstaller archives (#69)

  • Handle shared objects with no dependencies (#70)

0.5.0 - 2017-07-16

Added

  • Added --strip option to strip binaries while adding to archive (#39)

Changed

  • Raise error if given output path is a directory (#52)

  • Dynamically select XZ BCJ filter (#54)

0.4.1 - 2017-07-15

Fixed

  • Fixes for release builds deployed to PyPI

0.4.0 - 2017-07-13

Added

  • Compress archive with LZMA (plus x86 BCJ filter) (#46)

0.3.2 - 2017-06-15

Fixed

  • Fixed PyPI bdists not including bootloader (#32)

0.3.1 - 2017-06-14

Fixed

  • Work around FTW_MOUNT bug in musl<1.0.0 (#30)

0.3.0 - 2017-06-13

Added

  • Auto-detect additional dependencies for apps built with PyInstaller (#21)

Changed

  • Compatibility fixes for older versions of Python and GCC

  • Handle multiple levels of library symlinks (#18)

0.2.0 - 2017-05-31

Changed

  • Work on temporary file while building application (#12)

  • Run user application in child process to enable cleanup (#9)

0.1.0 - 2017-05-30

Initial release