From 55a015a2b4884b745538954b6b4227a29f4d7ad3 Mon Sep 17 00:00:00 2001 From: Michael Heimpold Date: Tue, 14 Mar 2023 20:53:07 +0100 Subject: [PATCH 01/15] pcre2: add host build (refs #20604) This adds a host build which can be used later by tools, e.g. swig - which in turn is used by gensio package to provide python bindings. While at, switch back from $(AUTORELEASE). Signed-off-by: Michael Heimpold --- libs/pcre2/Makefile | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/libs/pcre2/Makefile b/libs/pcre2/Makefile index 1bd6d2759..8abdd5d71 100644 --- a/libs/pcre2/Makefile +++ b/libs/pcre2/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=pcre2 PKG_VERSION:=10.37 -PKG_RELEASE:=$(AUTORELEASE) +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=@SF/pcre/$(PKG_NAME)/$(PKG_VERSION) @@ -28,6 +28,7 @@ PKG_CONFIG_DEPENDS:=\ PKG_BUILD_DEPENDS:=zlib include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/host-build.mk include $(INCLUDE_DIR)/cmake.mk define Package/libpcre2/default @@ -55,6 +56,18 @@ define Package/libpcre2-32 TITLE:=A Perl Compatible Regular Expression library (32bit support) endef +CMAKE_HOST_OPTIONS += \ + -DBUILD_SHARED_LIBS=ON \ + -DPCRE2_BUILD_PCRE2_8=ON \ + -DPCRE2_BUILD_PCRE2_16=ON \ + -DPCRE2_BUILD_PCRE2_32=ON \ + -DPCRE2_DEBUG=OFF \ + -DPCRE2_DISABLE_PERCENT_ZT=ON \ + -DPCRE2_SUPPORT_JIT=OFF \ + -DPCRE2_SHOW_REPORT=OFF \ + -DPCRE2_BUILD_PCRE2GREP=OFF \ + -DPCRE2_BUILD_TESTS=OFF + CMAKE_OPTIONS += \ -DBUILD_SHARED_LIBS=ON \ -DPCRE2_BUILD_PCRE2_8=ON \ @@ -92,3 +105,4 @@ endef $(eval $(call BuildPackage,libpcre2)) $(eval $(call BuildPackage,libpcre2-16)) $(eval $(call BuildPackage,libpcre2-32)) +$(eval $(call HostBuild)) From 15af23b011ad4248c3bb476dbbd196fce7091075 Mon Sep 17 00:00:00 2001 From: Michael Heimpold Date: Tue, 14 Mar 2023 20:54:59 +0100 Subject: [PATCH 02/15] swig: enable pcre2 support (refs #20604) Now since pcre2 provides a host build, let's use it. This is required for e.g. gensio package to provide python bindings. Signed-off-by: Michael Heimpold --- utils/swig/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/swig/Makefile b/utils/swig/Makefile index 03378e196..ecd128f52 100644 --- a/utils/swig/Makefile +++ b/utils/swig/Makefile @@ -20,6 +20,7 @@ PKG_LICENSE_FILES:=LICENSE PKG_HOST_ONLY:=1 HOST_BUILD_PARALLEL:=1 +HOST_BUILD_DEPENDS:=pcre2/host include $(INCLUDE_DIR)/host-build.mk include $(INCLUDE_DIR)/package.mk @@ -33,7 +34,7 @@ define Package/swig endef HOST_CONFIGURE_ARGS += \ - --without-pcre + --with-pcre define Package/swig/description tool that generates bindings for various languages From 5b3575eba13b8da412dce26b009ac90870f49e8d Mon Sep 17 00:00:00 2001 From: Michael Heimpold Date: Tue, 14 Mar 2023 20:58:04 +0100 Subject: [PATCH 03/15] gensio: fix build of Python binding (refs #20604) We need the host build of swig only. And the binding uses libgensiocpp - not the plain C library, so fix the dependency. Signed-off-by: Michael Heimpold --- net/gensio/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/gensio/Makefile b/net/gensio/Makefile index 2744a2acc..f9d6ccc9d 100644 --- a/net/gensio/Makefile +++ b/net/gensio/Makefile @@ -33,7 +33,7 @@ PKG_CONFIG_DEPENDS:= \ CONFIG_GENSIO_TCL \ CONFIG_GENSIO_SSHD -PKG_BUILD_DEPENDS:=PACKAGE_python3-gensio:swig +PKG_BUILD_DEPENDS:=PACKAGE_python3-gensio:swig/host include $(INCLUDE_DIR)/package.mk include ../../lang/python/python3-package.mk @@ -132,7 +132,7 @@ $(call Package/gensio/Default) TITLE+= (Python3-bindings) SECTION:=lang CATEGORY:=Languages - DEPENDS:=+PACKAGE_python3-gensio:python3-light +libgensio + DEPENDS:=+PACKAGE_python3-gensio:python3-light +libgensiocpp endef define Package/python3-gensio/description From 31a18de442aac1b806d81e95b141d533ee95a2af Mon Sep 17 00:00:00 2001 From: Michael Heimpold Date: Tue, 14 Mar 2023 21:00:14 +0100 Subject: [PATCH 04/15] gensio: move package into Python submenu While at, fine-tune the description string slightly. Signed-off-by: Michael Heimpold --- net/gensio/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/gensio/Makefile b/net/gensio/Makefile index f9d6ccc9d..c49da8e13 100644 --- a/net/gensio/Makefile +++ b/net/gensio/Makefile @@ -129,9 +129,10 @@ endef define Package/python3-gensio $(call Package/gensio/Default) - TITLE+= (Python3-bindings) + TITLE+= (Python bindings) SECTION:=lang CATEGORY:=Languages + SUBMENU:=Python DEPENDS:=+PACKAGE_python3-gensio:python3-light +libgensiocpp endef From 65c9414e166c0bf97a47a388ecbd18e93df29fd2 Mon Sep 17 00:00:00 2001 From: Tianling Shen Date: Wed, 22 Mar 2023 15:19:24 +0800 Subject: [PATCH 05/15] dnslookup: Update to 1.9.1 Signed-off-by: Tianling Shen --- net/dnslookup/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/dnslookup/Makefile b/net/dnslookup/Makefile index 522e49812..d4da7b21b 100644 --- a/net/dnslookup/Makefile +++ b/net/dnslookup/Makefile @@ -5,12 +5,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=dnslookup -PKG_VERSION:=1.8.1 +PKG_VERSION:=1.9.1 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/ameshkov/dnslookup/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=51b9cbc626e091eb7a98bc326ad026f36d95f8b5917f71f13011466fcdddb3f9 +PKG_HASH:=ac108b80f5d7b510ce1fdb1880470d177c5b89cf228c34302442527cf68bb76e PKG_MAINTAINER:=Tianling Shen PKG_LICENSE:=MIT From 1f5bc3f0f143536892302da6a1436e235e860a54 Mon Sep 17 00:00:00 2001 From: Dirk Brenken Date: Wed, 22 Mar 2023 19:15:01 +0100 Subject: [PATCH 06/15] banip: update to 0.8.2-3 * raise max. timeouts from 10 to 30 seconds to stabilize the autodetection on slow hardware * made interface trigger action configurable, set 'ban_triggeraction' accordingly (default: 'start') * made E-Mail notifications configurable to receive status E-Mais with every banIP run, set 'ban_mailnotification' accordingly (default: disabled) * small fixes & optimizations * readme update Signed-off-by: Dirk Brenken --- net/banip/Makefile | 2 +- net/banip/files/README.md | 2 ++ net/banip/files/banip-functions.sh | 21 +++++++++++---------- net/banip/files/banip-service.sh | 15 ++++++++------- net/banip/files/banip.init | 5 +++-- 5 files changed, 25 insertions(+), 20 deletions(-) diff --git a/net/banip/Makefile b/net/banip/Makefile index 7e1d5265a..9983e08b0 100644 --- a/net/banip/Makefile +++ b/net/banip/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=banip PKG_VERSION:=0.8.2 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_LICENSE:=GPL-3.0-or-later PKG_MAINTAINER:=Dirk Brenken diff --git a/net/banip/files/README.md b/net/banip/files/README.md index 8e7afa35d..f4502816b 100644 --- a/net/banip/files/README.md +++ b/net/banip/files/README.md @@ -148,6 +148,7 @@ Available commands: | ban_dev | list | - / autodetect | wan device(s), e.g. 'eth2' | | ban_trigger | list | - | logical startup trigger interface(s), e.g. 'wan' | | ban_triggerdelay | option | 10 | trigger timeout before banIP processing begins | +| ban_triggeraction | option | start | trigger action on ifup events, e.g. start, restart or reload | | ban_deduplicate | option | 1 | deduplicate IP addresses across all active sets | | ban_splitsize | option | 0 | split ext. sets after every n lines/members (saves RAM) | | ban_cores | option | - / autodetect | limit the cpu cores used by banIP (saves RAM) | @@ -168,6 +169,7 @@ Available commands: | ban_mailsender | option | no-reply@banIP | sender address for banIP related notification E-Mails | | ban_mailtopic | option | banIP notification | topic for banIP related notification E-Mails | | ban_mailprofile | option | ban_notify | mail profile used in 'msmtp' for banIP related notification E-Mails | +| ban_mailnotification | option | 0 | receive E-Mail notifications with every banIP run | | ban_reportelements | option | 1 | list set elements in the report, disable this to speed up the report significantly | | ban_resolver | option | - | external resolver used for DNS lookups | diff --git a/net/banip/files/banip-functions.sh b/net/banip/files/banip-functions.sh index 6e231a652..692a9bd49 100644 --- a/net/banip/files/banip-functions.sh +++ b/net/banip/files/banip-functions.sh @@ -34,6 +34,7 @@ ban_mailsender="no-reply@banIP" ban_mailreceiver="" ban_mailtopic="banIP notification" ban_mailprofile="ban_notify" +ban_mailnotifcation="0" ban_reportelements="1" ban_nftloglevel="warn" ban_nftpriority="-200" @@ -168,6 +169,7 @@ f_log() { fi if [ "${class}" = "err" ]; then f_genstatus "error" + [ "${ban_mailnotification}" = "1" ] && [ -n "${ban_mailreceiver}" ] && [ -x "${ban_mailcmd}" ] && f_mail f_rmdir "${ban_tmpdir}" rm -rf "${ban_lock}" exit 1 @@ -351,10 +353,10 @@ f_getif() { # get wan devices # f_getdev() { - local dev iface update="0" cnt="0" cnt_max="10" + local dev iface update="0" cnt="0" cnt_max="30" if [ "${ban_autodetect}" = "1" ]; then - while [ -z "${ban_dev}" ] && [ "${cnt}" -le "${cnt_max}" ]; do + while [ "${cnt}" -lt "${cnt_max}" ] && [ -z "${ban_dev}" ]; do network_flush_cache for iface in ${ban_ifv4} ${ban_ifv6}; do network_get_device dev "${iface}" @@ -1032,6 +1034,7 @@ f_report() { local detail set_details jsnval timestamp autoadd_allow autoadd_block sum_sets sum_setinput sum_setforwardwan sum_setforwardlan sum_setelements sum_cntinput sum_cntforwardwan sum_cntforwardlan [ -z "${ban_dev}" ] && f_conf + f_system f_mkdir "${ban_reportdir}" report_jsn="${ban_reportdir}/ban_report.jsn" report_txt="${ban_reportdir}/ban_report.txt" @@ -1182,9 +1185,10 @@ f_report() { [ -s "${report_jsn}" ] && cat "${report_jsn}" ;; "mail") - [ -x "${ban_mailcmd}" ] && f_mail + [ -n "${ban_mailreceiver}" ] && [ -x "${ban_mailcmd}" ] && f_mail ;; esac + rm -f "${report_txt}" } # set search @@ -1212,7 +1216,7 @@ f_search() { printf "%s\n%s\n%s\n" ":::" "::: banIP Search" ":::" printf "%s\n" " Looking for IP '${ip}' on $(date "+%Y-%m-%d %H:%M:%S")" printf "%s\n" " ---" - cnt=1 + cnt="1" for set in ${table_sets}; do ( if "${ban_nftcmd}" get element inet banIP "${set}" "{ ${ip} }" >/dev/null 2>&1; then @@ -1257,11 +1261,8 @@ f_mail() { # load mail template # - [ ! -r "${ban_mailtemplate}" ] && f_log "err" "the mail template is missing" - . "${ban_mailtemplate}" - - [ -z "${ban_mailreceiver}" ] && f_log "err" "the option 'ban_mailreceiver' is missing" - [ -z "${mail_text}" ] && f_log "err" "the 'mail_text' is empty" + [ -r "${ban_mailtemplate}" ] && . "${ban_mailtemplate}" || f_log "info" "the mail template is missing" + [ -z "${mail_text}" ] && f_log "info" "the 'mail_text' template variable is empty" [ "${ban_debug}" = "1" ] && msmtp_debug="--debug" # send mail @@ -1273,7 +1274,7 @@ f_mail() { f_log "info" "failed to send status mail (${?})" fi - f_log "debug" "f_mail ::: template: ${ban_mailtemplate}, profile: ${ban_mailprofile}, receiver: ${ban_mailreceiver}, rc: ${?}" + f_log "debug" "f_mail ::: notification: ${ban_mailnotification}, template: ${ban_mailtemplate}, profile: ${ban_mailprofile}, receiver: ${ban_mailreceiver}, rc: ${?}" } # check banIP availability and initial sourcing diff --git a/net/banip/files/banip-service.sh b/net/banip/files/banip-service.sh index 94c1d47ed..7e3cdb3bb 100755 --- a/net/banip/files/banip-service.sh +++ b/net/banip/files/banip-service.sh @@ -29,12 +29,12 @@ f_mkfile "${ban_allowlist}" # if [ "${ban_action}" != "reload" ]; then if [ -x "${ban_fw4cmd}" ]; then - cnt=0 - while [ "${cnt}" -lt "10" ] && ! /etc/init.d/firewall status | grep -q "^active"; do + cnt="0" + while [ "${cnt}" -lt "30" ] && ! /etc/init.d/firewall status >/dev/null 2>&1; do cnt="$((cnt + 1))" sleep 1 done - if ! /etc/init.d/firewall status | grep -q "^active"; then + if ! /etc/init.d/firewall status >/dev/null 2>&1; then f_log "err" "nft based firewall/fw4 not functional" fi else @@ -125,7 +125,7 @@ for feed in allowlist ${ban_feed} blocklist; do done wait -# start domain lookup +# start background domain lookup # f_log "info" "start detached banIP domain lookup" (f_lookup "allowlist") & @@ -133,15 +133,16 @@ hold="$((cnt % ban_cores))" [ "${hold}" = "0" ] && wait (f_lookup "blocklist") & -# tidy up +# end processing # f_rmset f_rmdir "${ban_tmpdir}" f_genstatus "active" +[ "${ban_mailnotification}" = "1" ] && [ -n "${ban_mailreceiver}" ] && [ -x "${ban_mailcmd}" ] && f_mail f_log "info" "finished banIP download processes" rm -rf "${ban_lock}" -# start log service +# start detached log service # if [ -x "${ban_logreadcmd}" ] && [ -n "${ban_logterm%%??}" ]; then f_log "info" "start detached banIP log service" @@ -184,7 +185,7 @@ if [ -x "${ban_logreadcmd}" ] && [ -n "${ban_logterm%%??}" ]; then fi done -# start no-op service loop +# start detached no-op service loop # else f_log "info" "start detached no-op banIP service (logterms are missing)" diff --git a/net/banip/files/banip.init b/net/banip/files/banip.init index c56004279..46df4d7fc 100755 --- a/net/banip/files/banip.init +++ b/net/banip/files/banip.init @@ -94,14 +94,15 @@ survey() { } service_triggers() { - local iface trigger delay + local iface trigger trigger_action delay trigger="$(uci_get banip global ban_trigger)" + trigger_action="$(uci_get banip global ban_triggeraction "start")" delay="$(uci_get banip global ban_triggerdelay "10")" PROCD_RELOAD_DELAY=$((delay * 1000)) for iface in ${trigger}; do - procd_add_interface_trigger "interface.*.up" "${iface}" "${ban_init}" "start" + procd_add_interface_trigger "interface.*.up" "${iface}" "${ban_init}" "${trigger_action}" done procd_add_reload_trigger "banip" } From 513f751bcb10837b4772b1e505fe7d00362b8a82 Mon Sep 17 00:00:00 2001 From: Tianling Shen Date: Sun, 19 Mar 2023 13:39:55 +0800 Subject: [PATCH 07/15] rust: remove useless tarball package These tarball cannot be reused, so simply drop them. Also move cargo config to a file instead of using echo command. Signed-off-by: Tianling Shen --- lang/rust/Makefile | 90 ++++++++++++------------------------ lang/rust/files/cargo-config | 8 ++++ 2 files changed, 38 insertions(+), 60 deletions(-) create mode 100644 lang/rust/files/cargo-config diff --git a/lang/rust/Makefile b/lang/rust/Makefile index 2b247069a..104bb8510 100644 --- a/lang/rust/Makefile +++ b/lang/rust/Makefile @@ -11,7 +11,7 @@ PKG_RELEASE:=1 PKG_SOURCE:=rustc-$(PKG_VERSION)-src.tar.gz PKG_SOURCE_URL:=https://static.rust-lang.org/dist/ PKG_HASH:=eaf4d8b19f23a232a4770fb53ab5e7acdedec11da1d02b0e5d491ca92ca96d62 -HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/rustc-$(PKG_VERSION)-src/ +HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/rustc-$(PKG_VERSION)-src PKG_MAINTAINER:=Luca Barbato PKG_LICENSE:=Apache-2.0 MIT @@ -22,15 +22,23 @@ PKG_HOST_ONLY:=1 include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/host-build.mk - -# rust environment variables include ./rust-host.mk -# Rust Temp Directory -RUST_TMP_DIR:=$(TMP_DIR)/rust-install +define Package/rust + SECTION:=lang + CATEGORY:=Languages + SUBMENU:=Rust + TITLE:=Rust Programming Language Compiler + URL:=https://www.rust-lang.org/ + DEPENDS:=$(RUST_ARCH_DEPENDS) \ + +pkg-config +libunwind +libopenssl +liblzma +libc +endef -RUST_INSTALL_HOST_FILENAME:=$(PKG_NAME)-$(PKG_VERSION)-$(RUSTC_HOST_ARCH)-install.tar.xz -RUST_INSTALL_TARGET_FILENAME:=$(PKG_NAME)-$(PKG_VERSION)-$(RUSTC_TARGET_ARCH)-install.tar.xz +define Package/rust/description + Rust is a multi-paradigm, general-purpose programming language designed for performance + and safety, especially safe concurrency. Rust is syntactically similar to C++, but can + guarantee memory safety by using a borrow checker to validate references. +endef # Rust-lang has an uninstall script RUST_UNINSTALL:=$(CARGO_HOME)/lib/rustlib/uninstall.sh @@ -68,69 +76,31 @@ HOST_CONFIGURE_ARGS = \ --enable-cargo-native-static \ $(TARGET_CONFIGURE_ARGS) -define Host/Prepare - # Ensure rust temp directory - [ -d $(RUST_TMP_DIR) ] || \ - mkdir -p $(RUST_TMP_DIR) - - $(call Host/Prepare/Default) -endef - define Host/Uninstall # Call the Uninstall script [ -f $(RUST_UNINSTALL) ] && \ - $(BASH) $(RUST_UNINSTALL) || echo No Uninstall - - rm -rf $(RUST_TMP_DIR) + $(BASH) $(RUST_UNINSTALL) || echo No Uninstall endef -# Makes and then packages the dist artifacts define Host/Compile - cd $(HOST_BUILD_DIR) && \ - $(PYTHON) x.py --config ./config.toml dist build-manifest cargo llvm-tools \ - rustc rust-std rust-src - - $(call Host/PackageDist) -endef - -# Distribution Artifacts are packaged by Host/PackageDist -# We just need to extract and install -define Host/Install - $(TAR) -C $(RUST_TMP_DIR) -xJf $(DL_DIR)/$(RUST_INSTALL_HOST_FILENAME) && \ - $(TAR) -C $(RUST_TMP_DIR) -xJf $(DL_DIR)/$(RUST_INSTALL_TARGET_FILENAME) - - cd $(RUST_TMP_DIR) && \ - find -iname "*.xz" -exec tar -xJf {} ";" && \ - find ./* -type f -name install.sh -execdir sh {} --prefix=$(CARGO_HOME) --disable-ldconfig \; - - echo -e "[target.$(RUSTC_TARGET_ARCH)]\nlinker = \"$(TARGET_CC_NOCACHE)\"\nrustflags = [\"-Ctarget-feature=-crt-static\", \"-Clink-args=$(RUSTC_LDFLAGS)\"]" > $(CARGO_HOME)/config - echo -e "\n[profile.stripped]\ninherits = \"release\"\nopt-level = \"s\"\nstrip = true" >> $(CARGO_HOME)/config -endef - -# Packages the Distribution Artifacts into HOST and TARGET bundles. -define Host/PackageDist ( \ - cd $(HOST_BUILD_DIR)/build/dist ; \ - $(TAR) -cJf $(DL_DIR)/$(RUST_INSTALL_TARGET_FILENAME) \ - rust-*-$(RUSTC_TARGET_ARCH).tar.xz ; \ - $(TAR) -cJf $(DL_DIR)/$(RUST_INSTALL_HOST_FILENAME) \ - --exclude rust-*-$(RUSTC_TARGET_ARCH).tar.xz *.xz ; \ + cd $(HOST_BUILD_DIR) ; \ + $(PYTHON) x.py --config ./config.toml dist build-manifest cargo llvm-tools \ + rustc rust-std rust-src ; \ ) endef -define Package/rust - SECTION:=lang - CATEGORY:=Languages - TITLE:=Rust Programming Language Compiler - URL:=https://www.rust-lang.org/ - DEPENDS:=$(RUST_ARCH_DEPENDS) \ - +pkg-config +libunwind +libopenssl +liblzma +libc -endef - -define Package/rust/description - Rust is a multi-paradigm, general-purpose programming language designed for performance - and safety, especially safe concurrency. Rust is syntactically similar to C++, but can - guarantee memory safety by using a borrow checker to validate references. +define Host/Install + ( \ + cd $(HOST_BUILD_DIR)/build/dist ; \ + find -iname "*.xz" -exec tar -xJf {} \; ; \ + find ./* -type f -name install.sh -execdir sh {} --prefix=$(CARGO_HOME) --disable-ldconfig \; ; \ + \ + sed -e 's|@RUSTC_TARGET_ARCH@|$(RUSTC_TARGET_ARCH)|g' \ + -e 's|@TARGET_CC_NOCACHE@|$(TARGET_CC_NOCACHE)|g' \ + -e 's|@RUSTC_LDFLAGS@|$(RUSTC_LDFLAGS)|g' \ + $(CURDIR)/files/cargo-config > $(CARGO_HOME)/config ; \ + ) endef define Package/rust/config diff --git a/lang/rust/files/cargo-config b/lang/rust/files/cargo-config new file mode 100644 index 000000000..2ed512931 --- /dev/null +++ b/lang/rust/files/cargo-config @@ -0,0 +1,8 @@ +[target.@RUSTC_TARGET_ARCH@] +linker = "@TARGET_CC_NOCACHE@" +rustflags = ["-Ctarget-feature=-crt-static", "-Clink-args=@RUSTC_LDFLAGS@"] + +[profile.stripped] +inherits = "release" +opt-level = "s" +strip = true From 473bc722ea3f5d3171c7e08abd6818603be291fc Mon Sep 17 00:00:00 2001 From: Tianling Shen Date: Sun, 19 Mar 2023 13:43:06 +0800 Subject: [PATCH 08/15] rust: remove useless target dependencies and configuration They are for the target build which is not supported yet, drop them. Signed-off-by: Tianling Shen --- lang/rust/Config.in | 95 ------------------------------- lang/rust/Makefile | 7 +-- lang/rust/rust_config.mk | 119 --------------------------------------- 3 files changed, 1 insertion(+), 220 deletions(-) delete mode 100644 lang/rust/Config.in delete mode 100644 lang/rust/rust_config.mk diff --git a/lang/rust/Config.in b/lang/rust/Config.in deleted file mode 100644 index 490322f48..000000000 --- a/lang/rust/Config.in +++ /dev/null @@ -1,95 +0,0 @@ -# Rust Language Options -menu "Compiler Options" - visible if PACKAGE_rust - - config RUST_DEBUG - bool "Enables Debugging Environment (--enable-debug)" - - config RUST_DOCS - bool "Build standard library documentation (--enable-docs)" - - config RUST_COMPILER_DOCS - bool "Build compiler documentation (--enable-compiler-docs)" - - config RUST_OPTIMIZE_TESTS - bool "Build tests with optimizations (--enable-optimized-tests)" - - config RUST_PARALLEL - bool "Build with multi-threaded support (--enable-parallel-compiler)" - - config RUST_VERBOSE_TESTS - bool "Enable verbose output when running tests (--enable-verbose-tests)" - - config RUST_CCACHE - bool "Build with ccache enabled (--enable-ccache)" - - config RUST_LLVM_STATIC - bool "Statically link to libstdc++ to LLVM (--enable-llvm-static-stdccp)" - - config RUST_LLVM_SHARED - bool "Prefer shared linking to LLVM (--enable-llvm-link-shared)" - - config RUST_CODEGEN_TESTS - bool "Run the src/test/codegen tests (--enable-codegen-tests)" - - config RUST_OPTION_CHECKING - bool "Complain about unrecognized options in this configure script (--enable-option-checking)" - default y - - config RUST_ENABLE_NINJA - bool "Build LLVM using the Ninja generator (--enable-ninja)" - default y - - config RUST_LOCKED_DEPS - bool "Force Cargo.lock to be up to date (--enable-locked-deps)" - - config RUST_VENDOR - bool "Enable usage of vendored Rust crates (--enable-vendor)" - - config RUST_SANITIZERS - bool "Build the sanitizer runtimes (asan, lsan, msan, tsan) (--enable-sanitizers)" - - config RUST_DIST_SRC - bool "When building tarballs enables building a source tarball (--enable-dist-src)" - - config RUST_CARGO_NATIVE_STATIC - bool "Build static native libraries in Cargo (--enable-cargo-native-static)" - - config RUST_PROFILER - bool "Build the profiler runtime (--enable-profiler)" - - config RUST_FULL_TOOLS - bool "Build all tools (--enable-full-tools)" - - config RUST_MISSING_TOOLS - bool "Allow failures when building tools (--enable-missing-tools)" - default y - - config RUST_USE_LIBCXX - bool "Build LLVM with libc++ (--enable-use-libcxx)" - - config RUST_CONTROL_FLOW_GUARD - bool "Enable Control Flow Guard (--enable-control-flow-guard)" - - config RUST_OPTIMIZE_LLVM - bool "Build optimized LLVM (--enable-optimize-llvm)" - default y - - config RUST_LLVM_ASSERTIONS - bool "Build LLVM with assertions (--enable-llvm-assertions)" - - config RUST_DEBUG_ASSERTIONS - bool "Build with debugging assertions (--enable-debug-assertions)" - - config RUST_LLVM_RELEASE_DEBUGINFO - bool "Build LLVM with debugger metadata (--enable-llvm-release-debuginfo)" - - config RUST_MANAGE_SUBMODULES - bool "Let the build manage the git submodules (--enable-manage-submodules)" - default y - - config RUST_FULL_BOOTSTRAP - bool "Full Bootstrap - Build three compilers instead of two (--enable-full-bootstrap)" - -endmenu - diff --git a/lang/rust/Makefile b/lang/rust/Makefile index 104bb8510..f01e75e0b 100644 --- a/lang/rust/Makefile +++ b/lang/rust/Makefile @@ -30,8 +30,7 @@ define Package/rust SUBMENU:=Rust TITLE:=Rust Programming Language Compiler URL:=https://www.rust-lang.org/ - DEPENDS:=$(RUST_ARCH_DEPENDS) \ - +pkg-config +libunwind +libopenssl +liblzma +libc + DEPENDS:=$(RUST_ARCH_DEPENDS) endef define Package/rust/description @@ -103,9 +102,5 @@ define Host/Install ) endef -define Package/rust/config - source "$(SOURCE)/Config.in" -endef - $(eval $(call HostBuild)) $(eval $(call BuildPackage,rust)) diff --git a/lang/rust/rust_config.mk b/lang/rust/rust_config.mk deleted file mode 100644 index 75017f8a7..000000000 --- a/lang/rust/rust_config.mk +++ /dev/null @@ -1,119 +0,0 @@ -ifeq ($(CONFIG_RUST_DEBUG),y) -CONFIGURE_ARGS += --enable-debug -endif - -ifeq ($(CONFIG_RUST_DOCS),y) -CONFIGURE_ARGS += --enable-docs -else -CONFIGURE_ARGS += --disable-docs -endif - -ifeq ($(CONFIG_RUST_COMPILER_DOCS),y) -CONFIGURE_ARGS += --enable-compiler-docs -else -CONFIGURE_ARGS += --disable-compiler-docs -endif - -ifeq ($(CONFIG_RUST_OPTIMIZE_TESTS),y) -CONFIGURE_ARGS += --enable-optimize-tests -endif - -ifeq ($(CONFIG_RUST_PARALLEL),y) -CONFIGURE_ARGS += --enable-parallel-compiler -endif - -ifeq ($(CONFIG_RUST_VERBOSE_TESTS),y) -CONFIGURE_ARGS += --enable-verbose-tests -endif - -ifeq ($(filter $(CONFIG_RUST_CCACHE) $(CCACHE),y),) -CONFIGURE_ARGS += --enable-ccache -endif - -ifeq ($(CONFIG_RUST_CCACHE),y) -CONFIGURE_ARGS += --enable-ccache -endif - -ifeq ($(CONFIG_RUST_LLVM_STATIC),y) -CONFIGURE_ARGS += --enable-llvm-static-stdcpp -endif - -ifeq ($(CONFIG_RUST_LLVM_SHARED),y) -CONFIGURE_ARGS += --enable-llvm-link-shared -endif - -ifeq ($(CONFIG_RUST_CODEGEN_TESTS),y) -CONFIGURE_ARGS += --enable-codegen-tests -endif - -ifeq ($(CONFIG_RUST_OPTION_CHECKING),y) -CONFIGURE_ARGS += --enable-option-checking -endif - -ifeq ($(CONFIG_RUST_ENABLE_NINJA),y) -CONFIGURE_ARGS += --enable-ninja -endif - -ifeq ($(CONFIG_RUST_LOCKED_DEPS),y) -CONFIGURE_ARGS += --enable-locked-deps -endif - -ifeq ($(CONFIG_RUST_VENDOR),y) -CONFIGURE_ARGS += --enable-vendor -endif - -ifeq ($(CONFIG_RUST_SANITIZERS),y) -CONFIGURE_ARGS += --enable-sanitizers -endif - -ifeq ($(CONFIG_RUST_DIST_SRC),y) -CONFIGURE_ARGS += --enable-dist-src -endif - -ifeq ($(CONFIG_RUST_CARGO_NATIVE_STATIC),y) -CONFIGURE_ARGS += --enable-cargo-native-static -endif - -ifeq ($(CONFIG_RUST_PROFILER),y) -CONFIGURE_ARGS += --enable-profiler -endif - -ifeq ($(CONFIG_RUST_FULL_TOOLS),y) -CONFIGURE_ARGS += --enable-full-tools -endif - -ifeq ($(CONFIG_RUST_MISSING_TOOLS),y) -CONFIGURE_ARGS += --enable-missing-tools -endif - -ifeq ($(CONFIG_RUST_USE_LIBCXX),y) -CONFIGURE_ARGS += --enable-use-libcxx -endif - -ifeq ($(CONFIG_RUST_CONTROL_FLOW_GUARD),y) -CONFIGURE_ARGS += --enable-control-flow-guard -endif - -ifeq ($(CONFIG_RUST_OPTIMIZE_LLVM),y) -CONFIGURE_ARGS += --enable-optimize-llvm -endif - -ifeq ($(CONFIG_RUST_LLVM_ASSERTIONS),y) -CONFIGURE_ARGS += --enable-llvm-assertions -endif - -ifeq ($(CONFIG_RUST_DEBUG_ASSERTIONS),y) -CONFIGURE_ARGS += --enable-debug-assertions -endif - -ifeq ($(CONFIG_RUST_LLVM_RELEASE_DEBUGINFO),y) -CONFIGURE_ARGS += --enable-llvm-release-debuginfo -endif - -ifeq ($(CONFIG_RUST_MANAGE_SUBMODULES),y) -CONFIGURE_ARGS += --enable-manage-submodules -endif - -ifeq ($(CONFIG_RUST_FULL_BOOTSTRAP),y) -CONFIGURE_ARGS += --enable-full-bootstrap -endif From e7016bb4bc20f3711840134440be178bf8d0f72d Mon Sep 17 00:00:00 2001 From: Tianling Shen Date: Sun, 19 Mar 2023 14:07:48 +0800 Subject: [PATCH 09/15] rust: refactor build helper Added new RustBinPackage, RustBinHostBuild wrapper. Added new RUST_PKG_FEATURES flag. Moved CARGO_HOME to STAGING_DIR_HOSTPKG. Overrode default Build/Compile and Host/Compile to Cargo build. Signed-off-by: Tianling Shen --- lang/rust/Makefile | 4 +- lang/rust/rust-host-build.mk | 45 ++++++++++++++++++ lang/rust/rust-package.mk | 54 +++++++++++++++------- lang/rust/{rust-host.mk => rust-values.mk} | 12 +---- 4 files changed, 86 insertions(+), 29 deletions(-) create mode 100644 lang/rust/rust-host-build.mk rename lang/rust/{rust-host.mk => rust-values.mk} (77%) diff --git a/lang/rust/Makefile b/lang/rust/Makefile index f01e75e0b..1c47fbf76 100644 --- a/lang/rust/Makefile +++ b/lang/rust/Makefile @@ -20,9 +20,9 @@ PKG_LICENSE_FILES:=LICENSE-APACHE LICENSE-MIT HOST_BUILD_DEPENDS:=python3/host PKG_HOST_ONLY:=1 -include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/host-build.mk -include ./rust-host.mk +include $(INCLUDE_DIR)/package.mk +include ./rust-values.mk define Package/rust SECTION:=lang diff --git a/lang/rust/rust-host-build.mk b/lang/rust/rust-host-build.mk new file mode 100644 index 000000000..39cf1f23c --- /dev/null +++ b/lang/rust/rust-host-build.mk @@ -0,0 +1,45 @@ +# SPDX-License-Identifier: GPL-2.0-only +# +# Copyright (C) 2023 Luca Barbato and Donald Hoskins + +ifeq ($(origin RUST_INCLUDE_DIR),undefined) + RUST_INCLUDE_DIR:=$(dir $(lastword $(MAKEFILE_LIST))) +endif +include $(RUST_INCLUDE_DIR)/rust-values.mk + +# $(1) path to the package (optional) +# $(2) additional arguments to cargo (optional) +define Host/Compile/Cargo + ( \ + cd $(HOST_BUILD_DIR) ; \ + export PATH="$(CARGO_HOME)/bin:$(PATH)" ; \ + CARGO_HOME=$(CARGO_HOME) \ + CC=$(HOSTCC_NOCACHE) \ + cargo install -v \ + --profile stripped \ + $(if $(RUST_PKG_FEATURES),--features "$(RUST_PKG_FEATURES)") \ + --root $(HOST_INSTALL_DIR) \ + --path "$(if $(strip $(1)),$(strip $(1)),.)" $(2) ; \ + ) +endef + +define Host/Uninstall/Cargo + ( \ + cd $(HOST_BUILD_DIR) ; \ + export PATH="$(CARGO_HOME)/bin:$(PATH)" ; \ + CARGO_HOME=$(CARGO_HOME) \ + CC=$(HOSTCC_NOCACHE) \ + cargo uninstall -v \ + --root $(HOST_INSTALL_DIR) || true ; \ + ) +endef + +define RustBinHostBuild + define Host/Install + $(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/bin + $(INSTALL_BIN) $(HOST_INSTALL_DIR)/bin/* $(STAGING_DIR_HOSTPKG)/bin/ + endef +endef + +Host/Compile=$(call Host/Compile/Cargo) +Host/Uninstall=$(call Host/Uninstall/Cargo) diff --git a/lang/rust/rust-package.mk b/lang/rust/rust-package.mk index 54c2aa89a..4e39009cc 100644 --- a/lang/rust/rust-package.mk +++ b/lang/rust/rust-package.mk @@ -2,27 +2,49 @@ # # Copyright (C) 2023 Luca Barbato and Donald Hoskins -rust_mk_path:=$(dir $(lastword $(MAKEFILE_LIST))) -include $(rust_mk_path)rust-host.mk +# Variables (all optional) to be set in package Makefiles: +# +# RUST_PKG_FEATURES - list of options, default empty +# +# Space or comma separated list of features to activate +# +# e.g. RUST_PKG_FEATURES:=enable-foo,with-bar -# $(1) path to the package -# $(2) additional arguments to cargo -define Host/Compile/Cargo - ( \ - cd $(HOST_BUILD_DIR) ; \ - export PATH="$(CARGO_HOME)/bin:$(PATH)" ; \ - CARGO_HOME=$(CARGO_HOME) CC=$(HOSTCC) \ - cargo install -v --profile stripped --root $(HOST_INSTALL_DIR) --path "$(if $(strip $(1)),$(strip $(1)),.)" $(2) ; \ - ) -endef +ifeq ($(origin RUST_INCLUDE_DIR),undefined) + RUST_INCLUDE_DIR:=$(dir $(lastword $(MAKEFILE_LIST))) +endif +include $(RUST_INCLUDE_DIR)/rust-values.mk -# $(1) path to the package -# $(2) additional arguments to cargo +# Support only a subset for now. +RUST_ARCH_DEPENDS:=@(aarch64||arm||i386||i686||mips||mipsel||mips64||mips64el||mipsel||powerpc64||x86_64) + +# $(1) path to the package (optional) +# $(2) additional arguments to cargo (optional) define Build/Compile/Cargo ( \ cd $(PKG_BUILD_DIR) ; \ export PATH="$(CARGO_HOME)/bin:$(PATH)" ; \ - CARGO_HOME=$(CARGO_HOME) TARGET_CFLAGS="$(TARGET_CFLAGS) $(RUST_CFLAGS)" TARGET_CC=$(TARGET_CC_NOCACHE) CC=cc \ - cargo install -v --profile stripped --target $(RUSTC_TARGET_ARCH) --root $(PKG_INSTALL_DIR) --path "$(if $(strip $(1)),$(strip $(1)),.)" $(2) ; \ + CARGO_HOME=$(CARGO_HOME) \ + TARGET_CFLAGS="$(TARGET_CFLAGS) $(RUST_CFLAGS)" \ + TARGET_CC=$(TARGET_CC_NOCACHE) \ + CC=$(HOSTCC) \ + cargo install -v \ + --profile stripped \ + --target $(RUSTC_TARGET_ARCH) \ + $(if $(strip $(RUST_PKG_FEATURES)),--features "$(strip $(RUST_PKG_FEATURES))") \ + --root $(PKG_INSTALL_DIR) \ + --path "$(if $(strip $(1)),$(strip $(1)),.)" \ + $(2) ; \ ) endef + +define RustBinPackage + ifndef Package/$(1)/install + define Package/$(1)/install + $$(INSTALL_DIR) $$(1)/usr/bin/ + $$(INSTALL_BIN) $$(PKG_INSTALL_DIR)/bin/* $$(1)/usr/bin/ + endef + endif +endef + +Build/Compile=$(call Build/Compile/Cargo) diff --git a/lang/rust/rust-host.mk b/lang/rust/rust-values.mk similarity index 77% rename from lang/rust/rust-host.mk rename to lang/rust/rust-values.mk index acc93c521..7fcfcf2a3 100644 --- a/lang/rust/rust-host.mk +++ b/lang/rust/rust-values.mk @@ -5,17 +5,7 @@ # Rust Environmental Vars CONFIG_HOST_SUFFIX:=$(word 4, $(subst -, ,$(GNU_HOST_NAME))) RUSTC_HOST_ARCH:=$(HOST_ARCH)-unknown-linux-$(CONFIG_HOST_SUFFIX) -CARGO_HOME:=$(STAGING_DIR_HOST)/cargo - -# Support only a subset for now. -RUST_ARCH_DEPENDS:=@(aarch64||arm||i386||i686||mips||mipsel||mips64||mips64el||mipsel||powerpc64||x86_64) - -# Common Build Flags -RUST_BUILD_FLAGS = \ - CARGO_HOME="$(CARGO_HOME)" - -# This adds the rust environmental variables to Make calls -MAKE_FLAGS += $(RUST_BUILD_FLAGS) +CARGO_HOME:=$(STAGING_DIR_HOSTPKG)/cargo # Force linking of the SSP library ifdef CONFIG_PKG_CC_STACKPROTECTOR_REGULAR From 65ce42c40183eedff9345bc060894ddb989fbb0b Mon Sep 17 00:00:00 2001 From: Tianling Shen Date: Sun, 19 Mar 2023 14:14:37 +0800 Subject: [PATCH 10/15] maturin: adapt new rust build standard While at it, move maturin out of rust directory. Signed-off-by: Tianling Shen --- lang/{rust => }/maturin/Makefile | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) rename lang/{rust => }/maturin/Makefile (77%) diff --git a/lang/rust/maturin/Makefile b/lang/maturin/Makefile similarity index 77% rename from lang/rust/maturin/Makefile rename to lang/maturin/Makefile index c2ed4bcd1..627c1113c 100644 --- a/lang/rust/maturin/Makefile +++ b/lang/maturin/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=maturin PKG_VERSION:=0.14.10 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/PyO3/maturin/tar.gz/v$(PKG_VERSION)? @@ -17,14 +17,11 @@ PKG_LICENSE:=Apache-2.0 MIT PKG_LICENSE_FILES:=license-apache license-mit HOST_BUILD_DEPENDS:=rust/host -PKG_BUILD_DEPENDS:=rust/host - -PKG_BUILD_PARALLEL:=1 PKG_HOST_ONLY:=1 -include ../rust-package.mk include $(INCLUDE_DIR)/host-build.mk include $(INCLUDE_DIR)/package.mk +include ../rust/rust-host-build.mk define Package/maturin SECTION:=lang @@ -35,19 +32,11 @@ define Package/maturin URL:=https://maturin.rs endef -define Host/Compile - $(call Host/Compile/Cargo) -endef - define Package/maturin/description Build and publish crates with pyo3, rust-cpython, cffi and uniffi bindings as well as rust binaries as python packages. endef -define Host/Install - $(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/bin - $(INSTALL_BIN) $(HOST_INSTALL_DIR)/bin/maturin $(STAGING_DIR_HOSTPKG)/bin/maturin -endef - +$(eval $(call RustBinHostBuild)) $(eval $(call HostBuild)) $(eval $(call BuildPackage,maturin)) From 094a1b4d14de42a382ed06a5aa306329e9fd7612 Mon Sep 17 00:00:00 2001 From: Tianling Shen Date: Sun, 19 Mar 2023 14:16:08 +0800 Subject: [PATCH 11/15] maturin: Update to 0.14.15 Fixed a build error: > unresolved import `time::macros` Signed-off-by: Tianling Shen --- lang/maturin/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lang/maturin/Makefile b/lang/maturin/Makefile index 627c1113c..e1c7ca50f 100644 --- a/lang/maturin/Makefile +++ b/lang/maturin/Makefile @@ -5,12 +5,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=maturin -PKG_VERSION:=0.14.10 -PKG_RELEASE:=2 +PKG_VERSION:=0.14.15 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/PyO3/maturin/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=8fc9bcdcb7f1535d5e3e8bb500c348ca1bff5a6dce87b0ab7dbc5a49723da28a +PKG_HASH:=60cbf8ff73a36333c3f5483ca679a52169839db381f06683d8e61a6c00c28cf7 PKG_MAINTAINER:=Luca Barbato PKG_LICENSE:=Apache-2.0 MIT From bc4d9429de708bc13d7370a73248159e6b8f56d4 Mon Sep 17 00:00:00 2001 From: Tianling Shen Date: Sun, 19 Mar 2023 14:17:58 +0800 Subject: [PATCH 12/15] ripgrep: adapt new rust build standard Signed-off-by: Tianling Shen --- utils/ripgrep/Makefile | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/utils/ripgrep/Makefile b/utils/ripgrep/Makefile index fe449bc2d..56658540f 100644 --- a/utils/ripgrep/Makefile +++ b/utils/ripgrep/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ripgrep PKG_VERSION:=13.0.0 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/BurntSushi/ripgrep/tar.gz/$(PKG_VERSION)? @@ -18,12 +18,10 @@ PKG_LICENSE_FILES:=LICENSE-MIT UNLICENSE PKG_BUILD_DEPENDS:=rust/host -include ../../lang/rust/rust-package.mk -include $(INCLUDE_DIR)/package.mk +RUST_PKG_FEATURES:=pcre2 -define Build/Compile - $(call Build/Compile/Cargo,, --features 'pcre2') -endef +include $(INCLUDE_DIR)/package.mk +include ../../lang/rust/rust-package.mk define Package/ripgrep SECTION:=utils @@ -38,9 +36,5 @@ define Package/ripgrep/description while respecting your gitignore endef -define Package/ripgrep/install - $(INSTALL_DIR) $(1)/bin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/target/$(RUSTC_TARGET_ARCH)/stripped/rg $(1)/bin/rg -endef - +$(eval $(call RustBinPackage,ripgrep)) $(eval $(call BuildPackage,ripgrep)) From 09d482c3b2d34000d34cf84fdaa4d23aa88ea76b Mon Sep 17 00:00:00 2001 From: Tianling Shen Date: Sun, 19 Mar 2023 14:20:40 +0800 Subject: [PATCH 13/15] rust: enable use of prebuilt llvm toolchain llvm-bpf is not ready for generic usage, so use prebuilt llvm toolchain provided by the rust project to speedup build (~1hour faster). Signed-off-by: Tianling Shen --- lang/rust/Makefile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lang/rust/Makefile b/lang/rust/Makefile index 1c47fbf76..3cdb633ab 100644 --- a/lang/rust/Makefile +++ b/lang/rust/Makefile @@ -66,13 +66,11 @@ HOST_CONFIGURE_ARGS = \ --datadir=$(CARGO_HOME)/share \ --mandir=$(CARGO_HOME)/man \ --dist-compression-formats=xz \ - --enable-llvm-link-shared \ - --enable-llvm-plugins \ --enable-missing-tools \ - --enable-ninja \ --disable-sanitizers \ --release-channel=stable \ --enable-cargo-native-static \ + --set=llvm.download-ci-llvm=true \ $(TARGET_CONFIGURE_ARGS) define Host/Uninstall From bb3082a1c588ba49a291016baf5aecad22ec6513 Mon Sep 17 00:00:00 2001 From: Tianling Shen Date: Mon, 20 Mar 2023 02:08:00 +0800 Subject: [PATCH 14/15] rust: fix build with glibc Don't set musl-specific options/ldflags when using glibc. Signed-off-by: Tianling Shen --- lang/rust/Makefile | 4 ++-- lang/rust/rust-values.mk | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lang/rust/Makefile b/lang/rust/Makefile index 3cdb633ab..ca5437aeb 100644 --- a/lang/rust/Makefile +++ b/lang/rust/Makefile @@ -48,8 +48,8 @@ TARGET_CONFIGURE_ARGS = \ --set=target.$(RUSTC_TARGET_ARCH).cc=$(TARGET_CC_NOCACHE) \ --set=target.$(RUSTC_TARGET_ARCH).cxx=$(TARGET_CXX_NOCACHE) \ --set=target.$(RUSTC_TARGET_ARCH).linker=$(TARGET_CC_NOCACHE) \ - --set=target.$(RUSTC_TARGET_ARCH).musl-root=$(TOOLCHAIN_DIR) \ - --set=target.$(RUSTC_TARGET_ARCH).ranlib=$(TARGET_RANLIB) + --set=target.$(RUSTC_TARGET_ARCH).ranlib=$(TARGET_RANLIB) \ + $(if $(CONFIG_USE_MUSL),--set=target.$(RUSTC_TARGET_ARCH).musl-root=$(TOOLCHAIN_DIR)) # CARGO_HOME is an environmental HOST_CONFIGURE_OPTS += CARGO_HOME="$(CARGO_HOME)" diff --git a/lang/rust/rust-values.mk b/lang/rust/rust-values.mk index 7fcfcf2a3..c9eb26f08 100644 --- a/lang/rust/rust-values.mk +++ b/lang/rust/rust-values.mk @@ -7,7 +7,8 @@ CONFIG_HOST_SUFFIX:=$(word 4, $(subst -, ,$(GNU_HOST_NAME))) RUSTC_HOST_ARCH:=$(HOST_ARCH)-unknown-linux-$(CONFIG_HOST_SUFFIX) CARGO_HOME:=$(STAGING_DIR_HOSTPKG)/cargo -# Force linking of the SSP library +ifeq ($(CONFIG_USE_MUSL),y) +# Force linking of the SSP library for musl ifdef CONFIG_PKG_CC_STACKPROTECTOR_REGULAR ifeq ($(strip $(PKG_SSP)),1) RUSTC_LDFLAGS += -lssp_nonshared @@ -18,6 +19,7 @@ ifdef CONFIG_PKG_CC_STACKPROTECTOR_STRONG TARGET_CFLAGS += -lssp_nonshared endif endif +endif # mips64 openwrt has a specific targed in rustc ifeq ($(ARCH),mips64) From 8d9d2db2511270b7d64a22c6e953632373a30a29 Mon Sep 17 00:00:00 2001 From: Van Waholtz Date: Fri, 24 Mar 2023 10:56:01 +0800 Subject: [PATCH 15/15] sing-box: update to 1.2.0 Changelogs: https://github.com/SagerNet/sing-box/releases/tag/v1.2.0 Signed-off-by: Van Waholtz --- net/sing-box/Makefile | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/net/sing-box/Makefile b/net/sing-box/Makefile index 7103e36e1..9150c06c5 100644 --- a/net/sing-box/Makefile +++ b/net/sing-box/Makefile @@ -1,12 +1,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=sing-box -PKG_VERSION:=1.1.6 +PKG_VERSION:=1.2.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:=2fdf93fd49c9375cd14b2fe2e2163cbad4b65d0cfa422c592855e7810036ef56 +PKG_HASH:=ec70c2eecf85788e82c29ec4ca129e25292d5fc66a510b4b713fe337650740a9 PKG_LICENSE:=GPL-3.0-or-later PKG_LICENSE_FILES:=LICENSE @@ -19,6 +19,8 @@ PKG_USE_MIPS16:=0 GO_PKG:=github.com/sagernet/sing-box GO_PKG_BUILD_PKG:=$(GO_PKG)/cmd/sing-box +GO_PKG_LDFLAGS_X:=$(GO_PKG)/constant.Version=$(PKG_VERSION) + include $(INCLUDE_DIR)/package.mk include ../../lang/golang/golang-package.mk @@ -47,6 +49,9 @@ define Package/sing-box/config bool "Build with Clash API support" default y + config SINGBOX_WITH_DHCP + bool "Build with DHCP support, see DHCP DNS transport." + config SINGBOX_WITH_ECH bool "Build with TLS ECH extension support for TLS outbound" @@ -67,6 +72,10 @@ define Package/sing-box/config bool "Build with QUIC support" default y + config SINGBOX_WITH_REALITY_SERVER + bool "Build with reality TLS server support, see TLS." + default y + config SINGBOX_WITH_SHADOWSOCKSR bool "Build with ShadowsocksR support" @@ -86,12 +95,14 @@ endef PKG_CONFIG_DEPENDS:= \ CONFIG_SINGBOX_WITH_ACME \ CONFIG_SINGBOX_WITH_CLASH_API \ + CONFIG_SINGBOX_WITH_DHCP \ CONFIG_SINGBOX_WITH_ECH \ CONFIG_SINGBOX_WITH_EMBEDDED_TOR \ CONFIG_SINGBOX_WITH_GRPC \ CONFIG_SINGBOX_WITH_GVISOR \ CONFIG_SINGBOX_WITH_LWIP \ CONFIG_SINGBOX_WITH_QUIC \ + CONFIG_SINGBOX_WITH_REALITY_SERVER \ CONFIG_SINGBOX_WITH_SHADOWSOCKSR \ CONFIG_SINGBOX_WITH_UTLS \ CONFIG_SINGBOX_WITH_V2RAY_API \ @@ -100,6 +111,7 @@ PKG_CONFIG_DEPENDS:= \ GO_PKG_TAGS:=$(subst $(space),$(comma),$(strip \ $(if $(CONFIG_SINGBOX_WITH_ACME),with_acme) \ $(if $(CONFIG_SINGBOX_WITH_CLASH_API),with_clash_api) \ + $(if $(CONFIG_SINGBOX_WITH_DHCP),with_dhcp) \ $(if $(CONFIG_SINGBOX_WITH_ECH),with_ech) \ $(if $(CONFIG_SINGBOX_WITH_EMBEDDED_TOR),with_embedded_tor) \ $(if $(CONFIG_SINGBOX_WITH_GRPC),with_grpc) \ @@ -107,6 +119,7 @@ GO_PKG_TAGS:=$(subst $(space),$(comma),$(strip \ $(if $(CONFIG_SINGBOX_WITH_LWIP),with_lwip) \ $(if $(CONFIG_SINGBOX_WITH_QUIC),with_quic) \ $(if $(CONFIG_SINGBOX_WITH_SHADOWSOCKSR),with_shadowsocksr) \ + $(if $(CONFIG_SINGBOX_WITH_REALITY_SERVER),with_reality_server) \ $(if $(CONFIG_SINGBOX_WITH_UTLS),with_utls) \ $(if $(CONFIG_SINGBOX_WITH_V2RAY_API),with_v2ray_api) \ $(if $(CONFIG_SINGBOX_WITH_WIREGUARD),with_wireguard) \