Skip to content

build(mobile): harden gobuild.sh and go bind pipeline 2#29364

Open
chrisnojima wants to merge 3 commits into
masterfrom
nojima/HOTPOT-yarnhelper-fixes
Open

build(mobile): harden gobuild.sh and go bind pipeline 2#29364
chrisnojima wants to merge 3 commits into
masterfrom
nojima/HOTPOT-yarnhelper-fixes

Conversation

@chrisnojima

Copy link
Copy Markdown
Contributor
  • propagate gomobile bind failures: the output-sniffing retry heuristic discarded exit codes, so failed builds could exit 0 with stale artifacts
  • stop using gomobile init: it installs gobind@latest, skewing against the x/mobile version pinned in go.mod; install pinned gobind directly
  • patch gobind's @import Foundation at generation time in gobuild.sh instead of yarn postinstall; delete dead fixModules docgen stub
  • add -trimpath; bump x/mobile to 20260611
  • drop 32-bit x86 ABI from aar and gradle (dead hardware); keep armeabi-v7a
  • faster local iteration: android-debug.sh builds only the connected device's ABI, gobuild.sh takes a TARGETS override
  • replace no-op GOTRACEBACK setenv in bind Init with SetTraceback("crash")

- BackgroundSync: use UpdateWithCheck for both transitions so a
  concurrent FOREGROUND can't be clobbered back to BACKGROUND, which
  cancelled live RPCs and stranded the service backgrounded while the
  user was in the app; inline the pointless goroutine/channel wrapper
- ReadArr: deliver data when n>0 even with err (net.Conn contract)
- LogSend/ForceGC/LogToService/InitOnce: guard against pre-Init calls
- collapse dead iOS/Android buffer branch (both computed 300*1024) and
  drop the discarded 1MB package-level allocation
- stop leaked ticker, lock conn read in NotifyJSReady, skip trace on
  empty logFile, delete commented-out GOMAXPROCS block
Users report ~10s hangs on the launch screen. Init runs synchronously
on the native main thread and blocks on leveldb journal replay or
recovery after an unclean kill, and on up to 50 sequential keychain
reads.

- flush leveldb memtables when backgrounding so a jetsam kill leaves
  empty journals; next open skips replay/recovery
- read all keychain slots with one SecItemCopyMatching, slot scan as
  fallback
- run the startup login attempt off the Init path; GetBootstrapStatus
  waits for it so the GUI never sees a stale logged-out state
- log per-phase Init timings for future reports
- propagate gomobile bind failures: the output-sniffing retry heuristic
  discarded exit codes, so failed builds could exit 0 with stale artifacts
- stop using gomobile init: it installs gobind@latest, skewing against the
  x/mobile version pinned in go.mod; install pinned gobind directly
- patch gobind's @import Foundation at generation time in gobuild.sh
  instead of yarn postinstall; delete dead fixModules docgen stub
- add -trimpath; bump x/mobile to 20260611
- drop 32-bit x86 ABI from aar and gradle (dead hardware); keep armeabi-v7a
- faster local iteration: android-debug.sh builds only the connected
  device's ABI, gobuild.sh takes a TARGETS override
- replace no-op GOTRACEBACK setenv in bind Init with SetTraceback("crash")
@chrisnojima chrisnojima changed the title build(mobile): harden gobuild.sh and go bind pipeline build(mobile): harden gobuild.sh and go bind pipeline 2 Jul 5, 2026
@zoom-ua zoom-ua force-pushed the nojima/HOTPOT-bind-cleanup branch from 00d5bf0 to b1f5b4c Compare July 6, 2026 18:47
Base automatically changed from nojima/HOTPOT-bind-cleanup to master July 6, 2026 19:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant