Package Details: h2o 2.3.0_beta2-2

Git Clone URL: https://aur.archlinux.org/h2o.git (read-only, click to copy)
Package Base: h2o
Description: Optimized HTTP server with support for HTTP/1.x and HTTP/2
Upstream URL: https://github.com/h2o/h2o
Licenses: MIT
Conflicts: libh2o
Provides: h2o, libh2o
Submitter: atweiden
Maintainer: HLFH (phoepsilonix)
Last Packager: HLFH
Votes: 30
Popularity: 0.000576
First Submitted: 2014-12-26 01:26 (UTC)
Last Updated: 2022-12-08 14:37 (UTC)

Dependencies (12)

Required by (0)

Sources (2)

Latest Comments

1 2 3 4 Next › Last »

phoepsilonix commented on 2024-02-29 09:27 (UTC) (edited on 2024-02-29 09:27 (UTC) by phoepsilonix)

@HLFH Thank you.

HLFH commented on 2023-12-16 06:26 (UTC)

@phoepsilonix I have added you as co-maintainer. Feel free to apply directly your patches.

phoepsilonix commented on 2023-03-07 14:59 (UTC) (edited on 2023-03-08 20:19 (UTC) by phoepsilonix)

Adjusted builds to work with clang and lto. Fixed a mistake in the mruby Rakefile.
Postscript, just in case.
My patch is in the public domain.

PKGBUILD

diff --git a/PKGBUILD b/PKGBUILD
index 2b465c5..7299a2c 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -5,28 +5,62 @@ pkgver=2.3.0_beta2
 pkgrel=2
 pkgdesc="Optimized HTTP server with support for HTTP/1.x and HTTP/2"
 arch=('i686' 'x86_64')
-depends=('libuv' 'libyaml' 'openssl' 'wslay' 'zlib')
+depends=('libressl' 'sh' 'libyaml' 'wslay' 'zlib' 'hiredis')
 makedepends=('gcc' 'bison' 'cmake' 'libtool' 'make' 'pkg-config' 'ruby')
+optdepends=('ccache')
 url="https://github.com/h2o/h2o"
 license=('MIT')
 source=($pkgname-$pkgver.tar.gz::https://codeload.github.com/h2o/$pkgname/tar.gz/v${pkgver/_/-}
+        deps.patch
+        mruby-Rakefile.patch
+        h2o-libressl-3.6.2.patch
         h2o.service)
 b2sums=('a219c1f7ba275755e6b3f07afea2bbb82d5bce823dd37afbbf1a59fd645ce4965fdc760a3d03d4d14718b5bce3eca144e061e0ff7f68eea6b4a841f93ec76ec4'
+        '479d2aa439d450a79029497d4475178bfee46cd4a910c70fa4a560cea281d3a9e716f3294d0a7051b06884828e8608d1fd88a701b1cda81209ee181c0d207929'
+        '876eb7a304f20f89df45bc612dd68a689ea29df452ade9dcc3f04bb6d7ee10e92a2d7f43009d410228b2ccdcb492d724be22b5ace2da230d90966c461459f570'
+        '42b371c90b65704a84b71d243e4c997ea740e9b13b55338678a55a9a4f2280e4e6d28994359ecb5141bf7f3170b02540078730acd5829d595d176d1027ecf3dc'
         '59b86cec57d06c3754b0634adef46da6b86ce4b251c5f864ab866e94a169ca2ed9357521a9b645ff38ea463ab168b4f07c0104a34945c4f2fb73df837312d5a7')
 backup=('etc/h2o.conf')
-options=(!lto)
+options=()
 provides=('h2o' 'libh2o')
 conflicts=('libh2o')

+prepare() {
+    cd "$srcdir/$pkgname-${pkgver/_/-}"
+
+    patch -p1 -i ${srcdir}/deps.patch
+    patch -p1 -i ${srcdir}/mruby-Rakefile.patch
+    patch -p1 -i ${srcdir}/h2o-libressl-3.6.2.patch
+    rm -rf deps/yaml
+    rm -rf deps/hiredis
+    if [[ "$CC" == "clang" ]] ;then
+        export LD=clang
+    fi
+
+    PKG_CONFIG_PATH=/usr/lib/libressl/pkgconfig \
+    LD_LIBRARY_PATH=/usr/lib/libressl \
+    cmake \
+        -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \
+        -DCMAKE_INSTALL_PREFIX=/usr \
+        -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+        -DCMAKE_INSTALL_SYSCONFDIR=/etc \
+        -DCMAKE_LINKER="$LD" \
+        -DCMAKE_C_FLAGS="$CPPFLAGS $CLAGS" \
+        -DCMAKE_CXX_FLAGS="$CPPFLAGS $CXXLAGS" \
+        -DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS" \
+        -DCMAKE_MODULE_LINKER_FLAGS="$LDFLAGS" \
+        -DWITH_MRUBY=on \
+        -DWITHOUT_LIBS=off \
+        -DBUILD_SHARED_LIBS=off \
+        -DWITH_BUNDLED_SSL=off \
+        .
+}
+
 build() {
   cd "$srcdir/$pkgname-${pkgver/_/-}"
-
-  cmake \
-    -DCMAKE_INSTALL_PREFIX=/usr \
-    -DCMAKE_INSTALL_LIBDIR=/usr/lib \
-    -DWITH_BUNDLED_SSL=off \
-    -DWITH_MRUBY=off \
-    .
+  if [[ "$CC" == "clang" ]] ;then
+    export LD=clang
+  fi
   make
   make libh2o
 }

h2o-libressl-3.6.2.patch

diff --git a/deps/neverbleed/neverbleed.c b/deps/neverbleed/neverbleed.c
index b6972bb..e0686b0 100644
--- a/deps/neverbleed/neverbleed.c
+++ b/deps/neverbleed/neverbleed.c
@@ -45,7 +45,7 @@
 #endif
 #include "neverbleed.h"

-#if (!defined(LIBRESSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x1010000fL)
+#if (LIBRESSL_VERSION_NUMBER >= 0x3060200fL || OPENSSL_VERSION_NUMBER >= 0x1010000fL)
 #define OPENSSL_1_1_API 1
 #else
 #define OPENSSL_1_1_API 0

phoepsilonix commented on 2023-03-07 14:46 (UTC) (edited on 2023-03-07 20:02 (UTC) by phoepsilonix)

mruby-Rakefile.patch

diff --git a/deps/mruby/Rakefile b/deps/mruby/Rakefile
index 6c160a5..24d8258 100644
--- a/deps/mruby/Rakefile
+++ b/deps/mruby/Rakefile
@@ -34,9 +34,9 @@ load "#{MRUBY_ROOT}/tasks/gitlab.rake"

 def install_D(src, dst)
   opts = { :verbose => $verbose }
-  FileUtils.rm_f dst, opts
-  FileUtils.mkdir_p File.dirname(dst), opts
-  FileUtils.cp src, dst, opts
+  FileUtils.rm_f(dst, verbose: opts)
+  FileUtils.mkdir_p(File.dirname(dst), verbose: opts)
+  FileUtils.cp(src, dst, verbose: opts)
 end

 ##############################

deps.patch

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5f91a79..3b46f94 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -131,6 +131,29 @@ IF (WITH_CCACHE)
     SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
 ENDIF ()

+IF (PKG_CONFIG_FOUND)
+    PKG_CHECK_MODULES(YAML yaml-0.1)
+    IF (YAML_FOUND)
+        SET(YAML_FOUND TRUE)
+        INCLUDE_DIRECTORIES(${YAML_INCLUDE_DIRS})
+        LINK_DIRECTORIES(${YAML_LIBRARY_DIRS})
+        LIST(APPEND EXTRA_LIBS ${YAML_LIBRARIES})
+        ADD_DEFINITIONS("-DYAML_FOUND")
+    ENDIF (YAML_FOUND)
+ENDIF (PKG_CONFIG_FOUND)
+
+IF (PKG_CONFIG_FOUND)
+    PKG_CHECK_MODULES(HIREDIS hiredis)
+    IF (HIREDIS_FOUND)
+        SET(HIREDIS_FOUND TRUE)
+        INCLUDE_DIRECTORIES(${HIREDIS_INCLUDE_DIRS})
+        LINK_DIRECTORIES(${HIREDIS_LIBRARY_DIRS})
+        LIST(APPEND EXTRA_LIBS ${HIREDIS_LIBRARIES})
+        ADD_DEFINITIONS("-DHIREDIS_FOUND")
+    ENDIF (HIREDIS_FOUND)
+ENDIF (PKG_CONFIG_FOUND)
+
+ SET(CC_WARNING_FLAGS "-Wall -Wno-unused-value -Wno-unused-function -Wno-nullability-completeness -Wno-expansion-to-defined -Werror=implicit-function-declaration -Werror=incompatible-pointer-types")

 IF (OPENSSL_VERSION VERSION_LESS "1.0.2")
     MESSAGE(STATUS "*************************************************************************\n"
@@ -150,14 +175,12 @@ INCLUDE_DIRECTORIES(
     deps/cloexec
     deps/brotli/c/include
     deps/golombset
-    deps/hiredis
     deps/libgkc
     deps/libyrmcds
     deps/klib
     deps/neverbleed
     deps/picohttpparser
     deps/picotest
-    deps/yaml/include
     deps/yoml)

 IF (PKG_CONFIG_FOUND)
@@ -226,16 +249,6 @@ ENDIF(NOT CMAKE_BUILD_TYPE)
 SET(CMAKE_C_FLAGS_DEBUG  "-O0")
 SET(CMAKE_C_FLAGS_RELEASE  "-O2")

-SET(LIBYAML_SOURCE_FILES
-    deps/yaml/src/api.c
-    deps/yaml/src/dumper.c
-    deps/yaml/src/emitter.c
-    deps/yaml/src/loader.c
-    deps/yaml/src/parser.c
-    deps/yaml/src/reader.c
-    deps/yaml/src/scanner.c
-    deps/yaml/src/writer.c)
-
 SET(BROTLI_SOURCE_FILES
     deps/brotli/c/common/dictionary.c
     deps/brotli/c/enc/backward_references.c
@@ -285,11 +305,6 @@ SET(PICOTLS_SOURCE_FILES

 SET(LIB_SOURCE_FILES
     deps/cloexec/cloexec.c
-    deps/hiredis/async.c
-    deps/hiredis/hiredis.c
-    deps/hiredis/net.c
-    deps/hiredis/read.c
-    deps/hiredis/sds.c
     deps/libgkc/gkc.c
     deps/libyrmcds/close.c
     deps/libyrmcds/connect.c
@@ -384,7 +399,6 @@ SET(LIB_SOURCE_FILES

 SET(UNIT_TEST_SOURCE_FILES
     ${LIB_SOURCE_FILES}
-    ${LIBYAML_SOURCE_FILES}
     ${BROTLI_SOURCE_FILES}
     deps/picotest/picotest.c
     t/00unit/test.c
@@ -447,7 +461,6 @@ LIST(REMOVE_ITEM UNIT_TEST_SOURCE_FILES

 SET(FUZZED_SOURCE_FILES
     ${LIB_SOURCE_FILES}
-    ${LIBYAML_SOURCE_FILES}
     ${BROTLI_SOURCE_FILES})

 SET(EXTRA_LIBS ${EXTRA_LIBS} m ${CMAKE_THREAD_LIBS_INIT})
@@ -557,7 +570,6 @@ ENDIF()
 # standalone server directly links to libh2o using evloop
 SET(STANDALONE_SOURCE_FILES
     ${LIB_SOURCE_FILES}
-    ${LIBYAML_SOURCE_FILES}
     ${BROTLI_SOURCE_FILES}
     deps/neverbleed/neverbleed.c
     src/main.c

HLFH commented on 2022-12-08 14:39 (UTC)

I have just updated this package to reflect the comments of @rgacogne in https://aur.archlinux.org/packages/h2o-2.2.

rgacogne commented on 2021-12-08 14:41 (UTC)

Thanks a lot!

HLFH commented on 2021-12-08 14:40 (UTC)

@rcacogne The h2o2.2 package is now available > https://aur.archlinux.org/packages/h2o-2.2/.

HLFH commented on 2021-12-08 13:10 (UTC)

I am uploading the h2o-2.2 AUR package, I will keep you posted once done.

rgacogne commented on 2021-12-08 13:01 (UTC)

I see why the upgrade to 2.3.0-beta2, even though I'm pretty much convinced 2.3.0 will never be released. Now I need to figure out what to do for dnsdist since I will not make it compatible with h2o 2.3.x. Would you mind if I upload an h2o-2.2 package to the AUR?

HLFH commented on 2021-12-08 12:58 (UTC)

@rleees85 "Manually installing Ruby 2.7, symlinking Ruby 2.7 binary to /usr/bin/ruby and manually updating the PKGBUILD to require ruby2.7 instead of ruby fixes it."

I am not a fan of this symlink. Best to wait for h2o to support Ruby 3. https://github.com/h2o/h2o/issues/2789

In the meantime, like the AUR package h2o-git, I have disabled mruby.