nginx-mod-build-lua/build-alpine.sh

81 lines
1.8 KiB
Bash
Raw Normal View History

2019-03-16 23:54:13 +00:00
#!/bin/sh -e
resolve_package() {
for pkg in "$@"
do
apk info "$pkg" | head -n1 | awk '{print $1}'
done
}
strip_version_from_pkg_name() {
for pkg in "$@"
do
echo "$pkg" | sed 's,-[0-9a-zA-Z.]\+-r[0-9]\+$,,'
done
}
find_runtime_dependency_pkgs() {
for p in "$@"
do
ldd "$p" 2>/dev/null |\
grep '=> .\+\.so' |\
awk '{print $3}' |\
sort |\
uniq |\
while read -r so
do
apk info --who-owns $so
done |\
awk '{print $5}' |\
awk -F- '{print $1}'
done
}
find_devel_pkg() {
# shellcheck disable=SC2046
strip_version_from_pkg_name $(
apk list -d "$1" |\
grep dev |\
sort |\
uniq |\
awk '{print $1}'
)
}
# retrieve configure args of already packaged nginx
NGINX_CONFIGURE_ARGS="$(nginx -V 2>&1 | grep -o '^configure arguments: .*$' | sed 's,^configure arguments: ,,g')"
# remove preconfigured dynamic modules so only ours will be placed in the objs folder
NGINX_CONFIGURE_ARGS="$(printf '%s' "$NGINX_CONFIGURE_ARGS" | sed 's,--with-[^=]\+module=dynamic,,g')"
apk update
# Determine all dependencies used for the packaged nginx and install them
DEPENDENCIES="$(
find_runtime_dependency_pkgs /usr/lib/nginx/modules/*.so
# shellcheck disable=SC2046
strip_version_from_pkg_name $(resolve_package $(apk info -R nginx | tail -n+2))
)"
DEVPACKAGES="$(for dep in $DEPENDENCIES; do find_devel_pkg "$dep"; done | sort | uniq)"
apk add --virtual .build-deps \
gcc \
libc-dev \
make \
linux-headers \
$DEVPACKAGES
tar -zx -f nginx.tar.gz
rm nginx.tar.gz
cd nginx-*/
./configure $NGINX_CONFIGURE_ARGS --add-dynamic-module=../module --with-debug
make modules
2019-03-16 23:57:59 +00:00
. /etc/os-release
versionsuffix="$ID$VERSION_ID-nginx$NGINX_VERSION"
2019-03-16 23:54:13 +00:00
find_runtime_dependency_pkgs objs/*.so > "../required_packages-$versionsuffix.txt"
2019-03-16 23:54:13 +00:00
for so in objs/*.so
do
name="$(basename "$so" .so)-$versionsuffix.so"
2019-03-16 23:54:13 +00:00
install -m644 "$so" "../$name"
done