Skip to content

skipbuild 0.6.1

Choose a tag to compare

@github-actions github-actions released this 24 Oct 11:27
· 1 commit to main since this release

Highlights

Packaging, CI and correctness release. skipbuild is now consumable as an installed CMake package, the installers refuse unverified binaries, and a parser bug that made every macOS build bypass the cache is fixed.

Install

# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/rayyan0x/skipbuild/main/scripts/install.sh | bash

# Windows (PowerShell)
irm https://raw.githubusercontent.com/rayyan0x/skipbuild/main/scripts/install.ps1 -OutFile install.ps1; .\install.ps1

All binaries are verified against SHA256SUMS; the scripts fail closed if the checksum cannot be verified.

CMake package

install() now ships all public headers and exports skipbuild::core, skipbuild::skipbuild and skipbuild::libzstd_static:

find_package(skipbuild REQUIRED)
target_link_libraries(app PRIVATE skipbuild::core)
skipbuild_enable_target(app)

Fixed

  • macOS builds always bypassed the cache: absolute POSIX paths were parsed as MSVC /D//U//I//F flags, so /Users/.../a.cpp was swallowed as a /U define and the command ran uncached.
  • Installers failed open: a missing SHA256SUMS (or an asset absent from it) skipped verification; it is now mandatory and the asset name is matched exactly.
  • Windows installer ignored ARM64: the asset was hardcoded to skipbuild-windows-x64.exe.
  • Findskipbuild.cmake module mode was broken: it was installed to share/cmake/Modules but included skipbuild.cmake from lib/cmake/skipbuild; both files now ship side by side in both locations. skipbuild_enable() no longer calls an undefined macro on CMake < 3.19.
  • skipbuild-config.cmake had no targets: it self-assigned SKIPBUILD_EXECUTABLE; it now uses @PACKAGE_INIT@, loads skipbuildTargets.cmake, prefers the imported launcher and calls check_required_components().
  • CMake minimum version: CMP0135 requires 3.24; the project claimed 3.20.
  • Composite action: replaced leftover remake branding/placeholder URLs, installs from this repository, and sets SKIPBUILD_CACHE_DIR + CMAKE_*_COMPILER_LAUNCHER.
  • CI gates the release: sanitizers are blocking, the strict (warnings-as-errors) job runs ctest, and release requires all build, strict, sanitizer and launcher smoke jobs.
  • Tests that passed unconditionally: test_simple only printed state and test_multiprocess never started a second process; it now spawns four real workers, and a new cli_e2e_test drives skipbuild -- <compiler> through miss → hit → header-edit invalidation.
  • Removed dead tracked files (compile.bat, dummy_test.cpp, test.cpp, test_skipbuild.bat, verify_stats.ps1) that contained absolute paths from one developer machine.

Also included (previously unreleased): bounded HTTP responses (512 MiB), remote artifact SHA-256 verification, working --disable-incremental-msbuild, empty-sidecar skipping, atomic failed stores, orphan/temp sweeping, unambiguous length-prefixed cache keys, debug-info keys that include the absolute source/compile directory, and tellg() error handling.

Full details: CHANGELOG.md