Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package himmelblau for openSUSE:Factory 
checked in at 2026-07-15 16:41:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/himmelblau (Old)
 and      /work/SRC/openSUSE:Factory/.himmelblau.new.1991 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "himmelblau"

Wed Jul 15 16:41:51 2026 rev:52 rq:1365721 version:3.1.9+git0.1d7db0df

Changes:
--------
--- /work/SRC/openSUSE:Factory/himmelblau/himmelblau.changes    2026-07-07 
21:09:44.135847613 +0200
+++ /work/SRC/openSUSE:Factory/.himmelblau.new.1991/himmelblau.changes  
2026-07-15 17:00:34.001001323 +0200
@@ -1,0 +2,10 @@
+Wed Jul 08 17:19:52 UTC 2026 - David Mulder <[email protected]>
+
+- Update to version 3.1.9+git0.1d7db0df:
+  * Version 3.1.9
+  * Revert "Work around resume lockout on network down"
+  * Revert "dispatcher: refine Himmelblau restart workaround"
+  * Revert "packaging: disable duplicate NM workaround scripts"
+  * fix(resolver): release db lock before offline auth fallback to prevent 
deadlock
+
+-------------------------------------------------------------------

Old:
----
  himmelblau-3.1.8+git0.f72b330e.tar.bz2

New:
----
  himmelblau-3.1.9+git0.1d7db0df.tar.bz2

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

Other differences:
------------------
++++++ himmelblau.spec ++++++
--- /var/tmp/diff_new_pack.SkJ6Qu/_old  2026-07-15 17:00:40.957237220 +0200
+++ /var/tmp/diff_new_pack.SkJ6Qu/_new  2026-07-15 17:00:40.961237355 +0200
@@ -30,7 +30,7 @@
 %endif
 
 Name:           himmelblau
-Version:        3.1.8+git0.f72b330e
+Version:        3.1.9+git0.1d7db0df
 Release:        0
 Summary:        Interoperability suite for Microsoft Azure Entra Id
 License:        GPL-3.0-or-later

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.SkJ6Qu/_old  2026-07-15 17:00:41.009238983 +0200
+++ /var/tmp/diff_new_pack.SkJ6Qu/_new  2026-07-15 17:00:41.013239120 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/himmelblau-idm/himmelblau.git</param>
-              <param 
name="changesrevision">f72b330ed7284f011450c91bc91cbc4c3f281a6c</param></service></servicedata>
+              <param 
name="changesrevision">1d7db0df9f857244cbdde873dfd19ddc8b3f28a8</param></service></servicedata>
 (No newline at EOF)
 

++++++ himmelblau-3.1.8+git0.f72b330e.tar.bz2 -> 
himmelblau-3.1.9+git0.1d7db0df.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/himmelblau-3.1.8+git0.f72b330e/Cargo.lock 
new/himmelblau-3.1.9+git0.1d7db0df/Cargo.lock
--- old/himmelblau-3.1.8+git0.f72b330e/Cargo.lock       2026-07-07 
00:46:09.000000000 +0200
+++ new/himmelblau-3.1.9+git0.1d7db0df/Cargo.lock       2026-07-08 
19:18:32.000000000 +0200
@@ -4,7 +4,7 @@
 
 [[package]]
 name = "aad-tool"
-version = "3.1.8"
+version = "3.1.9"
 dependencies = [
  "anyhow",
  "broker-client",
@@ -611,7 +611,7 @@
 
 [[package]]
 name = "broker"
-version = "3.1.8"
+version = "3.1.9"
 dependencies = [
  "dbus",
  "himmelblau_unix_common",
@@ -622,7 +622,7 @@
 
 [[package]]
 name = "broker-client"
-version = "3.1.8"
+version = "3.1.9"
 dependencies = [
  "serde_json",
  "zbus",
@@ -2051,7 +2051,7 @@
 
 [[package]]
 name = "himmelblau-fuzz"
-version = "3.1.8"
+version = "3.1.9"
 dependencies = [
  "arbitrary",
  "himmelblau_unix_common",
@@ -2063,7 +2063,7 @@
 
 [[package]]
 name = "himmelblau_policies"
-version = "3.1.8"
+version = "3.1.9"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -2085,7 +2085,7 @@
 
 [[package]]
 name = "himmelblau_unix_common"
-version = "3.1.8"
+version = "3.1.9"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -2136,7 +2136,7 @@
 
 [[package]]
 name = "himmelblaud"
-version = "3.1.8"
+version = "3.1.9"
 dependencies = [
  "async-trait",
  "base64 0.22.1",
@@ -2525,7 +2525,7 @@
 
 [[package]]
 name = "idmap"
-version = "3.1.8"
+version = "3.1.9"
 dependencies = [
  "bindgen",
  "cc",
@@ -3270,7 +3270,7 @@
 
 [[package]]
 name = "nss_himmelblau"
-version = "3.1.8"
+version = "3.1.9"
 dependencies = [
  "himmelblau_unix_common",
  "lazy_static",
@@ -3376,7 +3376,7 @@
 
 [[package]]
 name = "o365"
-version = "3.1.8"
+version = "3.1.9"
 dependencies = [
  "anyhow",
  "reqwest 0.12.24",
@@ -3678,7 +3678,7 @@
 
 [[package]]
 name = "pam_himmelblau"
-version = "3.1.8"
+version = "3.1.9"
 dependencies = [
  "himmelblau_unix_common",
  "libc",
@@ -4107,7 +4107,7 @@
 
 [[package]]
 name = "qr-greeter"
-version = "3.1.8"
+version = "3.1.9"
 
 [[package]]
 name = "qrcodegen"
@@ -4812,7 +4812,7 @@
 
 [[package]]
 name = "selinux"
-version = "3.1.8"
+version = "3.1.9"
 
 [[package]]
 name = "semver"
@@ -5180,11 +5180,11 @@
 
 [[package]]
 name = "sshd-config"
-version = "3.1.8"
+version = "3.1.9"
 
 [[package]]
 name = "sso"
-version = "3.1.8"
+version = "3.1.9"
 dependencies = [
  "broker-client",
  "clap",
@@ -5196,7 +5196,7 @@
 
 [[package]]
 name = "sso-policies"
-version = "3.1.8"
+version = "3.1.9"
 
 [[package]]
 name = "stable_deref_trait"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/himmelblau-3.1.8+git0.f72b330e/Cargo.toml 
new/himmelblau-3.1.9+git0.1d7db0df/Cargo.toml
--- old/himmelblau-3.1.8+git0.f72b330e/Cargo.toml       2026-07-07 
00:46:09.000000000 +0200
+++ new/himmelblau-3.1.9+git0.1d7db0df/Cargo.toml       2026-07-08 
19:18:32.000000000 +0200
@@ -28,7 +28,7 @@
 serde_cbor-0-11-2 = { package = "serde_cbor", path = "src/serde_cbor" }
 
 [workspace.package]
-version = "3.1.8"
+version = "3.1.9"
 authors = [
     "David Mulder <[email protected]>"
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/himmelblau-3.1.8+git0.f72b330e/platform/common/NetworkManager/dispatcher.d/99-himmelblau-restart-on-down
 
new/himmelblau-3.1.9+git0.1d7db0df/platform/common/NetworkManager/dispatcher.d/99-himmelblau-restart-on-down
--- 
old/himmelblau-3.1.8+git0.f72b330e/platform/common/NetworkManager/dispatcher.d/99-himmelblau-restart-on-down
        2026-07-07 00:46:09.000000000 +0200
+++ 
new/himmelblau-3.1.9+git0.1d7db0df/platform/common/NetworkManager/dispatcher.d/99-himmelblau-restart-on-down
        1970-01-01 01:00:00.000000000 +0100
@@ -1,127 +0,0 @@
-#!/bin/sh
-# Temporary workaround for himmelblau-idm/himmelblau#1206.
-
-IFACE="${1:-}"
-ACTION="${2:-}"
-TAG="himmelblau-nm-dispatcher"
-SYSTEMD_RUN_DIR="${HIMMELBLAU_SYSTEMD_RUN_DIR:-/run/systemd/system}"
-LOCKFILE="${HIMMELBLAU_NM_LOCKDIR:-/run/himmelblau-nm-dispatcher.lock}"
-STAMP="${HIMMELBLAU_NM_STAMP:-/run/himmelblau-nm-dispatcher.last}"
-COOLDOWN_SECONDS=15
-STATUS_TIMEOUT_SECONDS=2
-
-log_skip() {
-    logger -t "$TAG" "Skipping $ACTION on ${IFACE:-none}: $1"
-}
-
-log_info() {
-    logger -t "$TAG" "$1"
-}
-
-case "$ACTION" in
-    pre-down|down)
-        case "$IFACE" in
-            ""|lo|docker*|virbr*|br-*|veth*|vnet*|tun*|tap*|wg*|ppp*)
-                exit 0
-                ;;
-        esac
-        ;;
-    vpn-down)
-        ;;
-    connectivity-change)
-        case "${CONNECTIVITY_STATE:-unknown}" in
-            FULL|full)
-                exit 0
-                ;;
-        esac
-        ;;
-    *)
-        exit 0
-        ;;
-esac
-
-if [ ! -d "$SYSTEMD_RUN_DIR" ] || ! command -v systemctl >/dev/null 2>&1; then
-    exit 0
-fi
-
-state="$(systemctl is-active himmelblaud.service 2>/dev/null || true)"
-case "$state" in
-    active|failed)
-        ;;
-    activating|deactivating)
-        log_skip "himmelblaud.service is $state"
-        exit 0
-        ;;
-    *)
-        log_skip "himmelblaud.service is $state"
-        exit 0
-        ;;
-esac
-
-restart_if_needed() {
-    now="$(date +%s 2>/dev/null || echo 0)"
-    last=0
-    if [ -r "$STAMP" ]; then
-        last="$(cat "$STAMP" 2>/dev/null || echo 0)"
-    fi
-    case "$last" in
-        *[!0-9]*|"")
-            last=0
-            ;;
-    esac
-
-    if [ "$now" -gt 0 ] && [ "$last" -gt 0 ]; then
-        elapsed=$((now - last))
-        if [ "$elapsed" -ge 0 ] && [ "$elapsed" -lt "$COOLDOWN_SECONDS" ]; then
-            log_skip "restart cooldown active (${elapsed}s)"
-            exit 0
-        fi
-    fi
-
-    if [ "$state" = "active" ] && [ "$ACTION" != "pre-down" ]; then
-        if command -v aad-tool >/dev/null 2>&1 && command -v timeout 
>/dev/null 2>&1; then
-            if timeout "$STATUS_TIMEOUT_SECONDS" aad-tool status 2>/dev/null | 
grep -qx "working!"; then
-                log_skip "himmelblaud.service is responsive"
-                exit 0
-            fi
-        fi
-    fi
-
-    if [ "$now" -gt 0 ]; then
-        printf '%s\n' "$now" >"$STAMP" 2>/dev/null || true
-    fi
-
-    logger -t "$TAG" "Network ${IFACE:-none} event $ACTION - restarting 
himmelblaud.service and himmelblaud-tasks.service"
-    systemctl restart --no-block himmelblaud.service himmelblaud-tasks.service 
2>&1 | logger -t "$TAG"
-
-    exit 0
-}
-
-if [ -d "$LOCKFILE" ]; then
-    if rmdir "$LOCKFILE" 2>/dev/null; then
-        log_info "Removed stale dispatcher lock directory: $LOCKFILE"
-    else
-        log_skip "stale dispatcher lock directory is present"
-        exit 0
-    fi
-fi
-
-if command -v flock >/dev/null 2>&1; then
-    (
-        if ! exec 9>"$LOCKFILE"; then
-            log_skip "dispatcher lock file is unavailable"
-            exit 0
-        fi
-        if ! flock -n 9; then
-            log_skip "another dispatcher run is active"
-            exit 0
-        fi
-        restart_if_needed
-    )
-    exit $?
-fi
-
-log_info "flock unavailable; proceeding without dispatcher lock"
-restart_if_needed
-
-exit 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/himmelblau-3.1.8+git0.f72b330e/src/common/src/resolver.rs 
new/himmelblau-3.1.9+git0.1d7db0df/src/common/src/resolver.rs
--- old/himmelblau-3.1.8+git0.f72b330e/src/common/src/resolver.rs       
2026-07-07 00:46:09.000000000 +0200
+++ new/himmelblau-3.1.9+git0.1d7db0df/src/common/src/resolver.rs       
2026-07-08 19:18:32.000000000 +0200
@@ -105,6 +105,268 @@
     }
 }
 
+#[cfg(test)]
+mod tests {
+    use super::{AuthSession, Resolver};
+    use crate::db::{Cache, CacheTxn, Db, KeyStoreTxn};
+    use crate::idprovider::interface::{
+        tpm, AuthCacheAction, AuthCredHandler, AuthRequest, AuthResult, 
CacheState, GroupToken, Id,
+        IdProvider, IdpError, UserToken, UserTokenState,
+    };
+    use crate::unix_config::{HomeAttr, UidAttr};
+    use crate::unix_proto::{PamAuthRequest, PamAuthResponse};
+    use async_trait::async_trait;
+    use himmelblau::UserToken as UnixUserToken;
+    use kanidm_hsm_crypto::{provider::BoxedDynTpm, provider::SoftTpm, 
provider::Tpm, AuthValue};
+    use libkrimes::proto::KerberosCredentials;
+    use std::sync::atomic::{AtomicBool, Ordering};
+    use std::time::{Duration, SystemTime};
+    use tokio::sync::broadcast;
+
+    struct OfflineFallbackProvider {
+        offline: AtomicBool,
+    }
+
+    impl OfflineFallbackProvider {
+        fn new() -> Self {
+            Self {
+                offline: AtomicBool::new(false),
+            }
+        }
+    }
+
+    #[async_trait]
+    impl IdProvider for OfflineFallbackProvider {
+        async fn check_online(
+            &self,
+            _tpm: &mut tpm::provider::BoxedDynTpm,
+            _now: SystemTime,
+        ) -> bool {
+            true
+        }
+
+        async fn unix_user_get<D: KeyStoreTxn + Send>(
+            &self,
+            _id: &Id,
+            _token: Option<&UserToken>,
+            _keystore: &mut D,
+            _tpm: &mut tpm::provider::BoxedDynTpm,
+            _machine_key: &tpm::structures::StorageKey,
+        ) -> Result<UserTokenState, IdpError> {
+            Ok(UserTokenState::UseCached)
+        }
+
+        async fn unix_user_access<D: KeyStoreTxn + Send>(
+            &self,
+            _id: &Id,
+            _scopes: Vec<String>,
+            _token: Option<&UserToken>,
+            _client_id: Option<String>,
+            _keystore: &mut D,
+            _tpm: &mut tpm::provider::BoxedDynTpm,
+            _machine_key: &tpm::structures::StorageKey,
+        ) -> Result<UnixUserToken, IdpError> {
+            Err(IdpError::BadRequest)
+        }
+
+        async fn unix_user_tgts<D: KeyStoreTxn + Send>(
+            &self,
+            _id: &Id,
+            _old_token: Option<&UserToken>,
+            _keystore: &mut D,
+            _tpm: &mut tpm::provider::BoxedDynTpm,
+            _machine_key: &tpm::structures::StorageKey,
+        ) -> (
+            Option<Box<KerberosCredentials>>,
+            Option<Box<KerberosCredentials>>,
+            Option<String>,
+            Option<String>,
+        ) {
+            (None, None, None, None)
+        }
+
+        async fn unix_user_prt_cookie<D: KeyStoreTxn + Send>(
+            &self,
+            _id: &Id,
+            _token: Option<&UserToken>,
+            _sso_nonce: Option<&str>,
+            _keystore: &mut D,
+            _tpm: &mut tpm::provider::BoxedDynTpm,
+            _machine_key: &tpm::structures::StorageKey,
+        ) -> Result<String, IdpError> {
+            Err(IdpError::BadRequest)
+        }
+
+        async fn change_auth_token<D: KeyStoreTxn + Send>(
+            &self,
+            _account_id: &str,
+            _token: &UnixUserToken,
+            _new_tok: &str,
+            _keystore: &mut D,
+            _tpm: &mut tpm::provider::BoxedDynTpm,
+            _machine_key: &tpm::structures::StorageKey,
+        ) -> Result<bool, IdpError> {
+            Err(IdpError::BadRequest)
+        }
+
+        async fn unix_user_online_auth_init<D: KeyStoreTxn + Send>(
+            &self,
+            _account_id: &str,
+            _token: Option<&UserToken>,
+            _service: &str,
+            _no_hello_pin: bool,
+            _keystore: &mut D,
+            _tpm: &mut tpm::provider::BoxedDynTpm,
+            _machine_key: &tpm::structures::StorageKey,
+            _shutdown_rx: &broadcast::Receiver<()>,
+        ) -> Result<(AuthRequest, AuthCredHandler), IdpError> {
+            self.offline.store(true, Ordering::Release);
+            Err(IdpError::BadRequest)
+        }
+
+        async fn unix_user_online_auth_step<D: KeyStoreTxn + Send>(
+            &self,
+            _account_id: &str,
+            _old_token: &UserToken,
+            _service: &str,
+            _no_hello_pin: bool,
+            _cred_handler: &mut AuthCredHandler,
+            _pam_next_req: PamAuthRequest,
+            _keystore: &mut D,
+            _tpm: &mut tpm::provider::BoxedDynTpm,
+            _machine_key: &tpm::structures::StorageKey,
+            _shutdown_rx: &broadcast::Receiver<()>,
+        ) -> Result<(AuthResult, AuthCacheAction), IdpError> {
+            Err(IdpError::BadRequest)
+        }
+
+        async fn unix_user_offline_auth_init<D: KeyStoreTxn + Send>(
+            &self,
+            _account_id: &str,
+            _token: Option<&UserToken>,
+            _no_hello_pin: bool,
+            _keystore: &mut D,
+        ) -> Result<(AuthRequest, AuthCredHandler), IdpError> {
+            Ok((AuthRequest::Pin, AuthCredHandler::None))
+        }
+
+        async fn unix_user_offline_auth_step<D: KeyStoreTxn + Send>(
+            &self,
+            _account_id: &str,
+            _token: &UserToken,
+            _cred_handler: &mut AuthCredHandler,
+            _pam_next_req: PamAuthRequest,
+            _keystore: &mut D,
+            _tpm: &mut tpm::provider::BoxedDynTpm,
+            _machine_key: &tpm::structures::StorageKey,
+            _online_at_init: bool,
+        ) -> Result<AuthResult, IdpError> {
+            Err(IdpError::BadRequest)
+        }
+
+        async fn unix_group_get(
+            &self,
+            _id: &Id,
+            _tpm: &mut tpm::provider::BoxedDynTpm,
+        ) -> Result<GroupToken, IdpError> {
+            Err(IdpError::NotFound {
+                what: "group".to_string(),
+                where_: "test".to_string(),
+            })
+        }
+
+        async fn get_cachestate<D: KeyStoreTxn + Send>(
+            &self,
+            _account_id: Option<&str>,
+            _keystore: &mut D,
+        ) -> CacheState {
+            if self.offline.load(Ordering::Acquire) {
+                CacheState::OfflineNextCheck(SystemTime::now() + 
Duration::from_secs(60))
+            } else {
+                CacheState::Online
+            }
+        }
+
+        async fn offline_break_glass(&self, _ttl: Option<u64>) -> Result<(), 
IdpError> {
+            Ok(())
+        }
+    }
+
+    fn test_token() -> UserToken {
+        UserToken {
+            name: "testuser".to_string(),
+            spn: "[email protected]".to_string(),
+            uuid: uuid::uuid!("0302b99c-f0f6-41ab-9492-852692b0fd16"),
+            real_gidnumber: Some(2000),
+            gidnumber: 2000,
+            displayname: "Test User".to_string(),
+            shell: None,
+            groups: Vec::new(),
+            tenant_id: 
Some(uuid::uuid!("58e8a301-2502-4814-81c5-a4d17c399a45")),
+            valid: true,
+        }
+    }
+
+    async fn setup_resolver() -> Resolver<OfflineFallbackProvider> {
+        let db = Db::new("").expect("failed to create test db");
+        let mut dbtxn = db.write().await;
+        dbtxn.migrate().expect("failed to migrate test db");
+        dbtxn
+            .update_account(&test_token(), 0)
+            .expect("failed to seed test token");
+        dbtxn.commit().expect("failed to commit test db");
+
+        let mut hsm = BoxedDynTpm::new(SoftTpm::new());
+        let auth_value = AuthValue::ephemeral().expect("failed to create auth 
value");
+        let loadable_machine_key = hsm
+            .root_storage_key_create(&auth_value)
+            .expect("failed to create machine key");
+        let machine_key = hsm
+            .root_storage_key_load(&auth_value, &loadable_machine_key)
+            .expect("failed to load machine key");
+
+        Resolver::new(
+            db,
+            OfflineFallbackProvider::new(),
+            hsm,
+            machine_key,
+            3600,
+            Vec::new(),
+            "/bin/sh".to_string(),
+            "/home/".to_string(),
+            HomeAttr::Name,
+            None,
+            UidAttr::Name,
+            UidAttr::Name,
+            Vec::new(),
+        )
+        .await
+        .expect("failed to create resolver")
+    }
+
+    #[tokio::test]
+    async fn online_auth_init_offline_fallback_does_not_reenter_db_lock() {
+        let resolver = setup_resolver().await;
+        let (_shutdown_tx, shutdown_rx) = broadcast::channel(1);
+
+        let result = tokio::time::timeout(
+            Duration::from_secs(5),
+            resolver.pam_account_authenticate_init(
+                "[email protected]",
+                "gdm-password",
+                false,
+                shutdown_rx,
+            ),
+        )
+        .await
+        .expect("auth init deadlocked waiting for the db lock")
+        .expect("auth init failed");
+
+        assert!(matches!(result.0, AuthSession::InProgress { .. }));
+        assert!(matches!(result.1, PamAuthResponse::Pin));
+    }
+}
+
 impl<I> Resolver<I>
 where
     I: IdProvider + Sync,
@@ -1122,29 +1384,32 @@
         };
 
         let maybe_err = if online_at_init {
-            let mut hsm_lock = self.hsm.lock().await;
-            let mut dbtxn = self.db.write().await;
+            let online_result = {
+                let mut hsm_lock = self.hsm.lock().await;
+                let mut dbtxn = self.db.write().await;
+
+                self.client
+                    .unix_user_online_auth_init(
+                        account_id,
+                        token.as_ref(),
+                        service,
+                        no_hello_pin,
+                        &mut dbtxn,
+                        hsm_lock.deref_mut(),
+                        &self.machine_key,
+                        &shutdown_rx,
+                    )
+                    .await
+            };
 
-            match self
-                .client
-                .unix_user_online_auth_init(
-                    account_id,
-                    token.as_ref(),
-                    service,
-                    no_hello_pin,
-                    &mut dbtxn,
-                    hsm_lock.deref_mut(),
-                    &self.machine_key,
-                    &shutdown_rx,
-                )
-                .await
-            {
+            match online_result {
                 Ok(res) => Ok(res),
                 Err(e) => {
                     // Check if the failure is because we went offline
                     match self.get_cachestate(Some(account_id)).await {
                         CacheState::Offline | CacheState::OfflineNextCheck(_) 
=> {
                             // Attempt to proceed offline
+                            let mut dbtxn = self.db.write().await;
                             self.client
                                 .unix_user_offline_auth_init(
                                     account_id,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/himmelblau-3.1.8+git0.f72b330e/src/daemon/Cargo.toml 
new/himmelblau-3.1.9+git0.1d7db0df/src/daemon/Cargo.toml
--- old/himmelblau-3.1.8+git0.f72b330e/src/daemon/Cargo.toml    2026-07-07 
00:46:09.000000000 +0200
+++ new/himmelblau-3.1.9+git0.1d7db0df/src/daemon/Cargo.toml    2026-07-08 
19:18:32.000000000 +0200
@@ -66,7 +66,6 @@
   ["../../platform/debian/himmelblaud-tasks.service", 
"usr/lib/systemd/system/", "644"],
   ["../../platform/debian/himmelblaud.service", "usr/lib/systemd/system/", 
"644"],
   ["../../platform/debian/himmelblau-hsm-pin-init.service", 
"usr/lib/systemd/system/", "644"],
-  
["../../platform/common/NetworkManager/dispatcher.d/99-himmelblau-restart-on-down",
 "usr/lib/NetworkManager/dispatcher.d/", "755"],
   ["scripts/himmelblau-init-hsm-pin", "usr/libexec/", "755"],
   ["target/release/himmelblaud", "usr/sbin/", "755"],
   ["target/release/himmelblaud_tasks", "usr/sbin/", "755"],
@@ -91,7 +90,6 @@
   { source = "../../platform/opensuse/himmelblaud-tasks.service", dest = 
"/usr/lib/systemd/system/", mode = "644" },
   { source = "../../platform/opensuse/himmelblaud.service", dest = 
"/usr/lib/systemd/system/", mode = "644" },
   { source = "../../platform/opensuse/himmelblau-hsm-pin-init.service", dest = 
"/usr/lib/systemd/system/", mode = "644" },
-  { source = 
"../../platform/common/NetworkManager/dispatcher.d/99-himmelblau-restart-on-down",
 dest = "/usr/lib/NetworkManager/dispatcher.d/", mode = "755" },
   { source = "scripts/himmelblau-init-hsm-pin", dest = "/usr/libexec/", mode = 
"755" },
   { source = "target/release/himmelblaud", dest = "/usr/sbin/", mode = "755" },
   { source = "target/release/himmelblaud_tasks", dest = "/usr/sbin/", mode = 
"755" },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/himmelblau-3.1.8+git0.f72b330e/src/daemon/scripts/postinst 
new/himmelblau-3.1.9+git0.1d7db0df/src/daemon/scripts/postinst
--- old/himmelblau-3.1.8+git0.f72b330e/src/daemon/scripts/postinst      
2026-07-07 00:46:09.000000000 +0200
+++ new/himmelblau-3.1.9+git0.1d7db0df/src/daemon/scripts/postinst      
2026-07-08 19:18:32.000000000 +0200
@@ -89,44 +89,6 @@
     fi
 done
 
-disable_old_nm_dispatcher_workarounds() {
-    dispatcher_dir="${DPKG_ROOT:-}/etc/NetworkManager/dispatcher.d"
-    [ -d "$dispatcher_dir" ] || return 0
-
-    for file in \
-        "$dispatcher_dir/99-zzz-himmelblau" \
-        "$dispatcher_dir/99-restart-himmelblau" \
-        "$dispatcher_dir/99-himmelblau"; do
-        [ -f "$file" ] || continue
-        if grep -Eq 
'himmelblau-idm/himmelblau#1206|NM-dispatcher\.99-restart-himmelblau|99-zzz-himmelblau'
 "$file" \
-            && grep -Eq 
'systemctl[[:space:]]+restart.*himmelblaud(\.service)?' "$file"; then
-            disabled="${file}.himmelblau-disabled"
-            if [ -e "$disabled" ]; then
-                disabled="${disabled}.$$"
-            fi
-            if mv "$file" "$disabled"; then
-                echo "Disabled old manual Himmelblau NetworkManager 
workaround: $file -> $disabled"
-            else
-                echo "Warning: failed to disable old manual Himmelblau 
NetworkManager workaround: $file" >&2
-            fi
-        fi
-    done
-
-    for file in "$dispatcher_dir"/*himmelblau* 
"$dispatcher_dir"/*himmelblaud*; do
-        [ -f "$file" ] || continue
-        case "$file" in
-            *.himmelblau-disabled|*.himmelblau-disabled.*)
-                continue
-                ;;
-        esac
-        if grep -Eq 'systemctl[[:space:]]+restart.*himmelblaud(\.service)?' 
"$file"; then
-            echo "Warning: found unmanaged Himmelblau NetworkManager 
dispatcher script: $file" >&2
-        fi
-    done
-}
-
-disable_old_nm_dispatcher_workarounds
-
 if command -v deb-systemd-helper >/dev/null 2>&1; then
     if [ "$1" != "configure" ]; then
         exit 0

++++++ vendor.tar.zst ++++++
/work/SRC/openSUSE:Factory/himmelblau/vendor.tar.zst 
/work/SRC/openSUSE:Factory/.himmelblau.new.1991/vendor.tar.zst differ: char 7, 
line 1

Reply via email to