@@ -60,12 +60,26 @@ function install_extension($name, $buildArgs = array()) {
60
60
run (...$ cmd );
61
61
}
62
62
63
- function install_pecl_extension (string $ ext , string $ name , string $ version , string $ priority , $ buildArgs = array ()) {
63
+ function install_pecl_extension (string $ ext , string $ name , string $ version , string $ priority , $ buildArgs = array (), $ source = "" ) {
64
64
global $ dryRun ;
65
65
$ cwd = getcwd ();
66
- $ extDir = pecl_temp_dir () . "/ $ ext " ;
66
+ $ peclTempDir = pecl_temp_dir ();
67
+ $ extDir = $ peclTempDir . "/ $ ext " ;
68
+ $ extArchive = $ peclTempDir . DIRECTORY_SEPARATOR . basename ($ source );
67
69
68
- run ("pecl " , "install " , "--onlyreqdeps " , "--nobuild " , "$ ext- $ version " );
70
+ if ( ! is_dir ( $ peclTempDir ) ) {
71
+ run ("mkdir " , $ peclTempDir );
72
+ }
73
+
74
+ if (empty ($ source )) {
75
+ run ("pecl " , "install " , "--onlyreqdeps " , "--nobuild " , "$ ext- $ version " );
76
+ } else {
77
+ run ("curl " , "-sL " , "-o " , $ extArchive , $ source );
78
+ if ( ! is_dir ( $ extDir ) ) {
79
+ run ("mkdir " , $ extDir );
80
+ }
81
+ run ("tar " , "-C " , $ extDir , "--strip-components=1 " , "-zxf " , $ extArchive );
82
+ }
69
83
changeDir ($ extDir );
70
84
run ("phpize " );
71
85
run ("./configure " , ...$ buildArgs );
@@ -78,6 +92,7 @@ function install_pecl_extension(string $ext, string $name, string $version, stri
78
92
function cleanup ($ buildDeps ) {
79
93
$ libs = run ('find ' , PHP_EXTENSION_DIR ,'-type ' , 'f ' , '-name ' , '*.so ' );
80
94
$ pkgs = array ();
95
+ $ peclTempDir = pecl_temp_dir ();
81
96
82
97
$ libFiles = array ();
83
98
foreach ( $ libs as $ lib ) {
@@ -101,6 +116,7 @@ function cleanup($buildDeps) {
101
116
102
117
run ('apt-mark ' , 'manual ' , ...$ pkgs );
103
118
run ('apt-get ' , 'autoremove ' , '-y ' , '--purge ' , ...$ buildDeps );
119
+ run ('rm ' , '-rf ' , $ peclTempDir );
104
120
}
105
121
106
122
function main () {
@@ -152,7 +168,8 @@ function main() {
152
168
$ peclName = @$ extension ["pecl_name " ] ?: $ name ;
153
169
$ peclVersion = @$ extension ["version " ] ?: "stable " ;
154
170
$ priority = @$ extension ["priority " ] ?: "50 " ;
155
- install_pecl_extension ($ peclName , $ name , $ peclVersion , $ priority , $ buildArgs );
171
+ $ source = @$ extension ["src " ] ?: "" ;
172
+ install_pecl_extension ($ peclName , $ name , $ peclVersion , $ priority , $ buildArgs , $ source );
156
173
break ;
157
174
default :
158
175
install_extension ($ name , $ buildArgs );
0 commit comments