Skip to content

Commit ca319bd

Browse files
committed
Use AdditionalFilesPath parameter in Install-PhpExtension
AdditionalFilesPath allows to specify a directory inside extension directory (which can be cached) for installing dependencies which are in the same archive as the extension Fix dependency directory name to correctly use VCVersion in win32.ps1 Fix exception in phalcon4 setup on Windows.
1 parent 4d3cfaa commit ca319bd

File tree

2 files changed

+41
-19
lines changed

2 files changed

+41
-19
lines changed

src/scripts/ext/phalcon.ps1

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Function to install phalcon
22
Function Add-PhalconHelper() {
33
if ($extension_version -eq '4') {
4-
Install-Phpextension phalcon -MinimumStability stable -Path $php_dir
4+
Install-Phpextension -Extension phalcon -MinimumStability stable -Path $php_dir
55
} else {
66
$domain = 'https://github.com'
77
$nts = if (!$installed.ThreadSafe) { "_nts" } else { "" }
@@ -30,7 +30,7 @@ Function Add-Phalcon() {
3030
if (Test-Path $ext_dir\php_psr.dll) {
3131
Enable-PhpExtension -Extension psr -Path $php_dir
3232
} else {
33-
Install-Phpextension psr -MinimumStability stable -Path $php_dir
33+
Install-Phpextension -Extension psr -MinimumStability stable -Path $php_dir
3434
}
3535
}
3636

@@ -49,7 +49,6 @@ Function Add-Phalcon() {
4949
}
5050
Add-Log $tick $extension $status
5151
} catch [Exception] {
52-
Write-Output $_.Exception|format-list -force
5352
Add-Log $cross $extension "Could not install $extension on PHP $($installed.FullVersion)"
5453
}
5554
}

src/scripts/win32.ps1

Lines changed: 39 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ param (
33
[ValidateNotNull()]
44
[ValidateLength(1, [int]::MaxValue)]
55
[string]
6-
$version = '7.4',
6+
$version = '8.0',
77
[Parameter(Position = 1, Mandatory = $true)]
88
[ValidateNotNull()]
99
[ValidateLength(1, [int]::MaxValue)]
@@ -119,25 +119,46 @@ Function Install-PSPackage() {
119119
}
120120
}
121121

122-
Function Add-ExtensionPrerequisites{
122+
# Function to link dependencies to PHP directory.
123+
Function Set-ExtensionPrerequisites
124+
{
125+
Param (
126+
[Parameter(Position = 0, Mandatory = $true)]
127+
[ValidateNotNull()]
128+
[ValidateLength(1, [int]::MaxValue)]
129+
[string]
130+
$deps_dir
131+
)
132+
$deps = Get-ChildItem -Recurse -Path $deps_dir
133+
if ($deps.Count -ne 0) {
134+
# Symlink dependencies instead of adding the directory to PATH ...
135+
# as other actions change the PATH thus breaking extensions.
136+
$deps | ForEach-Object {
137+
New-Item -Itemtype SymbolicLink -Path $php_dir -Name $_.Name -Target $_.FullName -Force > $null 2>&1
138+
}
139+
} else {
140+
Remove-Item $deps_dir -Recurse -Force
141+
}
142+
}
143+
144+
# Function to get extension pre-requisites.
145+
# https://windows.php.net/downloads/pecl/deps
146+
# Currently only imagick is supported using this Cmdlet.
147+
Function Get-ExtensionPrerequisites{
123148
Param (
124149
[Parameter(Position = 0, Mandatory = $true)]
125150
[ValidateNotNull()]
126151
[ValidateLength(1, [int]::MaxValue)]
127152
[string]
128153
$extension
129154
)
130-
$deps_dir = "$ext_dir\$extension-vc$installed.VCVersion-$arch"
155+
$deps_dir = "$ext_dir\$extension-vc$($installed.VCVersion)-$arch"
131156
$extensions_with_dependencies = ('imagick')
157+
New-Item $deps_dir -Type Directory 2>&1 | Out-Null
132158
if($extensions_with_dependencies.Contains($extension)) {
133-
if(-not(Test-Path $deps_dir)) {
134-
New-Item $deps_dir -Type Directory 2>&1 | Out-Null
135-
Install-PhpExtensionPrerequisite -Extension $extension -InstallPath $deps_dir -PhpPath $php_dir
136-
}
137-
Get-ChildItem -Recurse -Path $deps_dir | ForEach-Object {
138-
New-Item -Itemtype SymbolicLink -Path $php_dir -Name $_.Name -Target $_.FullName -Force >$null 2>&1
139-
}
159+
Install-PhpExtensionPrerequisite -Extension $extension -InstallPath $deps_dir -PhpPath $php_dir
140160
}
161+
return $deps_dir
141162
}
142163

143164
# Function to add PHP extensions.
@@ -170,20 +191,21 @@ Function Add-Extension {
170191
Add-Log $tick $extension "Enabled"
171192
}
172193
default {
173-
Add-ExtensionPrerequisites $extension
194+
$deps_dir = Get-ExtensionPrerequisites $extension
174195
Enable-PhpExtension -Extension $extension_info.Handle -Path $php_dir
196+
Set-ExtensionPrerequisites $deps_dir
175197
Add-Log $tick $extension "Enabled"
176198
}
177199
}
178200
}
179201
else {
180-
Add-ExtensionPrerequisites $extension
202+
$deps_dir = Get-ExtensionPrerequisites $extension
203+
$params = @{ Extension = $extension; MinimumStability = $stability; MaximumStability = $stability; Path = $php_dir; AdditionalFilesPath = $deps_dir; NoDependencies = $true }
181204
if($extension_version -ne '') {
182-
Install-PhpExtension -Extension $extension -Version $extension_version -MinimumStability $stability -MaximumStability $stability -Path $php_dir -NoDependencies
183-
} else {
184-
Install-PhpExtension -Extension $extension -MinimumStability $stability -MaximumStability $stability -Path $php_dir -NoDependencies
205+
$params["Version"] = $extension_version
185206
}
186-
207+
Install-PhpExtension @params
208+
Set-ExtensionPrerequisites $deps_dir
187209
Add-Log $tick $extension "Installed and enabled"
188210
}
189211
}
@@ -216,6 +238,7 @@ Function Remove-Extension() {
216238
}
217239
}
218240

241+
# Function to configure composer.
219242
Function Edit-ComposerConfig() {
220243
Param(
221244
[Parameter(Position = 0, Mandatory = $true)]

0 commit comments

Comments
 (0)