Skip to content

Commit

Permalink
twoliter: Remove Release.toml from build
Browse files Browse the repository at this point in the history
  • Loading branch information
ecpullen committed Nov 14, 2023
1 parent 337b5a0 commit e1686f2
Show file tree
Hide file tree
Showing 10 changed files with 45 additions and 25 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion tests/projects/project1/Release.toml

This file was deleted.

8 changes: 0 additions & 8 deletions tests/projects/project1/variants/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

31 changes: 23 additions & 8 deletions twoliter/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,36 @@ env_logger = "0.10"
flate2 = "1"
hex = "0.4"
log = "0.4"
non-empty-string = { version = "0.2", features = [ "serde" ] }
non-empty-string = { version = "0.2", features = ["serde"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
sha2 = "0.10"
tar = "0.4"
tempfile = "3"
tokio = { version = "1", default-features = false, features = ["fs", "macros", "process", "rt-multi-thread"] }
tokio = { version = "1", default-features = false, features = [
"fs",
"macros",
"process",
"rt-multi-thread",
] }
toml = "0.8"
uuid = { version = "1", features = [ "v4" ] }
uuid = { version = "1", features = ["v4"] }

# Binary dependencies. These are binaries that we want to embed in the Twoliter binary.
buildsys = { version = "0.1.0", artifact = [ "bin:buildsys", "bin:bottlerocket-variant" ], path = "../tools/buildsys" }
pubsys = { version = "0.1.0", artifact = [ "bin:pubsys" ], path = "../tools/pubsys" }
pubsys-setup = { version = "0.1.0", artifact = [ "bin:pubsys-setup" ], path = "../tools/pubsys-setup" }
testsys = { version = "0.1.0", artifact = [ "bin:testsys" ], path = "../tools/testsys" }
tuftool = { version = "0.10", artifact = [ "bin:tuftool" ] }
buildsys = { version = "0.1.0", artifact = [
"bin:buildsys",
"bin:bottlerocket-variant",
], path = "../tools/buildsys" }
pubsys = { version = "0.1.0", artifact = [
"bin:pubsys",
], path = "../tools/pubsys" }
pubsys-setup = { version = "0.1.0", artifact = [
"bin:pubsys-setup",
], path = "../tools/pubsys-setup" }
testsys = { version = "0.1.0", artifact = [
"bin:testsys",
], path = "../tools/testsys" }
tuftool = { version = "0.10", artifact = ["bin:tuftool"] }

[build-dependencies]
bytes = "1"
Expand Down
4 changes: 3 additions & 1 deletion twoliter/embedded/Makefile.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ BUILDSYS_VERSION_BUILD = { script = ["git describe --always --dirty --exclude '*
# later in this section. You have to edit the path here in Makefile.toml to
# use a different Release.toml.
BUILDSYS_RELEASE_CONFIG_PATH = "${BUILDSYS_ROOT_DIR}/Release.toml"
BUILDSYS_VERSION_IMAGE = { script = ["awk -F '[ =\"]+' '$1 == \"version\" {print $2}' ${BUILDSYS_RELEASE_CONFIG_PATH}"] }

# This can be overridden with -e to build a different variant from the variants/ directory
BUILDSYS_VARIANT = { script = ['echo "${BUILDSYS_VARIANT:-aws-k8s-1.24}"'] }
# Product name used for file and directory naming
Expand Down Expand Up @@ -137,6 +137,8 @@ TESTSYS_LOG_LEVEL = "info"
# Certain variables are defined here to allow us to override a component value
# on the command line.

BUILDSYS_VERSION_IMAGE = { script = ["awk -F '[ =\"]+' '$1 == \"version\" {print $2}' ${BUILDSYS_RELEASE_CONFIG_PATH}"], condition = { env_not_set = ["BUILDSYS_VERSION_IMAGE"]}}

# Depends on ${BUILDSYS_JOBS}.
CARGO_MAKE_CARGO_LIMIT_JOBS = "--jobs ${BUILDSYS_JOBS}"
CARGO_MAKE_CARGO_ARGS = "--offline --locked"
Expand Down
4 changes: 4 additions & 0 deletions twoliter/src/cmd/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use crate::cargo_make::CargoMake;
use crate::docker::DockerContainer;
use crate::project;
use crate::tools::{install_tools, tools_tempdir};
use crate::variant::variant_version;
use anyhow::{Context, Result};
use clap::Parser;
use log::{debug, trace};
Expand Down Expand Up @@ -47,6 +48,8 @@ impl BuildVariant {
let makefile_path = tempdir.path().join("Makefile.toml");
let packages_dir =
TempDir::new().context("Unable to create a tempdir for Twoliter's packages")?;
let variant_version =
variant_version(&project.project_dir().join("variants"), &self.variant).await?;

let sdk_container = DockerContainer::new(
format!("sdk-{}", token),
Expand Down Expand Up @@ -106,6 +109,7 @@ impl BuildVariant {
"BUILDSYS_SBKEYS_DIR",
(*sbkeys_dir).as_ref().join("sbkeys").display().to_string(),
)
.env("BUILDSYS_VERSION_IMAGE", variant_version)
.makefile(makefile_path)
.project_dir(project.project_dir())
.exec("build")
Expand Down
16 changes: 10 additions & 6 deletions twoliter/src/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,16 @@ pub(crate) async fn exec_log(cmd: &mut Command) -> Result<()> {
log::max_level(),
LevelFilter::Off | LevelFilter::Error | LevelFilter::Warn
);
exec(cmd, quiet).await
exec(cmd, quiet).await?;
Ok(())
}

/// Run a `tokio::process::Command` and return a `Result` letting us know whether or not it worked.
/// `quiet` determines whether or not the command output will be piped to `stdout/stderr`. When
/// `quiet=true`, no output will be shown.
pub(crate) async fn exec(cmd: &mut Command, quiet: bool) -> Result<()> {
/// `quiet=true`, no output will be shown and will be returned instead.
pub(crate) async fn exec(cmd: &mut Command, quiet: bool) -> Result<String> {
debug!("Running: {:?}", cmd);
if quiet {
Ok(if quiet {
// For quiet levels of logging we capture stdout and stderr
let output = cmd
.output()
Expand All @@ -30,6 +31,8 @@ pub(crate) async fn exec(cmd: &mut Command, quiet: bool) -> Result<()> {
String::from_utf8_lossy(&output.stdout),
String::from_utf8_lossy(&output.stderr)
);

String::from_utf8(output.stdout).context("Unable to convert command output to `String`")?
} else {
// For less quiet log levels we stream to stdout and stderr.
let status = cmd
Expand All @@ -42,6 +45,7 @@ pub(crate) async fn exec(cmd: &mut Command, quiet: bool) -> Result<()> {
"Command was unsuccessful, exit code {}",
status.code().unwrap_or(1),
);
}
Ok(())

"".to_string()
})
}
3 changes: 2 additions & 1 deletion twoliter/src/docker/container.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ impl DockerContainer {
let mut args = vec!["cp".to_string()];
args.push(format!("{}:{}", self.name, src.display()));
args.push(dest.display().to_string());
exec(Command::new("docker").args(args), true).await
exec(Command::new("docker").args(args), true).await?;
Ok(())
}
}

Expand Down
1 change: 1 addition & 0 deletions twoliter/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ mod common;
mod docker;
mod project;
mod tools;
mod variant;

/// Test code that should only be compiled when running tests.
#[cfg(test)]
Expand Down
1 change: 1 addition & 0 deletions twoliter/src/test/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ be compiled for `cfg(test)`, which is accomplished at its declaration in `main.r
!*/
mod cargo_make;
mod variant_version;
use std::path::PathBuf;

/// Return the canonical path to the directory where we store test data.
Expand Down

0 comments on commit e1686f2

Please sign in to comment.