chore(tvix/nix_cli): drop crate
The only thing this was doing was invoking nix-store --add, which is not gonna help us populate the tvix-store at all (and we now have `tvix-store import`). This is also (rightfully) causing clippy warnings, because of some fields being unused. It's more of a skeleton, and rather than shelling out to Nix for some usecases, we might introduce a "compatible" Nix CLI frontend for a subset of commands. Drop this for now, to decrease the noise and confusion. Change-Id: I2fd399e9320260f08893b685561755af9c7c961c Reviewed-on: https://cl.tvl.fyi/c/depot/+/10226 Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su>
This commit is contained in:
parent
0907420600
commit
f11c6d610c
7 changed files with 0 additions and 186 deletions
8
tvix/Cargo.lock
generated
8
tvix/Cargo.lock
generated
|
@ -1531,14 +1531,6 @@ dependencies = [
|
|||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nix-cli"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"clap 4.2.7",
|
||||
"tempfile",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nix-compat"
|
||||
version = "0.1.0"
|
||||
|
|
|
@ -33,16 +33,6 @@ rec {
|
|||
# You can override the features with
|
||||
# workspaceMembers."${crateName}".build.override { features = [ "default" "feature1" ... ]; }.
|
||||
workspaceMembers = {
|
||||
"nix-cli" = rec {
|
||||
packageId = "nix-cli";
|
||||
build = internal.buildRustCrateWithFeatures {
|
||||
packageId = "nix-cli";
|
||||
};
|
||||
|
||||
# Debug support which might change between releases.
|
||||
# File a bug if you depend on any for non-debug work!
|
||||
debug = internal.debugCrate { inherit packageId; };
|
||||
};
|
||||
"nix-compat" = rec {
|
||||
packageId = "nix-compat";
|
||||
build = internal.buildRustCrateWithFeatures {
|
||||
|
@ -4607,41 +4597,6 @@ rec {
|
|||
};
|
||||
resolvedDefaultFeatures = [ "feature" "fs" "user" ];
|
||||
};
|
||||
"nix-cli" = rec {
|
||||
crateName = "nix-cli";
|
||||
version = "0.1.0";
|
||||
edition = "2021";
|
||||
crateBin = [
|
||||
{
|
||||
name = "nix-cli";
|
||||
path = "src/main.rs";
|
||||
requiredFeatures = [ ];
|
||||
}
|
||||
{
|
||||
name = "nix-store";
|
||||
path = "src/bin/nix-store.rs";
|
||||
requiredFeatures = [ ];
|
||||
}
|
||||
];
|
||||
# We can't filter paths with references in Nix 2.4
|
||||
# See https://github.com/NixOS/nix/issues/5410
|
||||
src =
|
||||
if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion))
|
||||
then lib.cleanSourceWith { filter = sourceFilter; src = ./nix_cli; }
|
||||
else ./nix_cli;
|
||||
dependencies = [
|
||||
{
|
||||
name = "clap";
|
||||
packageId = "clap 4.2.7";
|
||||
}
|
||||
{
|
||||
name = "tempfile";
|
||||
packageId = "tempfile";
|
||||
}
|
||||
];
|
||||
features = { };
|
||||
resolvedDefaultFeatures = [ "integration_tests" ];
|
||||
};
|
||||
"nix-compat" = rec {
|
||||
crateName = "nix-compat";
|
||||
version = "0.1.0";
|
||||
|
|
|
@ -24,7 +24,6 @@ members = [
|
|||
"eval",
|
||||
"eval/builtin-macros",
|
||||
"glue",
|
||||
"nix_cli",
|
||||
"nix-compat",
|
||||
"serde",
|
||||
"store",
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
[package]
|
||||
name = "nix-cli"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies.clap]
|
||||
version = "4.0"
|
||||
|
||||
[dependencies.tempfile]
|
||||
version = "3.2.0"
|
||||
|
||||
[[bin]]
|
||||
name = "nix-store"
|
||||
|
||||
[features]
|
||||
integration_tests = []
|
|
@ -1,5 +0,0 @@
|
|||
{ depot, ... }:
|
||||
|
||||
depot.tvix.crates.workspaceMembers.nix-cli.build.override {
|
||||
runTests = true;
|
||||
}
|
|
@ -1,106 +0,0 @@
|
|||
fn main() {
|
||||
main_args(std::env::args().collect()).unwrap_or_else(|e| e.exit());
|
||||
}
|
||||
|
||||
pub fn main_args(args: Vec<String>) -> clap::error::Result<NixResult> {
|
||||
let matches = clap::Command::new("nix-store")
|
||||
.subcommand(clap::Command::new("--add").arg(clap::Arg::new("FILE").required(true).index(1)))
|
||||
.try_get_matches_from(args.iter())?;
|
||||
if let Some(add) = matches.subcommand_matches("--add") {
|
||||
let file = add.get_one::<String>("FILE").expect("--add needs a file");
|
||||
let file_contents = std::fs::read_to_string(file)
|
||||
.unwrap_or_else(|_| panic!("file {} does not exist", file));
|
||||
Ok(NixResult::FileAddedToStore {
|
||||
content: file_contents,
|
||||
})
|
||||
} else {
|
||||
panic!("read some arguments that we do not know: {:?}", args)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Eq, PartialEq)]
|
||||
pub enum NixResult {
|
||||
FileAddedToStore { content: String },
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod integration_tests {
|
||||
use std::collections::VecDeque;
|
||||
use std::io::Write;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[derive(Debug)]
|
||||
enum NixOutput {
|
||||
#[allow(dead_code)]
|
||||
Err {
|
||||
status: i32,
|
||||
stdout: String,
|
||||
stderr: String,
|
||||
},
|
||||
Ok {
|
||||
stdout: String,
|
||||
stderr: String,
|
||||
},
|
||||
}
|
||||
|
||||
fn run_nix_command(cmd: &str, args: Vec<String>) -> NixOutput {
|
||||
let out = std::process::Command::new(cmd)
|
||||
.args(args)
|
||||
.output()
|
||||
.unwrap_or_else(|_| panic!("could not run {}", cmd));
|
||||
match out.status.code().expect("no status code!") {
|
||||
0 => NixOutput::Ok {
|
||||
stdout: String::from_utf8_lossy(&out.stdout).trim_end().to_string(),
|
||||
stderr: String::from_utf8_lossy(&out.stderr).trim_end().to_string(),
|
||||
},
|
||||
status => NixOutput::Err {
|
||||
status,
|
||||
stdout: String::from_utf8_lossy(&out.stdout).trim_end().to_string(),
|
||||
stderr: String::from_utf8_lossy(&out.stderr).trim_end().to_string(),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
fn nix_nix_store<'a>(args: Vec<String>) -> NixResult {
|
||||
match run_nix_command("nix-store", args) {
|
||||
err @ NixOutput::Err { .. } => panic!("nix-store --add failed: {:#?}", err),
|
||||
NixOutput::Ok { stdout, .. } => NixResult::FileAddedToStore {
|
||||
content: std::fs::read_to_string(&stdout)
|
||||
.unwrap_or_else(|_| panic!("cannot open {} as store file", stdout)),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
fn tvix_nix_store<'a>(args: Vec<String>) -> NixResult {
|
||||
eprintln!("running tvix with arguments {:?}", args);
|
||||
let mut args = VecDeque::from(args);
|
||||
args.push_front("tvix-store".to_string());
|
||||
super::main_args(Vec::from(args))
|
||||
.unwrap_or_else(|e| panic!("clap command line parsing failed:\n{}", e))
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(not(feature = "integration_tests"), ignore)]
|
||||
fn test_nix_store_add() {
|
||||
let file_content = "I am a copied file";
|
||||
let mut tempfile = tempfile::NamedTempFile::new().expect("cannot create temp file");
|
||||
tempfile
|
||||
.write_all(file_content.as_bytes())
|
||||
.expect("could not write to tempfile");
|
||||
assert_eq!(
|
||||
tvix_nix_store(vec![
|
||||
"--add".to_string(),
|
||||
tempfile.path().as_os_str().to_string_lossy().into_owned()
|
||||
]),
|
||||
nix_nix_store(vec![
|
||||
"--add".to_string(),
|
||||
tempfile.path().as_os_str().to_string_lossy().into_owned()
|
||||
]),
|
||||
"added file contents were not the same"
|
||||
);
|
||||
|
||||
// make sure the tempfile lives till here
|
||||
drop(tempfile)
|
||||
}
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
fn main() {
|
||||
println!("Hello, tvix!");
|
||||
}
|
Loading…
Reference in a new issue