Disable naive in default build profiles
This commit is contained in:
@@ -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
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Vendored
BIN
Binary file not shown.
@@ -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 @@
|
|||||||
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
|
||||||
|
|||||||
Reference in New Issue
Block a user