Compare commits

...

21 Commits

Author SHA1 Message Date
Anatol Belski
d584b2f1c5 Prepare 2.2.0beta6 2019-06-01 13:34:07 +02:00
Anatol Belski
5c7a304e77 Reorder list 2019-06-01 13:32:45 +02:00
Anatol Belski
b3fffba01c Rework more, especially requirements 2019-06-01 13:31:45 +02:00
Anatol Belski
58a7bdcfa7 Missed comma 2019-06-01 13:27:34 +02:00
Anatol Belski
81aaa702b2 Rework the overview part 2019-06-01 13:26:06 +02:00
Anatol Belski
ccfc816560 Add vs2019 note 2019-06-01 13:04:05 +02:00
Anatol Belski
cf6ded7cec Update README 2019-06-01 13:01:12 +02:00
Anatol Belski
c73ab2dc76 Switch also to 64-bit PHP build for internal purposes 2019-06-01 12:57:49 +02:00
Anatol Belski
06e32545f5 Don't tell the name used is CRT 2019-05-23 17:51:21 +02:00
Christoph M. Becker
b8bf87b831 Get info from Config, which may get info from environment
There is no need to implement the detection logic in the PHP class;
instead we can get it from the Config object, where we try to get the
respective information from the environment, if not already set.
2019-05-22 19:18:50 +02:00
Christoph M. Becker
70ed1c2418 Fix phpsdk_pgo for multiple CRT support
If dependencies for multiple CRTs are available, phpsdk_pgo didn't know
which one to use, since Config::$currentCrtName is not initialized.
Instead of adding an argument to phpsdk_pgo, we simply get the CRT to
use from the environment.
2019-05-21 13:01:03 +02:00
Christoph M. Becker
8d1df4af8c Fix known branches detection
If there were vs16 packages listed in the series folder, the first
regex didn't parse these correctly, and if any vc packages were there,
the second regex was never executed.  We fix this by merging the two
regexs into one.
2019-05-19 16:08:14 +02:00
Anatol Belski
7050077f31 Add jq 2019-05-11 16:56:34 +02:00
Theodore Brown
94c9d6c97d Fix typos in readme 2019-05-10 08:50:42 +02:00
Christoph M. Becker
2dab4068aa Update download URLs
This saves a redirect, and might prevent download issues.
2019-04-30 10:33:48 +02:00
Christoph M. Becker
bbdc8dd597 Back to dev 2019-04-18 16:27:55 +02:00
Christoph M. Becker
e28c5e9b96 Prepare 2.2.0beta5 2019-04-18 16:24:57 +02:00
Christoph M. Becker
b359404509 Fix #58: Missing msys-crypto-1.1.dll
After discussion with @weltling, this time we only fix what is
definitely known to be broken, i.e. wget relying on OpenSSL 1.1 (which
does not work yet in msys2), the OpenSSL DLLs which have been x86
binaries, and finally we remove the gcc_s DLL which was also a x86
binary.
2019-04-16 23:38:44 +02:00
Christoph M. Becker
912853c55f Revert "Fix #58: Missing msys-crypto-1.1.dll"
This reverts commit 806f743f3c.
2019-04-16 23:31:05 +02:00
Christoph M. Becker
806f743f3c Fix #58: Missing msys-crypto-1.1.dll
While we're at it, we also bring all packages up to date.

Since wget 1.20.1-1 - 1.20.3-1 has issues with SSL, we're downgrading
to the latest working version, i.e. wget 1.19.5-1.
2019-04-16 19:35:37 +02:00
Christoph M. Becker
d13ff857f0 Back to dev 2019-04-08 12:44:33 +02:00
27 changed files with 57 additions and 54 deletions

View File

@@ -8,14 +8,23 @@ The PHP SDK itself and the SDK own tools and code are licensed under the BSD 2-C
# Overview
The PHP SDK 2.0+ is compatible with PHP 7.0 and above. The compatibility with [older versions](http://windows.php.net/downloads/php-sdk/php-sdk-binary-tools-20110915.zip "php-sdk-binary-tools-20110915.zip") is kept, also available from the [legacy branch](https://github.com/Microsoft/php-sdk-binary-tools/tree/legacy). The toolset was significantly revamped. Newer tools are now available, better workflows are now possible. The toolset consists on a mix of the hand written scripts, selected MSYS2 parts and standalone programs.
The toolset consists on a mix of the hand written scripts, selected MSYS2 parts and standalone programs. It supports any workflows, be it a custom, local or a CI build whatsoever.
The PHP SDK 2.2+ is compatible with PHP 7.2 and above.
The PHP SDK 2.1 is required to build PHP 7.1 or 7.0.
The legacy binary tools SDK is available from the [legacy branch](https://github.com/Microsoft/php-sdk-binary-tools/tree/legacy) and is suitable to build PHP 5.
# Requirements
- A 64-bit build host
- `Visual C++ 2015` or `Visual C++ 2017` must be installed prior SDK usage (be sure to install the C++ dev, .NET dev and the Windows SDK components)
- Windows 7 or later
- `Visual C++ 2017` or `Visual C++ 2019` must be installed prior SDK usage. Required components
- C++ dev
- Windows SDK
- .NET dev
- if `Cygwin`, `MingW` or any other cross solution is installed, please read notes in the pitfalls section
- The PHP SDK was successfully tested on Windows 7 or later, earlier versions might work but are not recommended
# Tools
@@ -31,8 +40,8 @@ The PHP SDK 2.0+ is compatible with PHP 7.0 and above. The compatibility with [o
## Other tools
- `bison` 3.2.4, `re2c` 1.1.1, `lemon`
- `awk`, `gawk`, `sed`, `grep`
- `bison` 3.3.2, `re2c` 1.1.1, `lemon`
- `awk`, `gawk`, `sed`, `grep`, `jq`
- `diff`, `diff3`, `patch`
- `md5sum`, `sha1sum`, `sha224sum`, `sha256sum`, `sha384sum`, `sha512sum`
- `7za`, `zip`, `unzip`, `unzipsfx`
@@ -50,7 +59,7 @@ These are not included with the PHP SDK, but might be useful. While Visual C++ i
# Usage
The PHP SDK should be unzipped into the shortest possible path, preferrably somewhere near the drive root.
The PHP SDK should be unzipped into the shortest possible path, preferably somewhere near the drive root.
Usually, the first step to start the PHP SDK is by invoking one of the suitable starter scripts. This automatically puts the console on the correct environment relevant for the desired PHP build configuration.
@@ -190,9 +199,9 @@ previously.
- When fetching the binary SDK from git, git `core.autocrlf` configuration directive set to `false` is recommended.
- Tools, based on MSYS2, only accept paths with forward slashes.
- Both Visual C++ toolset and the Windows SDK components have to be installed for the PHP SDK to work properly.
- The VC++ toolset is still requried, even if another compiler, fe. clang, is intended to be used.
- The VC++ toolset is still required, even if another compiler, fe. clang, is intended to be used.
- `task.exe` is not a console application, some systems might not propagate exit code except the batch is explicitly run from `cmd /c`, etc.
- `7za` should be prefered over `unzip` and `zip` for compatibility reasons.
- If you experince some strange crashes on MSYS2 tools, try the phpsdk_rebase_msys2 tool. MSYS2 tools might be have unstable
- `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.

View File

@@ -1 +1 @@
2.2.0beta4
2.2.0beta6

BIN
bin/jq.exe Normal 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.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
bin/php/libssl-1_1-x64.dll Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -5,7 +5,7 @@ extension=php_sqlite3.dll
extension=php_openssl.dll
extension=php_mbstring.dll
extension=php_mysqli.dll
memory_limit=1G
memory_limit=4G
error_reporting=-1
display_errors=1

Binary file not shown.

View File

@@ -128,7 +128,7 @@ try {
/* The current CRT needs to match the config one. */
$active_crt = getenv("PHP_SDK_VS");
if (Config::getCurrentCrtName() != $active_crt && !$force) {
throw new Exception("Active CRT '$active_crt' differs from the branch CRT '" . Config::getCurrentCrtName() . "'.");
throw new Exception("Active CRT name '$active_crt' differs from the branch CRT name '" . Config::getCurrentCrtName() . "'.");
}
$branch_data = Config::getCurrentBranchData();

View File

@@ -130,19 +130,6 @@ abstract class PHP
return true;
}
public function is64bit() : bool
{
$cli = new CLI($this->conf, $this->scenario);
$out = shell_exec($cli->getExeFilename() . " -n -v");
if (preg_match(",x64,", $out, $m) > 0) {
return true;
}
return false;
}
/* Need to cleanup it somewhere. */
public function getIniFilename()
{
@@ -153,7 +140,7 @@ abstract class PHP
$this->conf->buildTplVarName("php", "error_log") => $this->getRootDir() . DIRECTORY_SEPARATOR . "pgo_run_error.log",
);
$k = $this->is64bit() ? "x64" : "x86";
$k = SDKConfig::getCurrentArchName();
$scenario_vars = (array)$this->conf->getSectionItem("php", "scenario", $this->scenario, "ini", $k);
if ($scenario_vars) {
foreach ($scenario_vars as $k => $v) {
@@ -240,7 +227,7 @@ abstract class PHP
return $this->getVersion() . "-"
. SDKConfig::getCurrentCrtName() . "-"
. ($this->isThreadSafe() ? "ts" : "nts") . "-"
. ($this->is64bit() ? "x64" : "x86")
. SDKConfig::getCurrentArchName()
. "-" . substr(md5(uniqid()), 0, 8);
}
}

View File

@@ -57,20 +57,24 @@ class Config
public static function getCurrentArchName() : string
{/*{{{*/
if (NULL === self::$currentArchName) {
/* XXX this might be not true for other compilers! */
passthru("where cl.exe >nul", $status);
if ($status) {
throw new Exception("Couldn't execute cl.exe.");
}
exec("cl.exe /? 2>&1", $out);
if (preg_match(",x64,", $out[0])) {
self::setCurrentArchName("x64");
} elseif (preg_match(",x86,", $out[0])) {
self::setCurrentArchName("x86");
if (FALSE !== ($env = getenv('PHP_SDK_ARCH'))) {
self::setCurrentArchName($env);
} else {
throw new Exception("Couldn't determine Arch.");
/* XXX this might be not true for other compilers! */
passthru("where cl.exe >nul", $status);
if ($status) {
throw new Exception("Couldn't execute cl.exe.");
}
exec("cl.exe /? 2>&1", $out);
if (preg_match(",x64,", $out[0])) {
self::setCurrentArchName("x64");
} elseif (preg_match(",x86,", $out[0])) {
self::setCurrentArchName("x86");
} else {
throw new Exception("Couldn't determine Arch.");
}
}
}
@@ -85,18 +89,22 @@ class Config
public static function getCurrentCrtName() : ?string
{/*{{{*/
if (NULL === self::$currentCrtName) {
$all_branches = Config::getKnownBranches();
if (FALSE !== ($env = getenv('PHP_SDK_VS'))) {
self::setCurrentCrtName($env);
} else {
$all_branches = Config::getKnownBranches();
if (!isset($all_branches[Config::getCurrentBranchName()])) {
throw new Exception("Couldn't find any configuration for branch '" . Config::getCurrentBranchName() . "'");
if (!isset($all_branches[Config::getCurrentBranchName()])) {
throw new Exception("Couldn't find any configuration for branch '" . Config::getCurrentBranchName() . "'");
}
$branch = $all_branches[Config::getCurrentBranchName()];
if (count($branch) > 1) {
throw new Exception("Multiple CRTs are available for this branch, please choose one from " . implode(",", array_keys($branch)));
}
self::setCurrentCrtName(array_keys($branch)[0]);
}
$branch = $all_branches[Config::getCurrentBranchName()];
if (count($branch) > 1) {
throw new Exception("Multiple CRTs are available for this branch, please choose one from " . implode(",", array_keys($branch)));
}
self::setCurrentCrtName(array_keys($branch)[0]);
}
return self::$currentCrtName;
@@ -138,8 +146,7 @@ class Config
$tmp = $fetcher->getByUri(self::$depsBaseUri . "/series/");
if (false !== $tmp) {
$data = array();
if (preg_match_all(",/packages-(.+)-(vc\d+)-(x86|x64)-(stable|staging)\.txt,U", $tmp, $m, PREG_SET_ORDER)
|| preg_match_all(",/packages-(.+)-(vs\d+)-(x86|x64)-(stable|staging)\.txt,U", $tmp, $m, PREG_SET_ORDER)) {
if (preg_match_all(",/packages-(.+)-(v[cs]\d+)-(x86|x64)-(stable|staging)\.txt,U", $tmp, $m, PREG_SET_ORDER)) {
foreach ($m as $b) {
if (!isset($data[$b[1]])) {
$data[$b[1]] = array();

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,5 +1,5 @@
{
"pgo01org_zip_url": "https://github.com/01org/php_pgo_training_scripts/archive/master.zip",
"pgo01org_zip_url": "https://github.com/intel/php_pgo_training_scripts/archive/master.zip",
"type": "web",
"srv_http": "nginx",
"srv_db": "mariadb"

View File

@@ -1,6 +1,6 @@
{
"wp_cli_phar_url": "https://github.com/wp-cli/wp-cli/releases/download/v2.0.0/wp-cli-2.0.0.phar",
"wptest_zip_url": "https://github.com/manovotny/wptest/archive/master.zip",
"wptest_zip_url": "https://github.com/poststatus/wptest/archive/master.zip",
"type": "web",
"srv_http": "nginx",
"srv_db": "mariadb"