Move static feature out of perf features (#13265)

#5577 fixed a bug on macos due to dynamically linking lzma/xz through
static linking. In #7686, this feature was moved to the performance
category.

This PR moves the `xz2/static` back to the general default features,
and, inspired by https://github.com/Homebrew/homebrew-core/pull/222211,
it structures and documents the feature flags cleaner.

We need to take care that this feature does not accidentally disable
features we want.

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
This commit is contained in:
konsti 2025-05-02 17:56:40 +02:00 committed by GitHub
parent b442aae80e
commit 96cfca1c8f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 36 additions and 29 deletions

View File

@ -2250,7 +2250,7 @@ jobs:
cargo run --bin uv -- pip compile scripts/requirements/airflow.in --universal --exclude-newer 2024-08-08 --cache-dir .cache
- name: "Build benchmarks"
run: cargo codspeed build --profile profiling --features "codspeed,performance" -p uv-bench
run: cargo codspeed build --profile profiling --features codspeed -p uv-bench
- name: "Run benchmarks"
uses: CodSpeedHQ/action@0010eb0ca6e89b80c88e8edaaa07cfe5f3e6664d # v3.5.0

View File

@ -58,6 +58,4 @@ ignored = ["uv-extract"]
[features]
codspeed = ["codspeed-criterion-compat"]
performance = [
"uv-extract/performance"
]
static = ["uv-extract/static"]

View File

@ -66,13 +66,10 @@ name = "uv-dev"
required-features = ["dev"]
[features]
default = ["performance"]
default = ["performance", "uv-extract/static"]
# Actually build the dev CLI.
dev = []
performance = [
"performance-memory-allocator",
"uv-extract/performance"
]
performance = ["performance-memory-allocator"]
performance-memory-allocator = ["dep:uv-performance-memory-allocator"]
render = ["poloto", "resvg", "tagu"]

View File

@ -63,4 +63,4 @@ insta = { version = "1.40.0", features = ["filters", "json", "redactions"] }
[features]
default = []
performance = ["uv-extract/performance"]
static = ["uv-extract/static"]

View File

@ -40,7 +40,8 @@ zip = { workspace = true }
[features]
default = []
performance = ["xz2/static"]
# Avoid a liblzma.so dependency
static = ["xz2/static"]
[package.metadata.cargo-shear]
ignored = ["xz2"]

View File

@ -136,33 +136,44 @@ ignored = [
]
[features]
default = ["python", "python-managed", "pypi", "git", "performance", "crates-io", "slow-tests", "test-ecosystem"]
default = ["performance", "uv-distribution/static", "default-tests"]
# Use better memory allocators, etc.
performance = [
"performance-memory-allocator",
"uv-distribution/performance",
]
performance = ["performance-memory-allocator"]
performance-memory-allocator = ["dep:uv-performance-memory-allocator"]
# Adds self-update functionality. This feature is only enabled for uv's cargo-dist installer
# and should be left unselected when building uv for package managers.
self-update = ["axoupdater", "uv-cli/self-update"]
# Features for development only.
tracing-durations-export = ["dep:tracing-durations-export", "uv-resolver/tracing-durations-export"]
# Introduces a dependency on a local Python installation.
python = []
# Introduces a dependency on a local Python installation with specific patch versions.
python-patch = []
# Introduces a dependency on managed Python installations.
python-managed = []
# Introduces a dependency on PyPI.
pypi = []
# Introduces a dependency on Git.
git = []
# Introduces a dependency on crates.io.
# Features that only apply when running tests, no-ops otherwise.
default-tests = [
"crates-io",
"git",
"pypi",
"python",
"python-managed",
"slow-tests",
"test-ecosystem"
]
# Introduces a testing dependency on crates.io.
crates-io = []
# Introduces a testing dependency on Git.
git = []
# Introduces a testing dependency on PyPI.
pypi = []
# Introduces a testing dependency on a local Python installation.
python = []
# Introduces a testing dependency on a local Python installation with specific patch versions.
python-patch = []
# Introduces a testing dependency on managed Python installations.
python-managed = []
# Include "slow" test cases.
slow-tests = []
# Includes test cases that require ecosystem packages
test-ecosystem = []
# Adds self-update functionality.
self-update = ["axoupdater", "uv-cli/self-update"]
[package.metadata.dist]
dist = true