Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 22 additions & 1 deletion build-packages.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ if ! command -v ruby &>/dev/null; then
fi

if ! command -v fpm &>/dev/null; then
echo "Error: FPM (rubygem-fpm) is required to create RPM packages."
echo "Error: FPM (rubygem-fpm) is required to create RPM and DEB packages."
echo "Install it with: sudo gem install fpm"
exit 1
fi
Expand Down Expand Up @@ -116,4 +116,25 @@ fpm -s dir -t deb -n frankenphp -v "${frankenphp_version}" \
[ "$user_preexists" -eq 0 ] && sudo userdel frankenphp
[ "$group_preexists" -eq 0 ] && (sudo groupdel frankenphp || true)

echo "Creating APK package using FPM..."
fpm -s dir -t apk -n frankenphp -v "${frankenphp_version}" \
--architecture "${arch}" \
--config-files /etc/frankenphp/Caddyfile \
--config-files /etc/frankenphp/php.ini \
--depends "musl" \
--depends "libstdc++" \
--after-install ../package/alpine/frankenphp.post-install \
--before-remove ../package/alpine/frankenphp.pre-deinstall \
--after-remove ../package/alpine/frankenphp.post-deinstall \
--iteration "${iteration}" \
"${bin}=/usr/bin/frankenphp" \
"../package/alpine/frankenphp.openrc=/etc/init.d/frankenphp" \
"../package/rhel/frankenphp.service=/usr/lib/systemd/system/frankenphp.service" \
"../package/Caddyfile=/etc/frankenphp/Caddyfile" \
"../package/content/=/usr/share/frankenphp" \
"../package/etc/php.ini=/etc/frankenphp/php.ini" \
"../package/empty/=/etc/frankenphp/php.d" \
"../package/empty/=/usr/lib/frankenphp/modules" \
"../package/empty/=/var/lib/frankenphp"

cd ..
6 changes: 5 additions & 1 deletion build-static.sh
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,11 @@ fi
go env
cd caddy/
if [ -z "${SPC_LIBC}" ] || [ "${SPC_LIBC}" = "musl" ]; then
xcaddyGoBuildFlags="-buildmode=pie -tags cgo,netgo,osusergo,static_build,nobadger,nomysql,nopgx -ldflags \"-linkmode=external -extldflags '-static-pie ${muslStackSizeFix}' ${extraLdflags} -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP ${FRANKENPHP_VERSION} PHP ${LIBPHP_VERSION} Caddy'\""
if [ "${CC}" = "gcc" ]; then
xcaddyGoBuildFlags="-buildmode=pie -tags cgo,netgo,osusergo,nobadger,nomysql,nopgx -ldflags \"-linkmode=external -extldflags '-pie ${muslStackSizeFix}' ${extraLdflags} -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP ${FRANKENPHP_VERSION} PHP ${LIBPHP_VERSION} Caddy'\""
else
xcaddyGoBuildFlags="-buildmode=pie -tags cgo,netgo,osusergo,static_build,nobadger,nomysql,nopgx -ldflags \"-linkmode=external -extldflags '-static-pie ${muslStackSizeFix}' ${extraLdflags} -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP ${FRANKENPHP_VERSION} PHP ${LIBPHP_VERSION} Caddy'\""
fi
elif [ "${SPC_LIBC}" = "glibc" ]; then
xcaddyGoBuildFlags="-buildmode=pie -tags cgo,netgo,osusergo,nobadger,nomysql,nopgx -ldflags \"-linkmode=external -extldflags '-pie' ${extraLdflags} -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP ${FRANKENPHP_VERSION} PHP ${LIBPHP_VERSION} Caddy'\""
fi
Expand Down
28 changes: 28 additions & 0 deletions package/alpine/frankenphp.openrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/sbin/openrc-run

name="FrankenPHP"
description="Modern PHP app server"

command="/usr/bin/frankenphp"
command_args="run --environ --config /etc/frankenphp/Caddyfile"
command_user="frankenphp:frankenphp"
command_background="yes"
pidfile="/run/frankenphp/frankenphp.pid"
start_stop_daemon_args="--chdir /var/lib/frankenphp"

depend() {
need net
after firewall
}

start_pre() {
checkpath --directory --owner frankenphp:frankenphp --mode 0755 /run/frankenphp

$command validate --config /etc/frankenphp/Caddyfile
}

reload() {
ebegin "Reloading $name configuration"
$command reload --config /etc/frankenphp/Caddyfile --force
eend $?
}
13 changes: 13 additions & 0 deletions package/alpine/frankenphp.post-deinstall
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/sh

if getent passwd frankenphp >/dev/null; then
deluser frankenphp
fi

if getent group frankenphp >/dev/null; then
delgroup frankenphp
fi

rmdir /var/lib/frankenphp 2>/dev/null || true

exit 0
29 changes: 29 additions & 0 deletions package/alpine/frankenphp.post-install
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/sh

if ! getent group frankenphp >/dev/null; then
addgroup -S frankenphp
fi

if ! getent passwd frankenphp >/dev/null; then
adduser -S -h /var/lib/frankenphp -s /sbin/nologin -G frankenphp -g "FrankenPHP web server" frankenphp
fi

chown -R frankenphp:frankenphp /var/lib/frankenphp
chmod 755 /var/lib/frankenphp

# allow binding to privileged ports
if command -v setcap >/dev/null 2>&1; then
setcap cap_net_bind_service=+ep /usr/bin/frankenphp || true
fi

# trust FrankenPHP certificates
if [ -x /usr/bin/frankenphp ]; then
HOME=/var/lib/frankenphp /usr/bin/frankenphp trust || true
fi

if command -v rc-update >/dev/null 2>&1; then
rc-update add frankenphp default
rc-service frankenphp start
fi

exit 0
11 changes: 11 additions & 0 deletions package/alpine/frankenphp.pre-deinstall
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/sh

if command -v rc-service >/dev/null 2>&1; then
rc-service frankenphp stop || true
fi

if command -v rc-update >/dev/null 2>&1; then
rc-update del frankenphp default || true
fi

exit 0
4 changes: 4 additions & 0 deletions static-builder-musl.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,10 @@ ENV SPC_OPT_BUILD_ARGS='--with-config-file-path=/etc/frankenphp --with-config-fi
ENV SPC_REL_TYPE='binary'
ENV EXTENSION_DIR='/usr/lib/frankenphp/modules'

ENV CC='gcc'
ENV CXX='g++'
ENV CGO_LDFLAGS_ALLOW='-Wl,--allow-multiple-definition'

RUN --mount=type=secret,id=github-token \
GITHUB_TOKEN=$(cat /run/secrets/github-token) ./build-static.sh && \
rm -Rf dist/static-php-cli/source/*
Loading