diff --git a/bin/build-static-frankenphp b/bin/build-static-frankenphp index 805d51f8..3341b712 100755 --- a/bin/build-static-frankenphp +++ b/bin/build-static-frankenphp @@ -61,7 +61,8 @@ RUN sed -i 's/mirror.centos.org/vault.centos.org/g' /etc/yum.repos.d/*.repo && \ sed -i 's/^mirrorlist=http/#mirrorlist=http/g' /etc/yum.repos.d/*.repo RUN yum clean all && \ yum makecache && \ - yum update -y + yum update -y && \ + localedef -c -i en_US -f UTF-8 en_US.UTF-8 RUN yum install -y centos-release-scl @@ -137,7 +138,7 @@ MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/source:/app/source" MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/dist:/app/dist" MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/downloads:/app/downloads" MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/pkgroot:/app/pkgroot" -MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/dist:/frankenphp/dist" +MOUNT_LIST="$MOUNT_LIST -v ""$(pwd)""/frankenphp-dist:/frankenphp/dist" # Apply env in temp env file echo 'SPC_SKIP_DOCTOR_CHECK_ITEMS=if musl-wrapper is installed,if musl-cross-make is installed' > /tmp/spc-gnu-docker.env @@ -145,7 +146,7 @@ echo 'CC=/opt/rh/devtoolset-10/root/usr/bin/gcc' >> /tmp/spc-gnu-docker.env echo 'CXX=/opt/rh/devtoolset-10/root/usr/bin/g++' >> /tmp/spc-gnu-docker.env echo 'AR=/opt/rh/devtoolset-10/root/usr/bin/ar' >> /tmp/spc-gnu-docker.env echo 'LD=/opt/rh/devtoolset-10/root/usr/bin/ld' >> /tmp/spc-gnu-docker.env -echo 'SPC_DEFAULT_C_FLAGS=-fPIE' >> /tmp/spc-gnu-docker.env +echo 'SPC_DEFAULT_C_FLAGS=-fPIE -fPIC' >> /tmp/spc-gnu-docker.env echo 'SPC_NO_MUSL_PATH=yes' >> /tmp/spc-gnu-docker.env echo 'SPC_CMD_VAR_PHP_MAKE_EXTRA_LDFLAGS_PROGRAM="-Wl,-O1 -pie"' >> /tmp/spc-gnu-docker.env echo 'SPC_CMD_VAR_PHP_MAKE_EXTRA_LIBS="-ldl -lpthread -lm -lresolv -lutil -lrt"' >> /tmp/spc-gnu-docker.env diff --git a/bin/spc-alpine-docker b/bin/spc-alpine-docker index bee9d13c..28cc4939 100755 --- a/bin/spc-alpine-docker +++ b/bin/spc-alpine-docker @@ -81,7 +81,9 @@ RUN apk update; \ make \ pkgconfig \ wget \ - xz + xz \ + gettext-dev \ + binutils-gold RUN curl -#fSL https://dl.static-php.dev/static-php-cli/bulk/php-8.4.4-cli-linux-\$(uname -m).tar.gz | tar -xz -C /usr/local/bin && \ chmod +x /usr/local/bin/php diff --git a/bin/spc-gnu-docker b/bin/spc-gnu-docker index a8998ee8..0b5c45c2 100755 --- a/bin/spc-gnu-docker +++ b/bin/spc-gnu-docker @@ -57,7 +57,8 @@ RUN sed -i 's/mirror.centos.org/vault.centos.org/g' /etc/yum.repos.d/*.repo && \ sed -i 's/^mirrorlist=http/#mirrorlist=http/g' /etc/yum.repos.d/*.repo RUN yum clean all && \ yum makecache && \ - yum update -y + yum update -y && \ + localedef -c -i en_US -f UTF-8 en_US.UTF-8 RUN yum install -y centos-release-scl diff --git a/config/ext.json b/config/ext.json index 5d5aee50..323443e8 100644 --- a/config/ext.json +++ b/config/ext.json @@ -116,7 +116,7 @@ }, "ffi": { "support": { - "Linux": "no", + "Linux": "partial", "BSD": "wip" }, "notes": true, diff --git a/src/SPC/builder/unix/library/attr.php b/src/SPC/builder/unix/library/attr.php index d49cab41..f57d26bd 100644 --- a/src/SPC/builder/unix/library/attr.php +++ b/src/SPC/builder/unix/library/attr.php @@ -18,8 +18,10 @@ trait attr 'CFLAGS' => trim('-I' . BUILD_INCLUDE_PATH . ' ' . $this->getLibExtraCFlags()), 'LDFLAGS' => trim('-L' . BUILD_LIB_PATH . ' ' . $this->getLibExtraLdFlags()), 'LIBS' => $this->getLibExtraLibs(), - ])->execWithEnv('./autogen.sh') - ->execWithEnv('./configure --prefix= --enable-static --disable-shared --disable-nls') + ]) + ->execWithEnv('libtoolize --force --copy') + ->execWithEnv('./autogen.sh') + ->execWithEnv('./configure --prefix= --enable-static --disable-shared --with-pic --disable-nls') ->execWithEnv("make -j {$this->builder->concurrency}") ->exec('make install DESTDIR=' . BUILD_ROOT_PATH); diff --git a/src/SPC/builder/unix/library/libacl.php b/src/SPC/builder/unix/library/libacl.php index e43cc2fc..c9e55df5 100644 --- a/src/SPC/builder/unix/library/libacl.php +++ b/src/SPC/builder/unix/library/libacl.php @@ -35,6 +35,7 @@ trait libacl 'LDFLAGS' => trim('-L' . BUILD_LIB_PATH . ' ' . $this->getLibExtraLdFlags()), 'LIBS' => $this->getLibExtraLibs(), ]) + ->execWithEnv('libtoolize --force --copy') ->execWithEnv('./autogen.sh') ->execWithEnv('./configure --prefix= --enable-static --disable-shared --disable-tests --disable-nls') ->execWithEnv("make -j {$this->builder->concurrency}") diff --git a/src/SPC/doctor/item/LinuxToolCheckList.php b/src/SPC/doctor/item/LinuxToolCheckList.php index 810614be..03702a84 100644 --- a/src/SPC/doctor/item/LinuxToolCheckList.php +++ b/src/SPC/doctor/item/LinuxToolCheckList.php @@ -37,7 +37,7 @@ class LinuxToolCheckList 'git', 'autoconf', 'automake', 'tar', 'unzip', 'gzip', 'gcc', 'bzip2', 'cmake', 'patch', - 'xz', 'libtool', + 'xz', 'libtool', 'gettext-devel', ]; public const TOOLS_ARCH = [ @@ -47,6 +47,7 @@ class LinuxToolCheckList private const PROVIDED_COMMAND = [ 'binutils-gold' => 'ld.gold', 'base-devel' => 'automake', + 'gettext-devel' => 'gettext', ]; /** @noinspection PhpUnused */ diff --git a/src/globals/ext-tests/gettext.php b/src/globals/ext-tests/gettext.php index a50baa5d..f34f487a 100644 --- a/src/globals/ext-tests/gettext.php +++ b/src/globals/ext-tests/gettext.php @@ -14,7 +14,7 @@ if (!file_exists('locale/en_US/LC_MESSAGES/test.mo')) { file_put_contents('locale/en_US/LC_MESSAGES/test.mo', base64_decode($mo)); } putenv('LANG=en_US'); -setlocale(LC_ALL, 'en_US'); +assert(setlocale(LC_ALL, 'en_US.utf-8') === 'en_US.utf-8'); $domain = 'test'; bindtextdomain($domain, 'locale/'); diff --git a/src/globals/test-extensions.php b/src/globals/test-extensions.php index 62a8c724..ee5911d7 100644 --- a/src/globals/test-extensions.php +++ b/src/globals/test-extensions.php @@ -21,7 +21,7 @@ $test_php_version = [ // test os (macos-13, macos-14, ubuntu-latest, windows-latest are available) $test_os = [ - // 'macos-13', + 'macos-13', 'macos-14', 'ubuntu-latest', // 'windows-latest', @@ -40,7 +40,7 @@ $prefer_pre_built = false; // If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`). $extensions = match (PHP_OS_FAMILY) { - 'Linux', 'Darwin' => 'imagick', + 'Linux', 'Darwin' => 'gettext', 'Windows' => 'bcmath', };