diff --git a/Cargo.lock b/Cargo.lock index ef1085f..475f34b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -28,16 +28,15 @@ dependencies = [ [[package]] name = "anstream" -version = "0.3.0" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e579a7752471abc2a8268df8b20005e3eadd975f585398f17efcfd8d4927371" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", "utf8parse", ] @@ -67,9 +66,9 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "1.0.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcd8291a340dd8ac70e18878bc4501dd7b4ff970cfa21c207d36ece51ea88fd" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" dependencies = [ "anstyle", "windows-sys", @@ -211,20 +210,19 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "4.3.23" +version = "4.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03aef18ddf7d879c15ce20f04826ef8418101c7e528014c3eeea13321047dca3" +checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.3.23" +version = "4.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ce6fffb678c9b80a70b6b6de0aad31df727623a70fd9a842c30cd573e2fa98" +checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45" dependencies = [ "anstream", "anstyle", @@ -234,9 +232,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.3.12" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" +checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" dependencies = [ "heck", "proc-macro2", @@ -256,6 +254,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +[[package]] +name = "common-path" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2382f75942f4b3be3690fe4f86365e9c853c1587d6ee58212cebf6e2a9ccd101" + [[package]] name = "cpufeatures" version = "0.2.7" @@ -541,9 +545,10 @@ dependencies = [ [[package]] name = "ipk-lib" -version = "0.1.1" +version = "0.1.2" dependencies = [ "bin-lib", + "common-path", "debpkg", "path-slash", "serde", @@ -553,7 +558,7 @@ dependencies = [ [[package]] name = "ipk-verify" -version = "0.1.2" +version = "0.1.3" dependencies = [ "bin-lib", "clap", @@ -634,9 +639,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "miniz_oxide" @@ -656,12 +661,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "once_cell" -version = "1.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" - [[package]] name = "path-slash" version = "0.2.1" @@ -743,9 +742,21 @@ dependencies = [ [[package]] name = "regex" -version = "1.8.0" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac6cf59af1067a3fb53fbe5c88c053764e930f932be1d71d3ffe032cbe147f59" +checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" dependencies = [ "aho-corasick", "memchr", @@ -754,9 +765,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.0" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6868896879ba532248f33598de5181522d8b3d9d724dfd230911e1a7d4822f5" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "rustc-demangle" @@ -791,24 +802,24 @@ checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" [[package]] name = "semver" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" [[package]] name = "serde" -version = "1.0.185" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be9b6f69f1dfd54c3b568ffa45c310d6973a5e5148fd40cf515acaf38cf5bc31" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.185" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc59dfdcbad1437773485e0367fea4b090a2e0a16d9ffc46af47764536a298ec" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", @@ -817,9 +828,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.105" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ "itoa", "ryu", @@ -839,9 +850,9 @@ dependencies = [ [[package]] name = "sha256" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f5ed5ebbe2d9fb5c5e67be64aa462053d707941e02ffb5e65b6200c00b6161c" +checksum = "7895c8ae88588ccead14ff438b939b0c569cd619116f14b4d13fdff7b8333386" dependencies = [ "async-trait", "bytes", diff --git a/Cargo.toml b/Cargo.toml index c4f6320..f9e773b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,5 @@ [workspace] +resolver = "2" members = [ "common/fw", "common/bin", @@ -9,3 +10,11 @@ members = [ "packages/fw-extract", "packages/gen-manifest", ] + +[workspace.dependencies] +clap = "4.4.6" +regex = "1.9.5" +serde = "1.0.188" +serde_json = "1.0.107" +semver = "1.0.19" +path-slash = "0.2.1" diff --git a/common/bin/Cargo.toml b/common/bin/Cargo.toml index 99e362d..f3d113a 100644 --- a/common/bin/Cargo.toml +++ b/common/bin/Cargo.toml @@ -5,9 +5,9 @@ edition = "2021" [dependencies] elf = "0.7.2" -serde = { version = "1.0.183", features = ["derive"] } -serde_json = "1.0.105" -semver = "1.0.18" +serde = { workspace = true, features = ["derive"] } +serde_json = { workspace = true } +semver = { workspace = true } [features] linux-install = [] \ No newline at end of file diff --git a/common/fw/Cargo.toml b/common/fw/Cargo.toml index 1afb4f4..3252f14 100644 --- a/common/fw/Cargo.toml +++ b/common/fw/Cargo.toml @@ -6,9 +6,9 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -semver = "1.0.18" -serde = { version = "1.0.183", features = ["derive"] } -serde_json = "1.0.105" +semver = { workspace = true } +serde = { workspace = true, features = ["derive"] } +serde_json = { workspace = true } [dependencies.bin-lib] path = "../bin" diff --git a/common/ipk/Cargo.toml b/common/ipk/Cargo.toml index 2239938..dd292de 100644 --- a/common/ipk/Cargo.toml +++ b/common/ipk/Cargo.toml @@ -1,16 +1,17 @@ [package] name = "ipk-lib" -version = "0.1.1" +version = "0.1.2" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -serde = { version = "1.0.183", features = ["derive"] } -serde_json = "1.0.105" +serde = { workspace = true, features = ["derive"] } +serde_json = { workspace = true } debpkg = "0.6.0" tempfile = "3.8.0" -path-slash = "0.2.1" +path-slash = { workspace = true } +common-path = "1.0.0" [dependencies.bin-lib] path = "../bin" \ No newline at end of file diff --git a/common/ipk/src/component.rs b/common/ipk/src/component.rs index f45a953..ad03d71 100644 --- a/common/ipk/src/component.rs +++ b/common/ipk/src/component.rs @@ -4,6 +4,7 @@ use std::fs; use std::fs::File; use std::io::{Error, ErrorKind}; use std::path::{Path, PathBuf}; +use common_path::common_path; use path_slash::CowExt; @@ -137,15 +138,19 @@ impl Component { where P: AsRef, { + let origin = bin_path.as_ref().parent().unwrap(); return rpath .iter() .filter_map(|p| { - PathBuf::from(p.replace( - "$ORIGIN", - bin_path.as_ref().parent().unwrap().to_str().unwrap(), - )) - .canonicalize() - .ok() + PathBuf::from(p.replace("$ORIGIN", origin.to_string_lossy().as_ref())) + .canonicalize() + .ok() + }) + .filter(|p| { + let Some(common) = common_path(&p, &origin) else { + return false; + }; + return common.components().count() > 1; }) .collect(); } diff --git a/packages/elf-verify/Cargo.toml b/packages/elf-verify/Cargo.toml index 452dd93..47bcdda 100644 --- a/packages/elf-verify/Cargo.toml +++ b/packages/elf-verify/Cargo.toml @@ -7,9 +7,9 @@ authors = ["Mariotaku Lee "] license = "Apache-2.0" [dependencies] -serde = "1.0.183" -serde_json = "1.0.96" -semver = "1.0.18" +serde = { workspace = true } +serde_json = { workspace = true } +semver = { workspace = true } [dependencies.clap] version = "4.3.23" diff --git a/packages/fw-extract/Cargo.toml b/packages/fw-extract/Cargo.toml index 83d688d..4a19ee3 100644 --- a/packages/fw-extract/Cargo.toml +++ b/packages/fw-extract/Cargo.toml @@ -7,11 +7,11 @@ license = "Apache-2.0" description = "Firmware symbols data and extractor utility" [dependencies] -regex = "1" -path-slash = "0.2.1" -serde = "1.0.183" -serde_json = "1.0.105" -semver = "1.0.18" +regex = { workspace = true } +path-slash = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +semver = { workspace = true } fw-lib = { path = "../../common/fw" } bin-lib = { path = "../../common/bin" } diff --git a/packages/gen-manifest/Cargo.toml b/packages/gen-manifest/Cargo.toml index 2861995..121b2e1 100644 --- a/packages/gen-manifest/Cargo.toml +++ b/packages/gen-manifest/Cargo.toml @@ -9,11 +9,11 @@ license = "Apache-2.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -serde = { version = "1.0.183", features = ["derive"] } -serde_json = "1.0.105" -clap = { version = "4.3.23", features = ["derive"] } +serde = { workspace = true, features = ["derive"] } +serde_json = { workspace = true } +clap = { workspace = true, features = ["derive"] } ipk-lib = { path = "../../common/ipk" } -sha256 = "1.3.0" +sha256 = "1.4.0" [package.metadata.deb] name = "webosbrew-toolbox-gen-manifest" diff --git a/packages/ipk-verify/Cargo.toml b/packages/ipk-verify/Cargo.toml index 66df311..6ed773a 100644 --- a/packages/ipk-verify/Cargo.toml +++ b/packages/ipk-verify/Cargo.toml @@ -1,22 +1,22 @@ [package] name = "ipk-verify" -version = "0.1.2" +version = "0.1.3" edition = "2021" description = "Command line tool for checking symbols in an exectuable and libraries in an IPK file" authors = ["Mariotaku Lee "] license = "Apache-2.0" [dependencies] -serde = "1.0.183" -serde_json = "1.0.105" +serde = { workspace = true } +serde_json = { workspace = true } debpkg = "0.6.0" tempfile = "3.8.0" -path-slash = "0.2.1" +path-slash = { workspace = true } prettytable-rs = "^0.10" -semver = "1.0.18" +semver = { workspace = true } is-terminal = "0.4.9" term = "0.7.0" -clap = { version = "4.3.23", features = ["derive"] } +clap = { version = "4.4.6", features = ["derive"] } verify-lib = { path = "../../common/verify", features = ["ipk"] } [dependencies.fw-lib]