Skip to content

Commit

Permalink
Added nghttp2 as a vendored dependency we build as part of the hub pa…
Browse files Browse the repository at this point in the history
…ckage for apache http2 support

In order to use http2 module we must switch from mpm prefork in apache to fpm in php

Ticket: ENT-11440
Changelog: title
  • Loading branch information
craigcomstock committed Aug 13, 2024
1 parent 7bcaba2 commit cdbd0a2
Show file tree
Hide file tree
Showing 16 changed files with 154 additions and 11 deletions.
2 changes: 1 addition & 1 deletion build-scripts/compile-options
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion deps-packaging/apache/cfbuild-apache.spec
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ 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} \
--with-apr=%{prefix} \
--with-apr-util=%{prefix} \
--with-pcre=%{prefix}/bin/pcre2-config \
--with-mpm=prefork \
CPPFLAGS="$CPPFLAGS"

%build
Expand Down
1 change: 0 additions & 1 deletion deps-packaging/apache/debian/rules
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ build-stamp:
--with-apr=$(PREFIX) \
--with-apr-util=$(PREFIX) \
--with-pcre=$(PREFIX)/bin/pcre2-config \
--with-mpm=prefork \
CPPFLAGS="$(CPPFLAGS)"
make

Expand Down
8 changes: 8 additions & 0 deletions deps-packaging/apache/httpd.conf
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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

<VirtualHost _default_:443>
DocumentRoot "/var/cfengine/httpd/htdocs/public"
Alias "/api" "/var/cfengine/httpd/htdocs/api"
Expand Down
67 changes: 67 additions & 0 deletions deps-packaging/nghttp2/cfbuild-nghttp2.spec
Original file line number Diff line number Diff line change
@@ -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 ${RPM_BUILD_ROOT}%{prefix}/lib/libnghttp2.*a
rm -rf ${RPM_BUILD_ROOT}%{prefix}/share/doc/nghttp2/README.rst
rm -rf ${RPM_BUILD_ROOT}%{prefix}/share/man/man1/h2load.1
rm -rf ${RPM_BUILD_ROOT}%{prefix}/share/man/man1/nghttp*
rm -rf ${RPM_BUILD_ROOT}%{prefix}/share/nghttp2/fetch-ocsp-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
2 changes: 2 additions & 0 deletions deps-packaging/nghttp2/debian/cfbuild-nghttp2-devel.install
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/var/cfengine/include
/var/cfengine/lib/pkgconfig
1 change: 1 addition & 0 deletions deps-packaging/nghttp2/debian/cfbuild-nghttp2.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/var/cfengine/lib/*.so*
1 change: 1 addition & 0 deletions deps-packaging/nghttp2/debian/compat
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
10
18 changes: 18 additions & 0 deletions deps-packaging/nghttp2/debian/control
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
Source: cfbuild-nghttp2
Section: libs
Priority: optional
Maintainer: CFEngine Packages <[email protected]>
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
Empty file.
50 changes: 50 additions & 0 deletions deps-packaging/nghttp2/debian/rules
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions deps-packaging/nghttp2/distfiles
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2345d4dc136fda28ce243e0bb21f2e7e8ef6293d62c799abbf6f633a6887af72 nghttp2-1.62.1.tar.xz
1 change: 1 addition & 0 deletions deps-packaging/nghttp2/source
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://github.com/nghttp2/nghttp2/releases/download/v1.62.1/
5 changes: 1 addition & 4 deletions deps-packaging/php/cfbuild-php.spec
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,7 @@ LDFLAGS=""
--enable-mbstring \
--enable-sockets \
--disable-mbregex \
--without-fpm-user \
--without-fpm-group \
--without-fpm-systemd \
--without-fpm-acl \
--enable-fpm \
--without-layout \
--without-sqlite3 \
--without-bz2 \
Expand Down
5 changes: 1 addition & 4 deletions deps-packaging/php/debian/rules
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,7 @@ build-stamp:
--enable-mbstring \
--enable-sockets \
--disable-mbregex \
--without-fpm-user \
--without-fpm-group \
--without-fpm-systemd \
--without-fpm-acl \
--enable-fpm \
--without-layout \
--without-sqlite3 \
--without-bz2 \
Expand Down
1 change: 1 addition & 0 deletions deps-packaging/release-monitoring.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"libxml2":"1783",
"libyaml":"13522",
"lmdb":"6974",
"nghttp2":"8651",
"openldap":"2551",
"openssl":"2566",
"pcre2":"5832",
Expand Down

0 comments on commit cdbd0a2

Please sign in to comment.