small icon indicating copy to clipboard operation
small copied to clipboard

sing-box已经不需要标记with_ech

Open xiaojing110 opened this issue 4 months ago • 5 comments

以下是修改后的

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))

xiaojing110 avatar Aug 04 '25 13:08 xiaojing110

昨天编译时候sing-box错误是这个原因吗?是不是大佬要修复一下?

bbufang50 avatar Aug 06 '25 12:08 bbufang50

+1

evenwangcn avatar Aug 07 '25 00:08 evenwangcn

这是 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)引用的是这个“带陷阱”的源码版本,所以报错。

szdosar avatar Aug 08 '25 03:08 szdosar

昨天编译时候sing-box错误是这个原因吗?是不是大佬要修复一下?

我上面贴的就是可以编译的,修改好的

xiaojing110 avatar Aug 14 '25 15:08 xiaojing110

如果嫌修改麻烦可以在编译的时候将passwall的sing-box先去掉,后面可以在passwall的设置页面直接下载更新sing-box CONFIG_PACKAGE_luci-app-passwall_INCLUDE_SingBox=n

evenwangcn avatar Aug 15 '25 00:08 evenwangcn