Move build guide to root README

This commit is contained in:
2026-05-14 10:13:23 +03:00
parent 473952f620
commit 6904ea90dd
+37 -37
View File
@@ -34,11 +34,11 @@
Основные точки, где это уже вырезано:
- [include/registry.go](./include/registry.go)
- [option/options.go](./option/options.go)
- [box.go](./box.go)
- [experimental/clashapi/server.go](./experimental/clashapi/server.go)
- [release/DEFAULT_BUILD_TAGS_OTHERS](./release/DEFAULT_BUILD_TAGS_OTHERS)
- [include/registry.go](./sing-box-rr/include/registry.go)
- [option/options.go](./sing-box-rr/option/options.go)
- [box.go](./sing-box-rr/box.go)
- [experimental/clashapi/server.go](./sing-box-rr/experimental/clashapi/server.go)
- [release/DEFAULT_BUILD_TAGS_OTHERS](./sing-box-rr/release/DEFAULT_BUILD_TAGS_OTHERS)
## 2. Что сейчас входит в дефолтную сборку
@@ -46,7 +46,7 @@
Скрипты [build-ipk.sh](/home/fresa/sing-box-rr-edition/build-ipk.sh) и [build-apk.sh](/home/fresa/sing-box-rr-edition/build-apk.sh) читают теги из:
- [release/DEFAULT_BUILD_TAGS_OTHERS](./release/DEFAULT_BUILD_TAGS_OTHERS)
- [release/DEFAULT_BUILD_TAGS_OTHERS](./sing-box-rr/release/DEFAULT_BUILD_TAGS_OTHERS)
Текущее значение:
@@ -58,8 +58,8 @@ with_gvisor,with_quic,with_utls,with_clash_api,badlinkname,tfogo_checklinkname0
Дефолтные теги для обычных сборок лежат в:
- [release/DEFAULT_BUILD_TAGS](./release/DEFAULT_BUILD_TAGS)
- [release/DEFAULT_BUILD_TAGS_WINDOWS](./release/DEFAULT_BUILD_TAGS_WINDOWS)
- [release/DEFAULT_BUILD_TAGS](./sing-box-rr/release/DEFAULT_BUILD_TAGS)
- [release/DEFAULT_BUILD_TAGS_WINDOWS](./sing-box-rr/release/DEFAULT_BUILD_TAGS_WINDOWS)
Там по-прежнему включён `with_naive_outbound` для non-OpenWrt сборок.
@@ -67,7 +67,7 @@ with_gvisor,with_quic,with_utls,with_clash_api,badlinkname,tfogo_checklinkname0
Отдельные дефолты для libbox управляются в:
- [cmd/internal/build_libbox/main.go](./cmd/internal/build_libbox/main.go)
- [cmd/internal/build_libbox/main.go](./sing-box-rr/cmd/internal/build_libbox/main.go)
Если режешь дефолтные теги, держи этот файл синхронным с остальными.
@@ -89,8 +89,8 @@ with_gvisor,with_quic,with_utls,with_clash_api,badlinkname,tfogo_checklinkname0
Связанные файлы:
- [include/quic.go](./include/quic.go)
- [include/quic_stub.go](./include/quic_stub.go)
- [include/quic.go](./sing-box-rr/include/quic.go)
- [include/quic_stub.go](./sing-box-rr/include/quic_stub.go)
После отключения парсер всё ещё знает эти типы, но runtime возвращает понятную ошибку "not included in this build".
@@ -100,8 +100,8 @@ with_gvisor,with_quic,with_utls,with_clash_api,badlinkname,tfogo_checklinkname0
Связанные файлы:
- [include/clashapi.go](./include/clashapi.go)
- [include/clashapi_stub.go](./include/clashapi_stub.go)
- [include/clashapi.go](./sing-box-rr/include/clashapi.go)
- [include/clashapi_stub.go](./sing-box-rr/include/clashapi_stub.go)
### `with_utls`
@@ -121,8 +121,8 @@ with_gvisor,with_quic,with_utls,with_clash_api,badlinkname,tfogo_checklinkname0
Связанные файлы:
- [include/naive_outbound.go](./include/naive_outbound.go)
- [include/naive_outbound_stub.go](./include/naive_outbound_stub.go)
- [include/naive_outbound.go](./sing-box-rr/include/naive_outbound.go)
- [include/naive_outbound_stub.go](./sing-box-rr/include/naive_outbound_stub.go)
Если нужен OpenWrt package build без `naive`, есть два пути:
@@ -133,7 +133,7 @@ with_gvisor,with_quic,with_utls,with_clash_api,badlinkname,tfogo_checklinkname0
Если build tags уже не хватает, режь runtime-регистрацию прямо в:
- [include/registry.go](./include/registry.go)
- [include/registry.go](./sing-box-rr/include/registry.go)
Именно этот файл определяет, что бинарник реально экспонирует во время работы.
@@ -209,9 +209,9 @@ with_gvisor,with_quic,with_utls,with_clash_api,badlinkname,tfogo_checklinkname0
Providers уже отключены в текущем форке. Ключевые точки среза:
- [option/options.go](./option/options.go)
- [box.go](./box.go)
- [experimental/clashapi/server.go](./experimental/clashapi/server.go)
- [option/options.go](./sing-box-rr/option/options.go)
- [box.go](./sing-box-rr/box.go)
- [experimental/clashapi/server.go](./sing-box-rr/experimental/clashapi/server.go)
Тот же паттерн можно использовать, если позже будешь убирать другие top-level config sections.
@@ -233,9 +233,9 @@ Providers уже отключены в текущем форке. Ключевы
Для этого форка самый безопасный порядок такой:
1. Резать build tags в [release/DEFAULT_BUILD_TAGS_OTHERS](./release/DEFAULT_BUILD_TAGS_OTHERS).
2. Если нужно, синхронизировать ту же политику в [release/DEFAULT_BUILD_TAGS](./release/DEFAULT_BUILD_TAGS), [release/DEFAULT_BUILD_TAGS_WINDOWS](./release/DEFAULT_BUILD_TAGS_WINDOWS) и [cmd/internal/build_libbox/main.go](./cmd/internal/build_libbox/main.go).
3. Потом убирать лишнюю runtime-регистрацию в [include/registry.go](./include/registry.go).
1. Резать build tags в [release/DEFAULT_BUILD_TAGS_OTHERS](./sing-box-rr/release/DEFAULT_BUILD_TAGS_OTHERS).
2. Если нужно, синхронизировать ту же политику в [release/DEFAULT_BUILD_TAGS](./sing-box-rr/release/DEFAULT_BUILD_TAGS), [release/DEFAULT_BUILD_TAGS_WINDOWS](./sing-box-rr/release/DEFAULT_BUILD_TAGS_WINDOWS) и [cmd/internal/build_libbox/main.go](./sing-box-rr/cmd/internal/build_libbox/main.go).
3. Потом убирать лишнюю runtime-регистрацию в [include/registry.go](./sing-box-rr/include/registry.go).
4. Только после стабилизации сборки резать config surface.
5. Физически удалять старые каталоги с исходниками только в самом конце.
@@ -295,8 +295,8 @@ Providers уже отключены в текущем форке. Ключевы
В проекте сейчас есть два пути пакетизации:
- локальные helper scripts: [build-ipk.sh](/home/fresa/sing-box-rr-edition/build-ipk.sh) и [build-apk.sh](/home/fresa/sing-box-rr-edition/build-apk.sh)
- обычная OpenWrt feed-сборка через [sing-box-rr/Makefile](./Makefile)
- локальные helper scripts: [build-ipk.sh](./build-ipk.sh) и [build-apk.sh](./build-apk.sh)
- обычная OpenWrt feed-сборка через [sing-box-rr/Makefile](./sing-box-rr/Makefile)
Оба пути специально выставляют:
@@ -307,9 +307,9 @@ Providers уже отключены в текущем форке. Ключевы
Связанные файлы:
- [build-ipk.sh](/home/fresa/sing-box-rr-edition/build-ipk.sh)
- [build-apk.sh](/home/fresa/sing-box-rr-edition/build-apk.sh)
- [sing-box-rr/Makefile](./Makefile)
- [build-ipk.sh](./build-ipk.sh)
- [build-apk.sh](./build-apk.sh)
- [sing-box-rr/Makefile](./sing-box-rr/Makefile)
Если меняешь package name или `Provides`, сначала проверь зависимости downstream-пакетов.
@@ -317,10 +317,10 @@ Providers уже отключены в текущем форке. Ключевы
Для `24.10.x SDK` пакет нельзя собирать через стандартный `golang-package.mk`, потому что в этой ветке OpenWrt `golang/host` всё ещё `1.23.x`, а текущий форк требует `go 1.26.1`.
Поэтому feed-пакет в [sing-box-rr/Makefile](./Makefile):
Поэтому feed-пакет в [sing-box-rr/Makefile](./sing-box-rr/Makefile):
- не зависит от `golang/host`
- берет исходники прямо из корня этого форка
- берет исходники прямо из каталога `sing-box-rr`
- собирает бинарь внешним `go`, по умолчанию через `/usr/local/go/bin/go`
- сейчас рассчитан на `aarch64` и `x86_64`, но для роутерного профиля нам важен именно `aarch64`
@@ -344,22 +344,22 @@ make package/feeds/singboxrr/sing-box-rr/compile V=s GO_BIN=/usr/local/go/bin/go
### OpenWrt 24.10 IPK
```bash
../build-ipk.sh arm64
../build-ipk.sh x86_64
./build-ipk.sh arm64
./build-ipk.sh x86_64
```
### OpenWrt 25.12 APK
```bash
../build-apk.sh arm64
../build-apk.sh x86_64
./build-apk.sh arm64
./build-apk.sh x86_64
```
### Принудительная чистая пересборка Go cache
```bash
../build-ipk.sh arm64 --force
../build-apk.sh arm64 --force
./build-ipk.sh arm64 --force
./build-apk.sh arm64 --force
```
## 10. Что проверять после каждого среза
@@ -377,8 +377,8 @@ make package/feeds/singboxrr/sing-box-rr/compile V=s GO_BIN=/usr/local/go/bin/go
```bash
git status --short
../build-ipk.sh arm64
../build-apk.sh arm64
./build-ipk.sh arm64
./build-apk.sh arm64
```
Если режешь сборку для роутера, на котором уже стоит `zeroblock`, отдельно проверь совместимость package dependency перед изменением `Provides`, `Conflicts` и имени пакета.