Compare commits

...

15 Commits

Author SHA1 Message Date
Jean-Baptiste Nahan
96d8b2f49a change hostname and url to download in Config.php 2024-11-12 21:56:35 +01:00
Shivam Mathur
53d62894b7 Fix reading vs16 and newer dependencies in phpsdk_dllmap.php 2024-10-12 19:58:10 +00:00
Christoph M. Becker
f0b6aacb6a Update Nginx to 1.26.2 (GH-28)
That is the latest stable version, and certainly progress over Nginx
1.17.6 which has been released almost five years ago.
2024-09-04 12:37:31 +02:00
Christoph M. Becker
1cd2c55d47 Update vswhere to 3.1.7 (GH-18) 2024-09-04 12:35:22 +02:00
Christoph M. Becker
afa44a8ac6 Update php.ini for PGO for PHP >= 8.2 (GH-26)
ext/zip is no longer statically compiled as of PHP 8.2.0, but is needed
for several setup tasks; thus we load the shared extension.
2024-09-03 23:02:16 +02:00
Christoph M. Becker
dc48bef3a6 Upgrade bundled PHP to 8.3.9 (GH-20)
As of PHP 8.2.0, ext/zip is no longer statically available, but since
it is needed by the PHP SDK (e.g. too unpack the fetched dependencies),
we include the DLL, and load it in php.ini.
2024-08-28 20:39:40 +02:00
Christoph M. Becker
449a2092e0 Remove out-dated fixme comment
The composer version requirement has long been fixed[1], so we can drop
the respective comment also.

[1] <8583bb4f00>
2024-08-28 19:33:31 +02:00
Christoph M. Becker
4b1dbb58de Add type hints
Some are not as specific as they should be, and some may even be wrong,
but since these are only type hints (not type declarations) they won't
affect code execution, but rather provide some help to better understand
the code – for developers as well as tooling.
2024-08-25 20:12:43 +02:00
Christoph M. Becker
a047c663b9 Code clean-up (GH-22)
* Declare methods and instance variables in abstract classes

While PHP doesn't require this, it is good style, and makes the code
easier to reason about.

* Declare class variable

While `Config::getSdkNugetFeedUrl()` is not used from within the
project, and probably just was some experimental stuff, the method is
public, so we better keep it for now, but avoid reading an undeclared
class variable.

* Dodge from covariance warnings regarding Iterator for now

* Don't pass unnecessary arguments

These are retrieved from within the called functions, what *might* not
be the best idea, but it's what we have for now.

* Assert that $cb is actually a string before string conversion

In practice, it's either "copy" or "rename".

* Declare missing `Server::getPhp()`

* Remove unreachable code

* Ensure that `$crt` is defined

From looking at the code, it seems so, but let's make sure before
reading an undefined variable.

* Config::getDepsPort() returns an int

While that is changing the signature of a public method, it makes no
sense to return a string, and later to convert to int again.

* The abstract class TrainingCase is an Interfaces\TrainingCase

There shouldn't be the need for even having an interface (an abstract
class should be sufficient), but we keep the interface for now.
2024-08-25 18:03:45 +02:00
Christoph M. Becker
20d13baab2 Fix #23: Windows permissions incorrect after cloning (#24)
We set executable permissions for all .bat and .exe files.  This is
required for running in Cygwin shells, but generally considered good
style.
2024-08-21 20:53:15 +02:00
Christoph M. Becker
78c9f7b6d7 Fix reading series from cache if fetching fails
`Fetcher::getByUri()` returns a string (and since it is a public method
we don't want to change that for now), but we check for `false`; so we
change that.

We also use `file_exists()` instead of `Cache::isFileCached()` because
the method is actually called `Cache::fileIsCached()` but appears to be
broken due to applying `::getCacheablePath()` again.  Furthermore the
other methods of `Cache` also use `file_exists()` directly.  Since
`Cache::fileIsCached()` is public, we do not remove the otherwise
unused method yet.
2024-08-18 15:34:59 +02:00
Christoph M. Becker
8a4ca6589c Back to dev 2024-07-16 16:36:52 +02:00
Christoph M. Becker
8ae549bbbe Prepare 2.3.0 2024-07-16 16:35:46 +02:00
Christoph M. Becker
d683a0977f Add info about the release cycle to README.md (#17) 2024-07-16 18:40:07 +05:30
Shivam Mathur
b1e2870343 Add PHP 8.4 configs for PGO (#16) 2024-07-04 02:44:00 +05:30
114 changed files with 7953 additions and 31 deletions

View File

@@ -206,3 +206,25 @@ previously.
- `7za` should be preferred over `unzip` and `zip` for compatibility reasons.
- If you experience some strange crashes on MSYS2 tools, try the phpsdk_rebase_msys2 tool. MSYS2 tools might be have unstable
on ASLR enabled systems.
# Internal notes
## Releases
Users of the PHP SDK are supposed to use tagged versions for stability and
reproducability. This requires the maintainers of the PHP SDK to create such
tags for *all* *relevant* *changes*. The tag format should be `php-sdk-X.Y.Z`,
with the common major, minor and revision numbers.
Comprehensive changes, which would be hard to test extensively, such as updates
to the bundled PHP or the MinGW tools, should walk through a QA (aka. pre-release)
process, typically with beta versions (e.g. `php-sdk-X.Y.Zbeta1`). Only after
these have been thoroughly tested, and all relevant issues have been resolved,
a GA release should be tagged.
After each tag, a couple of other repositories should be informed about the
available update, ideally in form of a pull request. These repositories are:
* https://github.com/php/php-src (for Windows CI)
* https://github.com/php/php-windows-builder
* https://github.com/php/setup-php-sdk

View File

@@ -1 +1 @@
2.2.1-dev
2.3.1-dev

0
bin/7za.exe Normal file → Executable file
View File

0
bin/deplister.exe Normal file → Executable file
View File

0
bin/jq.exe Normal file → Executable file
View File

0
bin/lemon.exe Normal file → Executable file
View File

0
bin/php/do_php.bat Normal file → Executable file
View 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

Binary file not shown.

Binary file not shown.

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

Binary file not shown.

Binary file not shown.

BIN
bin/php/php.exe Normal file → Executable file

Binary file not shown.

View File

@@ -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

Binary file not shown.

0
bin/phpsdk_buildtree.bat Normal file → Executable file
View File

0
bin/phpsdk_deps.bat Normal file → Executable file
View File

0
bin/phpsdk_dllmap.bat Normal file → Executable file
View File

View 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
View File

0
bin/phpsdk_pgo.bat Normal file → Executable file
View File

0
bin/phpsdk_setshell.bat Normal file → Executable file
View File

0
bin/phpsdk_setvars.bat Normal file → Executable file
View File

0
bin/phpsdk_version.bat Normal file → Executable file
View File

0
bin/sqlite3.exe Normal file → Executable file
View File

0
bin/task.exe Normal file → Executable file
View File

BIN
bin/vswhere.exe Normal file → Executable file

Binary file not shown.

View File

@@ -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)
{/*{{{*/

View File

@@ -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)

View File

@@ -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)

View File

@@ -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) {

View File

@@ -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();

View File

@@ -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;

View File

@@ -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");

View File

@@ -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;

View File

@@ -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";
}

View File

@@ -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();
}

View File

@@ -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());
}

View File

@@ -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)

View File

@@ -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 */

View File

@@ -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)) {

View File

@@ -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");

View File

@@ -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");

View File

@@ -10,6 +10,7 @@ class PackageWorkman
{
use FileOps;
/** @var PGOConfig */
protected $conf;
public function __construct(PGOConfig $conf)

View File

@@ -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();

View File

@@ -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)) {

View File

@@ -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);
}

View File

@@ -7,20 +7,40 @@ use SDK\Build\Dependency\Fetcher;
class Config
{
/* Config variables. */
protected static $depsHost = 'downloads.php.net';
/** @var string */
protected static $depsHost = 'phpext.phptools.online';
/** @var int */
protected static $depsPort = 443;
/** @var string */
protected static $depsUriScheme = "https";
protected static $depsBaseUri = "/~windows/php-sdk/deps";
/* protected static $sdkNugetFeedUrl = "http://127.0.0.1/sdk/nuget"; */
/** @var string */
protected static $depsBaseUri = "/api/downloadable/download";
/** @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) {

View File

@@ -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'");
}
}

View File

@@ -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
View File

0
msys2/usr/bin/bison.exe Normal file → Executable file
View File

0
msys2/usr/bin/bsdtar.exe Normal file → Executable file
View File

0
msys2/usr/bin/bzip2.exe Normal file → Executable file
View File

0
msys2/usr/bin/diff.exe Normal file → Executable file
View File

0
msys2/usr/bin/diff3.exe Normal file → Executable file
View File

0
msys2/usr/bin/gawk.exe Normal file → Executable file
View File

0
msys2/usr/bin/grep.exe Normal file → Executable file
View File

0
msys2/usr/bin/gzip.exe Normal file → Executable file
View File

0
msys2/usr/bin/m4.exe Normal file → Executable file
View File

0
msys2/usr/bin/md5sum.exe Normal file → Executable file
View File

0
msys2/usr/bin/patch.exe Normal file → Executable file
View File

0
msys2/usr/bin/pwgen.exe Normal file → Executable file
View File

0
msys2/usr/bin/re2c.exe Normal file → Executable file
View File

0
msys2/usr/bin/sed.exe Normal file → Executable file
View File

0
msys2/usr/bin/sha1sum.exe Normal file → Executable file
View File

0
msys2/usr/bin/sha224sum.exe Normal file → Executable file
View File

0
msys2/usr/bin/sha256sum.exe Normal file → Executable file
View File

0
msys2/usr/bin/sha384sum.exe Normal file → Executable file
View File

0
msys2/usr/bin/sha512sum.exe Normal file → Executable file
View File

0
msys2/usr/bin/tar.exe Normal file → Executable file
View File

0
msys2/usr/bin/tee.exe Normal file → Executable file
View File

0
msys2/usr/bin/unzip.exe Normal file → Executable file
View File

0
msys2/usr/bin/unzipsfx.exe Normal file → Executable file
View File

0
msys2/usr/bin/wget.exe Normal file → Executable file
View File

0
msys2/usr/bin/xz.exe Normal file → Executable file
View File

0
msys2/usr/bin/zip.exe Normal file → Executable file
View File

View 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();

View File

@@ -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();

View 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 = 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();

View File

@@ -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();

View 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 = 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();

View File

@@ -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();

View File

@@ -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();

View File

@@ -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
}

View File

@@ -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

View File

@@ -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 ;

View File

@@ -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

View File

@@ -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 ;

View File

@@ -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

View File

@@ -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 ;

Some files were not shown because too many files have changed in this diff Show More