mirror of
https://github.com/Kitware/CMake.git
synced 2026-08-13 17:07:57 +00:00
ci: Add script to repackage Pelles C compilers
Pelles C compilers are provided only via installer executables. Add a script to repackage the parts we need for CMake's CI jobs. Issue: #21536
This commit is contained in:
74
.gitlab/ci/repackage/pellesc.ps1
Normal file
74
.gitlab/ci/repackage/pellesc.ps1
Normal file
@@ -0,0 +1,74 @@
|
||||
# Pelles C compilers are available only via installers.
|
||||
# Run an installer and repackage the installation directory.
|
||||
|
||||
# From the Pelles C download page, download "setup.exe".
|
||||
# Run this script passing "setup.exe" followed by the version number.
|
||||
|
||||
#Requires -RunAsAdministrator
|
||||
|
||||
param (
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$installer,
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string]$version,
|
||||
[string]$revision = "1",
|
||||
[string]$basedir = "c:\PellesC"
|
||||
)
|
||||
|
||||
$erroractionpreference = "stop"
|
||||
|
||||
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||
|
||||
$installer_file = Get-Item $installer
|
||||
$installer_name = $installer_file.Name
|
||||
$package_name = "pellesc-$version-$revision"
|
||||
$package_dir = New-Item -Force -ItemType Directory -Path "$basedir\$package_name"
|
||||
if (-not $package_dir) {
|
||||
Write-Host "Failed to create package install dir."
|
||||
Exit 1
|
||||
}
|
||||
|
||||
Write-Host "Installing to: $package_dir"
|
||||
|
||||
# The installer treats everything after /D= as the destination.
|
||||
# Start-Process adds a trailing space, so use "cmd" instead.
|
||||
& "$env:ComSpec" /c start /wait "$installer_file" /S /D=$package_dir
|
||||
Write-Host ""
|
||||
Remove-Item "$package_dir/uninst.exe" -Force
|
||||
|
||||
# Convert environment scripts to templates.
|
||||
$bats = @(
|
||||
"bin\povars32.bat"
|
||||
"bin\povars64.bat"
|
||||
)
|
||||
foreach ($p in $bats) {
|
||||
$bat = Get-Content -Path "$package_dir\$p" -Raw
|
||||
$bat = $bat -Replace "PellesCDir=.*","PellesCDir=@PellesCDir@"
|
||||
$bat | Set-Content -Path "$package_dir\$p.in"
|
||||
Remove-Item "$package_dir\$p" -Force
|
||||
}
|
||||
|
||||
@"
|
||||
This was repackaged from an installation by
|
||||
|
||||
Pelles C $version "$installer_name"
|
||||
|
||||
using CMake's ".gitlab/ci/repackage/pellesc.ps1" script.
|
||||
|
||||
Copy or rename the environment script templates in the "bin" directory:
|
||||
|
||||
povars32.bat.in => povars32.bat
|
||||
povars64.bat.in => povars64.bat
|
||||
|
||||
and replace the "@PellesCDir@" placeholders with
|
||||
|
||||
C:\path\to\this\directory
|
||||
|
||||
Then use "povars32.bat" or "povars64.bat" to establish an environment.
|
||||
|
||||
"@ | Add-Content -NoNewline "$package_dir/README.txt"
|
||||
|
||||
Write-Host "Repackaging to: $package_name.zip"
|
||||
$compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal
|
||||
$includeBaseDirectory = $true
|
||||
[System.IO.Compression.ZipFile]::CreateFromDirectory("$package_dir", "$package_name.zip", $compressionLevel, $includeBaseDirectory)
|
||||
Reference in New Issue
Block a user