From 1ba9944a9480daa39235a8186a239487c9127aab Mon Sep 17 00:00:00 2001 From: Craig Comstock Date: Fri, 9 Aug 2024 11:33:26 -0500 Subject: [PATCH] Added nghttp2 as a vendored dependency we build as part of the hub package for apache http2 support Ticket: ENT-11440 Changelog: title --- build-scripts/compile-options | 2 +- deps-packaging/apache/cfbuild-apache.spec | 1 + deps-packaging/apache/httpd.conf | 8 +++ deps-packaging/nghttp2/cfbuild-nghttp2.spec | 67 +++++++++++++++++++ .../debian/cfbuild-nghttp2-devel.install | 2 + .../nghttp2/debian/cfbuild-nghttp2.install | 1 + deps-packaging/nghttp2/debian/compat | 1 + deps-packaging/nghttp2/debian/control | 18 +++++ deps-packaging/nghttp2/debian/copyright | 0 deps-packaging/nghttp2/debian/rules | 50 ++++++++++++++ deps-packaging/nghttp2/distfiles | 1 + deps-packaging/nghttp2/source | 1 + deps-packaging/release-monitoring.json | 1 + 13 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 deps-packaging/nghttp2/cfbuild-nghttp2.spec create mode 100644 deps-packaging/nghttp2/debian/cfbuild-nghttp2-devel.install create mode 100644 deps-packaging/nghttp2/debian/cfbuild-nghttp2.install create mode 100644 deps-packaging/nghttp2/debian/compat create mode 100644 deps-packaging/nghttp2/debian/control create mode 100644 deps-packaging/nghttp2/debian/copyright create mode 100644 deps-packaging/nghttp2/debian/rules create mode 100644 deps-packaging/nghttp2/distfiles create mode 100644 deps-packaging/nghttp2/source diff --git a/build-scripts/compile-options b/build-scripts/compile-options index 11b091805..2efea9b64 100644 --- a/build-scripts/compile-options +++ b/build-scripts/compile-options @@ -208,7 +208,7 @@ case "$ROLE" in # HUB-ONLY dependencies hub) var_append DEPS "libcurl-hub" - var_append DEPS "libexpat apr apr-util apache git rsync" + var_append DEPS "nghttp2 libexpat apr apr-util apache git rsync" var_append DEPS "postgresql php" ;; # AGENT-ONLY dependencies diff --git a/deps-packaging/apache/cfbuild-apache.spec b/deps-packaging/apache/cfbuild-apache.spec index 8fd727d13..45a190080 100644 --- a/deps-packaging/apache/cfbuild-apache.spec +++ b/deps-packaging/apache/cfbuild-apache.spec @@ -30,6 +30,7 @@ CPPFLAGS=-I%{buildprefix}/include --prefix=%{prefix}/httpd \ --enable-so \ --enable-mods-shared="all ssl ldap authnz_ldap" \ + --enable-http2 \ --with-z=%{prefix} \ --with-ssl=%{prefix} \ --with-ldap=%{prefix} \ diff --git a/deps-packaging/apache/httpd.conf b/deps-packaging/apache/httpd.conf index 6a98248fa..6bbb34145 100644 --- a/deps-packaging/apache/httpd.conf +++ b/deps-packaging/apache/httpd.conf @@ -56,6 +56,8 @@ LoadModule socache_shmcb_module modules/mod_socache_shmcb.so # Required to log into mission portal LoadModule authz_core_module modules/mod_authz_core.so +# Enable http2 +LoadModule http2_module modules/mod_http2.so # TRACE can be useful for debugging, but can be abused to perform Cross-Site # Tracing (XST) attacheks in order to obtain access to user cooking via @@ -178,6 +180,12 @@ LogLevel warn SSLRandomSeed startup builtin SSLRandomSeed connect builtin + +# Enable http2. As described in https://httpd.apache.org/docs/2.4/howto/http2.html +# there is no need to do an IfModule check here as the Protocols are free-form +# and not validated in any way. +Protocols h2 h2c http/1.1 + DocumentRoot "/var/cfengine/httpd/htdocs/public" Alias "/api" "/var/cfengine/httpd/htdocs/api" diff --git a/deps-packaging/nghttp2/cfbuild-nghttp2.spec b/deps-packaging/nghttp2/cfbuild-nghttp2.spec new file mode 100644 index 000000000..595d410f4 --- /dev/null +++ b/deps-packaging/nghttp2/cfbuild-nghttp2.spec @@ -0,0 +1,67 @@ +%define nghttp2_version 1.62.1 + +Summary: CFEngine Build Automation -- nghttp2 +Name: cfbuild-nghttp2 +Version: %{version} +Release: 1 +Source0: nghttp2-%{nghttp2_version}.tar.xz +License: MIT +Group: Other +Url: nghttp2.org +BuildRoot: %{_topdir}/BUILD/%{name}-%{version}-%{release}-buildroot + +AutoReqProv: no + +%define prefix %{buildprefix} +%prep +mkdir -p %{_builddir} +%setup -q -n nghttp2-%{nghttp2_version} + +./configure --prefix=%{prefix} + +%build + +make + +%install + +rm -rf ${RPM_BUILD_ROOT} + +make install DESTDIR=${RPM_BUILD_ROOT} + +# Remove unused files +rm -rf %prefix/lib/libnghttp2.*a +rm -rf %prefix/share/doc/nghttp2/README.rst +rm -rf %prefix/share/man/man1/h2load.1 +rm -rf %prefix/share/man/man1/nghttp* +rm -rf %prefix/share/nghttp2/fetch-oscp-response + +%clean + +rm -rf $RPM_BUILD_ROOT + +%package devel +Summary: CFEngine Build Automation -- nghttp2 -- development files +Group: Other +AutoReqProv: no + +%description +CFEngine Build Automation -- nghttp2 + +%description devel +CFEngine Build Automation -- nghttp2 -- development files + +%files +%defattr(-,root,root) + +%dir %prefix/lib +%prefix/lib/*.so* + +%files devel +%defattr(-,root,root) + +%prefix/include +%dir %prefix/lib +%prefix/lib/pkgconfig + +%changelog diff --git a/deps-packaging/nghttp2/debian/cfbuild-nghttp2-devel.install b/deps-packaging/nghttp2/debian/cfbuild-nghttp2-devel.install new file mode 100644 index 000000000..96c4b3019 --- /dev/null +++ b/deps-packaging/nghttp2/debian/cfbuild-nghttp2-devel.install @@ -0,0 +1,2 @@ +/var/cfengine/include +/var/cfengine/lib/pkgconfig diff --git a/deps-packaging/nghttp2/debian/cfbuild-nghttp2.install b/deps-packaging/nghttp2/debian/cfbuild-nghttp2.install new file mode 100644 index 000000000..d47339c9d --- /dev/null +++ b/deps-packaging/nghttp2/debian/cfbuild-nghttp2.install @@ -0,0 +1 @@ +/var/cfengine/lib/*.so* diff --git a/deps-packaging/nghttp2/debian/compat b/deps-packaging/nghttp2/debian/compat new file mode 100644 index 000000000..f599e28b8 --- /dev/null +++ b/deps-packaging/nghttp2/debian/compat @@ -0,0 +1 @@ +10 diff --git a/deps-packaging/nghttp2/debian/control b/deps-packaging/nghttp2/debian/control new file mode 100644 index 000000000..778b59ddc --- /dev/null +++ b/deps-packaging/nghttp2/debian/control @@ -0,0 +1,18 @@ +Source: cfbuild-nghttp2 +Section: libs +Priority: optional +Maintainer: CFEngine Packages +Build-Depends: debhelper +Standard-Version: 3.8.4 + +Package: cfbuild-nghttp2 +Section: libs +Architecture: any +Description: CFEngine Build Automation -- nghttp2 + CFEngine Build Automation -- nghttp2 + +Package: cfbuild-nghttp2-devel +Section: libdevel +Architecture: any +Desciption: CFEngine Build Automation -- cfbuild-nghttp2-devel + CFEngine Build Automation -- cfbuild-nghttp2-devel diff --git a/deps-packaging/nghttp2/debian/copyright b/deps-packaging/nghttp2/debian/copyright new file mode 100644 index 000000000..e69de29bb diff --git a/deps-packaging/nghttp2/debian/rules b/deps-packaging/nghttp2/debian/rules new file mode 100644 index 000000000..cf106c36b --- /dev/null +++ b/deps-packaging/nghttp2/debian/rules @@ -0,0 +1,50 @@ +#!/usr/bin/make -f +PREFIX=$(BUILDPREFIX) + +clean: + dh_testdir + dh_testroot + + dh_clean + +build: build-stamp +build-stamp: + dh_testdir + + ./configure --prefix=$(PREFIX) + + make + + touch build-stamp + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp + + rm -rf $(CURDIR)/debian/tmp$(PREFIX)/lib/libnghttp2.*a + rm -rf $(CURDIR)/debian/tmp$(PREFIX)/share/doc/nghttp2/README.rst + rm -rf $(CURDIR)/debian/tmp$(PREFIX)/share/man/man1/h2load.1 + rm -rf $(CURDIR)/debian/tmp$(PREFIX)/share/man/man1/nghttp* + rm -rf $(CURDIR)/debian/tmp$(PREFIX)/share/nghttp2 + +binary-indep: build install + +binary-arch: build install + dh_testdir + dh_testroot + dh_install --sourcedir=debian/tmp + dh_link + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/deps-packaging/nghttp2/distfiles b/deps-packaging/nghttp2/distfiles new file mode 100644 index 000000000..ab9b85cef --- /dev/null +++ b/deps-packaging/nghttp2/distfiles @@ -0,0 +1 @@ +2345d4dc136fda28ce243e0bb21f2e7e8ef6293d62c799abbf6f633a6887af72 nghttp2-1.62.1.tar.xz diff --git a/deps-packaging/nghttp2/source b/deps-packaging/nghttp2/source new file mode 100644 index 000000000..bbdbefacd --- /dev/null +++ b/deps-packaging/nghttp2/source @@ -0,0 +1 @@ +https://github.com/nghttp2/nghttp2/releases/download/v1.62.1/ diff --git a/deps-packaging/release-monitoring.json b/deps-packaging/release-monitoring.json index e9749b68e..1eb7b9f46 100644 --- a/deps-packaging/release-monitoring.json +++ b/deps-packaging/release-monitoring.json @@ -14,6 +14,7 @@ "libxml2":"1783", "libyaml":"13522", "lmdb":"6974", + "nghttp2":"8651", "openldap":"2551", "openssl":"2566", "pcre2":"5832",