From 9d65c491e7e483dcef86951107e2595374cd520b Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Thu, 12 Mar 2026 21:56:28 +0800 Subject: [PATCH] Add ext-password-argon2 --- config/pkg/ext/builtin-extensions.yml | 8 +++++ src/Package/Extension/password_argon2.php | 37 +++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 src/Package/Extension/password_argon2.php diff --git a/config/pkg/ext/builtin-extensions.yml b/config/pkg/ext/builtin-extensions.yml index 00d1d593..76b20644 100644 --- a/config/pkg/ext/builtin-extensions.yml +++ b/config/pkg/ext/builtin-extensions.yml @@ -144,6 +144,14 @@ ext-openssl: arg-type: custom arg-type@windows: with build-with-php: true +ext-password-argon2: + type: php-extension + depends: + - libargon2 + - ext-openssl + php-extension: + arg-type: custom + display-name: '' ext-phar: type: php-extension depends: diff --git a/src/Package/Extension/password_argon2.php b/src/Package/Extension/password_argon2.php new file mode 100644 index 00000000..77122405 --- /dev/null +++ b/src/Package/Extension/password_argon2.php @@ -0,0 +1,37 @@ +execWithResult(BUILD_ROOT_PATH . '/bin/php -n -r "assert(defined(\'PASSWORD_ARGON2I\'));"'); + if ($ret !== 0) { + throw new ValidationException('extension ' . $this->getName() . ' failed sanity check', validation_module: 'password_argon2 function check'); + } + } + + #[CustomPhpConfigureArg('Linux')] + #[CustomPhpConfigureArg('Darwin')] + public function getConfigureArg(PackageInstaller $installer, PackageBuilder $builder): string + { + if ($installer->getLibraryPackage('openssl') !== null) { + if (php::getPHPVersionID() >= 80500 || (php::getPHPVersionID() >= 80400 && !$builder->getOption('enable-zts'))) { + return '--without-password-argon2'; // use --with-openssl-argon2 in openssl extension instead + } + } + return '--with-password-argon2'; + } +}