Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package xone-dongle-firmware for 
openSUSE:Factory checked in at 2026-02-01 22:04:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xone-dongle-firmware (Old)
 and      /work/SRC/openSUSE:Factory/.xone-dongle-firmware.new.1995 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xone-dongle-firmware"

Sun Feb  1 22:04:00 2026 rev:2 rq:1330200 version:0+git20251208.d8be599

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/xone-dongle-firmware/xone-dongle-firmware.changes    
    2025-11-17 12:23:02.236906834 +0100
+++ 
/work/SRC/openSUSE:Factory/.xone-dongle-firmware.new.1995/xone-dongle-firmware.changes
      2026-02-01 22:04:44.246861162 +0100
@@ -1,0 +2,6 @@
+Sat Jan 31 16:46:46 UTC 2026 - Tobias Görgens <[email protected]>
+- Update to version 0+git20251208.d8be599:
+  - Update to new firmware file locations
+  - Make version linked to upstream firmware donwload script
+
+-------------------------------------------------------------------

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

Other differences:
------------------
++++++ xone-dongle-firmware.spec ++++++
--- /var/tmp/diff_new_pack.8NgtDM/_old  2026-02-01 22:04:45.198901572 +0100
+++ /var/tmp/diff_new_pack.8NgtDM/_new  2026-02-01 22:04:45.198901572 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package xone-dongle-firmware
 #
-# Copyright (c) 2025 SUSE LLC
+# 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
@@ -16,22 +16,24 @@
 #
 
 Name:           xone-dongle-firmware
-Version:        0.1
+# Version of the install/firmware.sh script
+Version:        0+git20251208.d8be599
 Release:        0
 Summary:        Xbox Wireless Controller Adapter firmware downloader
 # The firmware itself is proprietary and downloaded from Microsoft;
 # this package only contains helper scripts and placeholders.
 License:        GPL-3.0-or-later
-URL:            https://github.com/medusalix/xone
+URL:            https://github.com/dlundqvist/xone
 
 Source0:        xone-dl-firmware.sh.in
 Source1:        COPYING
 Source2:        firmware.sha256
 
-Requires:       cabextract
-Requires:       wget
+Requires:       bash
+Requires:       bsdtar
 Requires:       curl
 Requires:       w3m
+Conflicts:      xone < 0.5.0
 BuildArch:      noarch
 
 %description
@@ -58,26 +60,40 @@
     xone-dl-firmware.sh.in > xone-dl-firmware.sh
 
 %install
-%suse_install_update_script xone-dl-firmware.sh
-
-mkdir -p %buildroot/var/adm/update-messages
-touch %buildroot/var/adm/update-messages/%name-%version-%release-1
+mkdir -p %{buildroot}%{_libexecdir}/%{name}
+install -m 0755 xone-dl-firmware.sh 
%{buildroot}%{_libexecdir}/%{name}/xone-dl-firmware.sh
 
 mkdir -p %buildroot/usr/share/doc/%{name}
 touch %buildroot/usr/share/doc/%{name}/MICROSOFT-TOS.html
 
 mkdir -p %buildroot/usr/lib/firmware
-touch %buildroot/usr/lib/firmware/xow_dongle.bin
+touch %buildroot/usr/lib/firmware/xone_dongle_02e6.bin
+touch %buildroot/usr/lib/firmware/xone_dongle_02fe.bin
+touch %buildroot/usr/lib/firmware/xone_dongle_02f9.bin
+touch %buildroot/usr/lib/firmware/xone_dongle_091e.bin
 
 mkdir -p %{buildroot}/usr/share/%{name}
 mv firmware.sha256 %{buildroot}/usr/share/%{name}
 
+# Store update messages under /usr/share to work with transactional-update 
snapshots
+mkdir -p %{buildroot}/usr/share/%{name}/update-messages
+touch %{buildroot}/usr/share/%{name}/update-messages/%name-%version-%release-1
+
+%posttrans
+%{_libexecdir}/%{name}/xone-dl-firmware.sh --no-fail || :
+
 %files
 %license COPYING
-/var/adm/update-scripts/*
-%ghost /var/adm/update-messages/%name-%version-%release-1
+%dir %{_libexecdir}/%{name}
+%{_libexecdir}/%{name}/xone-dl-firmware.sh
 %dir /usr/share/doc/%{name}
 %ghost /usr/share/doc/%{name}/MICROSOFT-TOS.html
-%ghost /usr/lib/firmware/xow_dongle.bin
-/usr/share/%{name}
+%ghost /usr/lib/firmware/xone_dongle_02e6.bin
+%ghost /usr/lib/firmware/xone_dongle_02fe.bin
+%ghost /usr/lib/firmware/xone_dongle_02f9.bin
+%ghost /usr/lib/firmware/xone_dongle_091e.bin
+%dir /usr/share/%{name}
+%dir /usr/share/%{name}/update-messages
+%ghost /usr/share/%{name}/update-messages/%name-%version-%release-1
+/usr/share/%{name}/firmware.sha256
 

++++++ firmware.sha256 ++++++
--- /var/tmp/diff_new_pack.8NgtDM/_old  2026-02-01 22:04:45.254903949 +0100
+++ /var/tmp/diff_new_pack.8NgtDM/_new  2026-02-01 22:04:45.258904119 +0100
@@ -1,2 +1,5 @@
-48084d9fa53b9bb04358f3bb127b7495dc8f7bb0b3ca1437bd24ef2b6eabdf66  
FW_ACC_00U.bin
+080ce4091e53a4ef3e5fe29939f51fd91f46d6a88be6d67eb6e99a5723b3a223  
xone_dongle_02e6.bin
+48084d9fa53b9bb04358f3bb127b7495dc8f7bb0b3ca1437bd24ef2b6eabdf66  
xone_dongle_02fe.bin
+0023a7bae02974834500c665a281e25b1ba52c9226c84989f9084fa5ce591d9b  
xone_dongle_02f9.bin
+e2710daf81e7b36d35985348f68a81d18bc537a2b0c508ffdfde6ac3eae1bad7  
xone_dongle_091e.bin
 

++++++ xone-dl-firmware.sh.in ++++++
--- /var/tmp/diff_new_pack.8NgtDM/_old  2026-02-01 22:04:45.278904968 +0100
+++ /var/tmp/diff_new_pack.8NgtDM/_new  2026-02-01 22:04:45.278904968 +0100
@@ -1,12 +1,11 @@
-#!/bin/sh
+#!/usr/bin/bash
 
 TOS_URL="https://www.microsoft.com/en-us/legal/terms-of-use";
 TOS_FILE="/usr/share/doc/xone-dongle-firmware/MICROSOFT-TOS.html"
-POST_MESSAGE="/var/adm/update-messages/__NAME__-__VERSION__-__RELEASE__-1"
+POST_MESSAGE="/usr/share/__NAME__/update-messages/__NAME__-__VERSION__-__RELEASE__-1"
 
-FIRMWARE_URL="http://download.windowsupdate.com/c/msdownload/update/driver/drvs/2017/07/1cd6a87c-623f-4407-a52d-c31be49e925c_e19f60808bdcbfbd3c3df6be3e71ffc52e43261e.cab";
-FIRMWARE_FILE="/usr/lib/firmware/xow_dongle.bin"
 CHECKSUM_FILE="/usr/share/__NAME__/firmware.sha256"
+FIRMWARE_DIR="/usr/lib/firmware"
 
 CURL_OPTIONS="-L -s"
 
@@ -24,6 +23,7 @@
     echo "  already present"
 else
     echo -n "  Fetching   ... "
+    mkdir -p "$(dirname "$TOS_FILE")" 2>/dev/null || true
     if curl $CURL_OPTIONS -o "$TOS_FILE" "$TOS_URL"; then
         echo "done"
     else
@@ -42,90 +42,133 @@
 
 cd "$tmpdir" || exit $exit_code
 
-if [ -e "$FIRMWARE_FILE" ]; then
-    echo "*** No update necessary. Firmware already installed at 
$FIRMWARE_FILE. ***"
-    # Still show ToS summary below
-else
-    echo "Downloading Xbox Wireless Controller Adapter firmware..."
+# Firmware sources
+urls=(
+    
'https://catalog.s.download.windowsupdate.com/d/msdownload/update/driver/drvs/2017/03/2ea9591b-f751-442c-80ce-8f4692cdc67b_6b555a3a288153cf04aec6e03cba360afe2fce34.cab'
+    
'https://catalog.s.download.windowsupdate.com/c/msdownload/update/driver/drvs/2017/07/1cd6a87c-623f-4407-a52d-c31be49e925c_e19f60808bdcbfbd3c3df6be3e71ffc52e43261e.cab'
+    
'https://catalog.s.download.windowsupdate.com/c/msdownload/update/driver/drvs/2017/06/1dbd7cb4-53bc-4857-a5b0-5955c8acaf71_9081931e7d664429a93ffda0db41b7545b7ac257.cab'
+    
'https://catalog.s.download.windowsupdate.com/d/msdownload/update/driver/drvs/2017/08/aeff215c-3bc4-4d36-a3ea-e14bfa8fa9d2_e58550c4f74a27e51e5cb6868b10ff633fa77164.cab'
+)
+filenames=('FW_ACC_00U.bin' 'FW_ACC_00U.bin' 'FW_ACC_CL.bin' 'FW_ACC_BR.bin')
+pids=('02e6' '02fe' '02f9' '091e')
+
+log_msg() {
+    mkdir -p "$(dirname "$POST_MESSAGE")" 2>/dev/null || true
+    echo "$*" | tee "$POST_MESSAGE"
+}
 
-    echo -n "  Fetching   ... "
-    if ! wget -q -O driver.cab "$FIRMWARE_URL"; then
-        echo "failed!"
+get_expected_hash() {
+    local firmware_name="$1"
+    if [ ! -f "$CHECKSUM_FILE" ]; then
+        return 1
+    fi
+    awk -v f="$firmware_name" '$2 == f { print $1; exit }' "$CHECKSUM_FILE"
+}
+
+download_firmware() {
+    local pid="$1"
+    local url="$2"
+    local extracted="$3"
+
+    local firmware_name="xone_dongle_${pid}.bin"
+    local dest_file="${FIRMWARE_DIR}/${firmware_name}"
+
+    if [ -e "$dest_file" ]; then
+        echo "*** No update necessary. Firmware already installed at 
$dest_file. ***"
+        return 0
+    fi
+
+    local expected_hash
+    expected_hash="$(get_expected_hash "$firmware_name")" || expected_hash=""
+    if [ -z "$expected_hash" ]; then
+        echo "Checksum entry for $firmware_name not found in $CHECKSUM_FILE."
         if [ "$exit_code" -ne 0 ]; then
             exit $exit_code
         else
-            echo "*** No Firmware installed. ***" | tee "$POST_MESSAGE"
-            # Show ToS and exit
+            log_msg "*** No Firmware installed. ***"
             if [ -f "$TOS_FILE" ] && command -v w3m >/dev/null 2>&1; then
                 w3m -dump "$TOS_FILE" | tee "$POST_MESSAGE"
             fi
-            exit 0
+            return 0
         fi
     fi
-    echo "done"
 
-    echo -n "  Extracting ... "
-    if ! cabextract -F FW_ACC_00U.bin driver.cab >/dev/null 2>&1; then
+    echo "Downloading Xbox Wireless Controller Adapter firmware 
(${firmware_name})..."
+
+    echo -n "  Fetching   ... "
+    if ! curl $CURL_OPTIONS -o driver.cab "$url"; then
         echo "failed!"
         rm -f driver.cab
         if [ "$exit_code" -ne 0 ]; then
             exit $exit_code
         else
-            echo "*** No Firmware installed. ***" | tee "$POST_MESSAGE"
+            log_msg "*** No Firmware installed. ***"
             if [ -f "$TOS_FILE" ] && command -v w3m >/dev/null 2>&1; then
                 w3m -dump "$TOS_FILE" | tee "$POST_MESSAGE"
             fi
-            exit 0
+            return 0
         fi
     fi
     echo "done"
 
-    rm -f driver.cab
-
-    if [ ! -f FW_ACC_00U.bin ]; then
-        echo "Firmware file FW_ACC_00U.bin not found after extraction."
+    echo -n "  Extracting ... "
+    if ! bsdtar -xf driver.cab "$extracted" >/dev/null 2>&1; then
+        echo "failed!"
+        rm -f driver.cab
         if [ "$exit_code" -ne 0 ]; then
             exit $exit_code
         else
-            echo "*** No Firmware installed. ***" | tee "$POST_MESSAGE"
+            log_msg "*** No Firmware installed. ***"
             if [ -f "$TOS_FILE" ] && command -v w3m >/dev/null 2>&1; then
                 w3m -dump "$TOS_FILE" | tee "$POST_MESSAGE"
             fi
-            exit 0
+            return 0
         fi
     fi
+    echo "done"
 
-    if [ ! -f "$CHECKSUM_FILE" ]; then
-        echo "Checksum file $CHECKSUM_FILE not found."
+    rm -f driver.cab
+
+    if [ ! -f "$extracted" ]; then
+        echo "Firmware file $extracted not found after extraction."
         if [ "$exit_code" -ne 0 ]; then
             exit $exit_code
         else
-            echo "*** No Firmware installed. ***" | tee "$POST_MESSAGE"
+            log_msg "*** No Firmware installed. ***"
             if [ -f "$TOS_FILE" ] && command -v w3m >/dev/null 2>&1; then
                 w3m -dump "$TOS_FILE" | tee "$POST_MESSAGE"
             fi
-            exit 0
+            return 0
         fi
     fi
 
-    if ! grep "FW_ACC_00U.bin" "$CHECKSUM_FILE" | sha256sum --check --quiet 
--status >/dev/null 2>&1; then
-        echo "Checksum mismatch for FW_ACC_00U.bin ... deleted!"
-        rm -f FW_ACC_00U.bin
+    echo -n "  Verifying ... "
+    actual_hash="$(sha256sum "$extracted" | awk '{print $1}')"
+    if [ "$actual_hash" != "$expected_hash" ]; then
+        echo "failed!"
+        echo "Checksum mismatch for $firmware_name ... deleted!"
+        rm -f "$extracted"
         if [ "$exit_code" -ne 0 ]; then
             exit $exit_code
         else
-            echo "*** No Firmware installed. ***" | tee "$POST_MESSAGE"
+            log_msg "*** No Firmware installed. ***"
             if [ -f "$TOS_FILE" ] && command -v w3m >/dev/null 2>&1; then
                 w3m -dump "$TOS_FILE" | tee "$POST_MESSAGE"
             fi
-            exit 0
+            return 0
         fi
     fi
+    echo "done"
 
-    chmod 644 FW_ACC_00U.bin
-    mv -f FW_ACC_00U.bin "$FIRMWARE_FILE"
-    echo "*** Firmware installed. ***" | tee "$POST_MESSAGE"
-fi
+    chmod 644 "$extracted"
+    mv -f "$extracted" "$dest_file"
+    log_msg "*** Firmware installed: $dest_file ***"
+}
+
+# Install all known dongle firmwares
+for ((i = 0 ; i < "${#urls[@]}" ; i++)); do
+    download_firmware "${pids[$i]}" "${urls[$i]}" "${filenames[$i]}"
+done
 
 # Show ToS at the end
 if [ -f "$TOS_FILE" ] && command -v w3m >/dev/null 2>&1; then

Reply via email to