mirror of
https://github.com/astral-sh/uv.git
synced 2025-10-29 03:02:55 +00:00
Some checks are pending
CI / Determine changes (push) Waiting to run
CI / lint (push) Waiting to run
CI / cargo clippy | ubuntu (push) Blocked by required conditions
CI / cargo clippy | windows (push) Blocked by required conditions
CI / cargo dev generate-all (push) Blocked by required conditions
CI / cargo shear (push) Waiting to run
CI / cargo test | ubuntu (push) Blocked by required conditions
CI / cargo test | macos (push) Blocked by required conditions
CI / cargo test | windows (push) Blocked by required conditions
CI / check windows trampoline | aarch64 (push) Blocked by required conditions
CI / check windows trampoline | i686 (push) Blocked by required conditions
CI / check windows trampoline | x86_64 (push) Blocked by required conditions
CI / test windows trampoline | aarch64 (push) Blocked by required conditions
CI / test windows trampoline | i686 (push) Blocked by required conditions
CI / test windows trampoline | x86_64 (push) Blocked by required conditions
CI / typos (push) Waiting to run
CI / mkdocs (push) Waiting to run
CI / build binary | linux libc (push) Blocked by required conditions
CI / build binary | linux aarch64 (push) Blocked by required conditions
CI / build binary | linux musl (push) Blocked by required conditions
CI / smoke test | linux (push) Blocked by required conditions
CI / build binary | macos aarch64 (push) Blocked by required conditions
CI / build binary | macos x86_64 (push) Blocked by required conditions
CI / build binary | windows aarch64 (push) Blocked by required conditions
CI / build binary | msrv (push) Blocked by required conditions
CI / build binary | freebsd (push) Blocked by required conditions
CI / ecosystem test | pydantic/pydantic-core (push) Blocked by required conditions
CI / ecosystem test | prefecthq/prefect (push) Blocked by required conditions
CI / ecosystem test | pallets/flask (push) Blocked by required conditions
CI / smoke test | linux aarch64 (push) Blocked by required conditions
CI / check system | alpine (push) Blocked by required conditions
CI / smoke test | macos (push) Blocked by required conditions
CI / smoke test | windows x86_64 (push) Blocked by required conditions
CI / smoke test | windows aarch64 (push) Blocked by required conditions
CI / integration test | activate nushell venv (push) Blocked by required conditions
CI / build binary | windows x86_64 (push) Blocked by required conditions
CI / integration test | free-threaded on windows (push) Blocked by required conditions
CI / integration test | pypy on windows (push) Blocked by required conditions
CI / integration test | aarch64 windows implicit (push) Blocked by required conditions
CI / integration test | aarch64 windows explicit (push) Blocked by required conditions
CI / integration test | windows python install manager (push) Blocked by required conditions
CI / integration test | pypy on ubuntu (push) Blocked by required conditions
CI / integration test | graalpy on ubuntu (push) Blocked by required conditions
CI / integration test | graalpy on windows (push) Blocked by required conditions
CI / integration test | pyodide on ubuntu (push) Blocked by required conditions
CI / integration test | github actions (push) Blocked by required conditions
CI / integration test | free-threaded python on github actions (push) Blocked by required conditions
CI / integration test | pyenv on wsl x86-64 (push) Blocked by required conditions
CI / integration test | determine publish changes (push) Blocked by required conditions
CI / integration test | registries (push) Blocked by required conditions
CI / integration test | uv publish (push) Blocked by required conditions
CI / integration test | uv_build (push) Blocked by required conditions
CI / check cache | ubuntu (push) Blocked by required conditions
CI / check cache | macos aarch64 (push) Blocked by required conditions
CI / check system | python on debian (push) Blocked by required conditions
CI / check system | python on fedora (push) Blocked by required conditions
CI / check system | python on ubuntu (push) Blocked by required conditions
CI / check system | python on rocky linux 10 (push) Blocked by required conditions
CI / check system | python on rocky linux 8 (push) Blocked by required conditions
CI / check system | python on rocky linux 9 (push) Blocked by required conditions
CI / check system | graalpy on ubuntu (push) Blocked by required conditions
CI / check system | pypy on ubuntu (push) Blocked by required conditions
CI / check system | windows registry (push) Blocked by required conditions
CI / integration test | conda on ubuntu (push) Blocked by required conditions
CI / integration test | deadsnakes python3.9 on ubuntu (push) Blocked by required conditions
CI / check system | pyston (push) Blocked by required conditions
CI / check system | python on macos aarch64 (push) Blocked by required conditions
CI / check system | homebrew python on macos aarch64 (push) Blocked by required conditions
CI / check system | x86-64 python on macos aarch64 (push) Blocked by required conditions
CI / check system | python on macos x86-64 (push) Blocked by required conditions
CI / check system | python3.10 on windows x86-64 (push) Blocked by required conditions
CI / check system | python3.10 on windows x86 (push) Blocked by required conditions
CI / check system | python3.13 on windows x86-64 (push) Blocked by required conditions
CI / check system | x86-64 python3.13 on windows aarch64 (push) Blocked by required conditions
CI / check system | aarch64 python3.13 on windows aarch64 (push) Blocked by required conditions
CI / check system | python3.12 via chocolatey (push) Blocked by required conditions
CI / check system | python3.9 via pyenv (push) Blocked by required conditions
CI / check system | python3.13 (push) Blocked by required conditions
CI / check system | conda3.11 on macos aarch64 (push) Blocked by required conditions
CI / check system | conda3.8 on macos aarch64 (push) Blocked by required conditions
CI / check system | conda3.11 on linux x86-64 (push) Blocked by required conditions
CI / check system | conda3.8 on linux x86-64 (push) Blocked by required conditions
CI / check system | conda3.11 on windows x86-64 (push) Blocked by required conditions
CI / check system | conda3.8 on windows x86-64 (push) Blocked by required conditions
CI / check system | amazonlinux (push) Blocked by required conditions
CI / check system | embedded python3.10 on windows x86-64 (push) Blocked by required conditions
CI / benchmarks | walltime aarch64 linux (push) Blocked by required conditions
CI / benchmarks | instrumented (push) Blocked by required conditions
zizmor / Run zizmor (push) Waiting to run
Cargo is currently recompiling uv-python on every invocation because the minified JSON output file is getting a mod time newer than the last run. Instead, set the mod time of the output file to the same as the input file.
75 lines
2.2 KiB
Rust
75 lines
2.2 KiB
Rust
#[allow(clippy::disallowed_types)]
|
|
use std::fs::{File, FileTimes};
|
|
use std::io::Write;
|
|
use std::path::PathBuf;
|
|
use std::{env, fs};
|
|
|
|
fn process_json(data: &serde_json::Value) -> serde_json::Value {
|
|
let mut out_data = serde_json::Map::new();
|
|
|
|
if let Some(obj) = data.as_object() {
|
|
for (key, value) in obj {
|
|
out_data.insert(key.clone(), value.clone());
|
|
}
|
|
}
|
|
|
|
serde_json::Value::Object(out_data)
|
|
}
|
|
|
|
fn main() {
|
|
let version_metadata = PathBuf::from_iter([
|
|
env::var("CARGO_MANIFEST_DIR").unwrap(),
|
|
"download-metadata.json".into(),
|
|
]);
|
|
|
|
let version_metadata_minified = PathBuf::from_iter([
|
|
env::var("OUT_DIR").unwrap(),
|
|
"download-metadata-minified.json".into(),
|
|
]);
|
|
|
|
println!(
|
|
"cargo::rerun-if-changed={}",
|
|
version_metadata.to_str().unwrap()
|
|
);
|
|
|
|
println!(
|
|
"cargo::rerun-if-changed={}",
|
|
version_metadata_minified.to_str().unwrap()
|
|
);
|
|
|
|
let json_data: serde_json::Value = serde_json::from_str(
|
|
#[allow(clippy::disallowed_methods)]
|
|
&fs::read_to_string(&version_metadata).expect("Failed to read download-metadata.json"),
|
|
)
|
|
.expect("Failed to parse JSON");
|
|
|
|
let filtered_data = process_json(&json_data);
|
|
|
|
#[allow(clippy::disallowed_types)]
|
|
let mut out_file = File::create(version_metadata_minified)
|
|
.expect("failed to open download-metadata-minified.json");
|
|
|
|
#[allow(clippy::disallowed_methods)]
|
|
out_file
|
|
.write_all(
|
|
serde_json::to_string(&filtered_data)
|
|
.expect("Failed to serialize JSON")
|
|
.as_bytes(),
|
|
)
|
|
.expect("Failed to write minified JSON");
|
|
|
|
// Cargo uses the modified times of the paths specified in
|
|
// `rerun-if-changed`, so fetch the current file times and set them the same
|
|
// on the output file.
|
|
#[allow(clippy::disallowed_methods)]
|
|
let meta =
|
|
fs::metadata(version_metadata).expect("failed to read metadata for download-metadata.json");
|
|
|
|
out_file
|
|
.set_times(
|
|
FileTimes::new()
|
|
.set_accessed(meta.accessed().unwrap())
|
|
.set_modified(meta.modified().unwrap()),
|
|
)
|
|
.expect("failed to write file times to download-metadata-minified.json");
|
|
}
|