Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package cargo-c for openSUSE:Factory checked 
in at 2026-07-08 17:32:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cargo-c (Old)
 and      /work/SRC/openSUSE:Factory/.cargo-c.new.1982 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "cargo-c"

Wed Jul  8 17:32:58 2026 rev:24 rq:1364423 version:0.10.23

Changes:
--------
--- /work/SRC/openSUSE:Factory/cargo-c/cargo-c.changes  2026-02-12 
17:25:01.353322983 +0100
+++ /work/SRC/openSUSE:Factory/.cargo-c.new.1982/cargo-c.changes        
2026-07-08 17:34:25.049028996 +0200
@@ -1,0 +2,59 @@
+Wed Jul  8 02:00:38 UTC 2026 - William Brown <[email protected]>
+
+- bsc#1270996 - CVE-2026-45784 - AES-KW incorrect buffer sizing in openssl
+- bsc#1270857 - CVE-2026-41898 - unchecked callback-returned length in PSK
+- bsc#1270789 - CVE-2026-41681 - MdCtxRef::digest_final() writes past caller 
buffer
+- bsc#1270913 - CVE-2026-44662 - heap buffer overflow when encrypting with 
AES-KW
+- bsc#1270643 - CVE-2026-41678 - incorrect bounds assertion in AES-KW
+- bsc#1270572 - CVE-2026-41677 - out-of-bounds read in PEM password callback
+- bsc#1270502 - CVE-2026-42327 - arbitrary code execution via specially 
crafted certificate
+
+-------------------------------------------------------------------
+Wed Jul 08 01:38:25 UTC 2026 - William Brown <[email protected]>
+
+- Update to version 0.10.23:
+  * Bump versions
+  * Bump to cargo-0.96
+  * Update object requirement from 0.38.0 to 0.39.1
+  * Update implib requirement from 0.4.0 to 0.6.0
+  * Fix wrong dylib install name on macOS
+  * Bump softprops/action-gh-release from 2 to 3
+  * Bump actions-rs-plus/clippy-check from 2.4.2 to 2.5.0
+  * Bump codecov/codecov-action from 5 to 6
+  * Bump actions/download-artifact from 7 to 8
+  * Bump actions/upload-artifact from 6 to 7
+  * Version bump
+  * Support cinstall --path and make --manifest-path take either a directory 
or the path to the toml
+  * Bump cargo version
+  * target: emit correct lib dir when cross compiling on Debian
+  * Bump egor-tensin/setup-mingw from 2 to 3
+  * Bump actions/checkout from 5 to 6
+  * Bump actions/upload-artifact from 5 to 6
+  * Bump cargo and object versions
+  * Build aarch64 android bins
+  * Bump actions/checkout from 5 to 6
+  * Bump actions/upload-artifact from 5 to 6
+  * Remove old macos runner
+  * Bump actions/download-artifact from 6 to 7
+  * Bump actions-rs-plus/clippy-check from 2.3.0 to 2.4.2
+  * CI: add basics tests for Cygwin
+  * Add Cygwin support
+  * Prepare for release
+  * Mark the target-specific rustflag as problematic
+  * Fix the target-specific-lookup for rustflags
+  * Support target-specific rustflags
+  * Update to cargo 0.92
+  * Bump actions/download-artifact from 5 to 6
+  * Bump actions/upload-artifact from 4 to 5
+  * Bump toml to 0.9
+  * Bump to cargo 0.91
+  * Implement installing dSYMs if available
+  * Fix installing debuginfo files for plugins in the wrong folder
+  * Bump actions/checkout from 4 to 5
+
+-------------------------------------------------------------------
+Tue Jul  7 04:25:32 UTC 2026 - William Brown <[email protected]>
+
+- bsc#1270204 - CVE-2026-41676 - update openssl to 0.10.78
+
+-------------------------------------------------------------------

Old:
----
  cargo-c-0.10.15.tar.xz

New:
----
  cargo-c-0.10.23.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cargo-c.spec ++++++
--- /var/tmp/diff_new_pack.ppfrHh/_old  2026-07-08 17:34:30.305211414 +0200
+++ /var/tmp/diff_new_pack.ppfrHh/_new  2026-07-08 17:34:30.329212247 +0200
@@ -1,8 +1,7 @@
 #
 # spec file for package cargo-c
 #
-# Copyright (c) 2026 SUSE LLC
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 # Copyright (c) 2019 Andreas Schneider <[email protected]>.
 #
 # All modifications and additions to the file contributed by third parties
@@ -19,7 +18,7 @@
 
 
 Name:           cargo-c
-Version:        0.10.15
+Version:        0.10.23
 Release:        0
 Summary:        Helper to build and install c-like libraries from Rust
 License:        MIT
@@ -31,7 +30,7 @@
 Source1000:     README.suse-maint
 BuildRequires:  cargo >= 0.80.0
 BuildRequires:  cargo-packaging
-BuildRequires:  pkgconfig(openssl)
+BuildRequires:  pkgconfig(openssl) >= 3.0.0
 
 %description
 The is a cargo applet to build and install C-ABI compatibile dynamic and static

++++++ _service ++++++
--- /var/tmp/diff_new_pack.ppfrHh/_old  2026-07-08 17:34:30.773227656 +0200
+++ /var/tmp/diff_new_pack.ppfrHh/_new  2026-07-08 17:34:30.797228489 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/lu-zero/cargo-c.git</param>
     <param name="versionformat">@PARENT_TAG@+git@TAG_OFFSET@.%h</param>
     <param name="scm">git</param>
-    <param name="revision">v0.10.15</param>
+    <param name="revision">v0.10.23</param>
     <param name="match-tag">*</param>
     <param 
name="versionrewrite-pattern">v?([^+]+)(\+git0.*)?(\+git[1-9][0-9]*.*)?</param>
     <param name="versionrewrite-replacement">\1\3</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.ppfrHh/_old  2026-07-08 17:34:30.917232654 +0200
+++ /var/tmp/diff_new_pack.ppfrHh/_new  2026-07-08 17:34:30.941233487 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/lu-zero/cargo-c.git</param>
-              <param 
name="changesrevision">3e178d5609e5dcc20de3cb0de1bf579329e43784</param></service></servicedata>
+              <param 
name="changesrevision">cfdb2752fabf40711d535011c371a8b1c20a1be2</param></service></servicedata>
 (No newline at EOF)
 

++++++ cargo-c-0.10.15.tar.xz -> cargo-c-0.10.23.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cargo-c-0.10.15/.github/workflows/deploy.yml 
new/cargo-c-0.10.23/.github/workflows/deploy.yml
--- old/cargo-c-0.10.15/.github/workflows/deploy.yml    2025-08-10 
18:03:53.000000000 +0200
+++ new/cargo-c-0.10.23/.github/workflows/deploy.yml    2026-06-01 
08:21:05.000000000 +0200
@@ -24,7 +24,7 @@
     runs-on: windows-latest
 
     steps:
-    - uses: actions/checkout@v4
+    - uses: actions/checkout@v6
 
     - name: Install stable
       uses: dtolnay/rust-toolchain@stable
@@ -45,7 +45,7 @@
              "cargo-ctest.exe"
 
     - name: Upload binaries
-      uses: actions/upload-artifact@v4
+      uses: actions/upload-artifact@v7
       with:
         name: cargo-c-windows-${{ matrix.conf }}-binaries
         path: cargo-c-windows-${{ matrix.conf }}.zip
@@ -63,7 +63,7 @@
     runs-on: ubuntu-latest
 
     steps:
-    - uses: actions/checkout@v4
+    - uses: actions/checkout@v6
 
     - name: Install Rust toolchain
       uses: dtolnay/rust-toolchain@stable
@@ -90,17 +90,84 @@
                   cargo-ctest
 
     - name: Upload binaries
-      uses: actions/upload-artifact@v4
+      uses: actions/upload-artifact@v7
       with:
         name: cargo-c-linux-binaries-${{ matrix.target }}
         path: cargo-c-${{ matrix.target }}.tar.gz
 
+  android-binaries:
+
+    runs-on: ubuntu-latest
+
+    steps:
+    - uses: actions/checkout@v6
+
+    - name: Install Rust toolchain
+      uses: dtolnay/rust-toolchain@stable
+      with:
+        toolchain: stable
+        targets: aarch64-linux-android
+
+    - name: Setup Android NDK
+      uses: nttld/setup-ndk@v1
+      id: setup-ndk
+      with:
+        ndk-version: r29
+        add-to-path: true
+
+    - name: Configure linker and environment
+      run: |
+        NDK_BIN="${{ steps.setup-ndk.outputs.ndk-path 
}}/toolchains/llvm/prebuilt/linux-x86_64/bin"
+        
+        cd $NDK_BIN
+        ln -sf aarch64-linux-android21-clang aarch64-linux-android-clang
+        ln -sf aarch64-linux-android21-clang++ aarch64-linux-android-clang++
+        
+        cd $GITHUB_WORKSPACE
+        mkdir -p .cargo
+        cat > .cargo/config.toml << EOF
+        [target.aarch64-linux-android]
+        linker = "${NDK_BIN}/aarch64-linux-android21-clang"
+        ar = "${NDK_BIN}/llvm-ar"
+        EOF
+        
+        echo 
"CC_aarch64_linux_android=${NDK_BIN}/aarch64-linux-android21-clang" >> 
$GITHUB_ENV
+        echo 
"CXX_aarch64_linux_android=${NDK_BIN}/aarch64-linux-android21-clang++" >> 
$GITHUB_ENV
+        echo "AR_aarch64_linux_android=${NDK_BIN}/llvm-ar" >> $GITHUB_ENV
+        echo 
"CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=${NDK_BIN}/aarch64-linux-android21-clang"
 >> $GITHUB_ENV
+        echo "${NDK_BIN}" >> $GITHUB_PATH
+
+    - name: Build cargo-c
+      env:
+        CC_aarch64_linux_android: ${{ steps.setup-ndk.outputs.ndk-path 
}}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang
+        CXX_aarch64_linux_android: ${{ steps.setup-ndk.outputs.ndk-path 
}}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang++
+        AR_aarch64_linux_android: ${{ steps.setup-ndk.outputs.ndk-path 
}}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
+      run: |
+        cargo build --target aarch64-linux-android \
+          --features=vendored-openssl \
+          --profile release-strip
+
+    - name: Create tar
+      run: |
+        cd target/aarch64-linux-android/release-strip
+        tar -czvf $GITHUB_WORKSPACE/cargo-c-aarch64-linux-android.tar.gz \
+                  cargo-capi \
+                  cargo-cbuild \
+                  cargo-cinstall \
+                  cargo-ctest
+
+    - name: Upload binaries
+      uses: actions/upload-artifact@v7
+      with:
+        name: cargo-c-android-binaries-aarch64
+        path: cargo-c-aarch64-linux-android.tar.gz
+
   macos-binaries:
 
     runs-on: macos-latest
 
     steps:
-    - uses: actions/checkout@v4
+    - uses: actions/checkout@v6
 
     - name: Install stable
       uses: dtolnay/rust-toolchain@stable
@@ -121,19 +188,19 @@
             cargo-ctest
 
     - name: Upload binaries
-      uses: actions/upload-artifact@v4
+      uses: actions/upload-artifact@v7
       with:
         name: cargo-c-macos-binaries
         path: cargo-c-macos.zip
 
   deploy:
 
-    needs: [windows-binaries, linux-binaries, macos-binaries]
+    needs: [windows-binaries, linux-binaries, android-binaries, macos-binaries]
 
     runs-on: ubuntu-latest
 
     steps:
-    - uses: actions/checkout@v4
+    - uses: actions/checkout@v6
 
     - name: Install stable
       uses: dtolnay/rust-toolchain@stable
@@ -141,18 +208,19 @@
         toolchain: stable
 
     - name: Download zip files
-      uses: actions/download-artifact@v5
+      uses: actions/download-artifact@v8
 
     - name: Create Cargo.lock
       run: |
         cargo update
 
     - name: Create a release
-      uses: softprops/action-gh-release@v2
+      uses: softprops/action-gh-release@v3
       with:
         files: |
           Cargo.lock
           cargo-c-linux-binaries*/*.tar.gz
+          cargo-c-android-binaries*/*.tar.gz
           cargo-c-macos-binaries/cargo-c-macos.zip
           cargo-c-windows-msvc-binaries/cargo-c-windows-msvc.zip
           cargo-c-windows-gnu-binaries/cargo-c-windows-gnu.zip
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cargo-c-0.10.15/.github/workflows/example-project.yml 
new/cargo-c-0.10.23/.github/workflows/example-project.yml
--- old/cargo-c-0.10.15/.github/workflows/example-project.yml   2025-08-10 
18:03:53.000000000 +0200
+++ new/cargo-c-0.10.23/.github/workflows/example-project.yml   2026-06-01 
08:21:05.000000000 +0200
@@ -13,9 +13,6 @@
       matrix:
         include:
           - os: ubuntu-latest
-          # x86_64:
-          - os: macos-13
-          # arm64:
           - os: macos-latest
           - os: windows-latest
             toolchain-suffix: -gnu
@@ -26,7 +23,7 @@
 
     steps:
       - name: Clone Git repository
-        uses: actions/checkout@v4
+        uses: actions/checkout@v6
 
       - name: Install Rust
         uses: dtolnay/rust-toolchain@stable
@@ -132,3 +129,45 @@
           meson setup build
           meson compile -C build
           meson test -C build
+
+  example-project-cygwin:
+    runs-on: windows-latest
+
+    defaults:
+      run:
+        shell: msys2 {0}
+
+    steps:
+      - name: Clone Git repository
+        uses: actions/checkout@v6
+
+      - name: Install rust
+        uses: msys2/setup-msys2@v2
+        with:
+          update: true
+          msystem: MSYS
+          install: rust pkgconf gcc openssl-devel libopenssl make
+
+      - name: Install cargo-c applet
+        run: cargo install --path .
+
+      - name: Build C API for example project
+        working-directory: example-project
+        run: cargo cbuild --verbose --release
+
+      - name: Install into /usr/local
+        working-directory: example-project
+        run: cargo cinstall --verbose --release --prefix=/usr/local
+
+      - name: Test pkgconf
+        run: |
+          export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
+          pkgconf --version
+          test "$(pkgconf --cflags example_project)" = 
"-I/usr/local/include/example-project-0.1"
+          test "$(pkgconf --libs example_project)" = "-L/usr/local/lib 
-lexample-project"
+
+      - name: Test usage from C (using Makefile)
+        working-directory: example-project/usage-from-c
+        run: |
+          export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
+          make
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cargo-c-0.10.15/.github/workflows/rust.yml 
new/cargo-c-0.10.23/.github/workflows/rust.yml
--- old/cargo-c-0.10.15/.github/workflows/rust.yml      2025-08-10 
18:03:53.000000000 +0200
+++ new/cargo-c-0.10.23/.github/workflows/rust.yml      2026-06-01 
08:21:05.000000000 +0200
@@ -8,7 +8,7 @@
     name: Format and Clippy
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@v6
 
       - name: Install stable
         uses: dtolnay/rust-toolchain@stable
@@ -21,7 +21,7 @@
           cargo fmt --all -- --check
 
       - name: Run clippy
-        uses: actions-rs-plus/[email protected]
+        uses: actions-rs-plus/[email protected]
         with:
           args: --all -- -D warnings
 
@@ -30,7 +30,7 @@
     name: Code coverage
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@v6
 
       - name: Install toolchain
         uses: dtolnay/rust-toolchain@stable
@@ -46,7 +46,7 @@
           tar xj -C $HOME/.cargo/bin
 
       - name: Set up MinGW
-        uses: egor-tensin/setup-mingw@v2
+        uses: egor-tensin/setup-mingw@v3
         with:
           platform: x64
           cc: false
@@ -56,7 +56,7 @@
         run: bash coverage.sh
 
       - name: Codecov upload
-        uses: codecov/codecov-action@v5
+        uses: codecov/codecov-action@v6
         with:
           files: coverage.lcov
 
@@ -64,7 +64,7 @@
     needs: rustfmt-clippy
     strategy:
       matrix:
-        os: [ubuntu-latest, windows-latest, macos-13, macos-latest]
+        os: [ubuntu-latest, windows-latest, macos-latest]
         toolchain: [nightly, stable]
         include:
           - toolchain: nightly-gnu
@@ -75,7 +75,7 @@
     name: ${{matrix.os}}-${{matrix.toolchain}}
     runs-on: ${{matrix.os}}
     steps:
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@v6
 
       - name: Install ${{matrix.toolchain}}
         uses: dtolnay/rust-toolchain@stable
@@ -90,5 +90,29 @@
         run: |
           cargo test --verbose
 
+  cygwin-test:
+    needs: rustfmt-clippy
+    runs-on: windows-latest
+
+    defaults:
+      run:
+        shell: msys2 {0}
+
+    steps:
+      - name: Clone Git repository
+        uses: actions/checkout@v6
+
+      - name: Install rust and dependencies
+        uses: msys2/setup-msys2@v2
+        with:
+          update: true
+          msystem: MSYS
+          install: rust openssl-devel libopenssl pkgconf
 
+      - name: Build
+        run: |
+          cargo build --verbose
 
+      - name: Run tests
+        run: |
+          cargo test --verbose
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cargo-c-0.10.15/Cargo.toml 
new/cargo-c-0.10.23/Cargo.toml
--- old/cargo-c-0.10.15/Cargo.toml      2025-08-10 18:03:53.000000000 +0200
+++ new/cargo-c-0.10.23/Cargo.toml      2026-06-01 08:21:05.000000000 +0200
@@ -1,6 +1,6 @@
 [package]
 name = "cargo-c"
-version = "0.10.15+cargo-0.90.0"
+version = "0.10.23+cargo-0.97.1"
 authors = ["Luca Barbato <[email protected]>"]
 description = "Helper program to build and install c-like libraries"
 license = "MIT"
@@ -9,7 +9,7 @@
 repository = "https://github.com/lu-zero/cargo-c";
 categories = ["command-line-utilities", "development-tools::cargo-plugins"]
 keywords = ["cargo", "cdylib"]
-rust-version = "1.87"
+rust-version = "1.94"
 
 [[bin]]
 name = "cargo-capi"
@@ -28,14 +28,14 @@
 path = "src/bin/ctest.rs"
 
 [dependencies]
-cargo = "0.90.0"
+cargo = "0.97.1"
 cargo-util = "0.2"
 semver = "1.0.3"
 log = "0.4"
 clap = { version = "4.5.18", features = ["color", "derive", "cargo", "string", 
"wrap_help"] }
 regex = "1.5.6"
 cbindgen = { version="0.29.0", default-features=false }
-toml = "0.8"
+toml = "1.1"
 serde = "1.0.123"
 serde_derive = "1.0"
 serde_json = "1.0.62"
@@ -43,8 +43,11 @@
 cc = "1.0"
 glob = "0.3"
 itertools = "0.14"
-implib = "0.4.0"
-object = { version = "0.37.1", default-features = false, features = ["std", 
"read_core", "pe"] }
+implib = "0.6.0"
+object = { version = "0.39.1", default-features = false, features = ["std", 
"read_core", "pe"] }
+cargo-platform = "0.3.1"
+clap_complete = "4.5.65"
+camino = "1.2.2"
 
 [features]
 default = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cargo-c-0.10.15/README.md 
new/cargo-c-0.10.23/README.md
--- old/cargo-c-0.10.15/README.md       2025-08-10 18:03:53.000000000 +0200
+++ new/cargo-c-0.10.23/README.md       2026-06-01 08:21:05.000000000 +0200
@@ -154,6 +154,11 @@
 # Used to disable the generation of additional import library file in platforms
 # that have the concept such as Windows
 import_library = false
+
+[package.metadata.capi.library.target.'cfg(target_os = "linux")']
+# Add target-specific rustflags, the are folded with the main rustflags above
+# Note that multiple --version-script support is heavily linker dependent.
+rustflags = "-Clink-arg=-Wl,--version-script=assets/version.map"
 ```
 
 ### Custom data install
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cargo-c-0.10.15/src/build.rs 
new/cargo-c-0.10.23/src/build.rs
--- old/cargo-c-0.10.15/src/build.rs    2025-08-10 18:03:53.000000000 +0200
+++ new/cargo-c-0.10.23/src/build.rs    2026-06-01 08:21:05.000000000 +0200
@@ -1,7 +1,8 @@
 use std::collections::HashMap;
 use std::hash::{DefaultHasher, Hash, Hasher};
-use std::io::Read;
+use std::io::{ErrorKind, Read};
 use std::path::{Path, PathBuf};
+use std::str::FromStr;
 use std::sync::atomic::{AtomicBool, Ordering};
 use std::sync::{Arc, Mutex};
 
@@ -11,9 +12,11 @@
 use cargo::ops::{self, CompileFilter, CompileOptions, FilterRule, LibRule};
 use cargo::util::command_prelude::{ArgMatches, ArgMatchesExt, ProfileChecking, 
UserIntent};
 use cargo::util::interning::InternedString;
+use cargo::util::BuildLogger;
 use cargo::{CliResult, GlobalContext};
 
 use anyhow::Context as _;
+use cargo_platform::Platform;
 use cargo_util::paths::{copy, create_dir_all, open, read, read_bytes, write};
 use implib::def::ModuleDef;
 use implib::{Flavor, ImportLibrary, MachineType};
@@ -180,7 +183,7 @@
     target: &target::Target,
     targetdir: &Path,
 ) -> anyhow::Result<()> {
-    if target.os == "windows" {
+    if target.os == "windows" || target.os == "cygwin" {
         ws.gctx().shell().status("Building", "implib")?;
 
         let def_path = targetdir.join(format!("{name}.def"));
@@ -308,7 +311,7 @@
         let mut f = open(self.path())?;
         let mut cache_str = String::new();
         f.read_to_string(&mut cache_str)?;
-        let cache = toml::de::from_str(&cache_str)?;
+        let cache = toml::from_str(&cache_str)?;
 
         Ok(cache)
     }
@@ -326,7 +329,7 @@
                 hash,
                 static_libs: self.static_libs.to_owned(),
             };
-            let buf = toml::ser::to_string(&cache)?;
+            let buf = toml::to_string(&cache)?;
             write(self.path(), buf)?;
         }
 
@@ -486,7 +489,7 @@
         .crate_name();
     let root_path = pkg.root().to_path_buf();
     let manifest_str = read(&root_path.join("Cargo.toml"))?;
-    let toml = manifest_str.parse::<toml::Value>()?;
+    let toml = manifest_str.parse::<toml::Table>()?;
 
     let capi = toml
         .get("package")
@@ -648,17 +651,38 @@
             });
         }
 
+        fn make_args(args: &str) -> impl Iterator<Item = String> + use<'_> {
+            args.split(' ')
+                .map(str::trim)
+                .filter(|s| !s.is_empty())
+                .map(str::to_string)
+        }
+
         import_library = library
             .get("import_library")
             .and_then(|v| v.as_bool())
             .unwrap_or(true);
+
         if let Some(args) = library.get("rustflags").and_then(|v| v.as_str()) {
+            rustflags.extend(make_args(args));
+        }
+
+        if let Some(args) = library.get("target").and_then(|v| v.as_table()) {
             let args = args
-                .split(' ')
-                .map(str::trim)
-                .filter(|s| !s.is_empty())
-                .map(str::to_string);
-            rustflags.extend(args);
+                .iter()
+                .filter_map(|(p, v)| {
+                    if Platform::from_str(p)
+                        .ok()
+                        .is_some_and(|p| p.matches(name, &rustc_target.cfg))
+                    {
+                        v.get("rustflags").and_then(|v| v.as_str())
+                    } else {
+                        None
+                    }
+                })
+                .flat_map(make_args);
+
+            rustflags.extend(args)
         }
     }
 
@@ -889,7 +913,8 @@
 ) -> CargoResult<HashMap<PackageId, PathBuf>> {
     ws.emit_warnings()?;
     let interner = UnitInterner::new();
-    let mut bcx = create_bcx(ws, options, &interner)?;
+    let logger = BuildLogger::maybe_new(ws, &options.build_config)?;
+    let mut bcx = create_bcx(ws, options, &interner, logger.as_ref())?;
     let unit_graph = &bcx.unit_graph;
     let extra_compiler_args = &mut bcx.extra_compiler_args;
 
@@ -898,10 +923,11 @@
         let capi_config = load_manifest_capi_config(pkg, rustc_target)?;
         let name = &capi_config.library.name;
         let install_paths = InstallPaths::new(name, rustc_target, args, 
&capi_config);
+        let install_path_lib = install_paths.lib_install_dir(&capi_config);
         let pkg_rustflags = &capi_config.library.rustflags;
 
         let mut leaf_args: Vec<String> = rustc_target
-            .shared_object_link_args(&capi_config, &install_paths.libdir, 
root_output)
+            .shared_object_link_args(&capi_config, &install_path_lib, 
root_output)
             .into_iter()
             .flat_map(|l| ["-C".to_string(), format!("link-arg={l}")])
             .collect();
@@ -939,7 +965,7 @@
         .iter()
         .filter_map(|l| {
             let id = l.unit.pkg.package_id();
-            if let Some(ref m) = l.script_meta {
+            l.script_metas.iter().flatten().find_map(|m| {
                 if let Some(env) = r.extra_env.get(m) {
                     env.iter().find_map(|e| {
                         if e.0 == "OUT_DIR" {
@@ -951,9 +977,7 @@
                 } else {
                     None
                 }
-            } else {
-                None
-            }
+            })
         })
         .collect();
 
@@ -1277,7 +1301,33 @@
                     from_build_targets.debug_info.as_ref(),
                     build_targets.debug_info.as_ref(),
                 ) {
-                    copy(from_debug_info, to_debug_info)?;
+                    if from_debug_info.exists() {
+                        create_dir_all(to_debug_info.parent().unwrap())?;
+                        if from_debug_info.is_dir() {
+                            let files =
+                                
from_debug_info.read_dir()?.collect::<Result<Vec<_>, _>>()?;
+                            for f in files.iter() {
+                                let src = f.path();
+                                let file_name = 
src.strip_prefix(from_debug_info)?;
+                                let dst = to_debug_info.join(file_name);
+                                match std::fs::create_dir_all(
+                                    dst.parent().expect("Source path is not 
complete"),
+                                ) {
+                                    Ok(()) => Ok(()),
+                                    Err(v) => {
+                                        if v.kind() == 
ErrorKind::AlreadyExists {
+                                            Ok(())
+                                        } else {
+                                            Err(v)
+                                        }
+                                    }
+                                }?;
+                                copy(src, dst)?;
+                            }
+                        } else {
+                            copy(from_debug_info, to_debug_info)?;
+                        }
+                    }
                 }
             }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cargo-c-0.10.15/src/build_targets.rs 
new/cargo-c-0.10.23/src/build_targets.rs
--- old/cargo-c-0.10.15/src/build_targets.rs    2025-08-10 18:03:53.000000000 
+0200
+++ new/cargo-c-0.10.23/src/build_targets.rs    2026-06-01 08:21:05.000000000 
+0200
@@ -131,7 +131,9 @@
     pub fn shared_output_file_name(&self) -> Option<OsString> {
         match self.lib_type() {
             LibType::Windows => {
-                if self.shared_lib.is_some()
+                if self.target.os == "cygwin" {
+                    Some(format!("cyg{}.dll", self.name).into())
+                } else if self.shared_lib.is_some()
                     && self.use_meson_naming_convention
                     && self.target.env == "gnu"
                 {
@@ -171,9 +173,10 @@
             "macos" | "ios" | "tvos" | "visionos" => {
                 let static_lib = targetdir.join(format!("lib{lib_name}.a"));
                 let shared_lib = 
targetdir.join(format!("lib{lib_name}.dylib"));
-                (shared_lib, static_lib, None, None, None)
+                let pdb = Some(targetdir.join(format!("lib{lib_name}.dSYM")));
+                (shared_lib, static_lib, None, pdb, None)
             }
-            "windows" => {
+            "windows" | "cygwin" => {
                 let shared_lib = targetdir.join(format!("{lib_name}.dll"));
                 let def = targetdir.join(format!("{lib_name}.def"));
 
@@ -189,14 +192,13 @@
                     (shared_lib, static_lib, Some(impl_lib), pdb, Some(def))
                 } else {
                     let static_lib = 
targetdir.join(format!("lib{lib_name}.a"));
-                    let impl_lib = if use_meson_naming_convention {
+                    let impl_lib = if use_meson_naming_convention || target.os 
== "cygwin" {
                         targetdir.join(format!("lib{lib_name}.dll.a"))
                     } else {
                         targetdir.join(format!("{lib_name}.dll.a"))
                     };
-                    let pdb = None;
 
-                    (shared_lib, static_lib, Some(impl_lib), pdb, Some(def))
+                    (shared_lib, static_lib, Some(impl_lib), None, Some(def))
                 }
             }
             _ => return None,
@@ -237,6 +239,8 @@
                 arch: String::from(""),
                 os: os.to_string(),
                 env: String::from(""),
+                cfg: Vec::new(),
+                target: None,
             };
             let file_names =
                 FileNames::from_target(&target, "ferris", 
Path::new("/foo/bar"), false);
@@ -261,6 +265,8 @@
                 arch: String::from(""),
                 os: os.to_string(),
                 env: String::from(""),
+                cfg: Vec::new(),
+                target: None,
             };
             let file_names =
                 FileNames::from_target(&target, "ferris", 
Path::new("/foo/bar"), false);
@@ -269,7 +275,7 @@
                 static_lib: PathBuf::from("/foo/bar/libferris.a"),
                 shared_lib: PathBuf::from("/foo/bar/libferris.dylib"),
                 impl_lib: None,
-                debug_info: None,
+                debug_info: Some(PathBuf::from("/foo/bar/libferris.dSYM")),
                 def: None,
             };
 
@@ -284,6 +290,8 @@
             arch: String::from(""),
             os: String::from("windows"),
             env: String::from("msvc"),
+            cfg: Vec::new(),
+            target: None,
         };
         let file_names = FileNames::from_target(&target, "ferris", 
Path::new("/foo/bar"), false);
 
@@ -305,6 +313,8 @@
             arch: String::from(""),
             os: String::from("windows"),
             env: String::from("gnu"),
+            cfg: Vec::new(),
+            target: None,
         };
         let file_names = FileNames::from_target(&target, "ferris", 
Path::new("/foo/bar"), false);
 
@@ -315,6 +325,29 @@
             debug_info: None,
             def: Some(PathBuf::from("/foo/bar/ferris.def")),
         };
+
+        assert_eq!(file_names.unwrap(), expected);
+    }
+
+    #[test]
+    fn cygwin() {
+        let target = Target {
+            is_target_overridden: false,
+            arch: String::from(""),
+            os: String::from("cygwin"),
+            env: String::from(""),
+            cfg: Vec::new(),
+            target: None,
+        };
+        let file_names = FileNames::from_target(&target, "ferris", 
Path::new("/foo/bar"), false);
+
+        let expected = FileNames {
+            static_lib: PathBuf::from("/foo/bar/libferris.a"),
+            shared_lib: PathBuf::from("/foo/bar/ferris.dll"),
+            impl_lib: Some(PathBuf::from("/foo/bar/libferris.dll.a")),
+            debug_info: None,
+            def: Some(PathBuf::from("/foo/bar/ferris.def")),
+        };
 
         assert_eq!(file_names.unwrap(), expected);
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cargo-c-0.10.15/src/cli.rs 
new/cargo-c-0.10.23/src/cli.rs
--- old/cargo-c-0.10.15/src/cli.rs      2025-08-10 18:03:53.000000000 +0200
+++ new/cargo-c-0.10.23/src/cli.rs      2026-06-01 08:21:05.000000000 +0200
@@ -1,13 +1,16 @@
 use std::ffi::{OsStr, OsString};
 use std::path::PathBuf;
 
-use cargo::util::command_prelude::CommandExt;
-use cargo::util::command_prelude::{flag, multi_opt, opt};
+use camino::Utf8PathBuf;
+use cargo::util::command_prelude::{flag, heading, multi_opt, opt};
+use cargo::util::command_prelude::{get_ws_member_candidates, CommandExt};
 use cargo::util::{style, CliError, CliResult};
 
 use cargo_util::{ProcessBuilder, ProcessError};
 
+use clap::builder::{StringValueParser, TypedValueParser};
 use clap::{Arg, ArgAction, ArgMatches, Command, CommandFactory, Parser};
+use clap_complete::ArgValueCandidates;
 
 use crate::target::Target;
 
@@ -57,6 +60,37 @@
     meson: bool,
 }
 
+trait CommandExtC: CommandExt {
+    fn arg_manifest_path_alias_path(self, with_alias: bool) -> Self {
+        let o = opt("manifest-path", "Path to Cargo.toml")
+            .value_name("PATH")
+            .help_heading(heading::MANIFEST_OPTIONS)
+            .value_parser(StringValueParser::new().map(|p| {
+                let mut p = Utf8PathBuf::from(p);
+                if p.is_dir() {
+                    p.push("Cargo.toml");
+                }
+                p.into_string()
+            }))
+            .add(clap_complete::engine::ArgValueCompleter::new(
+                clap_complete::engine::PathCompleter::any().filter(|path| {
+                    path.join("Cargo.toml").exists()
+                        || path.file_name() == Some(OsStr::new("Cargo.toml"))
+                        || cargo::util::toml::is_embedded(path)
+                }),
+            ));
+
+        let o = if with_alias {
+            o.visible_alias("path")
+        } else {
+            o
+        };
+        self._arg(o)
+    }
+}
+
+impl CommandExtC for Command {}
+
 pub fn main_cli() -> Command {
     let styles = {
         clap::builder::styling::Styles::styled()
@@ -135,9 +169,7 @@
         .arg_features()
         .arg_target_triple("Build for the target triple")
         .arg_target_dir()
-        .arg_manifest_path()
-        .arg_message_format()
-        .arg_build_plan();
+        .arg_message_format();
 
     if let Ok(t) = default_target {
         app.mut_arg("prefix", |a| {
@@ -166,7 +198,9 @@
             "Package to build (see `cargo help pkgid`)",
             "Build all packages in the workspace",
             "Exclude packages from the build",
+            ArgValueCandidates::new(get_ws_member_candidates),
         )
+        .arg_manifest_path_alias_path(false)
         .after_help(
             "
 Compilation can be configured via the use of profiles which are configured in
@@ -188,7 +222,9 @@
             "Package to install (see `cargo help pkgid`)",
             "Install all packages in the workspace",
             "Exclude packages from being installed",
+            ArgValueCandidates::new(get_ws_member_candidates),
         )
+        .arg_manifest_path_alias_path(true)
         .after_help(
             "
 Compilation can be configured via the use of profiles which are configured in
@@ -218,7 +254,9 @@
             "Package to run tests for",
             "Test all packages in the workspace",
             "Exclude packages from the test",
+            ArgValueCandidates::new(get_ws_member_candidates),
         )
+        .arg_manifest_path_alias_path(false)
         .arg(flag("no-run", "Compile, but don't run tests"))
         .arg(flag("no-fail-fast", "Run all tests regardless of failure"))
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cargo-c-0.10.15/src/install.rs 
new/cargo-c-0.10.23/src/install.rs
--- old/cargo-c-0.10.15/src/install.rs  2025-08-10 18:03:53.000000000 +0200
+++ new/cargo-c-0.10.23/src/install.rs  2026-06-01 08:21:05.000000000 +0200
@@ -1,4 +1,5 @@
 use clap::ArgMatches;
+use std::io::ErrorKind;
 use std::path::{Component, Path, PathBuf};
 
 use cargo::core::Workspace;
@@ -106,7 +107,7 @@
             | ("emscripten", _)
             | ("hurd", _) => LibType::So,
             ("macos", _) | ("ios", _) | ("tvos", _) | ("visionos", _) => 
LibType::Dylib,
-            ("windows", _) => LibType::Windows,
+            ("windows", _) | ("cygwin", _) => LibType::Windows,
             _ => unimplemented!("The target {}-{} is not supported yet", os, 
env),
         }
     }
@@ -200,13 +201,9 @@
 
         let destdir = &paths.destdir;
 
-        let mut install_path_lib = paths.libdir.clone();
-        if let Some(subdir) = &capi_config.library.install_subdir {
-            install_path_lib.push(subdir);
-        }
-
         let install_path_bin = append_to_destdir(destdir.as_deref(), 
&paths.bindir);
-        let install_path_lib = append_to_destdir(destdir.as_deref(), 
&install_path_lib);
+        let install_path_lib =
+            append_to_destdir(destdir.as_deref(), 
&paths.lib_install_dir(capi_config));
         let install_path_pc = append_to_destdir(destdir.as_deref(), 
&paths.pkgconfigdir);
         let install_path_include = append_to_destdir(destdir.as_deref(), 
&paths.includedir);
         let install_path_data = append_to_destdir(destdir.as_deref(), 
&paths.datadir);
@@ -285,12 +282,42 @@
                 ws.gctx()
                     .shell()
                     .status("Installing", "debugging information")?;
-                let destination_path = build_targets
-                    .debug_info_file_name(&install_path_bin, &install_path_lib)
-                    .unwrap();
+
+                let destination_path = if 
capi_config.library.install_subdir.is_none() {
+                    build_targets
+                        .debug_info_file_name(&install_path_bin, 
&install_path_lib)
+                        .unwrap()
+                } else {
+                    // We assume they are plugins, install them in the custom 
libdir path
+                    build_targets
+                        .debug_info_file_name(&install_path_lib, 
&install_path_lib)
+                        .unwrap()
+                };
 
                 create_dir_all(destination_path.parent().unwrap())?;
-                copy(ws, debug_info, destination_path)?;
+                if debug_info.is_dir() {
+                    let files = 
debug_info.read_dir()?.collect::<Result<Vec<_>, _>>()?;
+                    for f in files.iter() {
+                        let src = f.path();
+                        let file_name = src.strip_prefix(debug_info)?;
+                        let dst = destination_path.join(file_name);
+                        match std::fs::create_dir_all(
+                            dst.parent().expect("Source path is not complete"),
+                        ) {
+                            Ok(()) => Ok(()),
+                            Err(v) => {
+                                if v.kind() == ErrorKind::AlreadyExists {
+                                    Ok(())
+                                } else {
+                                    Err(v)
+                                }
+                            }
+                        }?;
+                        copy(ws, src, dst)?;
+                    }
+                } else {
+                    copy(ws, debug_info, destination_path)?;
+                }
             } else {
                 ws.gctx()
                     .shell()
@@ -326,6 +353,15 @@
 }
 
 impl InstallPaths {
+    pub fn lib_install_dir(&self, capi_config: &CApiConfig) -> PathBuf {
+        let mut lib_install_dir = self.libdir.clone();
+        if let Some(subdir) = &capi_config.library.install_subdir {
+            lib_install_dir.push(subdir);
+        }
+
+        lib_install_dir
+    }
+
     pub fn new(
         _name: &str,
         rustc_target: &Target,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cargo-c-0.10.15/src/target.rs 
new/cargo-c-0.10.23/src/target.rs
--- old/cargo-c-0.10.15/src/target.rs   2025-08-10 18:03:53.000000000 +0200
+++ new/cargo-c-0.10.23/src/target.rs   2026-06-01 08:21:05.000000000 +0200
@@ -1,9 +1,11 @@
 use std::env::consts;
 use std::path::{Path, PathBuf};
-
-use anyhow::*;
+use std::str::FromStr;
 
 use crate::build::CApiConfig;
+use anyhow::*;
+use cargo::core::compiler::CompileTarget;
+use cargo_platform::Cfg;
 
 /// Split a target string to its components
 ///
@@ -16,15 +18,18 @@
     // pub vendor: String,
     pub os: String,
     pub env: String,
+    pub target: Option<CompileTarget>,
+    pub cfg: Vec<Cfg>,
 }
 
 impl Target {
-    pub fn new<T: AsRef<std::ffi::OsStr>>(
+    pub fn new<T: AsRef<std::ffi::OsStr> + AsRef<str>>(
         target: Option<T>,
         is_target_overridden: bool,
-    ) -> Result<Self, anyhow::Error> {
+    ) -> Result<Self> {
         let rustc = std::env::var("RUSTC").unwrap_or_else(|_| "rustc".into());
         let mut cmd = std::process::Command::new(rustc);
+        let target = target.as_ref();
 
         cmd.arg("--print").arg("cfg");
         if let Some(target) = target {
@@ -46,18 +51,39 @@
 
             let s = std::str::from_utf8(&out.stdout).unwrap();
 
+            let lines = s.lines();
+
+            let cfg = lines
+                .map(|line| Ok(Cfg::from_str(line)?))
+                .collect::<Result<Vec<_>>>()
+                .with_context(|| {
+                    format!(
+                        "failed to parse the cfg from `rustc --print=cfg`, 
got:\n{}",
+                        s
+                    )
+                })?;
+
             Ok(Target {
                 arch: match_re(arch_re, s),
                 // vendor: match_re(vendor_re, s),
                 os: match_re(os_re, s),
                 env: match_re(env_re, s),
                 is_target_overridden,
+                target: target
+                    .map(|t| CompileTarget::new(t.as_ref(), false))
+                    .transpose()?,
+                cfg,
             })
         } else {
             Err(anyhow!("Cannot run {:?}", cmd))
         }
     }
 
+    /// Produce the target name, if known
+    pub fn name(&self) -> Option<&str> {
+        self.target.as_ref().map(|t| t.short_name())
+    }
+
     /// Build a list of linker arguments
     pub fn shared_object_link_args(
         &self,
@@ -109,7 +135,7 @@
             lines.push(line);
             // Enable larger LC_RPATH and install_name entries
             lines.push("-Wl,-headerpad_max_install_names".to_string());
-        } else if os == "windows" && env == "gnu" {
+        } else if (os == "windows" && env == "gnu") || (os == "cygwin") {
             // This is only set up to work on GNU toolchain versions of Rust
             lines.push(format!(
                 "-Wl,--output-def,{}",
@@ -137,11 +163,20 @@
     }
 
     pub fn default_libdir(&self) -> PathBuf {
-        if self.is_target_overridden || self.is_freebsd() {
+        if self.is_freebsd() {
             return "lib".into();
         }
 
         if PathBuf::from("/etc/debian_version").exists() {
+            // cross support - if the explicit target matches what Debian sets 
when cross building,
+            // proceed with the Multi-Arch compatible lib dir. if it doesn't 
match (different
+            // target, or env var not set) proceed with the generic "lib"
+            if self.is_target_overridden {
+                let debian_target = std::env::var("DEB_HOST_RUST_TYPE").ok();
+                if debian_target.as_deref() != self.name() {
+                    return "lib".into();
+                }
+            }
             let pc = std::process::Command::new("dpkg-architecture")
                 .arg("-qDEB_HOST_MULTIARCH")
                 .output();
@@ -153,6 +188,10 @@
             }
         }
 
+        if self.is_target_overridden {
+            return "lib".into();
+        }
+
         if consts::ARCH.eq_ignore_ascii_case(&self.arch)
             && consts::OS.eq_ignore_ascii_case(&self.os)
         {

++++++ cargo-c.obsinfo ++++++
--- /var/tmp/diff_new_pack.ppfrHh/_old  2026-07-08 17:34:31.669258754 +0200
+++ /var/tmp/diff_new_pack.ppfrHh/_new  2026-07-08 17:34:31.717260419 +0200
@@ -1,5 +1,5 @@
 name: cargo-c
-version: 0.10.15
-mtime: 1754841833
-commit: 3e178d5609e5dcc20de3cb0de1bf579329e43784
+version: 0.10.23
+mtime: 1780294865
+commit: cfdb2752fabf40711d535011c371a8b1c20a1be2
 

++++++ vendor.tar.xz ++++++
/work/SRC/openSUSE:Factory/cargo-c/vendor.tar.xz 
/work/SRC/openSUSE:Factory/.cargo-c.new.1982/vendor.tar.xz differ: char 15, 
line 1

Reply via email to