www-servers/h2o: amd64/x86 stable
[gentoo.git] / www-servers / h2o / h2o-2.2.5.ebuild
1 # Copyright 1999-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI="6"
5 CMAKE_MAKEFILE_GENERATOR="emake"
6 SSL_DEPS_SKIP=1
7 USE_RUBY="ruby24 ruby25 ruby26"
8
9 inherit cmake-utils ruby-single ssl-cert systemd toolchain-funcs user
10
11 DESCRIPTION="H2O - the optimized HTTP/1, HTTP/2 server"
12 HOMEPAGE="https://h2o.examp1e.net/"
13 SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
14
15 LICENSE="MIT"
16 SLOT="0"
17 KEYWORDS="amd64 x86"
18 IUSE="libh2o libressl +mruby"
19
20 RDEPEND="dev-lang/perl
21         sys-libs/zlib
22         libh2o? ( dev-libs/libuv )
23         !libressl? ( dev-libs/openssl:0= )
24         libressl? ( dev-libs/libressl:0= )"
25 DEPEND="${RDEPEND}
26         libh2o? ( virtual/pkgconfig )
27         mruby? (
28                 ${RUBY_DEPS}
29                 || (
30                         dev-libs/onigmo
31                         dev-libs/oniguruma
32                 )
33                 sys-devel/bison
34                 virtual/pkgconfig
35         )"
36
37 PATCHES=(
38         "${FILESDIR}"/${PN}-2.2-libressl-2.7.patch
39         "${FILESDIR}"/${PN}-2.2-mruby.patch
40 )
41
42 pkg_setup() {
43         enewgroup ${PN}
44         enewuser ${PN} -1 -1 -1 ${PN}
45 }
46
47 src_prepare() {
48         cmake-utils_src_prepare
49
50         local ruby="ruby"
51         if use mruby; then
52                 for ruby in ${RUBY_TARGETS_PREFERENCE}; do
53                         if has_version dev-lang/ruby:${ruby:4:1}.${ruby:5}; then
54                                 break
55                         fi
56                         ruby=
57                 done
58                 [[ -z ${ruby} ]] && die "no suitable ruby version found"
59         fi
60
61         sed -i \
62                 -e "/INSTALL/s:\(/doc/${PN}\) :\1/html :" \
63                 -e "/INSTALL/s:\(/doc\)/${PN}:\1/${PF}:" \
64                 -e "s: ruby: ${ruby}:" \
65                 CMakeLists.txt
66
67         sed -i "s:pkg-config:$(tc-getPKG_CONFIG):g" deps/mruby/lib/mruby/gem.rb
68         tc-export CC
69         export LD="$(tc-getCC)"
70 }
71
72 src_configure() {
73         local mycmakeargs=(
74                 -DCMAKE_INSTALL_SYSCONFDIR="${EPREFIX}"/etc/${PN}
75                 -DWITH_MRUBY=$(usex mruby)
76                 -DWITHOUT_LIBS=$(usex !libh2o)
77                 -DBUILD_SHARED_LIBS=$(usex libh2o)
78         )
79         cmake-utils_src_configure
80 }
81
82 src_install() {
83         cmake-utils_src_install
84
85         keepdir /var/www/localhost/htdocs
86
87         insinto /etc/${PN}
88         doins "${FILESDIR}"/${PN}.conf
89
90         newinitd "${FILESDIR}"/${PN}.initd ${PN}
91         systemd_dounit "${FILESDIR}"/${PN}.service
92
93         insinto /etc/logrotate.d
94         newins "${FILESDIR}"/${PN}.logrotate ${PN}
95
96         keepdir /var/log/${PN}
97         fowners ${PN}:${PN} /var/log/${PN}
98         fperms 0750 /var/log/${PN}
99 }
100
101 pkg_postinst() {
102         if [[ ! -f "${EROOT}"etc/ssl/${PN}/server.key ]]; then
103                 install_cert /etc/ssl/${PN}/server
104                 chown ${PN}:${PN} "${EROOT}"etc/ssl/${PN}/server.*
105         fi
106 }