453f485f36
Тонкая обвязка поверх rustdesk@1.4.9: preconfigure.sh патчит RENDEZVOUS_SERVERS+RS_PUB_KEY в hbb_common, build-windows.ps1 — локальный оркестратор сборки. Значения сервера/ключа не в репо (config/server.env в .gitignore, в CI — gitea secrets). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
55 lines
4.3 KiB
Markdown
55 lines
4.3 KiB
Markdown
# CODEMAP — rustdesk-custom
|
|
|
|
Карта overlay-репозитория для преднастроенной сборки RustDesk. Держать актуальной при каждом изменении.
|
|
|
|
## Структура
|
|
|
|
| Путь | Назначение |
|
|
|------|-----------|
|
|
| `upstream.txt` | Пины: `RUSTDESK_TAG`, версии Rust/LLVM/Flutter, `VCPKG_COMMIT_ID`, `VCPKG_TRIPLET`, Android-пины. Единственный источник версий. |
|
|
| `scripts/preconfigure.sh` | Патчит `RENDEZVOUS_SERVERS` и `RS_PUB_KEY` в `hbb_common/src/config.rs` клона. Значения из env. Проверяет, что патч применился. |
|
|
| `scripts/build-windows.ps1` | Оркестратор локальной Windows-сборки: load env → клон@пин → preconfigure → `python build.py --flutter` → `dist/`. Есть preflight тулчейна. |
|
|
| `config/server.env.example` | Шаблон значений. Реальный `config/server.env` — в `.gitignore`. |
|
|
| `.gitea/workflows/` | CI: `build-windows.yaml` (раннер `windows:host`), `build-android.yaml` (VM 118). *(в работе)* |
|
|
| `rustdesk/` | Клон апстрима (gitignored, создаётся сборкой). |
|
|
| `dist/` | Готовые артефакты (gitignored). |
|
|
|
|
## Механизм преднастройки (важно)
|
|
|
|
RustDesk 1.4.9, `libs/hbb_common/src/config.rs` (сабмодуль `rustdesk/hbb_common`, пин `7e1c392`):
|
|
```rust
|
|
pub const RENDEZVOUS_SERVERS: &[&str] = &["rs-ny.rustdesk.com"];
|
|
pub const RS_PUB_KEY: &str = "OeVuKk5nlHiXp+APNn0Y3pC1Iwpwn44JGqrQCsWqmBw=";
|
|
```
|
|
- `option_env!(RENDEZVOUS_SERVER/RS_PUB_KEY)` из старого PR #2810 **в master вырезан** — только патч констант.
|
|
- Порт hbbs по умолчанию 21116 (не указывать, если стандартный). Нестандартный — `host:port`.
|
|
- API-сервер (только RustDesk Server Pro) отдельной const в 1.4.9 не имеет; для обычного hbbs/hbbr не нужен.
|
|
- Альтернатива без сборки (на будущее): переименовать официальный бинарь в
|
|
`rustdesk-host=<server>,key=<pubkey>.exe` — конфиг читается из имени файла (`EXE_RENDEZVOUS_SERVER`).
|
|
|
|
## Windows toolchain (поднять один раз на GUSIK-PC)
|
|
|
|
Версии — из `upstream.txt` (пины из `flutter-build.yml@1.4.9`):
|
|
- **Rust 1.75** — `rustup toolchain install 1.75`; в дереве клона `rustup override set 1.75`
|
|
(апстрим держит 1.75 из-за i128 ABI-изменения в 1.78+).
|
|
- **LLVM 15.0.6** — для bindgen; задать `LIBCLANG_PATH` на `bin` LLVM.
|
|
- **Flutter 3.24.5** (канал stable) в PATH. Апстрим применяет патч
|
|
`.github/patches/flutter_3.24.4_dropdown_menu_enableFilter.diff` к SDK — при ошибке сборки применить.
|
|
- **vcpkg@120deac3** — склонировать, `bootstrap-vcpkg`, задать `VCPKG_ROOT`. Триплет `x64-windows-static`.
|
|
Зависимости из `vcpkg.json`: aom, libvpx, libyuv, opus, libjpeg-turbo, mfx-dispatch,
|
|
**ffmpeg** (static, features amf/nvcodec/qsv — hwcodec). ffmpeg/aom — длинная первая компиляция.
|
|
- Сборка: `python build.py --flutter` (флаги: `--hwcodec`, `--portable`, `--vram`, `--skip-cargo`).
|
|
|
|
### Открытый вопрос (решить при первой сборке)
|
|
Апстрим для Windows-x64 подменяет flutter-engine кастомным `windows-x64-release.zip` (ради Win7).
|
|
Для таргета Win10/11, вероятно, можно оставить стоковый engine 3.24.5 и пропустить подмену — проверить,
|
|
не падает ли `flutter build windows` без неё.
|
|
|
|
## Android toolchain (VM 118, позже)
|
|
Flutter 3.24.5, NDK r28c, cargo-ndk 3.1.2, Rust android-таргеты, vcpkg android-триплеты
|
|
(oboe, cpu-features, ffmpeg host=false). Публикация APK: gitea release + F-Droid (шаблон GusVoice).
|
|
|
|
## Секреты в CI (gitea Actions)
|
|
`RUSTDESK_SERVER`, `RUSTDESK_PUB_KEY`, (опц.) `RUSTDESK_API_SERVER`. Префикс имён — не `GITHUB_`/`GITEA_`
|
|
(зарезервированы), при необходимости `GT_`.
|