Skip to content

Commit

Permalink
www-servers/nginx-unit: bump
Browse files Browse the repository at this point in the history
Signed-off-by: Vadim Misbakh-Soloviov <[email protected]>
  • Loading branch information
msva committed Jun 9, 2024
1 parent 1b1a642 commit f7b4ce9
Showing 1 changed file with 206 additions and 0 deletions.
206 changes: 206 additions & 0 deletions www-servers/nginx-unit/nginx-unit-1.32.1-r10.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

PYTHON_COMPAT=( python3_{8..12} pypy3 )
PYTHON_REQ_USE="threads(+)"

RUBY_OPTIONAL="yes"
USE_RUBY="ruby31 ruby32 ruby33"

PHP_EXT_INI="no"
PHP_EXT_NAME="dummy"
PHP_EXT_OPTIONAL_USE="unit_modules_php"
PHP_EXT_NEEDED_USE="embed"
USE_PHP="php8-1 php8-2"

inherit systemd php-ext-source-r3 python-r1 ruby-ng toolchain-funcs flag-o-matic patches
# golang-base

DESCRIPTION="Dynamic web and application server"
HOMEPAGE="https://unit.nginx.org/"
LICENSE="Apache-2.0"
SLOT="0"

if [[ "${PV}" = 9999 ]]; then
EGIT_REPO_URI="https://github.com/nginx/unit"
MY_P="${P}"
inherit git-r3
else
MY_P="${P//nginx-}"
SRC_URI="https://unit.nginx.org/download/${MY_P}.tar.gz"
KEYWORDS="~amd64 ~arm ~arm64 ~x86"
fi

UNIT_MODULES="perl php python ruby"
# go java nodejs
# ^ not needed, as unit stuf normally installs with language package managers as vendored dependency of application
IUSE="debug examples ipv6 ssl +unix-sockets"

for mod in $UNIT_MODULES; do
IUSE="${IUSE} unit_modules_${mod}"
done

REQUIRED_USE="unit_modules_python? ( ${PYTHON_REQUIRED_USE} )"

DEPEND="
unit_modules_perl? (
dev-lang/perl:=
)
unit_modules_python? (
${PYTHON_DEPS}
)
unit_modules_ruby? (
$(ruby_implementations_depend)
)
ssl? (
dev-libs/openssl:0=
)
"
# unit_modules_go? (
# dev-lang/go:*
# )
# unit_modules_nodejs? (
# net-libs/nodejs:*
# )
# unit_modules_java? (
# virtual/jre:*
# )
# unit_modules_wasm? (
# dev-util/wasmer
# )
RDEPEND="${DEPEND}"
S="${WORKDIR}/${MY_P}"

my_econf() {
echo ./configure "${@}"
./configure "${@}"
}

pkg_setup() {
use unit_modules_ruby && ruby-ng_pkg_setup
}

src_unpack() {
# prevent ruby-ng
if [[ "${PV}" == 9999 ]]; then
git-r3_src_unpack
else
default
fi
}

src_prepare() {
sed -r \
-e 's@-Werror@@g' \
-i auto/cc/test || die

sed -i '/^CFLAGS/d' auto/make || die

sed \
-e '/NXT_LOGDIR/d' \
-e '/NXT_RUNSTATEDIR/d' \
-i auto/make || die "Failed to monkeypatch QA issues with installation"

patches_src_prepare
tc-export_build_env
}

_unit_java_configure() {
unset _JAVA_OPTIONS # breaks the build if defined
my_econf java --home="${NGINX_UNIT_JAVA_HOME:-/etc/java-config-2/current-system-vm}" # multislot?
# ^ if we will use just ${JAVA_HOME}, then it will be the same result
# as if we called it without the --home (it takes that by itself)
# Also, JAVA_HOME can be inherited from user's environment (so,
# user-vm will be used instead of system-vm).
# That's why I decided to manually set system-vm, but still
# give user a way to specify exact the vm they want.
}
# _unit_go_configure() {
# # Actually, it is used as external, so all the configuration made on app (and go) side
# # ./configure go --go-path="$(get_golibdir_gopath)" # deprecated golang-base eclass
# my_econf go --go-path="${EPREFIX}/usr/lib/go" # multislot?
# }
#_unit_nodejs_configure() {
# # Actually, it is used as external, so all the configuration made on app (and nodejs) side
# # my_econf nodejs --node-gyp="/usr/$(get_libdir)/node_modules/npm/bin/node-gyp-bin/node-gyp"
#}
#_unit_wasm_configure() {
# # there is only wasmer on gentoo repo ATM. Default wasmtime is only on 3party overlay
# my_econf wasm \
# --runtime="wasmer" \
# --include=... \
# --lib-path=... \
#}
_unit_perl_configure() {
my_econf perl
}
_unit_php_configure() {
for impl in $(php_get_slots); do
my_econf php \
--config="/usr/$(get_libdir)/${impl}/bin/php-config" \
--module="${impl/.}" \
--lib-path="/usr/$(get_libdir)/${impl}/$(get_libdir)" \
|| die "Failed to configure PHP module for ${impl} target"
done
}
_unit_python_configure() {
_unit_python_configure_each() {
my_econf python --config="${EPYTHON}-config" --module="${EPYTHON/.}"
}
python_foreach_impl _unit_python_configure_each
}
_unit_ruby_configure() {
each_ruby_configure() {
cd "${WORKDIR}/${MY_P}"
my_econf ruby --ruby="${RUBY}" --module="$(basename ${RUBY})"
}
ruby-ng_src_configure
}

src_configure() {
append-cflags $(test-flags-CC -fPIC)
local opt=(
--prefix="/usr"
--modulesdir="/usr/$(get_libdir)/${PN}"
--libdir="/usr/$(get_libdir)"
--localstatedir="/var"
--runstatedir="/run/${PN}"
--statedir="/var/lib/${PN}"
--logdir="/var/log"
--tmpdir="/tmp"
--pid="/run/${PN}.pid"
--log="/var/log/${PN}.log"
$(usex ipv6 '' "--no-ipv6")
$(usex unix-sockets "--control=unix:/run/${PN}.sock" "--no-unix-sockets")
$(usex ssl "--openssl" "")
$(usex debug "--debug" "")
# --njs
)
my_econf \
${opt[@]} \
--cc="$(tc-getCC)" \
--cc-opt="${CFLAGS}" \
--ld-opt="${LDFLAGS}" \
|| die "Core configuration failed!"

for mod in $UNIT_MODULES; do
use "unit_modules_${mod}" && "_unit_${mod}_configure"
done
}

src_compile() {
# Prevent ruby-ng, and also force to use "all" target
emake all
}

src_install() {
emake DESTDIR="${D}" install libunit-install
diropts -m 0770
keepdir /var/lib/"${PN}"
systemd_dounit "${FILESDIR}"/init/"${PN}".service
systemd_install_dropin "${PN}".service "${FILESDIR}"/init/"${PN}".service.conf
newconfd "${FILESDIR}"/init/"${PN}".confd "${PN}"
newinitd "${FILESDIR}"/init/"${PN}".initd "${PN}"
}

0 comments on commit f7b4ce9

Please sign in to comment.