Dominick Grift <dominick.gr...@defensec.nl> writes: > Daniel Golle <dan...@makrotopia.org> writes: > >> On Thu, May 19, 2022 at 06:37:28PM +0200, Dominick Grift wrote: >>> libselinux-3.4 requires pcre2 >>> >>> Signed-off-by: Dominick Grift <dominick.gr...@defensec.nl> >>> --- >>> package/libs/pcre2/Config.in | 30 ++++++++++++ >>> package/libs/pcre2/Makefile | 92 ++++++++++++++++++++++++++++++++++++ >>> 2 files changed, 122 insertions(+) >>> create mode 100644 package/libs/pcre2/Config.in >>> create mode 100644 package/libs/pcre2/Makefile >>> >>> diff --git a/package/libs/pcre2/Config.in b/package/libs/pcre2/Config.in >>> new file mode 100644 >>> index 0000000000..8777a4e84c >>> --- /dev/null >>> +++ b/package/libs/pcre2/Config.in >>> @@ -0,0 +1,30 @@ >>> +config PCRE2_JIT_ENABLED >>> + bool >>> + depends on PACKAGE_libpcre2 && (aarch64 || aarch64_be || arm || >>> i386 || i686 || x86_64 || mips || mipsel || mips64 || mips64el || >>> powerpc || powerpc64 || powerpcle || sparc) >>> + default y if (arm || i686 || x86_64) >> >> Can you explain the choice of architectures for which you are >> suggesting to enable JIT by default? >> Wouldn't e.g. aarch64 benefit just as well? > > I did not choose anything. This commit is a 1-to-1 copy from pcre2 in > the packages feed.
By the way, legacy pcre also only enables JIT for arm, i686 and x86_64 by default. A list of supported architectures can be found here: https://pcre.org/current/doc/html/pcre2jit.html#SEC2 But. Yes. I did not change anything in that regard. Last thing I want to do is add distraction. I only did what I had to do to get the job done. If you want to change the JIT defaults then probably best to address that in a separate patch. > >> >>> + prompt "Enable JIT compiler support" >>> + help >>> + Enable JIT (Just-In-Time) compiler support. >>> + >>> + Just-in-time compiling is a heavyweight optimization that can >>> greatly >>> + speed up pattern matching. However, it comes at the cost of >>> extra >>> + processing before the match is performed, so it is of most >>> benefit when >>> + the same pattern is going to be matched many times. This does >>> not >>> + necessarily mean many calls of a matching function; if the >>> pattern is >>> + not anchored, matching attempts may take place many times at >>> various >>> + positions in the subject, even for a single call. Therefore, if >>> the >>> + subject string is very long, it may still pay to use JIT even >>> for >>> + one-off matches. JIT support is available for all of the 8-bit, >>> 16-bit >>> + and 32-bit PCRE2 libraries and adds about 100KB to the resulting >>> + libpcre2.so. JIT support applies only to the traditional >>> Perl-compatible >>> + matching function. It does not apply when the DFA matching >>> function is >>> + being used. >>> + >>> + Enabling this option can give an about 10x performance increase >>> on JIT >>> + operations. It can be desireable for e.g. high performance >>> Apache >>> + mod_rewrite or HA-Proxy reqrep operations. >>> + >>> + However, JIT should _only_ be enabled on architectures that are >>> supported. >>> + Enabling JIT on unsupported platforms will result in a >>> compilation >>> + failure. A list of supported architectures can be found here: >>> + https://pcre.org/current/doc/html/pcre2jit.html#SEC2 >>> diff --git a/package/libs/pcre2/Makefile b/package/libs/pcre2/Makefile >>> new file mode 100644 >>> index 0000000000..4e75a1cda9 >>> --- /dev/null >>> +++ b/package/libs/pcre2/Makefile >>> @@ -0,0 +1,92 @@ >>> +# >>> +# Copyright (C) 2017 Shane Peelar >>> +# >>> +# This is free software, licensed under the GNU General Public License v2. >>> +# See /LICENSE for more information. >>> +# >>> + >>> +include $(TOPDIR)/rules.mk >>> + >>> +PKG_NAME:=pcre2 >>> +PKG_VERSION:=10.37 >>> +PKG_RELEASE:=$(AUTORELEASE) >>> + >>> +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 >>> +PKG_SOURCE_URL:=@SF/pcre/$(PKG_NAME)/$(PKG_VERSION) >>> +PKG_HASH:=4d95a96e8b80529893b4562be12648d798b957b1ba1aae39606bbc2ab956d270 >>> + >>> +PKG_MAINTAINER:=Shane Peelar <lookatyouhac...@gmail.com> >>> +PKG_LICENSE:=BSD-3-Clause >>> +PKG_LICENSE_FILES:=LICENCE >>> +PKG_CPE_ID:=cpe:/a:pcre:pcre >>> + >>> +PKG_CONFIG_DEPENDS:=\ >>> + CONFIG_PACKAGE_libpcre2-16 \ >>> + CONFIG_PACKAGE_libpcre2-32 \ >>> + CONFIG_PCRE2_JIT_ENABLED >>> + >>> +include $(INCLUDE_DIR)/package.mk >>> +include $(INCLUDE_DIR)/cmake.mk >>> + >>> +define Package/libpcre2/default >>> + SECTION:=libs >>> + CATEGORY:=Libraries >>> + URL:=https://www.pcre.org/ >>> +endef >>> + >>> +define Package/libpcre2/config >>> + source "$(SOURCE)/Config.in" >>> +endef >>> + >>> +define Package/libpcre2 >>> + $(call Package/libpcre2/default) >>> + TITLE:=A Perl Compatible Regular Expression library >>> +endef >>> + >>> +define Package/libpcre2-16 >>> + $(call Package/libpcre2/default) >>> + TITLE:=A Perl Compatible Regular Expression library (16bit support) >>> +endef >>> + >>> +define Package/libpcre2-32 >>> + $(call Package/libpcre2/default) >>> + TITLE:=A Perl Compatible Regular Expression library (32bit support) >>> +endef >>> + >>> +CMAKE_OPTIONS += \ >>> + -DBUILD_SHARED_LIBS=ON \ >>> + -DPCRE2_BUILD_PCRE2_8=ON \ >>> + -DPCRE2_BUILD_PCRE2_16=O$(if $(CONFIG_PACKAGE_libpcre2-16),N,FF) \ >>> + -DPCRE2_BUILD_PCRE2_32=O$(if $(CONFIG_PACKAGE_libpcre2-32),N,FF) \ >>> + -DPCRE2_DEBUG=OFF \ >>> + -DPCRE2_DISABLE_PERCENT_ZT=ON \ >>> + -DPCRE2_SUPPORT_JIT=O$(if $(CONFIG_PCRE2_JIT_ENABLED),N,FF) \ >>> + -DPCRE2_SHOW_REPORT=OFF \ >>> + -DPCRE2_BUILD_PCRE2GREP=OFF \ >>> + -DPCRE2_BUILD_TESTS=OFF >>> + >>> +define Build/InstallDev >>> + $(call Build/InstallDev/cmake,$(1)) >>> + $(SED) 's,^\(prefix\|exec_prefix\)=.*,\1=$(STAGING_DIR)/usr,g' >>> $(1)/usr/bin/pcre2-config >>> + $(INSTALL_DIR) $(2)/bin >>> + $(LN) ../../usr/bin/pcre2-config $(2)/bin/pcre2-config >>> +endef >>> + >>> +define Package/libpcre2/install >>> + $(INSTALL_DIR) $(1)/usr/lib >>> + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre2-{8,posix}.so* $(1)/usr/lib/ >>> +endef >>> + >>> +define Package/libpcre2-16/install >>> + $(INSTALL_DIR) $(1)/usr/lib >>> + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre2-16.so* $(1)/usr/lib/ >>> +endef >>> + >>> +define Package/libpcre2-32/install >>> + $(INSTALL_DIR) $(1)/usr/lib >>> + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpcre2-32.so* $(1)/usr/lib/ >>> +endef >>> + >>> +$(eval $(call BuildPackage,libpcre2)) >>> +$(eval $(call BuildPackage,libpcre2-16)) >>> +$(eval $(call BuildPackage,libpcre2-32)) >>> -- >>> 2.36.1 >>> -- gpg --locate-keys dominick.gr...@defensec.nl Key fingerprint = FCD2 3660 5D6B 9D27 7FC6 E0FF DA7E 521F 10F6 4098 Dominick Grift _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel