mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-29 22:23:01 +00:00
Promote main → release (conflict-resolved) (#5256)
Co-authored-by: YellowSnnowmann <167776381+YellowSnnowmann@users.noreply.github.com> Co-authored-by: Steven Enamakel <31011319+senamakel@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Cyrus Gray <144336577+graycyrus@users.noreply.github.com> Co-authored-by: Horst1993 <horst.w@gmicloud.ai> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: James Gentes <jgentes@users.noreply.github.com> Co-authored-by: Sam <samrusani@users.noreply.github.com> Co-authored-by: Sami Rusani <14844597+samrusani@users.noreply.github.com> Co-authored-by: oxoxDev <164490987+oxoxDev@users.noreply.github.com> Co-authored-by: Muhammad Ismail <78064250+myi1@users.noreply.github.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: nb213 <binyangzhu000@gmail.com> Co-authored-by: binyangzhu000-sudo <224954946+binyangzhu000-sudo@users.noreply.github.com> Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai> Co-authored-by: CodeGhost21 <164498022+CodeGhost21@users.noreply.github.com> Co-authored-by: sanil-23 <sanil@tinyhumans.ai> Co-authored-by: M3gA-Mind <elvin@mahadao.com> Co-authored-by: oxoxDev <oxoxdev@users.noreply.github.com> Co-authored-by: mysma-9403 <64923976+mysma-9403@users.noreply.github.com> Co-authored-by: mwakidenis <mwakidenice@gmail.com> Co-authored-by: NgoQuocViet2001 <123613986+NgoQuocViet2001@users.noreply.github.com> Co-authored-by: viet.ngo <viet.ngo@sotatek.com> Co-authored-by: Maciej Myszkiewicz <mmyszkiewicz@bwcoders.com>
This commit is contained in:
co-authored by
YellowSnnowmann
Steven Enamakel
github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Cyrus Gray
Horst1993
Cursor
James Gentes
Sam
Sami Rusani
oxoxDev
Muhammad Ismail
Claude Fable 5
nb213
binyangzhu000-sudo
Steven Enamakel
CodeGhost21
sanil-23
M3gA-Mind
oxoxDev
mysma-9403
mwakidenis
NgoQuocViet2001
viet.ngo
Maciej Myszkiewicz
parent
220e1a041c
commit
8ea875c13d
Executable
+60
@@ -0,0 +1,60 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
target="${1:-x86_64-unknown-linux-gnu}"
|
||||
forbidden='^(native-tls|openssl|openssl-sys) v'
|
||||
|
||||
check_world() {
|
||||
local label="$1"
|
||||
local manifest="$2"
|
||||
local tree
|
||||
tree="$(cargo tree --locked --manifest-path "$manifest" --target "$target" --prefix none)"
|
||||
if [[ "$label" == core ]] &&
|
||||
matches="$(printf '%s\n' "$tree" | grep -E "$forbidden")"; then
|
||||
printf 'error: native TLS/OpenSSL dependencies found in %s for %s:\n%s\n' \
|
||||
"$label" "$target" "$matches" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Tauri legitimately owns reqwest 0.13 for its dev proxy/updater. Sentry
|
||||
# must never own that tree: OpenHuman supplies its reqwest 0.12 transport.
|
||||
mapfile -t reqwest_013_versions < <(
|
||||
printf '%s\n' "$tree" |
|
||||
sed -nE 's/^reqwest v(0\.13\.[^ ]+).*/\1/p' |
|
||||
sort -u
|
||||
)
|
||||
for version in "${reqwest_013_versions[@]}"; do
|
||||
owners="$(
|
||||
cargo tree --locked --manifest-path "$manifest" --target "$target" \
|
||||
--invert "reqwest@$version" 2>/dev/null || true
|
||||
)"
|
||||
if printf '%s\n' "$owners" | grep -Eq '^sentry v'; then
|
||||
printf 'error: Sentry owns reqwest %s in %s\n%s\n' \
|
||||
"$version" "$label" "$owners" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
for package in native-tls openssl openssl-sys; do
|
||||
owners="$(
|
||||
cargo tree --locked --manifest-path "$manifest" --target "$target" \
|
||||
--invert "$package" 2>/dev/null || true
|
||||
)"
|
||||
if printf '%s\n' "$owners" | grep -Eq '^sentry v'; then
|
||||
printf 'error: Sentry owns %s in %s\n%s\n' \
|
||||
"$package" "$label" "$owners" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ "$label" == tauri ]] &&
|
||||
printf '%s\n' "$owners" | grep -Eq '^motosan-ai-oauth v'; then
|
||||
printf 'error: motosan-ai-oauth owns %s in %s\n%s\n' \
|
||||
"$package" "$label" "$owners" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
check_world core Cargo.toml
|
||||
check_world tauri app/src-tauri/Cargo.toml
|
||||
|
||||
printf 'Linux TLS/Sentry dependency policy passed for both Cargo worlds (%s)\n' "$target"
|
||||
@@ -158,6 +158,52 @@ smoke_extracted_apprun() {
|
||||
[ -n "$secret_name" ] && unset_args+=(-u "$secret_name")
|
||||
done < <(compgen -v OPENAI_ || true)
|
||||
|
||||
# ── D-Bus session bus for the smoke window ─────────────────────────────────
|
||||
#
|
||||
# A real desktop user always launches the AppImage inside a session that has a
|
||||
# D-Bus session bus; a CI runner does not. `tauri-plugin-single-instance` calls
|
||||
# `zbus::blocking::connection::Builder::session().unwrap()` in its `setup()`,
|
||||
# so with no usable bus it panics before any window exists:
|
||||
#
|
||||
# thread 'main' panicked at plugins/single-instance/src/platform_impl/linux.rs:57
|
||||
# called `Result::unwrap()` on an `Err` value:
|
||||
# Address("unsupported transport 'disabled'")
|
||||
#
|
||||
# ...which is exactly how the Release Production ubuntu smoke failed (exit 101,
|
||||
# actions/runs/30393949588). Chromium logs the same underlying condition as
|
||||
# "Failed to connect to the bus: Could not parse server address".
|
||||
#
|
||||
# `app/scripts/e2e-run-session.sh` already solves this for the desktop e2e
|
||||
# runner by starting a bus with `dbus-launch`; the AppImage smoke never got the
|
||||
# same treatment. Wrapping in `dbus-run-session` is the modern equivalent and
|
||||
# needs no explicit teardown — the bus dies with the wrapped command, so the
|
||||
# 15s `timeout` still bounds everything.
|
||||
#
|
||||
# Echo the inherited value first: whether it arrives as `disabled`, `disabled:`
|
||||
# or unset changes which code path the app takes, and the failing log gave us
|
||||
# no way to tell.
|
||||
echo "[appimage-runtime] Inherited DBUS_SESSION_BUS_ADDRESS=${DBUS_SESSION_BUS_ADDRESS:-<unset>}"
|
||||
|
||||
# Always drop the inherited value: the wrapper below supplies a real one, and
|
||||
# if no wrapper is available a poisoned `disabled` must not reach the app —
|
||||
# with the variable absent the app's own `can_register_single_instance_plugin()`
|
||||
# probe falls back to inspecting `$XDG_RUNTIME_DIR/bus`, whereas the literal
|
||||
# string `disabled` is precisely what zbus refuses to parse.
|
||||
unset_args+=(-u DBUS_SESSION_BUS_ADDRESS)
|
||||
|
||||
local -a dbus_wrapper=()
|
||||
if command -v dbus-run-session >/dev/null 2>&1; then
|
||||
dbus_wrapper=(dbus-run-session --)
|
||||
echo "[appimage-runtime] Providing a session bus via dbus-run-session"
|
||||
elif command -v dbus-launch >/dev/null 2>&1; then
|
||||
# Older images ship dbus-launch (from dbus-x11) but not dbus-run-session.
|
||||
dbus_wrapper=(dbus-launch --exit-with-session)
|
||||
echo "[appimage-runtime] Providing a session bus via dbus-launch"
|
||||
else
|
||||
echo "[appimage-runtime] WARNING: neither dbus-run-session nor dbus-launch found;" \
|
||||
"smoking without a session bus (single-instance will be skipped)"
|
||||
fi
|
||||
|
||||
local status
|
||||
if (
|
||||
cd "$foreign_cwd"
|
||||
@@ -170,6 +216,7 @@ smoke_extracted_apprun() {
|
||||
XDG_CACHE_HOME="$smoke_cache" \
|
||||
OPENHUMAN_CEF_PREWARM=0 \
|
||||
OPENHUMAN_DISABLE_GPU=1 \
|
||||
${dbus_wrapper[@]+"${dbus_wrapper[@]}"} \
|
||||
"$appdir/AppRun"
|
||||
) >"$log_file" 2>&1; then
|
||||
status=0
|
||||
@@ -197,6 +244,17 @@ smoke_extracted_apprun() {
|
||||
forbidden=1
|
||||
fi
|
||||
|
||||
# Name this failure explicitly. It exits 101 like any other Rust panic, and the
|
||||
# generic "status 101" message sent the last investigation looking at the
|
||||
# non-fatal `libcef.so => not found` ldd lines instead of the actual cause.
|
||||
if grep -Eq "unsupported transport 'disabled'|single-instance/src/platform_impl/linux\.rs" \
|
||||
"$log_file"; then
|
||||
forbidden=1
|
||||
echo "[appimage-runtime] Detected the single-instance D-Bus panic — the smoke" \
|
||||
"environment has no usable session bus. Check the dbus-run-session wrapper" \
|
||||
"above and that 'dbus'/'dbus-x11' are installed on the runner." >&2
|
||||
fi
|
||||
|
||||
# The desktop process is expected to remain alive until timeout ends the
|
||||
# startup window. An earlier clean exit is a failure as well as loader output.
|
||||
if [ "$forbidden" -ne 0 ] || [ "$status" -ne 124 ]; then
|
||||
|
||||
Reference in New Issue
Block a user