diff --git a/.gitignore b/.gitignore index c199a49..6b7f969 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,4 @@ *.patched # We do want the test images -!/tests/data/*.img +!/avbroot/tests/data/*.img diff --git a/Cargo.toml b/Cargo.toml index 4da40a8..f15138d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,81 +1,7 @@ -[package] -name = "avbroot" -version = "0.1.0" -license = "GPL-3.0-only" -edition = "2021" -repository = "https://github.com/chenxiaolong/avbroot" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -anyhow = "1.0.75" -base64 = "0.21.3" -byteorder = "1.4.3" -clap = { version = "4.4.1", features = ["derive"] } -clap_complete = "4.4.0" -cms = { version = "0.2.2", features = ["std"] } -const-oid = "0.9.5" -ctrlc = "3.4.0" -flate2 = "1.0.27" -hex = "0.4.3" -lz4_flex = "0.11.1" -memchr = "2.6.0" -num-bigint-dig = "0.8.4" -num-traits = "0.2.16" -phf = { version = "0.11.2", features = ["macros"] } -pkcs8 = { version = "0.10.2", features = ["encryption", "pem"] } -quick-protobuf = "0.8.1" -rand = "0.8.5" -rayon = "1.7.0" -regex = { version = "1.9.4", default-features = false, features = ["perf", "std"] } -# We use ring instead of sha2 for sha256 digest computation of large files -# because sha2 is significantly slower on older x86_64 CPUs without the SHA-NI -# instructions. sha2 is still used for signing purposes. -# https://github.com/RustCrypto/hashes/issues/327 -ring = "0.16.20" -rpassword = "7.2.0" -rsa = { version = "0.9.2", features = ["sha1", "sha2"] } -serde = { version = "1.0.188", features = ["derive"] } -sha1 = "0.10.5" -sha2 = "0.10.7" -tempfile = "3.8.0" -thiserror = "1.0.47" -toml_edit = { version = "0.19.14", features = ["serde"] } -topological-sort = "0.2.2" -x509-cert = { version = "0.2.4", features = ["builder"] } -xz2 = "0.1.7" - -# There's an upstream bug that causes an infinite loop in the write::BzDecoder -# destructor if the decoder is fed invalid data. While this never happens during -# normal operation, it is possible to run into this by running `ota extract` -# against a `--stripped` OTA file. -# https://github.com/alexcrichton/bzip2-rs/pull/99 -[dependencies.bzip2] -git = "https://github.com/jongiddy/bzip2-rs" -rev = "2aefcb4d3634de1df226c73d93f758d65228bb8c" - -# https://github.com/zip-rs/zip/pull/383 -[dependencies.zip] -git = "https://github.com/chenxiaolong/zip" -rev = "989101f9384b9e94e36e6e9e0f51908fdf98bde6" -default-features = false -features = ["deflate"] - -[target.'cfg(unix)'.dependencies] -rustix = { version = "0.38.9", default-features = false, features = ["process"] } - -[build-dependencies] -# Disable the clap feature since it pulls in an ancient version of clap. -pb-rs = { version = "0.10.0", default-features = false } - -[dev-dependencies] -assert_matches = "1.5.0" - -[features] -static = ["bzip2/static", "xz2/static"] - [workspace] -members = ["e2e", "xtask"] +default-members = ["avbroot"] +members = ["avbroot", "e2e", "xtask"] +resolver = "2" [workspace.package] version = "0.1.0" diff --git a/avbroot/Cargo.toml b/avbroot/Cargo.toml new file mode 100644 index 0000000..dd18fee --- /dev/null +++ b/avbroot/Cargo.toml @@ -0,0 +1,76 @@ +[package] +name = "avbroot" +version.workspace = true +license.workspace = true +edition.workspace = true +repository.workspace = true +publish = false + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +anyhow = "1.0.75" +base64 = "0.21.3" +byteorder = "1.4.3" +clap = { version = "4.4.1", features = ["derive"] } +clap_complete = "4.4.0" +cms = { version = "0.2.2", features = ["std"] } +const-oid = "0.9.5" +ctrlc = "3.4.0" +flate2 = "1.0.27" +hex = "0.4.3" +lz4_flex = "0.11.1" +memchr = "2.6.0" +num-bigint-dig = "0.8.4" +num-traits = "0.2.16" +phf = { version = "0.11.2", features = ["macros"] } +pkcs8 = { version = "0.10.2", features = ["encryption", "pem"] } +quick-protobuf = "0.8.1" +rand = "0.8.5" +rayon = "1.7.0" +regex = { version = "1.9.4", default-features = false, features = ["perf", "std"] } +# We use ring instead of sha2 for sha256 digest computation of large files +# because sha2 is significantly slower on older x86_64 CPUs without the SHA-NI +# instructions. sha2 is still used for signing purposes. +# https://github.com/RustCrypto/hashes/issues/327 +ring = "0.16.20" +rpassword = "7.2.0" +rsa = { version = "0.9.2", features = ["sha1", "sha2"] } +serde = { version = "1.0.188", features = ["derive"] } +sha1 = "0.10.5" +sha2 = "0.10.7" +tempfile = "3.8.0" +thiserror = "1.0.47" +toml_edit = { version = "0.19.14", features = ["serde"] } +topological-sort = "0.2.2" +x509-cert = { version = "0.2.4", features = ["builder"] } +xz2 = "0.1.7" + +# There's an upstream bug that causes an infinite loop in the write::BzDecoder +# destructor if the decoder is fed invalid data. While this never happens during +# normal operation, it is possible to run into this by running `ota extract` +# against a `--stripped` OTA file. +# https://github.com/alexcrichton/bzip2-rs/pull/99 +[dependencies.bzip2] +git = "https://github.com/jongiddy/bzip2-rs" +rev = "2aefcb4d3634de1df226c73d93f758d65228bb8c" + +# https://github.com/zip-rs/zip/pull/383 +[dependencies.zip] +git = "https://github.com/chenxiaolong/zip" +rev = "989101f9384b9e94e36e6e9e0f51908fdf98bde6" +default-features = false +features = ["deflate"] + +[target.'cfg(unix)'.dependencies] +rustix = { version = "0.38.9", default-features = false, features = ["process"] } + +[build-dependencies] +# Disable the clap feature since it pulls in an ancient version of clap. +pb-rs = { version = "0.10.0", default-features = false } + +[dev-dependencies] +assert_matches = "1.5.0" + +[features] +static = ["bzip2/static", "xz2/static"] diff --git a/build.rs b/avbroot/build.rs similarity index 100% rename from build.rs rename to avbroot/build.rs diff --git a/protobuf/ota_metadata.proto b/avbroot/protobuf/ota_metadata.proto similarity index 100% rename from protobuf/ota_metadata.proto rename to avbroot/protobuf/ota_metadata.proto diff --git a/protobuf/update_metadata.proto b/avbroot/protobuf/update_metadata.proto similarity index 100% rename from protobuf/update_metadata.proto rename to avbroot/protobuf/update_metadata.proto diff --git a/src/boot.rs b/avbroot/src/boot.rs similarity index 100% rename from src/boot.rs rename to avbroot/src/boot.rs diff --git a/src/cli/args.rs b/avbroot/src/cli/args.rs similarity index 100% rename from src/cli/args.rs rename to avbroot/src/cli/args.rs diff --git a/src/cli/avb.rs b/avbroot/src/cli/avb.rs similarity index 100% rename from src/cli/avb.rs rename to avbroot/src/cli/avb.rs diff --git a/src/cli/boot.rs b/avbroot/src/cli/boot.rs similarity index 100% rename from src/cli/boot.rs rename to avbroot/src/cli/boot.rs diff --git a/src/cli/completion.rs b/avbroot/src/cli/completion.rs similarity index 100% rename from src/cli/completion.rs rename to avbroot/src/cli/completion.rs diff --git a/src/cli/key.rs b/avbroot/src/cli/key.rs similarity index 100% rename from src/cli/key.rs rename to avbroot/src/cli/key.rs diff --git a/src/cli/mod.rs b/avbroot/src/cli/mod.rs similarity index 100% rename from src/cli/mod.rs rename to avbroot/src/cli/mod.rs diff --git a/src/cli/ota.rs b/avbroot/src/cli/ota.rs similarity index 100% rename from src/cli/ota.rs rename to avbroot/src/cli/ota.rs diff --git a/src/cli/ramdisk.rs b/avbroot/src/cli/ramdisk.rs similarity index 100% rename from src/cli/ramdisk.rs rename to avbroot/src/cli/ramdisk.rs diff --git a/src/crypto.rs b/avbroot/src/crypto.rs similarity index 100% rename from src/crypto.rs rename to avbroot/src/crypto.rs diff --git a/src/format/avb.rs b/avbroot/src/format/avb.rs similarity index 100% rename from src/format/avb.rs rename to avbroot/src/format/avb.rs diff --git a/src/format/bootimage.rs b/avbroot/src/format/bootimage.rs similarity index 100% rename from src/format/bootimage.rs rename to avbroot/src/format/bootimage.rs diff --git a/src/format/compression.rs b/avbroot/src/format/compression.rs similarity index 100% rename from src/format/compression.rs rename to avbroot/src/format/compression.rs diff --git a/src/format/cpio.rs b/avbroot/src/format/cpio.rs similarity index 100% rename from src/format/cpio.rs rename to avbroot/src/format/cpio.rs diff --git a/src/format/mod.rs b/avbroot/src/format/mod.rs similarity index 100% rename from src/format/mod.rs rename to avbroot/src/format/mod.rs diff --git a/src/format/ota.rs b/avbroot/src/format/ota.rs similarity index 100% rename from src/format/ota.rs rename to avbroot/src/format/ota.rs diff --git a/src/format/padding.rs b/avbroot/src/format/padding.rs similarity index 100% rename from src/format/padding.rs rename to avbroot/src/format/padding.rs diff --git a/src/format/payload.rs b/avbroot/src/format/payload.rs similarity index 100% rename from src/format/payload.rs rename to avbroot/src/format/payload.rs diff --git a/src/lib.rs b/avbroot/src/lib.rs similarity index 100% rename from src/lib.rs rename to avbroot/src/lib.rs diff --git a/src/main.rs b/avbroot/src/main.rs similarity index 100% rename from src/main.rs rename to avbroot/src/main.rs diff --git a/src/protobuf.rs b/avbroot/src/protobuf.rs similarity index 100% rename from src/protobuf.rs rename to avbroot/src/protobuf.rs diff --git a/src/stream.rs b/avbroot/src/stream.rs similarity index 100% rename from src/stream.rs rename to avbroot/src/stream.rs diff --git a/src/util.rs b/avbroot/src/util.rs similarity index 100% rename from src/util.rs rename to avbroot/src/util.rs diff --git a/tests/avb.rs b/avbroot/tests/avb.rs similarity index 96% rename from tests/avb.rs rename to avbroot/tests/avb.rs index 7d3af98..64d5921 100644 --- a/tests/avb.rs +++ b/avbroot/tests/avb.rs @@ -13,11 +13,11 @@ use avbroot::{self, format::avb}; fn get_test_key() -> RsaPrivateKey { let data = include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), + env!("CARGO_WORKSPACE_DIR"), "/e2e/keys/TEST_KEY_DO_NOT_USE_avb.key", )); let passphrase = include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), + env!("CARGO_WORKSPACE_DIR"), "/e2e/keys/TEST_KEY_DO_NOT_USE_avb.passphrase", )); diff --git a/tests/bootimage.rs b/avbroot/tests/bootimage.rs similarity index 97% rename from tests/bootimage.rs rename to avbroot/tests/bootimage.rs index 54c5fd0..a32baf2 100644 --- a/tests/bootimage.rs +++ b/avbroot/tests/bootimage.rs @@ -15,11 +15,11 @@ use rsa::RsaPrivateKey; fn get_test_key() -> RsaPrivateKey { let data = include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), + env!("CARGO_WORKSPACE_DIR"), "/e2e/keys/TEST_KEY_DO_NOT_USE_avb.key", )); let passphrase = include_str!(concat!( - env!("CARGO_MANIFEST_DIR"), + env!("CARGO_WORKSPACE_DIR"), "/e2e/keys/TEST_KEY_DO_NOT_USE_avb.passphrase", )); diff --git a/tests/compression.rs b/avbroot/tests/compression.rs similarity index 100% rename from tests/compression.rs rename to avbroot/tests/compression.rs diff --git a/tests/data/boot_v0.img b/avbroot/tests/data/boot_v0.img similarity index 100% rename from tests/data/boot_v0.img rename to avbroot/tests/data/boot_v0.img diff --git a/tests/data/boot_v1.img b/avbroot/tests/data/boot_v1.img similarity index 100% rename from tests/data/boot_v1.img rename to avbroot/tests/data/boot_v1.img diff --git a/tests/data/boot_v2.img b/avbroot/tests/data/boot_v2.img similarity index 100% rename from tests/data/boot_v2.img rename to avbroot/tests/data/boot_v2.img diff --git a/tests/data/boot_v3.img b/avbroot/tests/data/boot_v3.img similarity index 100% rename from tests/data/boot_v3.img rename to avbroot/tests/data/boot_v3.img diff --git a/tests/data/boot_v4.img b/avbroot/tests/data/boot_v4.img similarity index 100% rename from tests/data/boot_v4.img rename to avbroot/tests/data/boot_v4.img diff --git a/tests/data/boot_v4_vts.img b/avbroot/tests/data/boot_v4_vts.img similarity index 100% rename from tests/data/boot_v4_vts.img rename to avbroot/tests/data/boot_v4_vts.img diff --git a/tests/data/vbmeta_appended.img b/avbroot/tests/data/vbmeta_appended.img similarity index 100% rename from tests/data/vbmeta_appended.img rename to avbroot/tests/data/vbmeta_appended.img diff --git a/tests/data/vbmeta_root.img b/avbroot/tests/data/vbmeta_root.img similarity index 100% rename from tests/data/vbmeta_root.img rename to avbroot/tests/data/vbmeta_root.img diff --git a/tests/data/vendor_v3.img b/avbroot/tests/data/vendor_v3.img similarity index 100% rename from tests/data/vendor_v3.img rename to avbroot/tests/data/vendor_v3.img diff --git a/tests/data/vendor_v4.img b/avbroot/tests/data/vendor_v4.img similarity index 100% rename from tests/data/vendor_v4.img rename to avbroot/tests/data/vendor_v4.img diff --git a/e2e/Cargo.toml b/e2e/Cargo.toml index b1e7313..8f7d2a1 100644 --- a/e2e/Cargo.toml +++ b/e2e/Cargo.toml @@ -10,7 +10,7 @@ publish = false [dependencies] anyhow = "1.0.75" -avbroot = { path = ".." } +avbroot = { path = "../avbroot" } clap = { version = "4.4.1", features = ["derive"] } ctrlc = "3.4.0" hex = { version = "0.4.3", features = ["serde"] } diff --git a/xtask/src/version.rs b/xtask/src/version.rs index c631391..e29da63 100644 --- a/xtask/src/version.rs +++ b/xtask/src/version.rs @@ -20,7 +20,6 @@ fn update_cargo_version(version: &str) -> Result<()> { let data = fs::read_to_string(&path)?; let mut document: Document = data.parse()?; - document["package"]["version"] = value(version.clone()); document["workspace"]["package"]["version"] = value(version.clone()); fs::write(path, document.to_string())?;