mirror of
https://github.com/php-win-ext/php-sdk-binary-tools.git
synced 2026-03-24 09:02:12 +01:00
Compare commits
11 Commits
php-sdk-2.
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
53d62894b7 | ||
|
|
f0b6aacb6a | ||
|
|
1cd2c55d47 | ||
|
|
afa44a8ac6 | ||
|
|
dc48bef3a6 | ||
|
|
449a2092e0 | ||
|
|
4b1dbb58de | ||
|
|
a047c663b9 | ||
|
|
20d13baab2 | ||
|
|
78c9f7b6d7 | ||
|
|
8a4ca6589c |
0
bin/7za.exe
Normal file → Executable file
0
bin/7za.exe
Normal file → Executable file
0
bin/deplister.exe
Normal file → Executable file
0
bin/deplister.exe
Normal file → Executable file
0
bin/jq.exe
Normal file → Executable file
0
bin/jq.exe
Normal file → Executable file
0
bin/lemon.exe
Normal file → Executable file
0
bin/lemon.exe
Normal file → Executable file
0
bin/php/do_php.bat
Normal file → Executable file
0
bin/php/do_php.bat
Normal file → Executable file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
bin/php/ext/php_zip.dll
Normal file
BIN
bin/php/ext/php_zip.dll
Normal file
Binary file not shown.
Binary file not shown.
BIN
bin/php/libcrypto-3-x64.dll
Normal file
BIN
bin/php/libcrypto-3-x64.dll
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
bin/php/libssl-3-x64.dll
Normal file
BIN
bin/php/libssl-3-x64.dll
Normal file
Binary file not shown.
Binary file not shown.
BIN
bin/php/php.exe
Normal file → Executable file
BIN
bin/php/php.exe
Normal file → Executable file
Binary file not shown.
@@ -5,6 +5,7 @@ extension=php_sqlite3.dll
|
||||
extension=php_openssl.dll
|
||||
extension=php_mbstring.dll
|
||||
extension=php_mysqli.dll
|
||||
extension=php_zip.dll
|
||||
memory_limit=4G
|
||||
|
||||
error_reporting=-1
|
||||
|
||||
BIN
bin/php/php8.dll
BIN
bin/php/php8.dll
Binary file not shown.
0
bin/phpsdk_buildtree.bat
Normal file → Executable file
0
bin/phpsdk_buildtree.bat
Normal file → Executable file
0
bin/phpsdk_deps.bat
Normal file → Executable file
0
bin/phpsdk_deps.bat
Normal file → Executable file
0
bin/phpsdk_dllmap.bat
Normal file → Executable file
0
bin/phpsdk_dllmap.bat
Normal file → Executable file
@@ -65,7 +65,7 @@ foreach ($dirs as $path) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!preg_match(",.*-(vc\d+)-(x\d\d)\.zip,", $filename, $m)) {
|
||||
if (!preg_match(",.*-(v[c|s]\d+)-(x\d\d)\.zip,", $filename, $m)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
0
bin/phpsdk_dumpenv.bat
Normal file → Executable file
0
bin/phpsdk_dumpenv.bat
Normal file → Executable file
0
bin/phpsdk_pgo.bat
Normal file → Executable file
0
bin/phpsdk_pgo.bat
Normal file → Executable file
0
bin/phpsdk_setshell.bat
Normal file → Executable file
0
bin/phpsdk_setshell.bat
Normal file → Executable file
0
bin/phpsdk_setvars.bat
Normal file → Executable file
0
bin/phpsdk_setvars.bat
Normal file → Executable file
0
bin/phpsdk_version.bat
Normal file → Executable file
0
bin/phpsdk_version.bat
Normal file → Executable file
0
bin/sqlite3.exe
Normal file → Executable file
0
bin/sqlite3.exe
Normal file → Executable file
0
bin/task.exe
Normal file → Executable file
0
bin/task.exe
Normal file → Executable file
BIN
bin/vswhere.exe
Normal file → Executable file
BIN
bin/vswhere.exe
Normal file → Executable file
Binary file not shown.
@@ -8,13 +8,23 @@ class Fetcher
|
||||
{
|
||||
use FileOps;
|
||||
|
||||
/** @var string */
|
||||
protected $host;
|
||||
protected $port;
|
||||
protected $stability;
|
||||
protected $arch;
|
||||
protected $series;
|
||||
protected $scheme;
|
||||
|
||||
/** @var int */
|
||||
protected $port;
|
||||
|
||||
/** @var ?string */
|
||||
protected $stability;
|
||||
|
||||
/** @var ?string */
|
||||
protected $arch;
|
||||
|
||||
/** @var Series */
|
||||
protected $series;
|
||||
|
||||
/** @var string */
|
||||
protected $scheme;
|
||||
|
||||
public function __construct(string $host, int $port, string $scheme = "https", string $arch = NULL, string $stability = NULL, Series $series = NULL)
|
||||
{/*{{{*/
|
||||
|
||||
@@ -8,12 +8,25 @@ class Manager
|
||||
{
|
||||
use FileOps;
|
||||
|
||||
/** @var string */
|
||||
protected $stability;
|
||||
|
||||
/** @var string */
|
||||
protected $arch;
|
||||
|
||||
/** @var string */
|
||||
protected $path;
|
||||
|
||||
/** @var Cache */
|
||||
protected $cache;
|
||||
|
||||
/** @var Series */
|
||||
protected $series;
|
||||
|
||||
/** @var Fetcher */
|
||||
protected $fetcher;
|
||||
|
||||
/** @var ?bool */
|
||||
protected $updatesFlag = NULL;
|
||||
|
||||
public function __construct(string $path, string $stability, string $arch)
|
||||
|
||||
@@ -8,9 +8,16 @@ class Package
|
||||
{
|
||||
use FileOps;
|
||||
|
||||
/** @var string */
|
||||
protected $name;
|
||||
|
||||
/** @var Series */
|
||||
protected $series;
|
||||
|
||||
/** @var Fetcher */
|
||||
protected $fetcher;
|
||||
|
||||
/** @var string */
|
||||
protected $filepath;
|
||||
|
||||
public function __construct(string $name, Series $series, Fetcher $fetcher)
|
||||
|
||||
@@ -8,10 +8,19 @@ use SDK\Exception;
|
||||
|
||||
class Series
|
||||
{
|
||||
/** @var ?Fetcher */
|
||||
protected $fetcher;
|
||||
|
||||
/** @var string */
|
||||
protected $stability;
|
||||
|
||||
/** @var string */
|
||||
protected $arch;
|
||||
|
||||
/** @var string */
|
||||
protected $rawData;
|
||||
|
||||
/** @var Cache */
|
||||
protected $cache;
|
||||
|
||||
public function __construct(string $stability, string $arch, Cache $cache, Fetcher $fetcher = NULL)
|
||||
@@ -59,6 +68,7 @@ class Series
|
||||
return "$base/series/$file";
|
||||
}/*}}}*/
|
||||
|
||||
/** @return array<string>|string */
|
||||
public function getData(bool $raw = false, bool $cache = true)
|
||||
{/*{{{*/
|
||||
if ($cache && $this->rawData) {
|
||||
|
||||
@@ -7,13 +7,25 @@ use SDK\{Config as SDKConfig, Exception};
|
||||
|
||||
abstract class PHP
|
||||
{
|
||||
/** @var string */
|
||||
protected $php_root;
|
||||
|
||||
/** @var string */
|
||||
protected $php_ext_root;
|
||||
|
||||
/** @var string */
|
||||
protected $opcache_file_cache;
|
||||
|
||||
/** @var string */
|
||||
protected $id;
|
||||
|
||||
/** @var string */
|
||||
protected $scenario;
|
||||
|
||||
/** @var \SDK\Build\PGO\Config */
|
||||
protected $conf;
|
||||
|
||||
/** @return void */
|
||||
protected function setupPaths()
|
||||
{
|
||||
$this->php_root = $this->getRootDir();
|
||||
@@ -30,12 +42,15 @@ abstract class PHP
|
||||
}
|
||||
}
|
||||
|
||||
abstract public function getExeFilename() : string;
|
||||
|
||||
/* TODO Might be improved. */
|
||||
public function isDist() : bool
|
||||
{
|
||||
return !file_exists("Makefile") && file_exists("php.exe");
|
||||
}
|
||||
|
||||
/** @return array<string,string> */
|
||||
protected function createEnv() : array
|
||||
{
|
||||
$env = getenv();
|
||||
@@ -96,7 +111,7 @@ abstract class PHP
|
||||
public function getVersion(bool $short = false) : string
|
||||
{
|
||||
$ret = NULL;
|
||||
$cli = new CLI($this->conf, $this->scenario);
|
||||
$cli = new CLI($this->conf);
|
||||
|
||||
$out = shell_exec($cli->getExeFilename() . " -n -v");
|
||||
|
||||
@@ -119,7 +134,7 @@ abstract class PHP
|
||||
|
||||
public function isThreadSafe() : bool
|
||||
{
|
||||
$cli = new CLI($this->conf, $this->scenario);
|
||||
$cli = new CLI($this->conf);
|
||||
|
||||
$out = shell_exec($cli->getExeFilename() . " -n -v");
|
||||
|
||||
@@ -131,6 +146,7 @@ abstract class PHP
|
||||
}
|
||||
|
||||
/* Need to cleanup it somewhere. */
|
||||
/** @return string */
|
||||
public function getIniFilename()
|
||||
{
|
||||
$ret = tempnam(sys_get_temp_dir(), "ini");
|
||||
@@ -163,6 +179,7 @@ abstract class PHP
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/** @return string */
|
||||
protected function getIniTplFilename()
|
||||
{
|
||||
$tpl_path = $this->conf->getTplDir("php");
|
||||
@@ -178,6 +195,7 @@ abstract class PHP
|
||||
return $construct;
|
||||
}
|
||||
|
||||
/** @param array<string,string> $extra_env */
|
||||
public function exec(string $php_cmd, string $args = NULL, array $extra_env = array()) : int
|
||||
{
|
||||
$env = $this->createEnv();
|
||||
|
||||
@@ -6,6 +6,12 @@ use SDK\Build\PGO\Interfaces;
|
||||
|
||||
abstract class Server
|
||||
{
|
||||
/** @var string */
|
||||
protected $name;
|
||||
|
||||
/** @var Interfaces\PHP */
|
||||
protected $php;
|
||||
|
||||
public function getName() : string
|
||||
{
|
||||
return $this->name;
|
||||
|
||||
@@ -3,19 +3,27 @@
|
||||
namespace SDK\Build\PGO\Abstracts;
|
||||
|
||||
use SDK\FileOps;
|
||||
use SDK\Build\PGO\Interfaces;
|
||||
use SDK\Build\PGO\Tool;
|
||||
|
||||
abstract class TrainingCase
|
||||
abstract class TrainingCase implements Interfaces\TrainingCase
|
||||
{
|
||||
use FileOps;
|
||||
|
||||
const TYPE_WEB = "web";
|
||||
const TYPE_CLI = "cli";
|
||||
|
||||
/** @var array<mixed> */
|
||||
protected $stat = array();
|
||||
|
||||
/** @var \SDK\Build\PGO\Config */
|
||||
protected $conf;
|
||||
|
||||
/** @var mixed */
|
||||
protected $php;
|
||||
|
||||
abstract public function getName() : string;
|
||||
|
||||
public function getType() : string
|
||||
{
|
||||
$type = $this->conf->getSectionItem($this->getName(), "type");
|
||||
|
||||
@@ -11,11 +11,22 @@ class Config
|
||||
const MODE_REINIT = 2; /* currently unused */
|
||||
const MODE_CHECK_INIT = 3;
|
||||
|
||||
/** @var int */
|
||||
protected $mode;
|
||||
|
||||
/** @var int */
|
||||
protected $last_port = 8081;
|
||||
|
||||
/** @var array<string,mixed> */
|
||||
protected $sections = array();
|
||||
|
||||
/** @var string */
|
||||
protected $scenario = "default";
|
||||
|
||||
/** @var array<mixed> */
|
||||
protected $tpl_vars = array();
|
||||
|
||||
/** @var array<mixed> */
|
||||
protected $srv = array();
|
||||
|
||||
public function __construct(int $mode = self::MODE_RUN)
|
||||
@@ -67,6 +78,7 @@ class Config
|
||||
}
|
||||
}
|
||||
|
||||
/** @return bool */
|
||||
public function isInitialized()
|
||||
{
|
||||
/* XXX Could be some better check. */
|
||||
@@ -161,6 +173,7 @@ class Config
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/** @param string ...$args */
|
||||
public function sectionItemExists(...$args) : bool
|
||||
{
|
||||
$i = 0;
|
||||
@@ -178,6 +191,10 @@ class Config
|
||||
return $i == count($args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string ...$args
|
||||
* @return mixed
|
||||
*/
|
||||
public function getSectionItem(...$args)
|
||||
{
|
||||
$i = 0;
|
||||
@@ -199,6 +216,7 @@ class Config
|
||||
return $it;
|
||||
}
|
||||
|
||||
/** @param string|int ...$args */
|
||||
public function setSectionItem(...$args) : void
|
||||
{
|
||||
$val = array_pop($args);
|
||||
@@ -238,6 +256,7 @@ class Config
|
||||
}
|
||||
}
|
||||
|
||||
/** @param string ...$args */
|
||||
public function buildTplVarName(...$args) : string
|
||||
{
|
||||
$tpl_k = array("PHP_SDK_PGO");
|
||||
@@ -249,6 +268,7 @@ class Config
|
||||
return implode("_", $tpl_k);
|
||||
}
|
||||
|
||||
/** @param array<string,mixed> $section */
|
||||
protected function importTplVars(string $section_name, array $section) : void
|
||||
{
|
||||
foreach($section as $k0 => $v0) {
|
||||
@@ -266,6 +286,7 @@ class Config
|
||||
}
|
||||
}
|
||||
|
||||
/** @param array<mixed> $additional_vars */
|
||||
public function processTpl(string $s, array $additional_vars = array()) : string
|
||||
{
|
||||
$vars = array_merge($this->tpl_vars, $additional_vars);
|
||||
@@ -275,6 +296,7 @@ class Config
|
||||
return $s;
|
||||
}
|
||||
|
||||
/** @param array<mixed> $additional_vars */
|
||||
public function processTplFile(string $tpl_fn, string $dst_fn, array $additional_vars = array()) : void
|
||||
{
|
||||
if (!file_exists($tpl_fn)) {
|
||||
@@ -293,6 +315,7 @@ class Config
|
||||
}
|
||||
}
|
||||
|
||||
/** @return string */
|
||||
public function getWorkSectionsFilename()
|
||||
{
|
||||
return $this->getWorkDir() . DIRECTORY_SEPARATOR . "phpsdk_pgo.json";
|
||||
@@ -338,6 +361,10 @@ class Config
|
||||
return getenv("PHP_SDK_PHP_CMD");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Interfaces\Server $item
|
||||
* @return void
|
||||
*/
|
||||
public function addSrv($item) : void
|
||||
{
|
||||
$name = strtolower($item->getName());
|
||||
@@ -350,6 +377,7 @@ class Config
|
||||
$this->srv[$name] = $item;
|
||||
}
|
||||
|
||||
/** @return array<string,Interfaces\Server>|Interfaces\Server|null */
|
||||
public function getSrv(?string $name = NULL)
|
||||
{
|
||||
$ret = NULL;
|
||||
|
||||
@@ -13,11 +13,19 @@ use SDK\Build\PGO\Tool\{PGO, PackageWorkman};
|
||||
|
||||
class Controller
|
||||
{
|
||||
/** @var string */
|
||||
protected $cmd;
|
||||
|
||||
/** @var ?string */
|
||||
protected $scenario;
|
||||
|
||||
/** @var PGOConfig */
|
||||
protected $conf;
|
||||
|
||||
/** @var array<string>|null */
|
||||
protected $cases;
|
||||
|
||||
/** @param array<string>|null $cases */
|
||||
public function __construct(string $cmd, ?string $scenario, ?array $cases)
|
||||
{
|
||||
$this->cmd = $cmd;
|
||||
@@ -29,6 +37,7 @@ class Controller
|
||||
$this->cases = $cases;
|
||||
}
|
||||
|
||||
/** @return mixed */
|
||||
protected function vitalizeSrv()
|
||||
{
|
||||
$all = $this->conf->getSrv("all");
|
||||
@@ -47,12 +56,15 @@ class Controller
|
||||
return $all;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $cmd
|
||||
* @return PGOConfig
|
||||
*/
|
||||
protected function setupConfig($cmd)
|
||||
{
|
||||
switch ($cmd) {
|
||||
default:
|
||||
throw new Exception("Unknown action '{$cmd}'.");
|
||||
break;
|
||||
case "check_init":
|
||||
$cnf = new PGOConfig(PGOConfig::MODE_CHECK_INIT);
|
||||
break;
|
||||
@@ -69,6 +81,10 @@ class Controller
|
||||
return $cnf;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $force
|
||||
* @return void
|
||||
*/
|
||||
public function handle($force)
|
||||
{
|
||||
/*$mode = (int)("init" !== $this->cmd);
|
||||
@@ -80,7 +96,6 @@ class Controller
|
||||
switch ($this->cmd) {
|
||||
default:
|
||||
throw new Exception("Unknown action '{$this->cmd}'.");
|
||||
break;
|
||||
case "init":
|
||||
$lk = new Lock("pgo_init");
|
||||
if (!$lk->locked()) {
|
||||
@@ -140,7 +155,6 @@ class Controller
|
||||
if (!file_exists($composer) || $force) {
|
||||
/* XXX this needs to go into the config, specifically for composer maybe even separate class. */
|
||||
$url = "https://getcomposer.org/installer";
|
||||
/* XXX remove the explicit version option when symfony demo is fixed. */
|
||||
$tool = $this->conf->getToolsDir() . DIRECTORY_SEPARATOR . "composer-setup.php";
|
||||
$pw->fetch($url, $tool, $force);
|
||||
$php->exec("$tool --install-dir=" . $this->conf->getToolsDir());
|
||||
@@ -148,6 +162,7 @@ class Controller
|
||||
}
|
||||
}
|
||||
|
||||
/** @return void */
|
||||
public function init(bool $force = false)
|
||||
{
|
||||
echo "\nInitializing PGO training environment.\n\n";
|
||||
@@ -181,11 +196,13 @@ class Controller
|
||||
echo "PGO training environment Initialization complete.\n";
|
||||
}
|
||||
|
||||
/** @return bool */
|
||||
public function isInitialized()
|
||||
{
|
||||
return $this->conf->isinitialized();
|
||||
}
|
||||
|
||||
/** @return void */
|
||||
public function train()
|
||||
{
|
||||
if (!$this->isInitialized()) {
|
||||
@@ -234,6 +251,7 @@ class Controller
|
||||
echo "PGO training complete.\n";
|
||||
}
|
||||
|
||||
/** @return void */
|
||||
public function up()
|
||||
{
|
||||
|
||||
@@ -242,7 +260,7 @@ class Controller
|
||||
}
|
||||
echo "\nStarting up PGO environment.\n\n";
|
||||
|
||||
foreach ($this->vitalizeSrv("all") as $srv) {
|
||||
foreach ($this->vitalizeSrv() as $srv) {
|
||||
$srv->up();
|
||||
echo "\n";
|
||||
}
|
||||
@@ -252,6 +270,7 @@ class Controller
|
||||
echo "The PGO environment is up.\n";
|
||||
}
|
||||
|
||||
/** @return void */
|
||||
public function down(bool $force = false)
|
||||
{
|
||||
if (!$this->isInitialized()) {
|
||||
@@ -260,7 +279,7 @@ class Controller
|
||||
/* XXX check it was started of course. */
|
||||
echo "\nShutting down PGO environment.\n\n";
|
||||
|
||||
foreach ($this->vitalizeSrv("all") as $srv) {
|
||||
foreach ($this->vitalizeSrv() as $srv) {
|
||||
$srv->down($force);
|
||||
echo "\n";
|
||||
}
|
||||
|
||||
@@ -12,4 +12,7 @@ interface Server
|
||||
public function up() : void;
|
||||
public function down(bool $force = false) : void;
|
||||
public function getName() : string;
|
||||
|
||||
/** @return \SDK\Build\PGO\Interfaces\PHP */
|
||||
public function getPhp();
|
||||
}
|
||||
|
||||
@@ -9,5 +9,10 @@ interface HTTP extends Interfaces\Server
|
||||
{
|
||||
public function __construct(Config $conf, Interfaces\PHP $php);
|
||||
public function getPhp() : Interfaces\PHP;
|
||||
|
||||
/**
|
||||
* @param array<mixed> $tpl_vars
|
||||
* @return void
|
||||
*/
|
||||
public function addServer(string $part_tpl_fn, array $tpl_vars = array());
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ class FCGI extends Abstracts\PHP implements Interfaces\PHP
|
||||
{
|
||||
use FileOps;
|
||||
|
||||
/** @var bool */
|
||||
protected $is_tcp;
|
||||
|
||||
public function __construct(PGOConfig $conf, bool $is_tcp)
|
||||
|
||||
@@ -12,8 +12,13 @@ class MariaDB extends Server implements DB
|
||||
{
|
||||
use FileOps;
|
||||
|
||||
/** @var PGOConfig */
|
||||
protected $conf;
|
||||
|
||||
/** @var string */
|
||||
protected $base;
|
||||
|
||||
/** @var string */
|
||||
protected $name = "MariaDB";
|
||||
|
||||
public function __construct(PGOConfig $conf)
|
||||
@@ -22,6 +27,7 @@ class MariaDB extends Server implements DB
|
||||
$this->base = $conf->getSrvDir(strtolower($this->name));
|
||||
}
|
||||
|
||||
/** @return void */
|
||||
protected function setupDist()
|
||||
{
|
||||
/* pass */
|
||||
|
||||
@@ -12,9 +12,16 @@ class NGINX extends Abstracts\Server implements Interfaces\Server\HTTP
|
||||
{
|
||||
use FileOps;
|
||||
|
||||
/** @var string */
|
||||
protected $name = "NGINX";
|
||||
|
||||
/** @var PGOConfig */
|
||||
protected $conf;
|
||||
|
||||
/** @var string */
|
||||
protected $base;
|
||||
|
||||
/** @var Interfaces\PHP */
|
||||
protected $php;
|
||||
|
||||
public function __construct(PGOConfig $conf, Interfaces\PHP $php)
|
||||
@@ -125,6 +132,10 @@ class NGINX extends Abstracts\Server implements Interfaces\Server\HTTP
|
||||
}
|
||||
|
||||
/* Use only for init phase! */
|
||||
/**
|
||||
* @param array<mixed> $tpl_vars
|
||||
* @return void
|
||||
*/
|
||||
public function addServer(string $part_tpl_fn, array $tpl_vars = array())
|
||||
{
|
||||
if (!file_exists($part_tpl_fn)) {
|
||||
|
||||
@@ -12,9 +12,16 @@ class PostgreSQL extends Server implements DB
|
||||
{
|
||||
use FileOps;
|
||||
|
||||
/** @var PGOConfig */
|
||||
protected $conf;
|
||||
|
||||
/** @var string */
|
||||
protected $base;
|
||||
|
||||
/** @var string */
|
||||
protected $data_dir;
|
||||
|
||||
/** @var string */
|
||||
protected $name = "PostgreSQL";
|
||||
|
||||
public function __construct(PGOConfig $conf)
|
||||
@@ -24,6 +31,7 @@ class PostgreSQL extends Server implements DB
|
||||
$this->data_dir = $this->base . DIRECTORY_SEPARATOR . "data";
|
||||
}
|
||||
|
||||
/** @return void */
|
||||
protected function setupDist()
|
||||
{
|
||||
$user = $this->conf->getSectionItem($this->name, "user");
|
||||
|
||||
@@ -8,8 +8,13 @@ use SDK\Build\PGO\Interfaces;
|
||||
|
||||
class PGO
|
||||
{
|
||||
/** @var Interfaces\PHP */
|
||||
protected $php;
|
||||
|
||||
/** @var PGOConfig */
|
||||
protected $conf;
|
||||
|
||||
/** @var int */
|
||||
protected $idx = 0;
|
||||
|
||||
public function __construct(PGOConfig $conf, Interfaces\PHP $php)
|
||||
@@ -34,6 +39,7 @@ class PGO
|
||||
return $dn . DIRECTORY_SEPARATOR . $bn . ".pgd";
|
||||
}
|
||||
|
||||
/** @return array<string> */
|
||||
protected function getWorkItems() : array
|
||||
{
|
||||
$exe = glob($this->php->getRootDir() . DIRECTORY_SEPARATOR . "*.exe");
|
||||
|
||||
@@ -10,6 +10,7 @@ class PackageWorkman
|
||||
{
|
||||
use FileOps;
|
||||
|
||||
/** @var PGOConfig */
|
||||
protected $conf;
|
||||
|
||||
public function __construct(PGOConfig $conf)
|
||||
|
||||
@@ -8,7 +8,10 @@ use SDK\Build\PGO\Interfaces\TrainingCase;
|
||||
|
||||
class Training
|
||||
{
|
||||
/** @var PGOConfig */
|
||||
protected $conf;
|
||||
|
||||
/** @var TrainingCase */
|
||||
protected $t_case;
|
||||
|
||||
public function __construct(PGOConfig $conf, TrainingCase $t_case)
|
||||
@@ -27,6 +30,7 @@ class Training
|
||||
return $this->t_case;
|
||||
}
|
||||
|
||||
/** @param array<string,mixed> $stat */
|
||||
public function runWeb(int $max_runs, ?array &$stat = array()) : void
|
||||
{
|
||||
$url_list_fn = $this->t_case->getJobFilename();
|
||||
@@ -105,6 +109,7 @@ class Training
|
||||
}
|
||||
|
||||
/* TODO Extend with number runs. */
|
||||
/** @param array<string,mixed> $stat */
|
||||
public function run(int $max_runs = 1, ?array &$stat = array()) : void
|
||||
{
|
||||
$type = $this->t_case->getType();
|
||||
|
||||
@@ -4,12 +4,21 @@ namespace SDK\Build\PGO;
|
||||
|
||||
use SDK\Build\PGO\Config as PGOConfig;
|
||||
|
||||
|
||||
/**
|
||||
* @implements \Iterator<?string,Interfaces\TrainingCase>
|
||||
*/
|
||||
class TrainingCaseIterator implements \Iterator
|
||||
{
|
||||
/** @var PGOConfig */
|
||||
protected $conf;
|
||||
|
||||
/** @var array<string> */
|
||||
protected $items = array();
|
||||
|
||||
/** @var int */
|
||||
protected $idx;
|
||||
|
||||
/** @var object */
|
||||
protected $el;
|
||||
|
||||
public function __construct(PGOConfig $conf)
|
||||
@@ -50,6 +59,7 @@ class TrainingCaseIterator implements \Iterator
|
||||
return $base . DIRECTORY_SEPARATOR . "TrainingCaseHandler.php";
|
||||
}
|
||||
|
||||
#[\ReturnTypeWillChange]
|
||||
public function current()
|
||||
{
|
||||
$base = $this->items[$this->idx];
|
||||
@@ -73,21 +83,25 @@ class TrainingCaseIterator implements \Iterator
|
||||
return $this->el;
|
||||
}
|
||||
|
||||
#[\ReturnTypeWillChange]
|
||||
public function next()
|
||||
{
|
||||
$this->idx++;
|
||||
}
|
||||
|
||||
#[\ReturnTypeWillChange]
|
||||
public function rewind()
|
||||
{
|
||||
$this->idx = 0;
|
||||
}
|
||||
|
||||
#[\ReturnTypeWillChange]
|
||||
public function valid()
|
||||
{
|
||||
return $this->idx < count($this->items);
|
||||
}
|
||||
|
||||
#[\ReturnTypeWillChange]
|
||||
public function key()
|
||||
{
|
||||
if (!is_object($this->el)) {
|
||||
|
||||
@@ -4,7 +4,10 @@ namespace SDK;
|
||||
|
||||
class Cache
|
||||
{
|
||||
/** @var string */
|
||||
protected $id;
|
||||
|
||||
/** @var string */
|
||||
protected $hash;
|
||||
|
||||
public function __construct(string $id)
|
||||
@@ -79,7 +82,7 @@ class Cache
|
||||
{/*{{{*/
|
||||
$p = $this->getCacheablePath($path, $relative);
|
||||
|
||||
if ($this->isFileCached($p)) {
|
||||
if (file_exists($p)) {
|
||||
return file_get_contents($p);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,20 +7,40 @@ use SDK\Build\Dependency\Fetcher;
|
||||
class Config
|
||||
{
|
||||
/* Config variables. */
|
||||
|
||||
/** @var string */
|
||||
protected static $depsHost = 'downloads.php.net';
|
||||
|
||||
/** @var int */
|
||||
protected static $depsPort = 443;
|
||||
|
||||
/** @var string */
|
||||
protected static $depsUriScheme = "https";
|
||||
|
||||
/** @var string */
|
||||
protected static $depsBaseUri = "/~windows/php-sdk/deps";
|
||||
|
||||
/* protected static $sdkNugetFeedUrl = "http://127.0.0.1/sdk/nuget"; */
|
||||
/** @var string */
|
||||
protected static $sdkNugetFeedUrl = "http://127.0.0.1/sdk/nuget"; // experimental?
|
||||
|
||||
/** @var array<mixed> */
|
||||
protected static $knownBranches = array ();
|
||||
|
||||
/* Helper props and methods. */
|
||||
|
||||
/** @var ?string */
|
||||
protected static $currentBranchName = NULL;
|
||||
|
||||
/** @var ?string */
|
||||
protected static $currentArchName = NULL;
|
||||
|
||||
/** @var ?string */
|
||||
protected static $currentCrtName = NULL;
|
||||
|
||||
/** @var ?string */
|
||||
protected static $currentStabilityName = NULL;
|
||||
|
||||
/** @var ?string */
|
||||
protected static $depsLocalPath = NULL;
|
||||
|
||||
public static function getDepsHost() : string
|
||||
@@ -28,7 +48,7 @@ class Config
|
||||
return self::$depsHost;
|
||||
}/*}}}*/
|
||||
|
||||
public static function getDepsPort() : string
|
||||
public static function getDepsPort() : int
|
||||
{/*{{{*/
|
||||
return self::$depsPort;
|
||||
}/*}}}*/
|
||||
@@ -134,6 +154,7 @@ class Config
|
||||
return self::$currentStabilityName;
|
||||
} /*}}}*/
|
||||
|
||||
/** @return array<mixed> */
|
||||
public static function getKnownBranches() : array
|
||||
{/*{{{*/
|
||||
if (empty(self::$knownBranches)) {
|
||||
@@ -146,7 +167,7 @@ class Config
|
||||
$fetcher = new Fetcher(self::$depsHost, self::$depsPort, self::$depsUriScheme);
|
||||
|
||||
$tmp = $fetcher->getByUri(self::$depsBaseUri . "/series/");
|
||||
if (false !== $tmp) {
|
||||
if ("" !== $tmp) {
|
||||
$data = array();
|
||||
if (preg_match_all(",packages-(.+)-(v[cs]\d+)-(x86|x64|arm64)-(stable|staging)\.txt,Us", $tmp, $m, PREG_SET_ORDER)) {
|
||||
foreach ($m as $b) {
|
||||
@@ -254,6 +275,7 @@ class Config
|
||||
return self::$currentBranchName;
|
||||
}/*}}}*/
|
||||
|
||||
/** @return array<mixed> */
|
||||
public static function getCurrentBranchData() : array
|
||||
{/*{{{*/
|
||||
$ret = array();
|
||||
@@ -264,6 +286,7 @@ class Config
|
||||
throw new Exception("Unknown branch '$current_branch_name'");
|
||||
}
|
||||
|
||||
$crt = null;
|
||||
$cur_crt = Config::getCurrentCrtName();
|
||||
if (count($branches[$current_branch_name]) > 1) {
|
||||
if (NULL === $cur_crt) {
|
||||
|
||||
@@ -90,6 +90,7 @@ trait FileOps
|
||||
|
||||
if ($item->isFile()) {
|
||||
if (!call_user_func($cb, $src_path, $dst_path)) {
|
||||
assert(is_string($cb));
|
||||
throw new Exception("Unable to $cb '$src_path' to '$dst_path'");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,10 +4,19 @@ namespace SDK;
|
||||
|
||||
class Lock
|
||||
{
|
||||
/** @var ?resource */
|
||||
protected $fd;
|
||||
|
||||
/** @var string */
|
||||
protected $fn;
|
||||
|
||||
/** @var bool */
|
||||
protected $locked = false;
|
||||
|
||||
/** @var bool|int */
|
||||
protected $wouldBlock = false;
|
||||
|
||||
/** @var bool|int */
|
||||
protected $shared = false;
|
||||
|
||||
public function __construct(string $tag, bool $auto = true, bool $autoShared = false)
|
||||
|
||||
0
msys2/usr/bin/awk.exe
Normal file → Executable file
0
msys2/usr/bin/awk.exe
Normal file → Executable file
0
msys2/usr/bin/bison.exe
Normal file → Executable file
0
msys2/usr/bin/bison.exe
Normal file → Executable file
0
msys2/usr/bin/bsdtar.exe
Normal file → Executable file
0
msys2/usr/bin/bsdtar.exe
Normal file → Executable file
0
msys2/usr/bin/bzip2.exe
Normal file → Executable file
0
msys2/usr/bin/bzip2.exe
Normal file → Executable file
0
msys2/usr/bin/diff.exe
Normal file → Executable file
0
msys2/usr/bin/diff.exe
Normal file → Executable file
0
msys2/usr/bin/diff3.exe
Normal file → Executable file
0
msys2/usr/bin/diff3.exe
Normal file → Executable file
0
msys2/usr/bin/gawk.exe
Normal file → Executable file
0
msys2/usr/bin/gawk.exe
Normal file → Executable file
0
msys2/usr/bin/grep.exe
Normal file → Executable file
0
msys2/usr/bin/grep.exe
Normal file → Executable file
0
msys2/usr/bin/gzip.exe
Normal file → Executable file
0
msys2/usr/bin/gzip.exe
Normal file → Executable file
0
msys2/usr/bin/m4.exe
Normal file → Executable file
0
msys2/usr/bin/m4.exe
Normal file → Executable file
0
msys2/usr/bin/md5sum.exe
Normal file → Executable file
0
msys2/usr/bin/md5sum.exe
Normal file → Executable file
0
msys2/usr/bin/patch.exe
Normal file → Executable file
0
msys2/usr/bin/patch.exe
Normal file → Executable file
0
msys2/usr/bin/pwgen.exe
Normal file → Executable file
0
msys2/usr/bin/pwgen.exe
Normal file → Executable file
0
msys2/usr/bin/re2c.exe
Normal file → Executable file
0
msys2/usr/bin/re2c.exe
Normal file → Executable file
0
msys2/usr/bin/sed.exe
Normal file → Executable file
0
msys2/usr/bin/sed.exe
Normal file → Executable file
0
msys2/usr/bin/sha1sum.exe
Normal file → Executable file
0
msys2/usr/bin/sha1sum.exe
Normal file → Executable file
0
msys2/usr/bin/sha224sum.exe
Normal file → Executable file
0
msys2/usr/bin/sha224sum.exe
Normal file → Executable file
0
msys2/usr/bin/sha256sum.exe
Normal file → Executable file
0
msys2/usr/bin/sha256sum.exe
Normal file → Executable file
0
msys2/usr/bin/sha384sum.exe
Normal file → Executable file
0
msys2/usr/bin/sha384sum.exe
Normal file → Executable file
0
msys2/usr/bin/sha512sum.exe
Normal file → Executable file
0
msys2/usr/bin/sha512sum.exe
Normal file → Executable file
0
msys2/usr/bin/tar.exe
Normal file → Executable file
0
msys2/usr/bin/tar.exe
Normal file → Executable file
0
msys2/usr/bin/tee.exe
Normal file → Executable file
0
msys2/usr/bin/tee.exe
Normal file → Executable file
0
msys2/usr/bin/unzip.exe
Normal file → Executable file
0
msys2/usr/bin/unzip.exe
Normal file → Executable file
0
msys2/usr/bin/unzipsfx.exe
Normal file → Executable file
0
msys2/usr/bin/unzipsfx.exe
Normal file → Executable file
0
msys2/usr/bin/wget.exe
Normal file → Executable file
0
msys2/usr/bin/wget.exe
Normal file → Executable file
0
msys2/usr/bin/xz.exe
Normal file → Executable file
0
msys2/usr/bin/xz.exe
Normal file → Executable file
0
msys2/usr/bin/zip.exe
Normal file → Executable file
0
msys2/usr/bin/zip.exe
Normal file → Executable file
@@ -11,9 +11,16 @@ use SDK\Build\PGO\Tool;
|
||||
|
||||
class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\TrainingCase
|
||||
{
|
||||
/** @var string */
|
||||
protected $base;
|
||||
|
||||
/** @var ?Interfaces\Server $nginx */
|
||||
protected $nginx;
|
||||
|
||||
/** @var mixed */
|
||||
protected $php;
|
||||
|
||||
/** @var int */
|
||||
protected $max_runs = 8;
|
||||
|
||||
public function __construct(Config $conf, ?Interfaces\Server $nginx, ?Interfaces\Server\DB $maria)
|
||||
@@ -65,6 +72,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T
|
||||
$this->nginx->addServer($tpl_fn, $vars);
|
||||
}
|
||||
|
||||
/** @return void */
|
||||
public function setupUrls()
|
||||
{
|
||||
$this->nginx->up();
|
||||
|
||||
@@ -11,10 +11,19 @@ use SDK\Build\PGO\Tool;
|
||||
|
||||
class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\TrainingCase
|
||||
{
|
||||
/** @var string */
|
||||
protected $base;
|
||||
|
||||
/** @var ?Interfaces\Server $nginx */
|
||||
protected $nginx;
|
||||
|
||||
/** @var mixed */
|
||||
protected $php;
|
||||
|
||||
/** @var ?Interfaces\Server\DB */
|
||||
protected $maria;
|
||||
|
||||
/** @var int */
|
||||
protected $max_runs = 4;
|
||||
|
||||
public function __construct(Config $conf, ?Interfaces\Server $nginx, ?Interfaces\Server\DB $maria)
|
||||
@@ -99,6 +108,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T
|
||||
$this->maria->down(true);
|
||||
}
|
||||
|
||||
/** @return void */
|
||||
public function setupUrls()
|
||||
{
|
||||
$this->maria->up();
|
||||
|
||||
@@ -11,9 +11,16 @@ use SDK\Build\PGO\Tool;
|
||||
|
||||
class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\TrainingCase
|
||||
{
|
||||
/** @var string */
|
||||
protected $base;
|
||||
|
||||
/** @var ?Interfaces\Server $nginx */
|
||||
protected $nginx;
|
||||
|
||||
/** @var mixed */
|
||||
protected $php;
|
||||
|
||||
/** @var int */
|
||||
protected $max_runs = 4;
|
||||
|
||||
public function __construct(Config $conf, ?Interfaces\Server $nginx, ?Interfaces\Server\DB $srv_db)
|
||||
@@ -82,6 +89,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T
|
||||
$php->exec($cmd);
|
||||
}
|
||||
|
||||
/** @return void */
|
||||
public function setupUrls()
|
||||
{
|
||||
$this->nginx->up();
|
||||
|
||||
@@ -11,10 +11,19 @@ use SDK\Build\PGO\Tool;
|
||||
|
||||
class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\TrainingCase
|
||||
{
|
||||
/** @var string */
|
||||
protected $base;
|
||||
|
||||
/** @var ?Interfaces\Server $nginx */
|
||||
protected $nginx;
|
||||
|
||||
/** @var ?Interfaces\Server\DB */
|
||||
protected $maria;
|
||||
|
||||
/** @var mixed */
|
||||
protected $php;
|
||||
|
||||
/** @var int */
|
||||
protected $max_runs = 12;
|
||||
|
||||
public function __construct(Config $conf, ?Interfaces\Server $nginx, ?Interfaces\Server\DB $maria)
|
||||
@@ -119,6 +128,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T
|
||||
|
||||
}
|
||||
|
||||
/** @return void */
|
||||
public function setupUrls()
|
||||
{
|
||||
$url = "http://" . $this->getHttpHost() . ":" . $this->getHttpPort();
|
||||
|
||||
@@ -11,9 +11,16 @@ use SDK\Build\PGO\Tool;
|
||||
|
||||
class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\TrainingCase
|
||||
{
|
||||
/** @var string */
|
||||
protected $base;
|
||||
|
||||
/** @var ?Interfaces\Server $nginx */
|
||||
protected $nginx;
|
||||
|
||||
/** @var mixed */
|
||||
protected $php;
|
||||
|
||||
/** @var int */
|
||||
protected $max_runs = 4;
|
||||
|
||||
public function __construct(Config $conf, ?Interfaces\Server $nginx, ?Interfaces\Server\DB $srv_db)
|
||||
@@ -61,6 +68,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T
|
||||
$this->nginx->addServer($tpl_fn, $vars);
|
||||
}
|
||||
|
||||
/** @return void */
|
||||
public function setupUrls()
|
||||
{
|
||||
$this->nginx->up();
|
||||
|
||||
@@ -11,10 +11,19 @@ use SDK\Build\PGO\Tool;
|
||||
|
||||
class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\TrainingCase
|
||||
{
|
||||
/** @var string */
|
||||
protected $base;
|
||||
|
||||
/** @var ?Interfaces\Server $nginx */
|
||||
protected $nginx;
|
||||
|
||||
/** @var ?Interfaces\Server\DB */
|
||||
protected $maria;
|
||||
|
||||
/** @var mixed */
|
||||
protected $php;
|
||||
|
||||
/** @var int */
|
||||
protected $max_runs = 4;
|
||||
|
||||
public function __construct(Config $conf, ?Interfaces\Server $nginx, ?Interfaces\Server\DB $srv_db)
|
||||
@@ -80,6 +89,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T
|
||||
$this->nginx->addServer($tpl_fn, $vars);
|
||||
}
|
||||
|
||||
/** @return void */
|
||||
public function setupUrls()
|
||||
{
|
||||
$this->maria->up();
|
||||
|
||||
@@ -11,10 +11,19 @@ use SDK\Build\PGO\Tool;
|
||||
|
||||
class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\TrainingCase
|
||||
{
|
||||
/** @var string */
|
||||
protected $base;
|
||||
|
||||
/** @var ?Interfaces\Server $nginx */
|
||||
protected $nginx;
|
||||
|
||||
/** @var ?Interfaces\Server\DB */
|
||||
protected $maria;
|
||||
|
||||
/** @var mixed */
|
||||
protected $php;
|
||||
|
||||
/** @var int */
|
||||
protected $max_runs = 4;
|
||||
|
||||
public function __construct(Config $conf, ?Interfaces\Server $nginx, ?Interfaces\Server\DB $maria)
|
||||
@@ -106,6 +115,7 @@ class TrainingCaseHandler extends Abstracts\TrainingCase implements Interfaces\T
|
||||
|
||||
}
|
||||
|
||||
/** @return void */
|
||||
public function setupUrls()
|
||||
{
|
||||
$this->maria->up();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"pkg_url": "https://nginx.org/download/nginx-1.17.6.zip",
|
||||
"pkg_url": "https://nginx.org/download/nginx-1.26.2.zip",
|
||||
"host": "127.0.0.1",
|
||||
"port": 8081
|
||||
}
|
||||
|
||||
@@ -981,7 +981,7 @@ extension=php_sqlite3.dll
|
||||
;extension=php_tidy.dll
|
||||
;extension=php_xmlrpc.dll
|
||||
;extension=php_xsl.dll
|
||||
;extension=php_zip.dll
|
||||
extension=php_zip.dll
|
||||
|
||||
zend_extension=php_opcache.dll
|
||||
opcache.memory_consumption=PHP_SDK_PGO_PHP_OPCACHE_MEMORY_CONSUMPTION
|
||||
|
||||
@@ -981,7 +981,7 @@ extension=php_sqlite3.dll
|
||||
;extension=php_tidy.dll
|
||||
;extension=php_xmlrpc.dll
|
||||
;extension=php_xsl.dll
|
||||
;extension=php_zip.dll
|
||||
extension=php_zip.dll
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;
|
||||
; Module Settings ;
|
||||
|
||||
@@ -981,7 +981,7 @@ extension=php_sqlite3.dll
|
||||
;extension=php_tidy.dll
|
||||
;extension=php_xmlrpc.dll
|
||||
;extension=php_xsl.dll
|
||||
;extension=php_zip.dll
|
||||
extension=php_zip.dll
|
||||
|
||||
zend_extension=php_opcache.dll
|
||||
opcache.memory_consumption=PHP_SDK_PGO_PHP_OPCACHE_MEMORY_CONSUMPTION
|
||||
|
||||
@@ -981,7 +981,7 @@ extension=php_sqlite3.dll
|
||||
;extension=php_tidy.dll
|
||||
;extension=php_xmlrpc.dll
|
||||
;extension=php_xsl.dll
|
||||
;extension=php_zip.dll
|
||||
extension=php_zip.dll
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;
|
||||
; Module Settings ;
|
||||
|
||||
@@ -981,7 +981,7 @@ extension=php_sqlite3.dll
|
||||
;extension=php_tidy.dll
|
||||
;extension=php_xmlrpc.dll
|
||||
;extension=php_xsl.dll
|
||||
;extension=php_zip.dll
|
||||
extension=php_zip.dll
|
||||
|
||||
zend_extension=php_opcache.dll
|
||||
opcache.memory_consumption=PHP_SDK_PGO_PHP_OPCACHE_MEMORY_CONSUMPTION
|
||||
|
||||
@@ -981,7 +981,7 @@ extension=php_sqlite3.dll
|
||||
;extension=php_tidy.dll
|
||||
;extension=php_xmlrpc.dll
|
||||
;extension=php_xsl.dll
|
||||
;extension=php_zip.dll
|
||||
extension=php_zip.dll
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;
|
||||
; Module Settings ;
|
||||
|
||||
@@ -981,7 +981,7 @@ extension=php_sqlite3.dll
|
||||
;extension=php_tidy.dll
|
||||
;extension=php_xmlrpc.dll
|
||||
;extension=php_xsl.dll
|
||||
;extension=php_zip.dll
|
||||
extension=php_zip.dll
|
||||
|
||||
zend_extension=php_opcache.dll
|
||||
opcache.memory_consumption=PHP_SDK_PGO_PHP_OPCACHE_MEMORY_CONSUMPTION
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user