fetcherVersion = 1 and 2 were deprecated in the 26.05 release and
scheduled for removal in 26.11. Remove them from supportedFetcherVersions
and replace the deprecation warning with a hard throw that points users
at the migration to fetcherVersion = 3.
No in-tree package still uses fetcherVersion = 1 or 2. The now-unreachable
v1/v2 code paths are removed in a follow-up commit.
Assisted-by: claude-code with claude-opus-4-7[1m]-xhigh
Remove python27Packages, python2Packages, and pythonPackages alias
mentions; drop the "python refers to CPython 2.7" sentence and the
Python 2 namespace-collision note; strip Python-2-only inline comments
from the venvShellHook example.
Keep all pypy2/pypy27 references — pypy27 stays defined inside
pythonInterpreters as the bootstrap for pypy3.
The pnpm v11 store uses a SQLite database (index.db) whose binary format
is non-deterministic across platforms (version-valid-for number, etc).
This caused hash mismatches when building the same pnpmDeps on different
machines despite identical logical content.
Fix by dumping the SQLite database to a text SQL file during the fetch
phase and reconstructing it during the build phase. This ensures the
stored representation is fully deterministic.
Assisted-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Gergő Gutyina <gutyina.gergo.2@gmail.com>
Proc-macro crates are host dylibs that rustc dlopen()s. Instrumentation
flags passed via extraRustcOpts (e.g. -Zsanitizer=address,
-Cinstrument-coverage) leave unresolved runtime symbols in those dylibs
and break the build. Cargo avoids this by not applying RUSTFLAGS to host
artifacts; buildRustCrate already has extraRustcOptsForBuildRs for build
scripts, so add the analogous knob for proc-macros.
Defaults to null, which falls back to extraRustcOpts so existing callers
are unchanged. Set to [] to opt proc-macros out when applying
sanitizer/coverage flags tree-wide via crateOverrides.
Extend the existing v1 deprecation warning to also fire for
`fetcherVersion = 2`, since callers should migrate directly to
`fetcherVersion = 3`. Both pre-v3 versions now share a single
`lib.warnIf` keyed on `fetcherVersion < 3` and produce a message
parameterised by the offending version.
Consolidate the manual's version-history entries: the per-item
**Deprecated** and **Recommended** labels are replaced by a single
sentence above the list noting that v3 is recommended and v1/v2 are
scheduled for removal.
Add a release note mirroring the existing v1 entry.
This allows calling `buildMavenPackage` with a function that receives a
`finalAttrs` parameter, much like `stdenv.mkDerivation(finalAttrs: ...)`
works.
fetcherVersion = 1 was kept around for backwards compatibility while
callers migrated to 2/3.
Emit a `lib.warnIf` warning pointing at the affected pname whenever v1
is used.
After 26.11 ships, a follow-up PR should drop 1 from
`supportedFetcherVersions` and clean up the dead v1 code paths in
default.nix, pnpm-config-hook.sh and serve.nix.
Also rewrite the manual section to recommend fetcherVersion = 3 for new
packages and mark v1 as deprecated/scheduled-for-removal in the
version history.
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>