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:
Florian Klink 2023-12-09 13:14:16 +02:00 committed by clbot
parent 0907420600
commit f11c6d610c
7 changed files with 0 additions and 186 deletions

8
tvix/Cargo.lock generated
View file

@ -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"

View file

@ -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";

View file

@ -24,7 +24,6 @@ members = [
"eval",
"eval/builtin-macros",
"glue",
"nix_cli",
"nix-compat",
"serde",
"store",

View file

@ -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 = []

View file

@ -1,5 +0,0 @@
{ depot, ... }:
depot.tvix.crates.workspaceMembers.nix-cli.build.override {
runTests = true;
}

View file

@ -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)
}
}

View file

@ -1,3 +0,0 @@
fn main() {
println!("Hello, tvix!");
}