diff --git a/README.md b/README.md index cafe344f..c1b0a9f5 100644 --- a/README.md +++ b/README.md @@ -10,14 +10,7 @@ Для `24.10.x` и `25.12.x` этот пакет собирается внешним `go`, а не через SDK `golang/host`. По умолчанию используется `/usr/local/go/bin/go`. -Если package profile включает `with_naive_outbound + with_musl`, root-скрипты и feed `Makefile` автоматически собирают бинарь через `CGO + OpenWrt musl toolchain`. -Линковщик выбирается в порядке: - -- `$(TARGET_CROSS)ld.bfd` -- `$(TARGET_CROSS)ld` -- `ld.lld` из `staging_dir/host` - -Для проблемных SDK можно явно подложить внешний `ld.lld` через `SINGBOX_RR_LD_LLD_BIN=/path/to/ld.lld`. +Текущий package profile не включает `naive outbound` и не требует специального `musl/cronet`-пути. ```bash 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 ``` -Если нужен внешний `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 @@ -94,7 +79,7 @@ Root-скрипты [build-ipk.sh](./build-ipk.sh) и [build-apk.sh](./build-apk Текущее значение: ```text -with_quic,with_utls,with_clash_api,with_naive_outbound,with_musl +with_quic,with_utls,with_clash_api ``` ### Обычные 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_WINDOWS](./sing-box-rr/release/DEFAULT_BUILD_TAGS_WINDOWS) -Там по-прежнему включён `with_naive_outbound`. -В текущем OpenWrt package profile через `DEFAULT_BUILD_TAGS_OTHERS` он включён вместе с `with_musl`, а `with_gvisor` уже убран, потому что целевой router profile использует `tproxy`, а не `tun`. +`naive outbound` больше не включён в дефолтные сборки. +Если он снова понадобится, его нужно включать вручную отдельным build tag. ### Libbox builds @@ -162,26 +147,8 @@ with_quic,with_utls,with_clash_api,with_naive_outbound,with_musl ### `with_naive_outbound` -Этот тег важен для обычных сборок, libbox и текущего OpenWrt package profile. -В `RR Edition` `naive outbound` для package builds включён в `with_musl`-профиле, а `naive inbound` отдельно отключён через registry. -Итоговый 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 вручную, если нужна мягкая деградация. +Этот тег больше не входит в дефолтные build profiles `RR Edition`. +Если `naive outbound` снова понадобится, его нужно включать вручную и отдельно учитывать связанный `musl/cronet` build path для OpenWrt. ## 4. Следующий уровень: вырезать типы из registry @@ -377,9 +344,6 @@ Root-скрипты читают release оттуда, поэтому это е - не зависит от `golang/host` - берет исходники прямо из каталога `sing-box-rr` - собирает бинарь внешним `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` Если `go` лежит не в дефолтном пути, передай его явно: @@ -388,14 +352,6 @@ Root-скрипты читают release оттуда, поэтому это е 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. Команды пересборки ### 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 ``` -### 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 ```bash @@ -432,12 +377,6 @@ make package/feeds/singboxrr/sing-box-rr/compile V=s \ ./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 ```bash diff --git a/packages/24.10/arm64/sing-box-rr_1.13.11-rr-edition-2.1.0-r5_aarch64_cortex-a53.ipk b/packages/24.10/arm64/sing-box-rr_1.13.11-rr-edition-2.1.0-r5_aarch64_cortex-a53.ipk deleted file mode 100644 index 9ef1bcb1..00000000 Binary files a/packages/24.10/arm64/sing-box-rr_1.13.11-rr-edition-2.1.0-r5_aarch64_cortex-a53.ipk and /dev/null differ diff --git a/packages/24.10/arm64/sing-box-rr_1.13.11-rr-edition-2.1.0-r6_aarch64_cortex-a53.ipk b/packages/24.10/arm64/sing-box-rr_1.13.11-rr-edition-2.1.0-r6_aarch64_cortex-a53.ipk new file mode 100644 index 00000000..81df0855 Binary files /dev/null and b/packages/24.10/arm64/sing-box-rr_1.13.11-rr-edition-2.1.0-r6_aarch64_cortex-a53.ipk differ diff --git a/packages/25.12/arm64/sing-box-rr-1.13.11-r6.apk b/packages/25.12/arm64/sing-box-rr-1.13.11-r6.apk new file mode 100644 index 00000000..2f34bd02 Binary files /dev/null and b/packages/25.12/arm64/sing-box-rr-1.13.11-r6.apk differ diff --git a/packages/25.12/x86_64/sing-box-rr-1.13.11-r5.apk b/packages/25.12/x86_64/sing-box-rr-1.13.11-r5.apk deleted file mode 100644 index 804012e5..00000000 Binary files a/packages/25.12/x86_64/sing-box-rr-1.13.11-r5.apk and /dev/null differ diff --git a/packages/25.12/arm64/sing-box-rr-1.13.11-r5.apk b/packages/25.12/x86_64/sing-box-rr-1.13.11-r6.apk similarity index 52% rename from packages/25.12/arm64/sing-box-rr-1.13.11-r5.apk rename to packages/25.12/x86_64/sing-box-rr-1.13.11-r6.apk index 16466e72..2df34e3a 100644 Binary files a/packages/25.12/arm64/sing-box-rr-1.13.11-r5.apk and b/packages/25.12/x86_64/sing-box-rr-1.13.11-r6.apk differ diff --git a/sing-box-rr/Makefile b/sing-box-rr/Makefile index 72817f29..8a5c82a7 100644 --- a/sing-box-rr/Makefile +++ b/sing-box-rr/Makefile @@ -3,7 +3,7 @@ include $(TOPDIR)/rules.mk PROJECT_DIR:=$(CURDIR) PKG_NAME:=sing-box-rr 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_LICENSE:=GPL-3.0-or-later diff --git a/sing-box-rr/cmd/internal/build_libbox/main.go b/sing-box-rr/cmd/internal/build_libbox/main.go index f604f43d..6e932625 100644 --- a/sing-box-rr/cmd/internal/build_libbox/main.go +++ b/sing-box-rr/cmd/internal/build_libbox/main.go @@ -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") 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") notMemcTags = append(notMemcTags, "with_low_memory") debugTags = append(debugTags, "debug") @@ -173,8 +173,8 @@ func buildAndroid() { Tags: mainTags, }, bindTarget) - // Build legacy variant (SDK 21, no naive outbound) - legacyTags := filterTags(sharedTags, "with_naive_outbound") + // Build legacy variant (SDK 21) + legacyTags := append([]string{}, sharedTags...) // legacyTags = append(legacyTags, memcTags...) if debugEnabled { legacyTags = append(legacyTags, debugTags...) diff --git a/sing-box-rr/release/DEFAULT_BUILD_TAGS b/sing-box-rr/release/DEFAULT_BUILD_TAGS index def439af..e6be69c2 100644 --- a/sing-box-rr/release/DEFAULT_BUILD_TAGS +++ b/sing-box-rr/release/DEFAULT_BUILD_TAGS @@ -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 diff --git a/sing-box-rr/release/DEFAULT_BUILD_TAGS_OTHERS b/sing-box-rr/release/DEFAULT_BUILD_TAGS_OTHERS index fac31fc3..8a1656d7 100644 --- a/sing-box-rr/release/DEFAULT_BUILD_TAGS_OTHERS +++ b/sing-box-rr/release/DEFAULT_BUILD_TAGS_OTHERS @@ -1 +1 @@ -with_quic,with_utls,with_clash_api,with_naive_outbound,with_musl +with_quic,with_utls,with_clash_api diff --git a/sing-box-rr/release/DEFAULT_BUILD_TAGS_WINDOWS b/sing-box-rr/release/DEFAULT_BUILD_TAGS_WINDOWS index ab41c62e..9ad6a375 100644 --- a/sing-box-rr/release/DEFAULT_BUILD_TAGS_WINDOWS +++ b/sing-box-rr/release/DEFAULT_BUILD_TAGS_WINDOWS @@ -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