mac سائننگ (ڈیبگ بلڈز)¶
یہ ایپ عموماً scripts/package-mac-app.sh سے بنائی جاتی ہے، جو اب:
- ایک مستحکم ڈیبگ بنڈل شناخت کنندہ سیٹ کرتی ہے:
ai.openclaw.mac.debug - اسی بنڈل شناخت کنندہ کے ساتھ Info.plist لکھتی ہے (اووررائیڈ کے لیے
BUNDLE_ID=...استعمال کریں) - مین بائنری اور ایپ بنڈل کو سائن کرنے کے لیے
scripts/codesign-mac-app.shکو کال کرتا ہے تاکہ macOS ہر ری بلڈ کو ایک ہی سائن شدہ بنڈل سمجھے اور TCC اجازتیں (notifications, accessibility, screen recording, mic, speech) برقرار رکھے۔ مستحکم اجازتوں کے لیے حقیقی سائننگ شناخت استعمال کریں؛ ad-hoc آپٹ اِن ہے اور نازک ہے (دیکھیں macOS permissions)۔ - بطورِ ڈیفالٹ
CODESIGN_TIMESTAMP=autoاستعمال کرتا ہے؛ یہ Developer ID signatures کے لیے قابلِ اعتماد timestamps فعال کرتا ہے۔ timestamping چھوڑنے کے لیےCODESIGN_TIMESTAMP=offسیٹ کریں (آف لائن ڈیبگ بلڈز)۔ - Info.plist میں بلڈ میٹاڈیٹا شامل کرتی ہے:
OpenClawBuildTimestamp(UTC) اورOpenClawGitCommit(مختصر ہیش) تاکہ About پین میں بلڈ، git، اور ڈیبگ/ریلیز چینل دکھایا جا سکے۔ - پیکیجنگ کے لیے Node 22+ درکار ہے: اسکرپٹ TS بلڈز اور Control UI بلڈ چلاتی ہے۔
- ماحول (environment) سے
SIGN_IDENTITYپڑھتا ہے۔ ہمیشہ اپنی سرٹیفکیٹ کے ساتھ سائن کرنے کے لیے اپنی شیل rc میںexport SIGN_IDENTITY="Apple Development: Your Name (TEAMID)"(یا آپ کا Developer ID Application cert) شامل کریں۔ Ad-hoc signing requires explicit opt-in viaALLOW_ADHOC_SIGNING=1orSIGN_IDENTITY="-"(not recommended for permission testing). - سائننگ کے بعد Team ID آڈٹ چلاتا ہے اور اگر ایپ بنڈل کے اندر کوئی Mach-O مختلف Team ID سے سائن ہو تو فیل ہو جاتا ہے۔ بائی پاس کرنے کے لیے
SKIP_TEAM_ID_CHECK=1سیٹ کریں۔
استعمال¶
# from repo root
scripts/package-mac-app.sh # auto-selects identity; errors if none found
SIGN_IDENTITY="Developer ID Application: Your Name" scripts/package-mac-app.sh # real cert
ALLOW_ADHOC_SIGNING=1 scripts/package-mac-app.sh # ad-hoc (permissions will not stick)
SIGN_IDENTITY="-" scripts/package-mac-app.sh # explicit ad-hoc (same caveat)
DISABLE_LIBRARY_VALIDATION=1 scripts/package-mac-app.sh # dev-only Sparkle Team ID mismatch workaround
Ad-hoc سائننگ نوٹ¶
SIGN_IDENTITY="-" (ad-hoc) کے ساتھ سائن کرتے وقت، اسکرپٹ خود بخود Hardened Runtime (--options runtime) کو غیر فعال کر دیتا ہے۔ یہ اس لیے ضروری ہے کہ جب ایپ ایسے ایمبیڈڈ فریم ورکس (جیسے Sparkle) لوڈ کرنے کی کوشش کرے جو ایک ہی Team ID شیئر نہیں کرتے تو کریش سے بچا جا سکے۔ Ad-hoc signatures TCC اجازتوں کی مستقل مزاجی بھی توڑ دیتے ہیں؛ بحالی کے مراحل کے لیے macOS permissions دیکھیں۔
About کے لیے بلڈ میٹاڈیٹا¶
package-mac-app.sh بنڈل پر یہ مہر لگاتا ہے:
OpenClawBuildTimestamp: پیکیج وقت پر ISO8601 UTCOpenClawGitCommit: مختصر git ہیش (یا اگر دستیاب نہ ہو توunknown)
About ٹیب ورژن، بلڈ ڈیٹ، git commit، اور یہ کہ آیا یہ ڈیبگ بلڈ ہے (via #if DEBUG) دکھانے کے لیے ان کیز کو پڑھتا ہے۔ Run the packager to refresh these values after code changes.
کیوں¶
TCC اجازتیں بنڈل شناخت اور کوڈ سگنیچر دونوں سے منسلک ہوتی ہیں۔ بدلتے UUIDs کے ساتھ غیر سائن شدہ ڈیبگ بلڈز macOS کو ہر ری بلڈ کے بعد دی گئی اجازتیں بھلا دینے کا سبب بن رہے تھے۔ بائنریز کو سائن کرنا (بطورِ ڈیفالٹ ad‑hoc) اور ایک مقررہ بنڈل id/پاتھ (dist/OpenClaw.app) برقرار رکھنا بلڈز کے درمیان اجازتیں محفوظ رکھتا ہے، جو VibeTunnel کے طریقۂ کار سے میل کھاتا ہے۔