diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml index 63c2bc40a..c75048267 100644 --- a/.github/workflows/build-desktop.yml +++ b/.github/workflows/build-desktop.yml @@ -159,22 +159,10 @@ jobs: libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 \ libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 \ libgbm1 libpango-1.0-0 libcairo2 libatspi2.0-0 libxshmfence1 libu2f-udev - - name: Dump missing shared libs (debug) - if: matrix.settings.platform == 'ubuntu-22.04' - shell: bash - env: - PROFILE: ${{ inputs.build_profile }} - MATRIX_TARGET: ${{ matrix.settings.target }} - run: | - set +e - for BIN in \ - "app/src-tauri/target/${MATRIX_TARGET}/${PROFILE}/OpenHuman" \ - "target/${MATRIX_TARGET}/${PROFILE}/OpenHuman"; do - if [ -x "$BIN" ]; then - echo "ldd $BIN" - ldd "$BIN" | grep 'not found' || echo " all resolved" - fi - done + # NOTE: The post-build dump lives further down (after `cargo tauri build`) + # so the binary actually exists when ldd runs. Running it here pre-build + # silently no-op'd and gave us no signal during the + # quick-sharun "missing libraries" failures. # Skip first 7 lines of Cargo.lock (workspace package version bumps) so the key tracks dependency changes only - name: Cargo.lock fingerprint (deps only) @@ -422,6 +410,33 @@ jobs: # on macos-arm64 runners, causing OOM at node's ~2GB auto default. NODE_OPTIONS="--max-old-space-size=8192" cargo tauri build $PROFILE_FLAG -c "$TAURI_CONFIG_OVERRIDE" $MATRIX_ARGS + # Diagnostic for the recurring quick-sharun "is missing libraries! + # Aborting..." error on the AppImage bundler — the upstream script + # only prints a generic banner and swallows lib4bin's actual output, + # so we have no visibility into which .so is unresolved. `if: always()` + # ensures this still runs when `cargo tauri build` failed at bundling + # (the binary itself is produced before bundling starts). + - name: Dump linked libraries of built binary (ubuntu debug) + if: always() && matrix.settings.platform == 'ubuntu-22.04' + shell: bash + env: + PROFILE: ${{ inputs.build_profile }} + MATRIX_TARGET: ${{ matrix.settings.target }} + run: | + set +e + for BIN in \ + "app/src-tauri/target/${MATRIX_TARGET}/${PROFILE}/OpenHuman" \ + "app/src-tauri/target/${MATRIX_TARGET}/${PROFILE}/bundle/appimage_deb/data/usr/bin/OpenHuman" \ + "target/${MATRIX_TARGET}/${PROFILE}/OpenHuman"; do + if [ -x "$BIN" ]; then + echo "==> ldd $BIN" + ldd "$BIN" || true + echo "==> unresolved:" + ldd "$BIN" | grep 'not found' || echo " (all resolved)" + echo + fi + done + # Regression guard for #1403: if @sentry/vite-plugin silently no-op'd # (e.g. SENTRY_AUTH_TOKEN missing, or the `sourcemaps.assets` glob # didn't match dist/assets) production events arrive in Sentry as diff --git a/src/openhuman/local_ai/install.rs b/src/openhuman/local_ai/install.rs index 84027b82c..2554880c6 100644 --- a/src/openhuman/local_ai/install.rs +++ b/src/openhuman/local_ai/install.rs @@ -23,7 +23,8 @@ pub(crate) fn is_ollama_installer_running() -> bool { // CPU/memory/disk/network. refresh_all() adds dozens of milliseconds of // blocking I/O on a loaded Windows machine and this function runs on the // async executor inside download_and_install_ollama. - sys.refresh_processes(ProcessesToUpdate::All); + // sysinfo 0.33 added a second `remove_dead_processes` parameter. + sys.refresh_processes(ProcessesToUpdate::All, true); sys.processes().values().any(|p| { p.name() .to_string_lossy()