feat(sfu): ship the prebuilt sidecar binary in the package (true plug-and-play)
Backend-hosted rooms now work on a plain `composer require`/`update` with no download step: rust/dist/blax-webrtc-sfu-linux-x86_64 (+ .sha256) is committed and BinaryManager::find() resolves rust/dist/blax-webrtc-sfu-<platform> before the download fallback. A consuming app just sets WEBRTC_MEDIA_ENGINE= RustMediaEngine (+ pin/publish WEBRTC_SFU_UDP_PORT and WEBRTC_SFU_PUBLIC_IP for prod) and the sidecar auto-spawns. - .gitignore: keep rust/target/ ignored, COMMIT rust/dist/ (shipped binaries) - BinaryManager: add shipped-binary resolution + doc; README/doc updated Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
c75f9122d4
commit
9af8281518
|
|
@ -7,6 +7,8 @@ composer.lock
|
||||||
.idea/
|
.idea/
|
||||||
.vscode/
|
.vscode/
|
||||||
|
|
||||||
# Rust build artifacts (Cargo.lock IS committed — bin crate, reproducible releases)
|
# Rust build artifacts (Cargo.lock IS committed — bin crate, reproducible releases).
|
||||||
|
# rust/target/ is local build output. rust/dist/ IS committed: it holds the
|
||||||
|
# prebuilt release binaries (+ .sha256) SHIPPED with the package for plug-and-play
|
||||||
|
# (BinaryManager::find resolves rust/dist/blax-webrtc-sfu-<platform> — no download).
|
||||||
/rust/target/
|
/rust/target/
|
||||||
/rust/dist/
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
||||||
|
79840ef020c334d9bdab5fcf5f72be918d444a6bdc6e9236574bd019357672b5 blax-webrtc-sfu-linux-x86_64
|
||||||
|
|
@ -45,7 +45,7 @@ class BinaryManager
|
||||||
return (string) ($this->config['version'] ?? self::VERSION);
|
return (string) ($this->config['version'] ?? self::VERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** First usable binary (override → dev build → installed), or null. */
|
/** First usable binary (override → dev build → shipped → installed), or null. */
|
||||||
public function find(): ?string
|
public function find(): ?string
|
||||||
{
|
{
|
||||||
$packageRoot = dirname(__DIR__, 3);
|
$packageRoot = dirname(__DIR__, 3);
|
||||||
|
|
@ -54,6 +54,11 @@ class BinaryManager
|
||||||
$this->config['binary'] ?? null,
|
$this->config['binary'] ?? null,
|
||||||
$devBuilds ? $packageRoot.'/rust/target/release/blax-webrtc-sfu' : null,
|
$devBuilds ? $packageRoot.'/rust/target/release/blax-webrtc-sfu' : null,
|
||||||
$devBuilds ? $packageRoot.'/rust/target/debug/blax-webrtc-sfu' : null,
|
$devBuilds ? $packageRoot.'/rust/target/debug/blax-webrtc-sfu' : null,
|
||||||
|
// Plug-and-play: the prebuilt binary SHIPPED with the package (composer
|
||||||
|
// installs it alongside the PHP), resolved per platform. This is what
|
||||||
|
// makes backend-hosted rooms work on `composer require`/`update` with
|
||||||
|
// no download step — see rust/dist/ (committed).
|
||||||
|
$packageRoot.'/rust/dist/blax-webrtc-sfu-'.$this->platform(),
|
||||||
$this->installPath(),
|
$this->installPath(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue