Mirrors the same pinned third-party library build sequence as debian13/ on Alpine 3.24, targeting musl libc, with the fixes needed to get the whole non-Meta stack building cleanly: - Adjusts the package install step for apk; builds makeself from a pinned source tag since it isn't packaged for stable Alpine releases; adds coreutils so GNU realpath (needed by liburing's configure script) is available in place of busybox's; drops sha256 checksum verification on curl-fetched archives. - CMake on 3.24 is 4.x, which removed compatibility with cmake_minimum_required() versions below 3.5. Adds -DCMAKE_POLICY_VERSION_MINIMUM=3.5 (CMake's own sanctioned workaround, not a source patch) to every cmake configure call so unmigrated CMakeLists.txt in our pinned dependencies still configure. - GCC on 3.24 is 15, which defaults to C23; C23 redefines an empty `()` in a function declaration to mean "no parameters" instead of the old K&R "unspecified parameters", which breaks a decades-old conftest in GMP 6.3.0's configure. Pins GMP's build to -std=gnu17 to restore the old semantics for that one dependency. - Switches the GitHub mirror from gh-proxy.com (which started rejecting some repos with a content-filter 403 in this environment) to the project's own reverse proxy at wangguofang.net/github.com/. Folly/Fizz/Wangle/mvfst/fbthrift/CacheLib are left commented out: their portability layer reaches for glibc-only macros/symbols in multiple places with no musl branch (off64_t/lseek64/pread64 in folly/portability/Unistd.h, __ELF_NATIVE_CLASS in folly/debugging/symbolizer/Elf.cpp, and likely more further in), and patching each one as it surfaces risks introducing subtle bugs in code we don't own. The reasoning is recorded inline for anyone revisiting this later. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WGpSs9pKTbvPkmFvBaWhBp
28 lines
2.2 KiB
Markdown
28 lines
2.2 KiB
Markdown
# Project Instructions
|
|
|
|
## Source Dependencies
|
|
|
|
- Do not download or initialize Git submodules during source builds unless an explicit exception is listed below.
|
|
- Rely on the default non-recursive behavior of `git clone`; do not add submodule initialization or update steps.
|
|
- Declare and pin every source dependency version in the `Dockerfile` or another tracked project file.
|
|
- Do not use floating branches, unversioned archives, or implicit dependency downloads.
|
|
- Add each dependency as a separate, reviewable build step so its source and version remain visible.
|
|
- Append new dependency build steps after all existing dependency build steps. Do not insert or reorder steps in the existing build sequence, so previously successful build layers remain unchanged.
|
|
- The log4cplus build is allowed to fetch its required `ThreadPool` submodule as a shallow repository pinned by `REL_2_0_5` to commit `cc0b6371d3963f7028c2da5fc007733f9f3bf205`. Do not fetch unused log4cplus submodules.
|
|
- Boost is allowed to recursively clone its modular source submodules. The parent repository and every submodule must be shallow clones from the `boost-1.83.0` release tag.
|
|
|
|
## System Development Packages
|
|
|
|
- Do not install distribution-provided `-dev` packages for third-party libraries.
|
|
- Build third-party development dependencies from source at explicitly pinned versions.
|
|
- System `-dev` packages are allowed only for foundational platform infrastructure, such as glibc and Linux kernel headers.
|
|
- Document any new foundational `-dev` package exception in this file before adding it to the image.
|
|
- On Rocky Linux 9, `glibc-devel`, `kernel-headers`, and `libstdc++-devel` may be installed directly or as compiler dependencies because they are foundational C/C++ platform and toolchain components.
|
|
- On Alpine Linux, `musl-dev` and `linux-headers` may be installed directly or as compiler dependencies because they are foundational C/C++ platform and toolchain components.
|
|
|
|
## Meta Libraries
|
|
|
|
- Pin all Meta/Facebook ecosystem libraries to the same date-based release tag.
|
|
- The current Meta release tag is `v2026.08.03.00`; use this exact tag for Folly and every subsequently added Meta library.
|
|
- Update the shared Meta release tag only when all Meta libraries in this project can be updated together.
|