sing-box已经不需要标记with_ech
以下是修改后的
This is free software, licensed under the GNU General Public License v3.
See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=sing-box PKG_VERSION:=1.12.0 PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/SagerNet/sing-box/tar.gz/v$(PKG_VERSION)? PKG_HASH:=1093254161d2dac2175a589eb0b43415b89b3e0c10bb2a09ac230f320d974c82
PKG_LICENSE:=GPL-3.0-or-later PKG_LICENSE_FILES:=LICENSE
PKG_BUILD_DEPENDS:=golang/host PKG_BUILD_PARALLEL:=1 PKG_USE_MIPS16:=0 PKG_BUILD_FLAGS:=no-mips16
GO_PKG:=github.com/sagernet/sing-box GO_PKG_BUILD_PKG:=$(GO_PKG)/cmd/sing-box GO_PKG_LDFLAGS_X:=$(GO_PKG)/constant.Version=v$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk
define Package/$(PKG_NAME)
SECTION:=net
CATEGORY:=Network
SUBMENU:=Web Servers/Proxies
TITLE:=The universal proxy platform.
URL:=https://sing-box.sagernet.org
DEPENDS:=$(GO_ARCH_DEPENDS)
+ca-bundle
+kmod-inet-diag
+kmod-netlink-diag
+kmod-tun
endef
define Package/$(PKG_NAME)/description Sing-box is a universal proxy platform which supports hysteria, SOCKS, Shadowsocks, ShadowTLS, Tor, trojan, VLess, VMess, WireGuard and so on. endef
GO_PKG_TARGET_VARS:=$(filter-out CGO_ENABLED=%,$(GO_PKG_TARGET_VARS)) CGO_ENABLED=1
define Package/$(PKG_NAME)/config menu "Customizing build tags" depends on PACKAGE_sing-box
config SING_BOX_WITH_ACME
bool "Build with ACME TLS certificate issuer support"
default n
config SING_BOX_WITH_CLASH_API
bool "Build with Clash API support (EXPERIMENTAL!!!)"
default y
config SING_BOX_WITH_DHCP
bool "Build with DHCP support"
default y
config SING_BOX_WITH_GRPC
bool "Build with standard gRPC support"
default n
help
sing-box has better performance gun-lite gRPC built-in by default.
This standard gRPC has better compatibility but poor performance.
config SING_BOX_WITH_GVISOR
bool "Build with gVisor support"
default y
config SING_BOX_WITH_QUIC
bool "Build with QUIC support"
default y
help
Required by HTTP3 DNS transports, Naive inbound,
Hysteria inbound / outbound, and v2ray QUIC transport.
config SING_BOX_WITH_REALITY_SERVER
bool "Build with reality TLS server support"
default n
config SING_BOX_WITH_UTLS
bool "Build with uTLS support"
default y
config SING_BOX_WITH_V2RAY_API
bool "Build with V2Ray API support (EXPERIMENTAL!!!)"
default n
config SING_BOX_WITH_WIREGUARD
bool "Build with WireGuard support"
default y
endmenu endef
PKG_CONFIG_DEPENDS:=
CONFIG_SING_BOX_WITH_ACME
CONFIG_SING_BOX_WITH_CLASH_API
CONFIG_SING_BOX_WITH_DHCP
CONFIG_SING_BOX_WITH_GRPC
CONFIG_SING_BOX_WITH_GVISOR
CONFIG_SING_BOX_WITH_QUIC
CONFIG_SING_BOX_WITH_REALITY_SERVER
CONFIG_SING_BOX_WITH_UTLS
CONFIG_SING_BOX_WITH_V2RAY_API
CONFIG_SING_BOX_WITH_WIREGUARD
GO_PKG_TAGS:=$(subst $(space),$(comma),$(strip
$(if $(CONFIG_SING_BOX_WITH_ACME),with_acme)
$(if $(CONFIG_SING_BOX_WITH_CLASH_API),with_clash_api)
$(if $(CONFIG_SING_BOX_WITH_DHCP),with_dhcp)
$(if $(CONFIG_SING_BOX_WITH_GRPC),with_grpc)
$(if $(CONFIG_SING_BOX_WITH_GVISOR),with_gvisor)
$(if $(CONFIG_SING_BOX_WITH_QUIC),with_quic)
$(if $(CONFIG_SING_BOX_WITH_REALITY_SERVER),with_reality_server)
$(if $(CONFIG_SING_BOX_WITH_UTLS),with_utls)
$(if $(CONFIG_SING_BOX_WITH_V2RAY_API),with_v2ray_api)
$(if $(CONFIG_SING_BOX_WITH_WIREGUARD),with_wireguard)
))
define Package/$(PKG_NAME)/conffiles endef
define Package/$(PKG_NAME)/install $(call GoPackage/Package/Install/Bin,$(1)) endef
$(eval $(call GoBinPackage,sing-box)) $(eval $(call BuildPackage,sing-box))
昨天编译时候sing-box错误是这个原因吗?是不是大佬要修复一下?
+1
这是 sing-box 1.12.0 源码里 common/tls/ech_tag_stub.go 文件的一个改动引起的,盲猜是上游是故意让编译报错的逻辑“炸弹”
1.找这个文件ech_tag_stub.go
方法是在 OpenWrt 根目录执行
find build_dir -type f -name ech_tag_stub.go,你可能找到2个文件或更多;
2.编辑它(们),注释掉这一行
// var _ int = "Due to the migration to stdlib..."
3.重新编译
make package/feeds/small/sing-box/compile
4.缺点
如果你确实要用 ECH 功能,可能需要额外修改构建标签。
5.可能的原因
sing-box 近期在 common/tls 里对 ECH(Encrypted ClientHello) 的构建标签做了清理: 原本需要 -tags with_ech 编译,现在改成直接用 Go 1.23+ 标准库的 ECH 支持,不再单独维护 with_ech 标签。
为了提示开发者不要再使用旧的 with_ech 标签,他们在 ech_tag_stub.go 里写了一个编译时直接报错的字符串,这种做法会导致老版本的 OpenWrt feed 在拉取新源码时,必然编译不过。
你现在用的 OpenWrt feed 版本(sing-box-1.12.0)引用的是这个“带陷阱”的源码版本,所以报错。
昨天编译时候sing-box错误是这个原因吗?是不是大佬要修复一下?
我上面贴的就是可以编译的,修改好的
如果嫌修改麻烦可以在编译的时候将passwall的sing-box先去掉,后面可以在passwall的设置页面直接下载更新sing-box CONFIG_PACKAGE_luci-app-passwall_INCLUDE_SingBox=n