Disable naive in default build profiles

This commit is contained in:
2026-05-25 14:16:05 +03:00
parent 86350a74c2
commit f8cd99a91d
11 changed files with 13 additions and 74 deletions
+6 -67
View File
@@ -10,14 +10,7 @@
Для `24.10.x` и `25.12.x` этот пакет собирается внешним `go`, а не через SDK `golang/host`. Для `24.10.x` и `25.12.x` этот пакет собирается внешним `go`, а не через SDK `golang/host`.
По умолчанию используется `/usr/local/go/bin/go`. По умолчанию используется `/usr/local/go/bin/go`.
Если package profile включает `with_naive_outbound + with_musl`, root-скрипты и feed `Makefile` автоматически собирают бинарь через `CGO + OpenWrt musl toolchain`. Текущий package profile не включает `naive outbound` и не требует специального `musl/cronet`-пути.
Линковщик выбирается в порядке:
- `$(TARGET_CROSS)ld.bfd`
- `$(TARGET_CROSS)ld`
- `ld.lld` из `staging_dir/host`
Для проблемных SDK можно явно подложить внешний `ld.lld` через `SINGBOX_RR_LD_LLD_BIN=/path/to/ld.lld`.
```bash ```bash
echo 'src-link singboxrr /home/fresa/sing-box-rr-edition' >> feeds.conf echo 'src-link singboxrr /home/fresa/sing-box-rr-edition' >> feeds.conf
@@ -26,14 +19,6 @@ echo 'src-link singboxrr /home/fresa/sing-box-rr-edition' >> feeds.conf
make package/feeds/singboxrr/sing-box-rr/compile V=s GO_BIN=/usr/local/go/bin/go make package/feeds/singboxrr/sing-box-rr/compile V=s GO_BIN=/usr/local/go/bin/go
``` ```
Если нужен внешний `ld.lld`:
```bash
make package/feeds/singboxrr/sing-box-rr/compile V=s \
GO_BIN=/usr/local/go/bin/go \
SINGBOX_RR_LD_LLD_BIN=/path/to/ld.lld
```
### Локальная сборка опубликованных пакетов ### Локальная сборка опубликованных пакетов
```bash ```bash
@@ -94,7 +79,7 @@ Root-скрипты [build-ipk.sh](./build-ipk.sh) и [build-apk.sh](./build-apk
Текущее значение: Текущее значение:
```text ```text
with_quic,with_utls,with_clash_api,with_naive_outbound,with_musl with_quic,with_utls,with_clash_api
``` ```
### Обычные non-package builds ### Обычные non-package builds
@@ -104,8 +89,8 @@ with_quic,with_utls,with_clash_api,with_naive_outbound,with_musl
- [release/DEFAULT_BUILD_TAGS](./sing-box-rr/release/DEFAULT_BUILD_TAGS) - [release/DEFAULT_BUILD_TAGS](./sing-box-rr/release/DEFAULT_BUILD_TAGS)
- [release/DEFAULT_BUILD_TAGS_WINDOWS](./sing-box-rr/release/DEFAULT_BUILD_TAGS_WINDOWS) - [release/DEFAULT_BUILD_TAGS_WINDOWS](./sing-box-rr/release/DEFAULT_BUILD_TAGS_WINDOWS)
Там по-прежнему включён `with_naive_outbound`. `naive outbound` больше не включён в дефолтные сборки.
В текущем OpenWrt package profile через `DEFAULT_BUILD_TAGS_OTHERS` он включён вместе с `with_musl`, а `with_gvisor` уже убран, потому что целевой router profile использует `tproxy`, а не `tun`. Если он снова понадобится, его нужно включать вручную отдельным build tag.
### Libbox builds ### Libbox builds
@@ -162,26 +147,8 @@ with_quic,with_utls,with_clash_api,with_naive_outbound,with_musl
### `with_naive_outbound` ### `with_naive_outbound`
Этот тег важен для обычных сборок, libbox и текущего OpenWrt package profile. Этот тег больше не входит в дефолтные build profiles `RR Edition`.
В `RR Edition` `naive outbound` для package builds включён в `with_musl`-профиле, а `naive inbound` отдельно отключён через registry. Если `naive outbound` снова понадобится, его нужно включать вручную и отдельно учитывать связанный `musl/cronet` build path для OpenWrt.
Итоговый OpenWrt binary собирается через `CGO + OpenWrt musl toolchain` и получается статически слинкованным, без `libcronet.so` рядом с `/usr/bin/sing-box`.
Практически это означает:
- для `arm64` обычно хватает штатного OpenWrt toolchain linker;
- для части `x86_64` SDK может понадобиться внешний `ld.lld` с поддержкой `zlib`;
- для feed-сборки override задаётся через `SINGBOX_RR_LD_LLD_BIN`;
- для root helper scripts override задаётся через `LD_LLD_BIN`.
Связанные файлы:
- [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 outbound`, есть два пути:
1. Убрать `with_naive_outbound` из [release/DEFAULT_BUILD_TAGS_OTHERS](./sing-box-rr/release/DEFAULT_BUILD_TAGS_OTHERS).
2. Или оставить тег и заменить outbound на stub вручную, если нужна мягкая деградация.
## 4. Следующий уровень: вырезать типы из registry ## 4. Следующий уровень: вырезать типы из registry
@@ -377,9 +344,6 @@ Root-скрипты читают release оттуда, поэтому это е
- не зависит от `golang/host` - не зависит от `golang/host`
- берет исходники прямо из каталога `sing-box-rr` - берет исходники прямо из каталога `sing-box-rr`
- собирает бинарь внешним `go`, по умолчанию через `/usr/local/go/bin/go` - собирает бинарь внешним `go`, по умолчанию через `/usr/local/go/bin/go`
- при `with_musl` сам переключается на `CGO + OpenWrt musl toolchain`
- сначала пробует `$(TARGET_CROSS)ld.bfd`, потом `$(TARGET_CROSS)ld`, и только потом fallback на `ld.lld` из SDK host tools
- поддерживает override `SINGBOX_RR_LD_LLD_BIN=/path/to/ld.lld`
- сейчас рассчитан на `aarch64` и `x86_64`, но для роутерного профиля нам важен именно `aarch64` - сейчас рассчитан на `aarch64` и `x86_64`, но для роутерного профиля нам важен именно `aarch64`
Если `go` лежит не в дефолтном пути, передай его явно: Если `go` лежит не в дефолтном пути, передай его явно:
@@ -388,14 +352,6 @@ Root-скрипты читают release оттуда, поэтому это е
make package/feeds/singboxrr/sing-box-rr/compile V=s GO_BIN=/путь/к/go make package/feeds/singboxrr/sing-box-rr/compile V=s GO_BIN=/путь/к/go
``` ```
Если на `x86_64` SDK штатный host `ld.lld` падает на `ELFCOMPRESS_ZLIB`, передай внешний linker явно:
```bash
make package/feeds/singboxrr/sing-box-rr/compile V=s \
GO_BIN=/usr/local/go/bin/go \
SINGBOX_RR_LD_LLD_BIN=/path/to/ld.lld
```
## 9. Команды пересборки ## 9. Команды пересборки
### OpenWrt feed package build ### OpenWrt feed package build
@@ -407,17 +363,6 @@ echo 'src-link singboxrr /home/fresa/sing-box-rr-edition' >> feeds.conf
make package/feeds/singboxrr/sing-box-rr/compile V=s GO_BIN=/usr/local/go/bin/go make package/feeds/singboxrr/sing-box-rr/compile V=s GO_BIN=/usr/local/go/bin/go
``` ```
### OpenWrt feed build с внешним `ld.lld`
```bash
echo 'src-link singboxrr /home/fresa/sing-box-rr-edition' >> feeds.conf
./scripts/feeds update singboxrr
./scripts/feeds install -f sing-box-rr
make package/feeds/singboxrr/sing-box-rr/compile V=s \
GO_BIN=/usr/local/go/bin/go \
SINGBOX_RR_LD_LLD_BIN=/path/to/ld.lld
```
### OpenWrt 24.10 IPK ### OpenWrt 24.10 IPK
```bash ```bash
@@ -432,12 +377,6 @@ make package/feeds/singboxrr/sing-box-rr/compile V=s \
./build-apk.sh x86_64 ./build-apk.sh x86_64
``` ```
Если для `apk` нужен внешний `ld.lld`, root-скрипт понимает `LD_LLD_BIN`:
```bash
LD_LLD_BIN=/path/to/ld.lld ./build-apk.sh x86_64
```
### Принудительная чистая пересборка Go cache ### Принудительная чистая пересборка Go cache
```bash ```bash
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -3,7 +3,7 @@ include $(TOPDIR)/rules.mk
PROJECT_DIR:=$(CURDIR) PROJECT_DIR:=$(CURDIR)
PKG_NAME:=sing-box-rr PKG_NAME:=sing-box-rr
PKG_VERSION:=$(shell cat $(CURDIR)/../VERSION 2>/dev/null || echo 0.0.0-unknown) PKG_VERSION:=$(shell cat $(CURDIR)/../VERSION 2>/dev/null || echo 0.0.0-unknown)
PKG_RELEASE:=5 PKG_RELEASE:=6
PKG_SOURCE_DATE_EPOCH:=$(shell cat $(CURDIR)/../SOURCE_DATE_EPOCH 2>/dev/null || date +%s) PKG_SOURCE_DATE_EPOCH:=$(shell cat $(CURDIR)/../SOURCE_DATE_EPOCH 2>/dev/null || date +%s)
PKG_LICENSE:=GPL-3.0-or-later PKG_LICENSE:=GPL-3.0-or-later
@@ -63,7 +63,7 @@ func init() {
sharedFlags = append(sharedFlags, "-ldflags", "-X github.com/sagernet/sing-box/constant.Version="+currentTag+" -X internal/godebug.defaultGODEBUG=multipathtcp=0 -s -w -buildid= -checklinkname=0") sharedFlags = append(sharedFlags, "-ldflags", "-X github.com/sagernet/sing-box/constant.Version="+currentTag+" -X internal/godebug.defaultGODEBUG=multipathtcp=0 -s -w -buildid= -checklinkname=0")
debugFlags = append(debugFlags, "-ldflags", "-X github.com/sagernet/sing-box/constant.Version="+currentTag+" -X internal/godebug.defaultGODEBUG=multipathtcp=0 -checklinkname=0") debugFlags = append(debugFlags, "-ldflags", "-X github.com/sagernet/sing-box/constant.Version="+currentTag+" -X internal/godebug.defaultGODEBUG=multipathtcp=0 -checklinkname=0")
sharedTags = append(sharedTags, "with_gvisor", "with_quic", "with_utls", "with_naive_outbound", "with_clash_api", "badlinkname", "tfogo_checklinkname0") sharedTags = append(sharedTags, "with_gvisor", "with_quic", "with_utls", "with_clash_api", "badlinkname", "tfogo_checklinkname0")
darwinTags = append(darwinTags, "grpcnotrace") darwinTags = append(darwinTags, "grpcnotrace")
notMemcTags = append(notMemcTags, "with_low_memory") notMemcTags = append(notMemcTags, "with_low_memory")
debugTags = append(debugTags, "debug") debugTags = append(debugTags, "debug")
@@ -173,8 +173,8 @@ func buildAndroid() {
Tags: mainTags, Tags: mainTags,
}, bindTarget) }, bindTarget)
// Build legacy variant (SDK 21, no naive outbound) // Build legacy variant (SDK 21)
legacyTags := filterTags(sharedTags, "with_naive_outbound") legacyTags := append([]string{}, sharedTags...)
// legacyTags = append(legacyTags, memcTags...) // legacyTags = append(legacyTags, memcTags...)
if debugEnabled { if debugEnabled {
legacyTags = append(legacyTags, debugTags...) legacyTags = append(legacyTags, debugTags...)
+1 -1
View File
@@ -1 +1 @@
with_gvisor,with_quic,with_utls,with_clash_api,with_naive_outbound,badlinkname,tfogo_checklinkname0 with_gvisor,with_quic,with_utls,with_clash_api,badlinkname,tfogo_checklinkname0
@@ -1 +1 @@
with_quic,with_utls,with_clash_api,with_naive_outbound,with_musl with_quic,with_utls,with_clash_api
@@ -1 +1 @@
with_gvisor,with_quic,with_utls,with_clash_api,with_naive_outbound,with_purego,badlinkname,tfogo_checklinkname0 with_gvisor,with_quic,with_utls,with_clash_api,with_purego,badlinkname,tfogo_checklinkname0