mirror of
https://github.com/php-win-ext/php-sdk-binary-tools.git
synced 2026-03-24 17:12:12 +01:00
Compare commits
11 Commits
php-sdk-2.
...
php-sdk-2.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fc185fd315 | ||
|
|
94ff7b53cf | ||
|
|
217647a68e | ||
|
|
52df9f9f4e | ||
|
|
4fb69d4c23 | ||
|
|
e99ec6722c | ||
|
|
8fecd7c279 | ||
|
|
97b62b2182 | ||
|
|
2d4aa4d54b | ||
|
|
0267758ff1 | ||
|
|
ca2ccd968a |
15
README.md
15
README.md
@@ -27,6 +27,7 @@ All the tools included are either scripts or 32-bit binaries. They are therefore
|
||||
- `phpsdk_deps` - handle dependency libraries
|
||||
- `phpsdk_version` - show SDK version
|
||||
- `phpsdk_dllmap` - create a JSON listing of DLLs contained in zip files
|
||||
- `task.exe` - wrapper to hide the given command line
|
||||
|
||||
## Other tools
|
||||
|
||||
@@ -48,7 +49,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 into the drive root.
|
||||
The PHP SDK should be unzipped into the shortest possible path, preferrably 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.
|
||||
|
||||
@@ -75,16 +76,24 @@ TODO more extensive documentation on the wiki.
|
||||
|
||||
# Customizing
|
||||
|
||||
A sript called phpsdk-local.bat has to be put into the PHP SDK root. If present, it will be automatically picked up by the starter script. A template for such a script is included with the PHP SDK. This allows to setup additional environment.
|
||||
## Custom environment setup
|
||||
|
||||
A sript called phpsdk-local.bat has to be put into the PHP SDK root. If present, it will be automatically picked up by the starter script. A template for such a script is included with the PHP SDK. This allows to meet any required preparations, that are not foreseen by the standard PHP SDK startup. Be careful while creating your own phpsdk-local. It's your responsibility to ensure the regular PHP SDK startup isn't broken after phpsdk-local was injected into the startup process.
|
||||
|
||||
## Console emulator integration
|
||||
|
||||
The starter scripts can be also easy integrated with the consoles other than standard cmd.exe. For the reference, here's an example ConEmu task
|
||||
|
||||
`C:\php-sdk\phpsdk-vc14-x64.bat -cur_console:d:C:\php-sdk\php70\vc14\x64\php-src`
|
||||
|
||||
## Unattended builds
|
||||
|
||||
An elementary functionality to run unattended builds is included. See an example on how to setup a simple unattended build task in the doc directory.
|
||||
|
||||
# Upgrading
|
||||
|
||||
- backup phpsdk-local.bat
|
||||
- backup the source trees, contained in the PHP SDK root
|
||||
- backup the source trees and any other custom files in the PHP SDK root
|
||||
- move the PHP SDK folder into trash
|
||||
- download, unpack and the new PHP SDK version under the same path
|
||||
|
||||
|
||||
BIN
bin/task.exe
Normal file
BIN
bin/task.exe
Normal file
Binary file not shown.
72
doc/task.c
Normal file
72
doc/task.c
Normal file
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* Run the passed command line hidden, suitable for a scheduled task.
|
||||
* Author: Anatol Belski <ab@php.net>
|
||||
* License: BSD 2-Clause
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define CMD_PRE "cmd.exe /c "
|
||||
#define CMD_PRE_LEN (sizeof(CMD_PRE)-1)
|
||||
|
||||
#ifdef DEBUG
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
#else
|
||||
int
|
||||
APIENTRY WinMain(HINSTANCE inst, HINSTANCE prev_inst, LPTSTR in_cmd, int show)
|
||||
#endif
|
||||
{
|
||||
STARTUPINFO si;
|
||||
PROCESS_INFORMATION pi;
|
||||
DWORD exit_code;
|
||||
|
||||
char *cmd = NULL;
|
||||
size_t cmd_len = 0, arg_len = 0;
|
||||
char *arg = strchr(GetCommandLine(), ' ');
|
||||
|
||||
if (!arg) {
|
||||
return 3;
|
||||
}
|
||||
#ifdef DEBUG
|
||||
printf("passed cmd: '%s'\n", arg);
|
||||
#endif
|
||||
|
||||
arg_len = strlen(arg);
|
||||
cmd_len = CMD_PRE_LEN + arg_len + 1;
|
||||
|
||||
cmd = malloc(cmd_len * sizeof(char));
|
||||
memmove(cmd, CMD_PRE, CMD_PRE_LEN);
|
||||
memmove(cmd + CMD_PRE_LEN, arg, arg_len);
|
||||
cmd[cmd_len-1] = '\0';
|
||||
#ifdef DEBUG
|
||||
printf("constructed cmd: '%s'\n", cmd);
|
||||
#endif
|
||||
|
||||
ZeroMemory( &si, sizeof(si) );
|
||||
si.cb = sizeof(si);
|
||||
si.dwFlags = STARTF_USESHOWWINDOW;
|
||||
si.wShowWindow = SW_HIDE;
|
||||
ZeroMemory( &pi, sizeof(pi) );
|
||||
|
||||
if (CreateProcess(NULL, cmd, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) {
|
||||
CloseHandle( pi.hThread );
|
||||
} else {
|
||||
free(cmd);
|
||||
printf( "Error: CreatePracess 0x%08lx \n", GetLastError() );
|
||||
return 3;
|
||||
}
|
||||
|
||||
WaitForSingleObject( pi.hProcess, INFINITE );
|
||||
|
||||
GetExitCodeProcess(pi.hProcess, &exit_code);
|
||||
|
||||
CloseHandle( pi.hProcess );
|
||||
|
||||
free(cmd);
|
||||
|
||||
return exit_code;
|
||||
}
|
||||
|
||||
19
doc/unattended-build-task.bat.example
Normal file
19
doc/unattended-build-task.bat.example
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
rem Task batch example.
|
||||
rem Create a task, put an action with the following data:
|
||||
rem Action: start a program
|
||||
rem Program/script: C:\php-sdk\bin\task.exe
|
||||
rem Add arguments: "C:\php-sdk\phpsdk-starter.bat -c vc14 -a x64 -t C:\php-sdk\unattended-build-task.bat"
|
||||
rem Run the task
|
||||
|
||||
pushd C:\php-sdk\php70\vc14\x64\php-src
|
||||
|
||||
git pull --rebase
|
||||
|
||||
nmake clean
|
||||
nmake > vs.log 2>&1
|
||||
|
||||
popd
|
||||
|
||||
exit
|
||||
|
||||
@@ -2,12 +2,22 @@
|
||||
|
||||
setlocal enableextensions enabledelayedexpansion
|
||||
|
||||
if "%1" equ "" goto help
|
||||
if "%2" equ "" goto help
|
||||
set IMHERE=%~dp0
|
||||
|
||||
:getopt
|
||||
if /i "%1" equ "-h" goto help
|
||||
if /i "%1" equ "-c" set CRT=%2& shift
|
||||
if /i "%1" equ "-a" set ARCH=%2& shift
|
||||
if /i "%1" equ "-t" set TASK=%2& shift
|
||||
shift
|
||||
if not (%1)==() goto getopt
|
||||
|
||||
if "%CRT%" equ "" goto help
|
||||
if "%ARCH%" equ "" goto help
|
||||
goto skip_help
|
||||
|
||||
:help
|
||||
echo Usage: phpsdk-starter ^<crt^> ^<arch^> [^<append_script.bat^>]
|
||||
echo Usage: phpsdk-starter -c ^<crt^> -a ^<arch^> [-t ^<task_script.bat^>]
|
||||
exit /b 0
|
||||
|
||||
:skip_help
|
||||
@@ -16,16 +26,27 @@ set PHP_SDK_RUN_FROM_ROOT=1
|
||||
|
||||
title PHP SDK
|
||||
|
||||
call %~dp0bin\phpsdk_setshell.bat %1 %2
|
||||
call %IMHERE%bin\phpsdk_setshell.bat %CRT% %ARCH%
|
||||
|
||||
if errorlevel 3 (
|
||||
exit /b %errorlevel%
|
||||
)
|
||||
|
||||
if exist "%~dp0phpsdk-local.bat" (
|
||||
cmd /k "!PHP_SDK_VC_SHELL_CMD! && %~dp0\bin\phpsdk_setvars.bat && %~dp0\bin\phpsdk_dumpenv.bat && %~dp0\phpsdk-local.bat && echo. && set prompt=$P$_$+$$$S"
|
||||
if "%TASK%" neq "" (
|
||||
if exist "%TASK%" (
|
||||
cmd /c "!PHP_SDK_VC_SHELL_CMD! && %IMHERE%\bin\phpsdk_setvars.bat && %IMHERE%\bin\phpsdk_dumpenv.bat && %IMHERE%\phpsdk-local.bat && %TASK%"
|
||||
rem exit 0
|
||||
exit /b
|
||||
) else (
|
||||
echo could not find the task file
|
||||
exit 3
|
||||
)
|
||||
)
|
||||
|
||||
if exist "%IMHERE%phpsdk-local.bat" (
|
||||
cmd /k "!PHP_SDK_VC_SHELL_CMD! && %IMHERE%\bin\phpsdk_setvars.bat && %IMHERE%\bin\phpsdk_dumpenv.bat && %IMHERE%\phpsdk-local.bat && echo. && set prompt=$P$_$+$$$S"
|
||||
) else (
|
||||
cmd /k "!PHP_SDK_VC_SHELL_CMD! && %~dp0\bin\phpsdk_setvars.bat && %~dp0\bin\phpsdk_dumpenv.bat && set prompt=$P$_$+$$$S"
|
||||
cmd /k "!PHP_SDK_VC_SHELL_CMD! && %IMHERE%\bin\phpsdk_setvars.bat && %IMHERE%\bin\phpsdk_dumpenv.bat && set prompt=$P$_$+$$$S"
|
||||
)
|
||||
|
||||
set PHP_SDK_RUN_FROM_ROOT=
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
|
||||
call %~dp0phpsdk-starter.bat vc14 x64 %*
|
||||
call %~dp0phpsdk-starter.bat -c vc14 -a x64 %*
|
||||
|
||||
exit /b
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
|
||||
call %~dp0phpsdk-starter.bat vc14 x86 %*
|
||||
call %~dp0phpsdk-starter.bat -c vc14 -a x86 %*
|
||||
|
||||
exit /b
|
||||
|
||||
|
||||
Reference in New Issue
Block a user