mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-03-18 21:04:52 +08:00
Add openssl version getter for Windows, test openssl
This commit is contained in:
parent
5f5d934d58
commit
af10cacdff
@ -36,4 +36,17 @@ class openssl extends Extension
|
|||||||
}
|
}
|
||||||
return $args;
|
return $args;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getWindowsConfigureArg(bool $shared = false): string
|
||||||
|
{
|
||||||
|
$args = '--with-openssl';
|
||||||
|
if (
|
||||||
|
$this->builder->getPHPVersionID() >= 80500 &&
|
||||||
|
($ver = $this->builder->getLib('openssl')->getLibVersion()) &&
|
||||||
|
version_compare($ver, '3.2.0', '>=')
|
||||||
|
) {
|
||||||
|
$args .= ' --with-openssl-argon2';
|
||||||
|
}
|
||||||
|
return $args;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,7 +29,7 @@ use SPC\store\FileSystem;
|
|||||||
|
|
||||||
class openssl extends LinuxLibraryBase
|
class openssl extends LinuxLibraryBase
|
||||||
{
|
{
|
||||||
use \SPC\builder\unix\library\openssl;
|
use \SPC\builder\traits\openssl;
|
||||||
|
|
||||||
public const NAME = 'openssl';
|
public const NAME = 'openssl';
|
||||||
|
|
||||||
|
|||||||
@ -28,7 +28,7 @@ use SPC\store\FileSystem;
|
|||||||
|
|
||||||
class openssl extends MacOSLibraryBase
|
class openssl extends MacOSLibraryBase
|
||||||
{
|
{
|
||||||
use \SPC\builder\unix\library\openssl;
|
use \SPC\builder\traits\openssl;
|
||||||
|
|
||||||
public const NAME = 'openssl';
|
public const NAME = 'openssl';
|
||||||
|
|
||||||
|
|||||||
38
src/SPC/builder/traits/openssl.php
Normal file
38
src/SPC/builder/traits/openssl.php
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace SPC\builder\traits;
|
||||||
|
|
||||||
|
use SPC\exception\RuntimeException;
|
||||||
|
use SPC\store\FileSystem;
|
||||||
|
use SPC\util\PkgConfigUtil;
|
||||||
|
|
||||||
|
trait openssl
|
||||||
|
{
|
||||||
|
public function getLibVersion(): ?string
|
||||||
|
{
|
||||||
|
// get openssl version from source directory
|
||||||
|
if (file_exists("{$this->source_dir}/VERSION.dat")) {
|
||||||
|
// parse as INI
|
||||||
|
$version = parse_ini_file("{$this->source_dir}/VERSION.dat");
|
||||||
|
if ($version !== false) {
|
||||||
|
return "{$version['MAJOR']}.{$version['MINOR']}.{$version['PATCH']}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// get openssl version from pkg-config
|
||||||
|
if (PHP_OS_FAMILY !== 'Windows') {
|
||||||
|
try {
|
||||||
|
return PkgConfigUtil::getModuleVersion('openssl');
|
||||||
|
} catch (RuntimeException) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// get openssl version from header openssl/opensslv.h
|
||||||
|
if (file_exists(BUILD_INCLUDE_PATH . '/openssl/opensslv.h')) {
|
||||||
|
if (preg_match('/OPENSSL_VERSION_STR "(.*)"/', FileSystem::readFile(BUILD_INCLUDE_PATH . '/openssl/opensslv.h'), $match)) {
|
||||||
|
return $match[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,21 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace SPC\builder\unix\library;
|
|
||||||
|
|
||||||
trait openssl
|
|
||||||
{
|
|
||||||
public function getLibVersion(): ?string
|
|
||||||
{
|
|
||||||
// get openssl version from source directory
|
|
||||||
if (file_exists("{$this->source_dir}/VERSION.dat")) {
|
|
||||||
// parse as INI
|
|
||||||
$version = parse_ini_file("{$this->source_dir}/VERSION.dat");
|
|
||||||
if ($version !== false) {
|
|
||||||
return "{$version['MAJOR']}.{$version['MINOR']}.{$version['PATCH']}";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -8,6 +8,21 @@ use SPC\exception\RuntimeException;
|
|||||||
|
|
||||||
class PkgConfigUtil
|
class PkgConfigUtil
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Returns the version of a module.
|
||||||
|
* This method uses `pkg-config --modversion` to get the version of the specified module.
|
||||||
|
* If the module is not found, it will throw a RuntimeException.
|
||||||
|
*
|
||||||
|
* @param string $pkg_config_str .pc file str, accepts multiple files
|
||||||
|
* @return string version string, e.g. "1.2.3"
|
||||||
|
* @throws RuntimeException
|
||||||
|
*/
|
||||||
|
public static function getModuleVersion(string $pkg_config_str): string
|
||||||
|
{
|
||||||
|
$result = self::execWithResult("pkg-config --modversion {$pkg_config_str}");
|
||||||
|
return trim($result);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns --cflags-only-other output.
|
* Returns --cflags-only-other output.
|
||||||
* The reason we return the string is we cannot use array_unique() on cflags,
|
* The reason we return the string is we cannot use array_unique() on cflags,
|
||||||
|
|||||||
@ -16,7 +16,7 @@ $test_php_version = [
|
|||||||
// '8.1',
|
// '8.1',
|
||||||
// '8.2',
|
// '8.2',
|
||||||
// '8.3',
|
// '8.3',
|
||||||
// '8.4',
|
'8.4',
|
||||||
'git',
|
'git',
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -49,8 +49,8 @@ $prefer_pre_built = false;
|
|||||||
|
|
||||||
// If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`).
|
// If you want to test your added extensions and libs, add below (comma separated, example `bcmath,openssl`).
|
||||||
$extensions = match (PHP_OS_FAMILY) {
|
$extensions = match (PHP_OS_FAMILY) {
|
||||||
'Linux', 'Darwin' => 'bcmath',
|
'Linux', 'Darwin' => 'openssl',
|
||||||
'Windows' => 'curl',
|
'Windows' => 'openssl',
|
||||||
};
|
};
|
||||||
|
|
||||||
// If you want to test shared extensions, add them below (comma separated, example `bcmath,openssl`).
|
// If you want to test shared extensions, add them below (comma separated, example `bcmath,openssl`).
|
||||||
@ -73,7 +73,7 @@ $with_libs = match (PHP_OS_FAMILY) {
|
|||||||
// You can use `common`, `bulk`, `minimal` or `none`.
|
// You can use `common`, `bulk`, `minimal` or `none`.
|
||||||
// note: combination is only available for *nix platform. Windows must use `none` combination
|
// note: combination is only available for *nix platform. Windows must use `none` combination
|
||||||
$base_combination = match (PHP_OS_FAMILY) {
|
$base_combination = match (PHP_OS_FAMILY) {
|
||||||
'Linux', 'Darwin' => 'common',
|
'Linux', 'Darwin' => 'minimal',
|
||||||
'Windows' => 'none',
|
'Windows' => 'none',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user