ci: improve linker flags (#383)

This commit is contained in:
Kévin Dunglas 2023-12-14 21:50:09 +01:00 committed by GitHub
parent efa8b243c9
commit fd6e28df2a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 31 deletions

View File

@ -88,7 +88,7 @@ COPY --link testdata testdata
ENV CGO_LDFLAGS="-lssl -lcrypto -lreadline -largon2 -lcurl -lonig -lz $PHP_LDFLAGS" CGO_CFLAGS="-DFRANKENPHP_VERSION=$FRANKENPHP_VERSION $PHP_CFLAGS" CGO_CPPFLAGS=$PHP_CPPFLAGS
WORKDIR /go/src/app/caddy/frankenphp
RUN GOBIN=/usr/local/bin go install -ldflags "-X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy'" && \
RUN GOBIN=/usr/local/bin go install -ldflags "-w -s -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy'" && \
setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \
cp Caddyfile /etc/caddy/Caddyfile && \
frankenphp version

View File

@ -85,7 +85,7 @@ COPY --link testdata testdata
ENV CGO_LDFLAGS="-lssl -lcrypto -lreadline -largon2 -lcurl -lonig -lz $PHP_LDFLAGS" CGO_CFLAGS="-DFRANKENPHP_VERSION=$FRANKENPHP_VERSION $PHP_CFLAGS" CGO_CPPFLAGS=$PHP_CPPFLAGS
WORKDIR /go/src/app/caddy/frankenphp
RUN GOBIN=/usr/local/bin go install -ldflags "-extldflags '-Wl,-z,stack-size=0x80000' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy'" && \
RUN GOBIN=/usr/local/bin go install -ldflags "-w -s -extldflags '-Wl,-z,stack-size=0x80000' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy'" && \
setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \
frankenphp version

View File

@ -9,12 +9,12 @@ fi
arch="$(uname -m)"
os="$(uname -s | tr '[:upper:]' '[:lower:]')"
if [ "$os" = "darwin" ]; then
if [ "${os}" = "darwin" ]; then
os="mac"
fi
if [ -z "$PHP_EXTENSIONS" ]; then
if [ "$os" = "mac" ]; then
if [ -z "${PHP_EXTENSIONS}" ]; then
if [ "${os}" = "mac" ]; then
# Temporary fix for https://github.com/crazywhalecc/static-php-cli/issues/278 (remove pdo_pgsql, pgsql and ldap)
export PHP_EXTENSIONS="apcu,bcmath,bz2,calendar,ctype,curl,dba,dom,exif,fileinfo,filter,gd,iconv,intl,mbregex,mbstring,mysqli,mysqlnd,opcache,openssl,pcntl,pdo,pdo_mysql,pdo_sqlite,phar,posix,readline,redis,session,simplexml,sockets,sqlite3,sysvsem,tokenizer,xml,xmlreader,xmlwriter,zip,zlib"
else
@ -22,32 +22,32 @@ if [ -z "$PHP_EXTENSIONS" ]; then
fi
fi
if [ -z "$PHP_EXTENSIONS_LIB" ]; then
if [ -z "${PHP_EXTENSIONS_LIB}" ]; then
export PHP_EXTENSION_LIBS="freetype,libjpeg,libavif,libwebp,libzip,bzip2"
fi
if [ -z "$PHP_VERSION" ]; then
if [ -z "${PHP_VERSION}" ]; then
export PHP_VERSION="8.3"
fi
if [ -z "$FRANKENPHP_VERSION" ]; then
if [ -z "${FRANKENPHP_VERSION}" ]; then
FRANKENPHP_VERSION="$(git rev-parse --verify HEAD)"
export FRANKENPHP_VERSION
elif [ -d ".git/" ]; then
CURRENT_REF="$(git rev-parse --abbrev-ref HEAD)"
export CURRENT_REF
if echo "$FRANKENPHP_VERSION" | grep -F -q "."; then
if echo "${FRANKENPHP_VERSION}" | grep -F -q "."; then
# Tag
git checkout "v$FRANKENPHP_VERSION"
git checkout "v${FRANKENPHP_VERSION}"
else
git checkout "$FRANKENPHP_VERSION"
git checkout "${FRANKENPHP_VERSION}"
fi
fi
bin="frankenphp-$os-$arch"
bin="frankenphp-${os}-${arch}"
if [ "$CLEAN" ]; then
if [ -n "${CLEAN}" ]; then
rm -Rf dist/
go clean -cache
fi
@ -70,10 +70,10 @@ else
if type "brew" > /dev/null; then
packages="composer"
if ! type "go" > /dev/null; then
packages="$packages go"
packages="${packages} go"
fi
if [ "$RELEASE" ]; then
packages="$packages gh"
if [ -n "${RELEASE}" ]; then
packages="${packages} gh"
fi
# shellcheck disable=SC2086
@ -82,24 +82,24 @@ else
composer install --no-dev -a
if [ "$os" = "linux" ]; then
if [ "${os}" = "linux" ]; then
extraOpts="--disable-opcache-jit"
fi
./bin/spc doctor
./bin/spc fetch --with-php="$PHP_VERSION" --for-extensions="$PHP_EXTENSIONS"
./bin/spc fetch --with-php="${PHP_VERSION}" --for-extensions="${PHP_EXTENSIONS}"
# shellcheck disable=SC2086
./bin/spc build --enable-zts --build-embed $extraOpts "$PHP_EXTENSIONS" --with-libs="$PHP_EXTENSION_LIBS"
./bin/spc build --enable-zts --build-embed ${extraOpts} "${PHP_EXTENSIONS}" --with-libs="${PHP_EXTENSION_LIBS}"
fi
CGO_CFLAGS="-DFRANKENPHP_VERSION=$FRANKENPHP_VERSION $(./buildroot/bin/php-config --includes | sed s#-I/#-I"$PWD"/buildroot/#g)"
CGO_CFLAGS="-DFRANKENPHP_VERSION=${FRANKENPHP_VERSION} $(./buildroot/bin/php-config --includes | sed s#-I/#-I"${PWD}"/buildroot/#g)"
export CGO_CFLAGS
if [ "$os" = "mac" ]; then
if [ "${os}" = "mac" ]; then
export CGO_LDFLAGS="-framework CoreFoundation -framework SystemConfiguration"
fi
CGO_LDFLAGS="$CGO_LDFLAGS $(./buildroot/bin/php-config --ldflags) $(./buildroot/bin/php-config --libs)"
CGO_LDFLAGS="${CGO_LDFLAGS} $(./buildroot/bin/php-config --ldflags) $(./buildroot/bin/php-config --libs)"
export CGO_LDFLAGS
LIBPHP_VERSION="$(./buildroot/bin/php-config --version)"
@ -108,25 +108,29 @@ export LIBPHP_VERSION
cd ../..
# Embed PHP app, if any
if [ -d "$EMBED" ]; then
tar -cf app.tar -C "$EMBED" .
if [ -n "${EMBED}" ] && [ -d "${EMBED}" ]; then
tar -cf app.tar -C "${EMBED}" .
fi
if [ "${os}" = "linux" ]; then
extraExtldflags="-Wl,-z,stack-size=0x80000"
fi
cd caddy/frankenphp/
go env
go build -buildmode=pie -tags "cgo netgo osusergo static_build" -ldflags "-linkmode=external -extldflags -static-pie -w -s -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $LIBPHP_VERSION Caddy'" -o "../../dist/$bin"
go build -buildmode=pie -tags "cgo netgo osusergo static_build" -ldflags "-linkmode=external -extldflags '-static-pie ${extraExtldflags}' -w -s -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP ${FRANKENPHP_VERSION} PHP ${LIBPHP_VERSION} Caddy'" -o "../../dist/${bin}"
cd ../..
if [ -d "$EMBED" ]; then
if [ -d "${EMBED}" ]; then
truncate -s 0 app.tar
fi
"dist/$bin" version
"dist/${bin}" version
if [ "$RELEASE" ]; then
gh release upload "v$FRANKENPHP_VERSION" "dist/$bin" --repo dunglas/frankenphp --clobber
if [ -n "${RELEASE}" ]; then
gh release upload "v${FRANKENPHP_VERSION}" "dist/${bin}" --repo dunglas/frankenphp --clobber
fi
if [ "$CURRENT_REF" ]; then
git checkout "$CURRENT_REF"
if [ -n "${CURRENT_REF}" ]; then
git checkout "${CURRENT_REF}"
fi