Repository navigation
skipbuild 0.6.1
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.ps1All 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//Fflags, so/Users/.../a.cppwas swallowed as a/Udefine 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.cmakemodule mode was broken: it was installed toshare/cmake/Modulesbut includedskipbuild.cmakefromlib/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.cmakehad no targets: it self-assignedSKIPBUILD_EXECUTABLE; it now uses@PACKAGE_INIT@, loadsskipbuildTargets.cmake, prefers the imported launcher and callscheck_required_components().- CMake minimum version:
CMP0135requires 3.24; the project claimed 3.20. - Composite action: replaced leftover
remakebranding/placeholder URLs, installs from this repository, and setsSKIPBUILD_CACHE_DIR+CMAKE_*_COMPILER_LAUNCHER. - CI gates the release: sanitizers are blocking, the strict (warnings-as-errors) job runs
ctest, andreleaserequires all build, strict, sanitizer and launcher smoke jobs. - Tests that passed unconditionally:
test_simpleonly printed state andtest_multiprocessnever started a second process; it now spawns four real workers, and a newcli_e2e_testdrivesskipbuild -- <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