8 releases
0.2.1 | Nov 24, 2019 |
---|---|
0.2.0 | Oct 18, 2019 |
0.1.5 | Aug 1, 2019 |
0.1.4 | Jul 26, 2019 |
0.1.1 | Jul 26, 2018 |
#2082 in Development tools
4,400 downloads per month
Used in 11 crates
(via relative)
11KB
106 lines
build_id
Obtain a Uuid
uniquely representing the
build of the current binary.
This is intended to be used to check that different processes are indeed invocations of identically laid out binaries.
As such:
- It is guaranteed to be identical within multiple invocations of the same binary.
- It is guaranteed to be different across binaries with different code or data segments or layout.
- Equality is unspecified if the binaries have identical code and data segments and layout but differ immaterially (e.g. if a timestamp is included in the binary at compile time).
Examples
let local_build_id = build_id::get();
if local_build_id == remote_build_id {
println!("We're running the same binary as remote!");
} else {
println!("We're running a different binary to remote");
}
Note
This looks first for linker-inserted build ID / binary UUIDs (i.e.
.note.gnu.build-id
on Linux; LC_UUID
in Mach-O; etc), falling back to
hashing the whole binary.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE.txt or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT.txt or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~0.5–1.2MB
~20K SLoC