Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package cargo-auditable for openSUSE:Factory
checked in at 2026-05-28 17:23:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cargo-auditable (Old)
and /work/SRC/openSUSE:Factory/.cargo-auditable.new.1937 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cargo-auditable"
Thu May 28 17:23:48 2026 rev:10 rq:1355260 version:0.7.5~0
Changes:
--------
--- /work/SRC/openSUSE:Factory/cargo-auditable/cargo-auditable.changes
2026-04-23 17:04:25.048264904 +0200
+++
/work/SRC/openSUSE:Factory/.cargo-auditable.new.1937/cargo-auditable.changes
2026-05-28 17:24:13.492977773 +0200
@@ -1,0 +2,14 @@
+Wed May 27 04:13:51 UTC 2026 - [email protected]
+
+- Update to version 0.7.5~0:
+ * Bump cargo-auditable version to 0.7.5
+ * update changelog
+ * simplify trailing path segment extraction in package ID parser
+ * Run CI checks on 1.88 to prevent accidental MSRV drift
+ * fix clippy warning in wasm.rs
+ * handle elided name in git package ID specs
+ * Revert test version bump
+ * Bump version to 0.7.5-test.1 for CI test
+ * Add `aarch64-unknown-linux-musl` to dist targets
+
+-------------------------------------------------------------------
Old:
----
cargo-auditable-0.7.4~0.tar.zst
New:
----
cargo-auditable-0.7.5~0.tar.zst
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cargo-auditable.spec ++++++
--- /var/tmp/diff_new_pack.9gIBg4/_old 2026-05-28 17:24:15.893077121 +0200
+++ /var/tmp/diff_new_pack.9gIBg4/_new 2026-05-28 17:24:15.893077121 +0200
@@ -1,8 +1,7 @@
#
# spec file for package cargo-auditable
#
-# Copyright (c) 2026 SUSE LLC
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -22,7 +21,7 @@
%define __cargo_common_opts %{?_smp_mflags}
Name: cargo-auditable
-Version: 0.7.4~0
+Version: 0.7.5~0
Release: 0
Summary: A tool to embed auditing information in ELF sections of rust
binaries
# If you know the license, put it's SPDX string here.
++++++ _service ++++++
--- /var/tmp/diff_new_pack.9gIBg4/_old 2026-05-28 17:24:15.933078777 +0200
+++ /var/tmp/diff_new_pack.9gIBg4/_new 2026-05-28 17:24:15.937078942 +0200
@@ -3,7 +3,7 @@
<param
name="url">https://github.com/rust-secure-code/cargo-auditable.git</param>
<param name="versionformat">@PARENT_TAG@~@TAG_OFFSET@</param>
<param name="scm">git</param>
- <param name="revision">v0.7.4</param>
+ <param name="revision">v0.7.5</param>
<param name="match-tag">v*</param>
<param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param>
<param name="versionrewrite-replacement">\1</param>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.9gIBg4/_old 2026-05-28 17:24:15.961079936 +0200
+++ /var/tmp/diff_new_pack.9gIBg4/_new 2026-05-28 17:24:15.977080598 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param
name="url">https://github.com/rust-secure-code/cargo-auditable.git</param>
- <param
name="changesrevision">1d50810095d1a40d02c4f5c38152cdb9d0ea06bd</param></service></servicedata>
+ <param
name="changesrevision">9dc5ff28ff204b73eae91bd96cde4413fdcb70e0</param></service></servicedata>
(No newline at EOF)
++++++ cargo-auditable-0.7.4~0.tar.zst -> cargo-auditable-0.7.5~0.tar.zst ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cargo-auditable-0.7.4~0/.github/workflows/check.yml
new/cargo-auditable-0.7.5~0/.github/workflows/check.yml
--- old/cargo-auditable-0.7.4~0/.github/workflows/check.yml 2026-03-04
20:15:52.000000000 +0100
+++ new/cargo-auditable-0.7.5~0/.github/workflows/check.yml 2026-05-22
01:24:53.000000000 +0200
@@ -13,7 +13,8 @@
- uses: actions-rs/toolchain@v1
with:
profile: minimal
- toolchain: stable
+ toolchain: 1.88.0
+ components: rustfmt, clippy
override: true
- name: Run cargo check
run: cargo check --workspace --locked
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cargo-auditable-0.7.4~0/Cargo.lock
new/cargo-auditable-0.7.5~0/Cargo.lock
--- old/cargo-auditable-0.7.4~0/Cargo.lock 2026-03-04 20:15:52.000000000
+0100
+++ new/cargo-auditable-0.7.5~0/Cargo.lock 2026-05-22 01:24:53.000000000
+0200
@@ -116,7 +116,7 @@
[[package]]
name = "cargo-auditable"
-version = "0.7.4"
+version = "0.7.5"
dependencies = [
"auditable-info",
"auditable-serde",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cargo-auditable-0.7.4~0/Cargo.toml
new/cargo-auditable-0.7.5~0/Cargo.toml
--- old/cargo-auditable-0.7.4~0/Cargo.toml 2026-03-04 20:15:52.000000000
+0100
+++ new/cargo-auditable-0.7.5~0/Cargo.toml 2026-05-22 01:24:53.000000000
+0200
@@ -19,7 +19,7 @@
# The installers to generate for each app
installers = ["shell", "powershell"]
# Target platforms to build apps for (Rust target-triple syntax)
-targets = ["aarch64-apple-darwin", "aarch64-unknown-linux-gnu",
"aarch64-pc-windows-msvc", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu",
"x86_64-unknown-linux-musl", "x86_64-pc-windows-msvc"]
+targets = ["aarch64-apple-darwin", "aarch64-unknown-linux-gnu",
"aarch64-unknown-linux-musl", "aarch64-pc-windows-msvc", "x86_64-apple-darwin",
"x86_64-unknown-linux-gnu", "x86_64-unknown-linux-musl",
"x86_64-pc-windows-msvc"]
# Which actions to run on pull requests
pr-run-mode = "plan"
# Whether to install an updater program
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/cargo-auditable-0.7.4~0/auditable-extract/src/wasm.rs
new/cargo-auditable-0.7.5~0/auditable-extract/src/wasm.rs
--- old/cargo-auditable-0.7.4~0/auditable-extract/src/wasm.rs 2026-03-04
20:15:52.000000000 +0100
+++ new/cargo-auditable-0.7.5~0/auditable-extract/src/wasm.rs 2026-05-22
01:24:53.000000000 +0200
@@ -7,10 +7,8 @@
pub(crate) fn raw_auditable_data_wasm(input: &[u8]) -> Result<&[u8], Error> {
for payload in wasmparser::Parser::new(0).parse_all(input) {
match payload.map_err(|_| Error::MalformedFile)? {
- Payload::CustomSection(reader) => {
- if reader.name() == ".dep-v0" {
- return Ok(reader.data());
- }
+ Payload::CustomSection(reader) if reader.name() == ".dep-v0" => {
+ return Ok(reader.data());
}
// We reached the end without seeing ".dep-v0" custom section
Payload::End(_) => return Err(Error::NoAuditData),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cargo-auditable-0.7.4~0/cargo-auditable/CHANGELOG.md
new/cargo-auditable-0.7.5~0/cargo-auditable/CHANGELOG.md
--- old/cargo-auditable-0.7.4~0/cargo-auditable/CHANGELOG.md 2026-03-04
20:15:52.000000000 +0100
+++ new/cargo-auditable-0.7.5~0/cargo-auditable/CHANGELOG.md 2026-05-22
01:24:53.000000000 +0200
@@ -5,6 +5,12 @@
The format is based on [Keep a
Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic
Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.7.5] - 2026-05-22
+
+### Fixed
+
+ - Fixed build failures with git dependencies with multiple packages when
using [Cargo's native SBOM
precursor](https://doc.rust-lang.org/cargo/reference/unstable.html#sbom).
+
## [0.7.4] - 2026-03-04
### Fixed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/cargo-auditable-0.7.4~0/cargo-auditable/Cargo.toml
new/cargo-auditable-0.7.5~0/cargo-auditable/Cargo.toml
--- old/cargo-auditable-0.7.4~0/cargo-auditable/Cargo.toml 2026-03-04
20:15:52.000000000 +0100
+++ new/cargo-auditable-0.7.5~0/cargo-auditable/Cargo.toml 2026-05-22
01:24:53.000000000 +0200
@@ -1,6 +1,6 @@
[package]
name = "cargo-auditable"
-version = "0.7.4"
+version = "0.7.5"
edition = "2021"
authors = ["Sergey \"Shnatsel\" Davidoff <[email protected]>"]
license = "MIT OR Apache-2.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/cargo-auditable-0.7.4~0/cargo-auditable/src/sbom_precursor.rs
new/cargo-auditable-0.7.5~0/cargo-auditable/src/sbom_precursor.rs
--- old/cargo-auditable-0.7.4~0/cargo-auditable/src/sbom_precursor.rs
2026-03-04 20:15:52.000000000 +0100
+++ new/cargo-auditable-0.7.5~0/cargo-auditable/src/sbom_precursor.rs
2026-05-22 01:24:53.000000000 +0200
@@ -149,8 +149,11 @@
/// proto := "http" | "git" | "file" | ...
/// ```
/// where:
-/// - the name is always present except when the kind is `path` and the last
segment of the path doesn't match the name
-/// - the query string is only present for git dependencies (which we can
ignore since we don't record git information)
+/// - the `[ name "@" ]` segment is elided when the crate name equals the
URL's last path
+/// segment (i.e. for `path` deps where the directory name matches, and
`git` deps where
+/// the repo name matches)
+/// - the query string is only present for git dependencies (which we can
ignore since we don't
+/// record git information)
fn parse_fully_qualified_package_id(id: &str) -> (String, Version, Source) {
let (kind, rest) = id.split_once('+').expect("Package ID to have a kind");
let (url, rest) = rest
@@ -164,39 +167,114 @@
_ => Source::Other(kind.to_string()),
};
- if source == Source::Local {
- // For local packages, the name might be in the suffix after '#' if it
has
- // a diferent name than the last segment of the path.
- if let Some((name, version)) = rest.split_once('@') {
- (
- name.to_string(),
- semver::Version::parse(version).expect("Version to be valid
SemVer"),
- source,
- )
- } else {
- // If no name is specified, use the last segment of the path as
the name
- let name = url
- .split('/')
- .next_back()
- .unwrap()
- .split('\\')
- .next_back()
- .unwrap();
- (
- name.to_string(),
- semver::Version::parse(rest).expect("Version to be valid
SemVer"),
- source,
- )
- }
- } else {
- // For other sources, the name and version are after the '#',
separated by '@'
- let (name, version) = rest
- .split_once('@')
- .expect("Package ID to have a name and version");
+ // `rest` is usually `name@version`, but cargo elides `name@` when the
crate name
+ // equals the URL's last path segment. This applies to `path` deps and to
git deps
+ // pointing at a repo whose name matches the crate (e.g. top-level
`rayon`); sub-crates
+ // in the same repo still carry the name explicitly.
+ //
+ // path+file:///abs/path/sample-package#0.1.0
+ // git+https://github.com/rayon-rs/rayon?branch=foo#1.11.0
+ // git+https://github.com/rayon-rs/rayon?branch=foo#[email protected]
+ if let Some((name, version)) = rest.split_once('@') {
(
name.to_string(),
semver::Version::parse(version).expect("Version to be valid
SemVer"),
source,
)
+ } else {
+ // Recover the elided name from the URL's last path segment.
+ // Strip the optional `?query` first; accept `\` for Windows local
paths.
+ let path = url.split_once('?').map(|(p, _)| p).unwrap_or(url);
+ let name = path
+ .rsplit(['/', '\\'])
+ .next()
+ .filter(|segment| !segment.is_empty())
+ .expect("Package ID URL to end with a package name");
+ (
+ name.to_string(),
+ semver::Version::parse(rest).expect("Version to be valid SemVer"),
+ source,
+ )
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ fn assert_id(id: &str, expected_name: &str, expected_version: &str,
expected_source: Source) {
+ let (name, version, source) = parse_fully_qualified_package_id(id);
+ assert_eq!(name, expected_name, "name mismatch for {id}");
+ assert_eq!(
+ version.to_string(),
+ expected_version,
+ "version mismatch for {id}"
+ );
+ assert_eq!(source, expected_source, "source mismatch for {id}");
+ }
+
+ #[test]
+ fn registry_with_name() {
+ assert_id(
+
"registry+https://github.com/rust-lang/crates.io-index#[email protected]",
+ "zerocopy",
+ "0.8.16",
+ Source::CratesIo,
+ );
+ }
+
+ #[test]
+ fn path_with_elided_name() {
+ // Directory name matches crate name, so cargo elides `name@`.
+ assert_id(
+ "path+file:///tmp/sample-package#0.1.0",
+ "sample-package",
+ "0.1.0",
+ Source::Local,
+ );
+ }
+
+ #[test]
+ fn path_with_explicit_name() {
+ // Directory name differs from crate name, so cargo emits `name@`.
+ assert_id(
+ "path+file:///tmp/some-dir#[email protected]",
+ "different-name",
+ "0.1.0",
+ Source::Local,
+ );
+ }
+
+ #[test]
+ fn git_with_explicit_name() {
+ // Sub-crate inside a git repo: name is present.
+ assert_id(
+
"git+https://github.com/rayon-rs/rayon?branch=main#[email protected]",
+ "rayon-core",
+ "1.13.0",
+ Source::Git,
+ );
+ }
+
+ #[test]
+ fn git_with_elided_name() {
+ // Crate name matches the repo's last path segment, so cargo elides
+ // `name@`. Regression test: this used to panic.
+ assert_id(
+ "git+https://github.com/rayon-rs/rayon?branch=main#1.11.0",
+ "rayon",
+ "1.11.0",
+ Source::Git,
+ );
+ }
+
+ #[test]
+ fn git_with_elided_name_no_query() {
+ assert_id(
+ "git+https://github.com/rayon-rs/rayon#1.11.0",
+ "rayon",
+ "1.11.0",
+ Source::Git,
+ );
}
}
++++++ cargo-auditable.obsinfo ++++++
--- /var/tmp/diff_new_pack.9gIBg4/_old 2026-05-28 17:24:16.273092851 +0200
+++ /var/tmp/diff_new_pack.9gIBg4/_new 2026-05-28 17:24:16.277093017 +0200
@@ -1,5 +1,5 @@
name: cargo-auditable
-version: 0.7.4~0
-mtime: 1772651752
-commit: 1d50810095d1a40d02c4f5c38152cdb9d0ea06bd
+version: 0.7.5~0
+mtime: 1779405893
+commit: 9dc5ff28ff204b73eae91bd96cde4413fdcb70e0
++++++ vendor.tar.zst ++++++
/work/SRC/openSUSE:Factory/cargo-auditable/vendor.tar.zst
/work/SRC/openSUSE:Factory/.cargo-auditable.new.1937/vendor.tar.zst differ:
char 7, line 1