[GH-ISSUE #5148] [Feature Request] 从0.66.0更新到0.67.0后,由于OpenWrt缺乏Node.js编译工具,不能编译WebUI,有没有可能换回原先的编译方式呢? #4026

Closed
opened 2026-05-05 14:33:19 -06:00 by gitea-mirror · 6 comments
Owner

Originally created by @laipeng668 on GitHub (Feb 1, 2026).
Original GitHub issue: https://github.com/fatedier/frp/issues/5148

Describe the feature request

0.66.0版本之前,在OpenWrt中只需要这样修改makefile文件,就可以正常构建frp。
239442f22f

0.67.0版本之后,在OpenWrt中无法构建frp,应该是这个变更引起的。5dd70ace6b

make package/frp/{clean,compile} V=s
WARNING: Makefile 'package/feeds/packages/frp/Makefile' has a build dependency on 'nodejs/host', which does not exist
WARNING: Makefile 'package/feeds/luci/luci-app-advanced-reboot/Makefile' has a build dependency on 'jq/host', which does not exist
WARNING: Makefile 'package/luci-app-wechatpush/Makefile' has a dependency on 'wrtbwmon', which does not exist
WARNING: Makefile 'package/feeds/packages/onionshare-cli/Makefile' has a dependency on 'python3-pysocks', which does not exist
WARNING: Makefile 'package/feeds/packages/onionshare-cli/Makefile' has a dependency on 'python3-unidecode', which does not exist
make[2]: Entering directory '/share/immortalwrt/scripts/config'
make[2]: 'conf' is up to date.
make[2]: Leaving directory '/share/immortalwrt/scripts/config'
make[1]: Entering directory '/share/immortalwrt'
make[2]: Entering directory '/share/immortalwrt/feeds/packages/net/frp'
rm -rf /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0
rm -f /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/stamp/.frp_installed
rm -f /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/packages/frp.list
make[2]: Leaving directory '/share/immortalwrt/feeds/packages/net/frp'
time: package/feeds/packages/frp/clean#0.12#0.01#0.13
make[1]: Leaving directory '/share/immortalwrt'
WARNING: Makefile 'package/feeds/packages/frp/Makefile' has a build dependency on 'nodejs/host', which does not exist
WARNING: Makefile 'package/feeds/luci/luci-app-advanced-reboot/Makefile' has a build dependency on 'jq/host', which does not exist
WARNING: Makefile 'package/luci-app-wechatpush/Makefile' has a dependency on 'wrtbwmon', which does not exist
WARNING: Makefile 'package/feeds/packages/onionshare-cli/Makefile' has a dependency on 'python3-pysocks', which does not exist
WARNING: Makefile 'package/feeds/packages/onionshare-cli/Makefile' has a dependency on 'python3-unidecode', which does not exist
make[2]: Entering directory '/share/immortalwrt/scripts/config'
make[2]: 'conf' is up to date.
make[2]: Leaving directory '/share/immortalwrt/scripts/config'
make[1]: Entering directory '/share/immortalwrt'
make[2]: Entering directory '/share/immortalwrt/feeds/packages/lang/golang/golang'
make[2]: Leaving directory '/share/immortalwrt/feeds/packages/lang/golang/golang'
time: package/feeds/packages/golang/host-compile#0.53#0.08#0.56
+ mkdir -p /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl
+ cd /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl
+ mkdir -p bin lib stamp usr/include usr/lib
mkdir -p /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/stamp
touch /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/.prepared
make[2]: Entering directory '/share/immortalwrt/package/utils/lua'
make[2]: Leaving directory '/share/immortalwrt/package/utils/lua'
time: package/utils/lua/host-compile#0.19#0.04#0.22
make[2]: Entering directory '/share/immortalwrt/package/system/apk'
make[2]: Leaving directory '/share/immortalwrt/package/system/apk'
time: package/system/apk/host-compile#0.20#0.02#0.20
make[2]: Entering directory '/share/immortalwrt/package/libs/toolchain'
echo "libgcc" >> /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/pkginfo/toolchain.default.install
echo "libc" >> /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/pkginfo/toolchain.default.install
echo "libatomic" >> /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/pkginfo/toolchain.default.install
echo "libstdcpp" >> /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/pkginfo/toolchain.default.install
echo "libpthread" >> /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/pkginfo/toolchain.default.install
echo "librt" >> /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/pkginfo/toolchain.default.install
make[2]: Leaving directory '/share/immortalwrt/package/libs/toolchain'
time: package/libs/toolchain/compile#0.16#0.00#0.16
make[2]: Entering directory '/share/immortalwrt/feeds/packages/net/frp'
touch /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.prepared_0819752cdce53b17e4d74d51afcb62af_6664517399ebbbc92a37c5bb081b5c53_check
. /share/immortalwrt/include/shell.sh; /share/immortalwrt/staging_dir/host/bin/libdeflate-gzip -dc /share/immortalwrt/dl/frp-0.67.0.tar.gz | tar -C /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.. -xf -
[ ! -d ./src/ ] || cp -fpR ./src/. /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0
touch /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.prepared_0819752cdce53b17e4d74d51afcb62af_6664517399ebbbc92a37c5bb081b5c53
rm -f /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.configured_*
rm -f /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/stamp/.frp_installed
CONFIG_GOLANG_MOD_CACHE_WORLD_READABLE="" GO_BUILD_CACHE_DIR="/share/immortalwrt/tmp/go-build" GO_MOD_CACHE_DIR="/share/immortalwrt/dl/go-mod-cache" GO_MOD_ARGS="-modcacherw" GO_PKG="github.com/fatedier/frp" GO_INSTALL_EXTRA="" GO_INSTALL_ALL="" GO_SOURCE_ONLY="" GO_BUILD_PKG="github.com/fatedier/frp/cmd/..." GO_EXCLUDES="" GO_GO_GENERATE="" GO_INSTALL_BIN_PATH="/usr/bin" BUILD_DIR="/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0" GO_BUILD_DIR="/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.go_work/build" GO_BUILD_BIN_DIR="/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.go_work/build/bin/linux_arm64" GO_BUILD_DEPENDS_PATH="/usr/share/gocode" GO_BUILD_DEPENDS_SRC="/share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/usr/share/gocode/src" /usr/bin/env bash ../../lang/golang//golang-build.sh configure
Copying files from /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0 into /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.go_work/build/src/github.com/fatedier/frp
assets/assets.go
client/admin_api.go
client/api/controller.go
client/api/types.go
client/connector.go
client/control.go
client/event/event.go
client/health/health.go
client/proxy/general_tcp.go
client/proxy/proxy.go
client/proxy/proxy_manager.go
client/proxy/proxy_wrapper.go
client/proxy/sudp.go
client/proxy/udp.go
client/proxy/xtcp.go
client/service.go
client/visitor/stcp.go
client/visitor/sudp.go
client/visitor/visitor.go
client/visitor/visitor_manager.go
client/visitor/xtcp.go
cmd/frpc/main.go
cmd/frpc/sub/admin.go
cmd/frpc/sub/nathole.go
cmd/frpc/sub/proxy.go
cmd/frpc/sub/root.go
cmd/frpc/sub/verify.go
cmd/frps/main.go
cmd/frps/root.go
cmd/frps/verify.go
go.mod
go.sum
pkg/auth/auth.go
pkg/auth/legacy/legacy.go
pkg/auth/oidc.go
pkg/auth/oidc_test.go
pkg/auth/pass.go
pkg/auth/token.go
pkg/config/flags.go
pkg/config/legacy/client.go
pkg/config/legacy/conversion.go
pkg/config/legacy/parse.go
pkg/config/legacy/proxy.go
pkg/config/legacy/server.go
pkg/config/legacy/utils.go
pkg/config/legacy/value.go
pkg/config/legacy/visitor.go
pkg/config/load.go
pkg/config/load_test.go
pkg/config/template.go
pkg/config/types/types.go
pkg/config/types/types_test.go
pkg/config/v1/api.go
pkg/config/v1/client.go
pkg/config/v1/client_test.go
pkg/config/v1/common.go
pkg/config/v1/proxy.go
pkg/config/v1/proxy_plugin.go
pkg/config/v1/proxy_test.go
pkg/config/v1/server.go
pkg/config/v1/server_test.go
pkg/config/v1/validation/client.go
pkg/config/v1/validation/common.go
pkg/config/v1/validation/plugin.go
pkg/config/v1/validation/proxy.go
pkg/config/v1/validation/server.go
pkg/config/v1/validation/validation.go
pkg/config/v1/validation/validator.go
pkg/config/v1/validation/visitor.go
pkg/config/v1/value_source.go
pkg/config/v1/value_source_test.go
pkg/config/v1/visitor.go
pkg/config/v1/visitor_plugin.go
pkg/errors/errors.go
pkg/metrics/aggregate/server.go
pkg/metrics/mem/server.go
pkg/metrics/mem/types.go
pkg/metrics/metrics.go
pkg/metrics/prometheus/server.go
pkg/msg/ctl.go
pkg/msg/handler.go
pkg/msg/msg.go
pkg/nathole/analysis.go
pkg/nathole/classify.go
pkg/nathole/controller.go
pkg/nathole/discovery.go
pkg/nathole/nathole.go
pkg/nathole/utils.go
pkg/plugin/client/http2http.go
pkg/plugin/client/http2https.go
pkg/plugin/client/http_proxy.go
pkg/plugin/client/https2http.go
pkg/plugin/client/https2https.go
pkg/plugin/client/plugin.go
pkg/plugin/client/socks5.go
pkg/plugin/client/static_file.go
pkg/plugin/client/tls2raw.go
pkg/plugin/client/unix_domain_socket.go
pkg/plugin/client/virtual_net.go
pkg/plugin/server/http.go
pkg/plugin/server/manager.go
pkg/plugin/server/plugin.go
pkg/plugin/server/tracer.go
pkg/plugin/server/types.go
pkg/plugin/visitor/plugin.go
pkg/plugin/visitor/virtual_net.go
pkg/policy/featuregate/feature_gate.go
pkg/policy/security/unsafe.go
pkg/proto/udp/udp.go
pkg/proto/udp/udp_test.go
pkg/sdk/client/client.go
pkg/ssh/gateway.go
pkg/ssh/server.go
pkg/ssh/terminal.go
pkg/transport/message.go
pkg/transport/tls.go
pkg/util/http/context.go
pkg/util/http/error.go
pkg/util/http/handler.go
pkg/util/http/http.go
pkg/util/http/middleware.go
pkg/util/http/server.go
pkg/util/limit/reader.go
pkg/util/limit/writer.go
pkg/util/log/log.go
pkg/util/metric/counter.go
pkg/util/metric/counter_test.go
pkg/util/metric/date_counter.go
pkg/util/metric/date_counter_test.go
pkg/util/metric/metrics.go
pkg/util/net/conn.go
pkg/util/net/dial.go
pkg/util/net/dns.go
pkg/util/net/http.go
pkg/util/net/kcp.go
pkg/util/net/listener.go
pkg/util/net/proxyprotocol.go
pkg/util/net/proxyprotocol_test.go
pkg/util/net/tls.go
pkg/util/net/udp.go
pkg/util/net/websocket.go
pkg/util/system/system.go
pkg/util/system/system_android.go
pkg/util/tcpmux/httpconnect.go
pkg/util/util/types.go
pkg/util/util/util.go
pkg/util/util/util_test.go
pkg/util/version/version.go
pkg/util/vhost/http.go
pkg/util/vhost/https.go
pkg/util/vhost/https_test.go
pkg/util/vhost/resource.go
pkg/util/vhost/router.go
pkg/util/vhost/vhost.go
pkg/util/wait/backoff.go
pkg/util/xlog/ctx.go
pkg/util/xlog/log_writer.go
pkg/util/xlog/xlog.go
pkg/virtual/client.go
pkg/vnet/controller.go
pkg/vnet/message.go
pkg/vnet/tun.go
pkg/vnet/tun_darwin.go
pkg/vnet/tun_linux.go
pkg/vnet/tun_unsupported.go
server/api/controller.go
server/api/types.go
server/control.go
server/controller/resource.go
server/group/group.go
server/group/http.go
server/group/https.go
server/group/tcp.go
server/group/tcpmux.go
server/metrics/metrics.go
server/ports/ports.go
server/proxy/http.go
server/proxy/https.go
server/proxy/proxy.go
server/proxy/stcp.go
server/proxy/sudp.go
server/proxy/tcp.go
server/proxy/tcpmux.go
server/proxy/udp.go
server/proxy/xtcp.go
server/registry/registry.go
server/service.go
server/visitor/visitor.go
test/e2e/e2e.go
test/e2e/e2e_test.go
test/e2e/examples.go
test/e2e/framework/cleanup.go
test/e2e/framework/client.go
test/e2e/framework/consts/consts.go
test/e2e/framework/expect.go
test/e2e/framework/framework.go
test/e2e/framework/log.go
test/e2e/framework/mockservers.go
test/e2e/framework/process.go
test/e2e/framework/request.go
test/e2e/framework/test_context.go
test/e2e/framework/util.go
test/e2e/legacy/basic/basic.go
test/e2e/legacy/basic/client.go
test/e2e/legacy/basic/client_server.go
test/e2e/legacy/basic/cmd.go
test/e2e/legacy/basic/config.go
test/e2e/legacy/basic/http.go
test/e2e/legacy/basic/server.go
test/e2e/legacy/basic/tcpmux.go
test/e2e/legacy/basic/xtcp.go
test/e2e/legacy/features/bandwidth_limit.go
test/e2e/legacy/features/chaos.go
test/e2e/legacy/features/group.go
test/e2e/legacy/features/heartbeat.go
test/e2e/legacy/features/monitor.go
test/e2e/legacy/features/real_ip.go
test/e2e/legacy/plugin/client.go
test/e2e/legacy/plugin/server.go
test/e2e/mock/server/httpserver/server.go
test/e2e/mock/server/interface.go
test/e2e/mock/server/streamserver/server.go
test/e2e/pkg/cert/generator.go
test/e2e/pkg/cert/selfsigned.go
test/e2e/pkg/plugin/plugin.go
test/e2e/pkg/port/port.go
test/e2e/pkg/port/util.go
test/e2e/pkg/process/process.go
test/e2e/pkg/request/request.go
test/e2e/pkg/rpc/rpc.go
test/e2e/pkg/ssh/client.go
test/e2e/suites.go
test/e2e/v1/basic/annotations.go
test/e2e/v1/basic/basic.go
test/e2e/v1/basic/client.go
test/e2e/v1/basic/client_server.go
test/e2e/v1/basic/cmd.go
test/e2e/v1/basic/config.go
test/e2e/v1/basic/http.go
test/e2e/v1/basic/server.go
test/e2e/v1/basic/tcpmux.go
test/e2e/v1/basic/token_source.go
test/e2e/v1/basic/xtcp.go
test/e2e/v1/features/bandwidth_limit.go
test/e2e/v1/features/chaos.go
test/e2e/v1/features/group.go
test/e2e/v1/features/heartbeat.go
test/e2e/v1/features/monitor.go
test/e2e/v1/features/real_ip.go
test/e2e/v1/features/ssh_tunnel.go
test/e2e/v1/plugin/client.go
test/e2e/v1/plugin/server.go
web/frpc/embed.go
web/frps/embed.go

Symlinking directories from /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/usr/share/gocode/src into /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.go_work/build/src
.../github.com/snowie2000
.../github.com/xtls
.../github.com/OpenListTeam

touch /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.configured_68b329da9893e34099c7d8ad5cb9c940
rm -f /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.built
touch /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.built_check
CONFIG_GOLANG_MOD_CACHE_WORLD_READABLE="" GO_BUILD_CACHE_DIR="/share/immortalwrt/tmp/go-build" GO_MOD_CACHE_DIR="/share/immortalwrt/dl/go-mod-cache" GO_MOD_ARGS="-modcacherw" GO_PKG="github.com/fatedier/frp" GO_INSTALL_EXTRA="" GO_INSTALL_ALL="" GO_SOURCE_ONLY="" GO_BUILD_PKG="github.com/fatedier/frp/cmd/..." GO_EXCLUDES="" GO_GO_GENERATE="" GO_INSTALL_BIN_PATH="/usr/bin" BUILD_DIR="/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0" GO_BUILD_DIR="/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.go_work/build" GO_BUILD_BIN_DIR="/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.go_work/build/bin/linux_arm64" GO_BUILD_DEPENDS_PATH="/usr/share/gocode" GO_BUILD_DEPENDS_SRC="/share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/usr/share/gocode/src" GOOS="linux" GOARCH="arm64" GO386="" GOAMD64="" GOARM="" GOMIPS="" GOMIPS64="" GOPPC64="" CGO_ENABLED=1 CC="ccache aarch64-openwrt-linux-musl-gcc" CXX="ccache aarch64-openwrt-linux-musl-g++" CGO_CFLAGS="-O3 -pipe -march=armv8-a+crypto+crc -mcpu=cortex-a53+crypto+crc -mtune=cortex-a53 -fno-caller-saves -fno-plt -fhonour-copts -fmacro-prefix-map=/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0=frp-0.67.0 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -Wl,-z,pack-relative-relocs" CGO_CPPFLAGS="-I/share/immortalwrt/staging_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/usr/include -I/share/immortalwrt/staging_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/include -I/share/immortalwrt/staging_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/include/fortify" CGO_CXXFLAGS="-O3 -pipe -march=armv8-a+crypto+crc -mcpu=cortex-a53+crypto+crc -mtune=cortex-a53 -fno-caller-saves -fno-plt -fhonour-copts -fmacro-prefix-map=/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0=frp-0.67.0 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -Wl,-z,pack-relative-relocs" CGO_LDFLAGS="-L/share/immortalwrt/staging_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/usr/lib -L/share/immortalwrt/staging_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/lib -fuse-ld=bfd -znow -zrelro -zpack-relative-relocs" GOPATH="/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.go_work/build" GOCACHE="/share/immortalwrt/tmp/go-build" GOMODCACHE="/share/immortalwrt/dl/go-mod-cache" GOENV=off GOTOOLCHAIN=local /usr/bin/env bash ../../lang/golang//golang-build.sh build -v -buildvcs=false -trimpath -ldflags "all=-buildid '1769748037' -linkmode external -extldflags '-L/share/immortalwrt/staging_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/usr/lib -L/share/immortalwrt/staging_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/lib -fuse-ld=bfd -Wl,-z,now -Wl,-z,relro -Wl,-z,pack-relative-relocs'"
Finding targets
../../web/frpc/embed.go:9:12: pattern dist: no matching files found
../../web/frps/embed.go:9:12: pattern dist: no matching files found

Building targets
../../web/frpc/embed.go:9:12: pattern dist: no matching files found
../../web/frps/embed.go:9:12: pattern dist: no matching files found

make[2]: *** [Makefile:71: /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.built] Error 1
make[2]: Leaving directory '/share/immortalwrt/feeds/packages/net/frp'
time: package/feeds/packages/frp/compile#0.67#0.22#0.68
    ERROR: package/feeds/packages/frp failed to build.
make[1]: *** [package/Makefile:187: package/feeds/packages/frp/compile] Error 1
make[1]: Leaving directory '/share/immortalwrt'
make: *** [/share/immortalwrt/include/toplevel.mk:233:package/frp/compile] 错误 2

Describe alternatives you've considered

OpenWrt中可能缺失必要的工具链,大佬有时间的话,能够考虑做一下兼容?

Affected area

  • Docs
  • Installation
  • Performance and Scalability
  • Security
  • User Experience
  • Test and Release
  • Developer Infrastructure
  • Client Plugin
  • Server Plugin
  • Extensions
  • Others
Originally created by @laipeng668 on GitHub (Feb 1, 2026). Original GitHub issue: https://github.com/fatedier/frp/issues/5148 ### Describe the feature request 0.66.0版本之前,在OpenWrt中只需要这样修改makefile文件,就可以正常构建frp。 https://github.com/laipeng668/packages/commit/239442f22f2fbec60b842b4cc1fa449b01456d48 0.67.0版本之后,在OpenWrt中无法构建frp,应该是这个变更引起的。https://github.com/fatedier/frp/commit/5dd70ace6b0be6786a1212fa8edb07ea64a9c281 ``` make package/frp/{clean,compile} V=s WARNING: Makefile 'package/feeds/packages/frp/Makefile' has a build dependency on 'nodejs/host', which does not exist WARNING: Makefile 'package/feeds/luci/luci-app-advanced-reboot/Makefile' has a build dependency on 'jq/host', which does not exist WARNING: Makefile 'package/luci-app-wechatpush/Makefile' has a dependency on 'wrtbwmon', which does not exist WARNING: Makefile 'package/feeds/packages/onionshare-cli/Makefile' has a dependency on 'python3-pysocks', which does not exist WARNING: Makefile 'package/feeds/packages/onionshare-cli/Makefile' has a dependency on 'python3-unidecode', which does not exist make[2]: Entering directory '/share/immortalwrt/scripts/config' make[2]: 'conf' is up to date. make[2]: Leaving directory '/share/immortalwrt/scripts/config' make[1]: Entering directory '/share/immortalwrt' make[2]: Entering directory '/share/immortalwrt/feeds/packages/net/frp' rm -rf /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0 rm -f /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/stamp/.frp_installed rm -f /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/packages/frp.list make[2]: Leaving directory '/share/immortalwrt/feeds/packages/net/frp' time: package/feeds/packages/frp/clean#0.12#0.01#0.13 make[1]: Leaving directory '/share/immortalwrt' WARNING: Makefile 'package/feeds/packages/frp/Makefile' has a build dependency on 'nodejs/host', which does not exist WARNING: Makefile 'package/feeds/luci/luci-app-advanced-reboot/Makefile' has a build dependency on 'jq/host', which does not exist WARNING: Makefile 'package/luci-app-wechatpush/Makefile' has a dependency on 'wrtbwmon', which does not exist WARNING: Makefile 'package/feeds/packages/onionshare-cli/Makefile' has a dependency on 'python3-pysocks', which does not exist WARNING: Makefile 'package/feeds/packages/onionshare-cli/Makefile' has a dependency on 'python3-unidecode', which does not exist make[2]: Entering directory '/share/immortalwrt/scripts/config' make[2]: 'conf' is up to date. make[2]: Leaving directory '/share/immortalwrt/scripts/config' make[1]: Entering directory '/share/immortalwrt' make[2]: Entering directory '/share/immortalwrt/feeds/packages/lang/golang/golang' make[2]: Leaving directory '/share/immortalwrt/feeds/packages/lang/golang/golang' time: package/feeds/packages/golang/host-compile#0.53#0.08#0.56 + mkdir -p /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl + cd /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl + mkdir -p bin lib stamp usr/include usr/lib mkdir -p /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/stamp touch /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/.prepared make[2]: Entering directory '/share/immortalwrt/package/utils/lua' make[2]: Leaving directory '/share/immortalwrt/package/utils/lua' time: package/utils/lua/host-compile#0.19#0.04#0.22 make[2]: Entering directory '/share/immortalwrt/package/system/apk' make[2]: Leaving directory '/share/immortalwrt/package/system/apk' time: package/system/apk/host-compile#0.20#0.02#0.20 make[2]: Entering directory '/share/immortalwrt/package/libs/toolchain' echo "libgcc" >> /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/pkginfo/toolchain.default.install echo "libc" >> /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/pkginfo/toolchain.default.install echo "libatomic" >> /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/pkginfo/toolchain.default.install echo "libstdcpp" >> /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/pkginfo/toolchain.default.install echo "libpthread" >> /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/pkginfo/toolchain.default.install echo "librt" >> /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/pkginfo/toolchain.default.install make[2]: Leaving directory '/share/immortalwrt/package/libs/toolchain' time: package/libs/toolchain/compile#0.16#0.00#0.16 make[2]: Entering directory '/share/immortalwrt/feeds/packages/net/frp' touch /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.prepared_0819752cdce53b17e4d74d51afcb62af_6664517399ebbbc92a37c5bb081b5c53_check . /share/immortalwrt/include/shell.sh; /share/immortalwrt/staging_dir/host/bin/libdeflate-gzip -dc /share/immortalwrt/dl/frp-0.67.0.tar.gz | tar -C /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.. -xf - [ ! -d ./src/ ] || cp -fpR ./src/. /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0 touch /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.prepared_0819752cdce53b17e4d74d51afcb62af_6664517399ebbbc92a37c5bb081b5c53 rm -f /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.configured_* rm -f /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/stamp/.frp_installed CONFIG_GOLANG_MOD_CACHE_WORLD_READABLE="" GO_BUILD_CACHE_DIR="/share/immortalwrt/tmp/go-build" GO_MOD_CACHE_DIR="/share/immortalwrt/dl/go-mod-cache" GO_MOD_ARGS="-modcacherw" GO_PKG="github.com/fatedier/frp" GO_INSTALL_EXTRA="" GO_INSTALL_ALL="" GO_SOURCE_ONLY="" GO_BUILD_PKG="github.com/fatedier/frp/cmd/..." GO_EXCLUDES="" GO_GO_GENERATE="" GO_INSTALL_BIN_PATH="/usr/bin" BUILD_DIR="/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0" GO_BUILD_DIR="/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.go_work/build" GO_BUILD_BIN_DIR="/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.go_work/build/bin/linux_arm64" GO_BUILD_DEPENDS_PATH="/usr/share/gocode" GO_BUILD_DEPENDS_SRC="/share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/usr/share/gocode/src" /usr/bin/env bash ../../lang/golang//golang-build.sh configure Copying files from /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0 into /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.go_work/build/src/github.com/fatedier/frp assets/assets.go client/admin_api.go client/api/controller.go client/api/types.go client/connector.go client/control.go client/event/event.go client/health/health.go client/proxy/general_tcp.go client/proxy/proxy.go client/proxy/proxy_manager.go client/proxy/proxy_wrapper.go client/proxy/sudp.go client/proxy/udp.go client/proxy/xtcp.go client/service.go client/visitor/stcp.go client/visitor/sudp.go client/visitor/visitor.go client/visitor/visitor_manager.go client/visitor/xtcp.go cmd/frpc/main.go cmd/frpc/sub/admin.go cmd/frpc/sub/nathole.go cmd/frpc/sub/proxy.go cmd/frpc/sub/root.go cmd/frpc/sub/verify.go cmd/frps/main.go cmd/frps/root.go cmd/frps/verify.go go.mod go.sum pkg/auth/auth.go pkg/auth/legacy/legacy.go pkg/auth/oidc.go pkg/auth/oidc_test.go pkg/auth/pass.go pkg/auth/token.go pkg/config/flags.go pkg/config/legacy/client.go pkg/config/legacy/conversion.go pkg/config/legacy/parse.go pkg/config/legacy/proxy.go pkg/config/legacy/server.go pkg/config/legacy/utils.go pkg/config/legacy/value.go pkg/config/legacy/visitor.go pkg/config/load.go pkg/config/load_test.go pkg/config/template.go pkg/config/types/types.go pkg/config/types/types_test.go pkg/config/v1/api.go pkg/config/v1/client.go pkg/config/v1/client_test.go pkg/config/v1/common.go pkg/config/v1/proxy.go pkg/config/v1/proxy_plugin.go pkg/config/v1/proxy_test.go pkg/config/v1/server.go pkg/config/v1/server_test.go pkg/config/v1/validation/client.go pkg/config/v1/validation/common.go pkg/config/v1/validation/plugin.go pkg/config/v1/validation/proxy.go pkg/config/v1/validation/server.go pkg/config/v1/validation/validation.go pkg/config/v1/validation/validator.go pkg/config/v1/validation/visitor.go pkg/config/v1/value_source.go pkg/config/v1/value_source_test.go pkg/config/v1/visitor.go pkg/config/v1/visitor_plugin.go pkg/errors/errors.go pkg/metrics/aggregate/server.go pkg/metrics/mem/server.go pkg/metrics/mem/types.go pkg/metrics/metrics.go pkg/metrics/prometheus/server.go pkg/msg/ctl.go pkg/msg/handler.go pkg/msg/msg.go pkg/nathole/analysis.go pkg/nathole/classify.go pkg/nathole/controller.go pkg/nathole/discovery.go pkg/nathole/nathole.go pkg/nathole/utils.go pkg/plugin/client/http2http.go pkg/plugin/client/http2https.go pkg/plugin/client/http_proxy.go pkg/plugin/client/https2http.go pkg/plugin/client/https2https.go pkg/plugin/client/plugin.go pkg/plugin/client/socks5.go pkg/plugin/client/static_file.go pkg/plugin/client/tls2raw.go pkg/plugin/client/unix_domain_socket.go pkg/plugin/client/virtual_net.go pkg/plugin/server/http.go pkg/plugin/server/manager.go pkg/plugin/server/plugin.go pkg/plugin/server/tracer.go pkg/plugin/server/types.go pkg/plugin/visitor/plugin.go pkg/plugin/visitor/virtual_net.go pkg/policy/featuregate/feature_gate.go pkg/policy/security/unsafe.go pkg/proto/udp/udp.go pkg/proto/udp/udp_test.go pkg/sdk/client/client.go pkg/ssh/gateway.go pkg/ssh/server.go pkg/ssh/terminal.go pkg/transport/message.go pkg/transport/tls.go pkg/util/http/context.go pkg/util/http/error.go pkg/util/http/handler.go pkg/util/http/http.go pkg/util/http/middleware.go pkg/util/http/server.go pkg/util/limit/reader.go pkg/util/limit/writer.go pkg/util/log/log.go pkg/util/metric/counter.go pkg/util/metric/counter_test.go pkg/util/metric/date_counter.go pkg/util/metric/date_counter_test.go pkg/util/metric/metrics.go pkg/util/net/conn.go pkg/util/net/dial.go pkg/util/net/dns.go pkg/util/net/http.go pkg/util/net/kcp.go pkg/util/net/listener.go pkg/util/net/proxyprotocol.go pkg/util/net/proxyprotocol_test.go pkg/util/net/tls.go pkg/util/net/udp.go pkg/util/net/websocket.go pkg/util/system/system.go pkg/util/system/system_android.go pkg/util/tcpmux/httpconnect.go pkg/util/util/types.go pkg/util/util/util.go pkg/util/util/util_test.go pkg/util/version/version.go pkg/util/vhost/http.go pkg/util/vhost/https.go pkg/util/vhost/https_test.go pkg/util/vhost/resource.go pkg/util/vhost/router.go pkg/util/vhost/vhost.go pkg/util/wait/backoff.go pkg/util/xlog/ctx.go pkg/util/xlog/log_writer.go pkg/util/xlog/xlog.go pkg/virtual/client.go pkg/vnet/controller.go pkg/vnet/message.go pkg/vnet/tun.go pkg/vnet/tun_darwin.go pkg/vnet/tun_linux.go pkg/vnet/tun_unsupported.go server/api/controller.go server/api/types.go server/control.go server/controller/resource.go server/group/group.go server/group/http.go server/group/https.go server/group/tcp.go server/group/tcpmux.go server/metrics/metrics.go server/ports/ports.go server/proxy/http.go server/proxy/https.go server/proxy/proxy.go server/proxy/stcp.go server/proxy/sudp.go server/proxy/tcp.go server/proxy/tcpmux.go server/proxy/udp.go server/proxy/xtcp.go server/registry/registry.go server/service.go server/visitor/visitor.go test/e2e/e2e.go test/e2e/e2e_test.go test/e2e/examples.go test/e2e/framework/cleanup.go test/e2e/framework/client.go test/e2e/framework/consts/consts.go test/e2e/framework/expect.go test/e2e/framework/framework.go test/e2e/framework/log.go test/e2e/framework/mockservers.go test/e2e/framework/process.go test/e2e/framework/request.go test/e2e/framework/test_context.go test/e2e/framework/util.go test/e2e/legacy/basic/basic.go test/e2e/legacy/basic/client.go test/e2e/legacy/basic/client_server.go test/e2e/legacy/basic/cmd.go test/e2e/legacy/basic/config.go test/e2e/legacy/basic/http.go test/e2e/legacy/basic/server.go test/e2e/legacy/basic/tcpmux.go test/e2e/legacy/basic/xtcp.go test/e2e/legacy/features/bandwidth_limit.go test/e2e/legacy/features/chaos.go test/e2e/legacy/features/group.go test/e2e/legacy/features/heartbeat.go test/e2e/legacy/features/monitor.go test/e2e/legacy/features/real_ip.go test/e2e/legacy/plugin/client.go test/e2e/legacy/plugin/server.go test/e2e/mock/server/httpserver/server.go test/e2e/mock/server/interface.go test/e2e/mock/server/streamserver/server.go test/e2e/pkg/cert/generator.go test/e2e/pkg/cert/selfsigned.go test/e2e/pkg/plugin/plugin.go test/e2e/pkg/port/port.go test/e2e/pkg/port/util.go test/e2e/pkg/process/process.go test/e2e/pkg/request/request.go test/e2e/pkg/rpc/rpc.go test/e2e/pkg/ssh/client.go test/e2e/suites.go test/e2e/v1/basic/annotations.go test/e2e/v1/basic/basic.go test/e2e/v1/basic/client.go test/e2e/v1/basic/client_server.go test/e2e/v1/basic/cmd.go test/e2e/v1/basic/config.go test/e2e/v1/basic/http.go test/e2e/v1/basic/server.go test/e2e/v1/basic/tcpmux.go test/e2e/v1/basic/token_source.go test/e2e/v1/basic/xtcp.go test/e2e/v1/features/bandwidth_limit.go test/e2e/v1/features/chaos.go test/e2e/v1/features/group.go test/e2e/v1/features/heartbeat.go test/e2e/v1/features/monitor.go test/e2e/v1/features/real_ip.go test/e2e/v1/features/ssh_tunnel.go test/e2e/v1/plugin/client.go test/e2e/v1/plugin/server.go web/frpc/embed.go web/frps/embed.go Symlinking directories from /share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/usr/share/gocode/src into /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.go_work/build/src .../github.com/snowie2000 .../github.com/xtls .../github.com/OpenListTeam touch /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.configured_68b329da9893e34099c7d8ad5cb9c940 rm -f /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.built touch /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.built_check CONFIG_GOLANG_MOD_CACHE_WORLD_READABLE="" GO_BUILD_CACHE_DIR="/share/immortalwrt/tmp/go-build" GO_MOD_CACHE_DIR="/share/immortalwrt/dl/go-mod-cache" GO_MOD_ARGS="-modcacherw" GO_PKG="github.com/fatedier/frp" GO_INSTALL_EXTRA="" GO_INSTALL_ALL="" GO_SOURCE_ONLY="" GO_BUILD_PKG="github.com/fatedier/frp/cmd/..." GO_EXCLUDES="" GO_GO_GENERATE="" GO_INSTALL_BIN_PATH="/usr/bin" BUILD_DIR="/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0" GO_BUILD_DIR="/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.go_work/build" GO_BUILD_BIN_DIR="/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.go_work/build/bin/linux_arm64" GO_BUILD_DEPENDS_PATH="/usr/share/gocode" GO_BUILD_DEPENDS_SRC="/share/immortalwrt/staging_dir/target-aarch64_cortex-a53_musl/usr/share/gocode/src" GOOS="linux" GOARCH="arm64" GO386="" GOAMD64="" GOARM="" GOMIPS="" GOMIPS64="" GOPPC64="" CGO_ENABLED=1 CC="ccache aarch64-openwrt-linux-musl-gcc" CXX="ccache aarch64-openwrt-linux-musl-g++" CGO_CFLAGS="-O3 -pipe -march=armv8-a+crypto+crc -mcpu=cortex-a53+crypto+crc -mtune=cortex-a53 -fno-caller-saves -fno-plt -fhonour-copts -fmacro-prefix-map=/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0=frp-0.67.0 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -Wl,-z,pack-relative-relocs" CGO_CPPFLAGS="-I/share/immortalwrt/staging_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/usr/include -I/share/immortalwrt/staging_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/include -I/share/immortalwrt/staging_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/include/fortify" CGO_CXXFLAGS="-O3 -pipe -march=armv8-a+crypto+crc -mcpu=cortex-a53+crypto+crc -mtune=cortex-a53 -fno-caller-saves -fno-plt -fhonour-copts -fmacro-prefix-map=/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0=frp-0.67.0 -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -Wl,-z,pack-relative-relocs" CGO_LDFLAGS="-L/share/immortalwrt/staging_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/usr/lib -L/share/immortalwrt/staging_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/lib -fuse-ld=bfd -znow -zrelro -zpack-relative-relocs" GOPATH="/share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.go_work/build" GOCACHE="/share/immortalwrt/tmp/go-build" GOMODCACHE="/share/immortalwrt/dl/go-mod-cache" GOENV=off GOTOOLCHAIN=local /usr/bin/env bash ../../lang/golang//golang-build.sh build -v -buildvcs=false -trimpath -ldflags "all=-buildid '1769748037' -linkmode external -extldflags '-L/share/immortalwrt/staging_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/usr/lib -L/share/immortalwrt/staging_dir/toolchain-aarch64_cortex-a53_gcc-14.3.0_musl/lib -fuse-ld=bfd -Wl,-z,now -Wl,-z,relro -Wl,-z,pack-relative-relocs'" Finding targets ../../web/frpc/embed.go:9:12: pattern dist: no matching files found ../../web/frps/embed.go:9:12: pattern dist: no matching files found Building targets ../../web/frpc/embed.go:9:12: pattern dist: no matching files found ../../web/frps/embed.go:9:12: pattern dist: no matching files found make[2]: *** [Makefile:71: /share/immortalwrt/build_dir/target-aarch64_cortex-a53_musl/frp-0.67.0/.built] Error 1 make[2]: Leaving directory '/share/immortalwrt/feeds/packages/net/frp' time: package/feeds/packages/frp/compile#0.67#0.22#0.68 ERROR: package/feeds/packages/frp failed to build. make[1]: *** [package/Makefile:187: package/feeds/packages/frp/compile] Error 1 make[1]: Leaving directory '/share/immortalwrt' make: *** [/share/immortalwrt/include/toplevel.mk:233:package/frp/compile] 错误 2 ``` ### Describe alternatives you've considered OpenWrt中可能缺失必要的工具链,大佬有时间的话,能够考虑做一下兼容? ### Affected area - [ ] Docs - [ ] Installation - [ ] Performance and Scalability - [ ] Security - [ ] User Experience - [ ] Test and Release - [ ] Developer Infrastructure - [ ] Client Plugin - [ ] Server Plugin - [ ] Extensions - [x] Others
gitea-mirror 2026-05-05 14:33:19 -06:00
Author
Owner

@laipeng668 commented on GitHub (Feb 1, 2026):

我修改了makefile就可以正常编译了,但这样编译出来的二进制文件不包含WebUI
624cebdddf
从0.67.0版本开始,由于默认不编译前端,但OpenWrt缺乏Node.js编译工具,而且在OpenWrt上面添加Node.js依赖很困难,有没有可能换回原先的方式呢?

<!-- gh-comment-id:3830335555 --> @laipeng668 commented on GitHub (Feb 1, 2026): 我修改了`makefile`就可以正常编译了,但这样编译出来的二进制文件不包含`WebUI`。 https://github.com/laipeng668/packages/commit/624cebdddf3a7fe84ea86f0fb45bcbf50aacdb54 从0.67.0版本开始,由于默认不编译前端,但`OpenWrt`缺乏`Node.js`编译工具,而且在`OpenWrt`上面添加`Node.js`依赖很困难,有没有可能换回原先的方式呢?
Author
Owner

@laipeng668 commented on GitHub (Feb 1, 2026):

既然Releases直接生成了可用的二进制文件,我又重新修改了makefile,直接拷贝现成的文件,我自己测试暂时没什么异常。
如果不方便使用原来编译方式的话就暂时这样吧,感谢您一直以来对frp这个项目的付出!
2759055d91

<!-- gh-comment-id:3831193460 --> @laipeng668 commented on GitHub (Feb 1, 2026): 既然`Releases`直接生成了可用的二进制文件,我又重新修改了`makefile`,直接拷贝现成的文件,我自己测试暂时没什么异常。 如果不方便使用原来编译方式的话就暂时这样吧,感谢您一直以来对`frp`这个项目的付出! https://github.com/laipeng668/packages/commit/2759055d91c46cd66aaaed2f3ab0620ee3e3d323
Author
Owner

@gmd20 commented on GitHub (Feb 11, 2026):

web ui 可以作为一个feature,做一个编译开关吧

<!-- gh-comment-id:3881839119 --> @gmd20 commented on GitHub (Feb 11, 2026): web ui 可以作为一个feature,做一个编译开关吧
Author
Owner

@fatedier commented on GitHub (Feb 11, 2026):

web ui 可以作为一个feature,做一个编译开关吧

可以,后面加

<!-- gh-comment-id:3881850552 --> @fatedier commented on GitHub (Feb 11, 2026): > web ui 可以作为一个feature,做一个编译开关吧 可以,后面加
Author
Owner

@laipeng668 commented on GitHub (Feb 11, 2026):

非常感谢!我已经到OpenWrt提交PR了,有二进制的直接调用现成文件,没有二进制的则需要编译,但是没有WebUI
https://github.com/openwrt/packages/pull/28471

<!-- gh-comment-id:3881918304 --> @laipeng668 commented on GitHub (Feb 11, 2026): 非常感谢!我已经到`OpenWrt`提交`PR`了,有二进制的直接调用现成文件,没有二进制的则需要编译,但是没有`WebUI`。 https://github.com/openwrt/packages/pull/28471
Author
Owner

@github-actions[bot] commented on GitHub (Feb 26, 2026):

Issues go stale after 14d of inactivity. Stale issues rot after an additional 3d of inactivity and eventually close.

<!-- gh-comment-id:3963177117 --> @github-actions[bot] commented on GitHub (Feb 26, 2026): Issues go stale after 14d of inactivity. Stale issues rot after an additional 3d of inactivity and eventually close.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/frp#4026
No description provided.