mirror of
https://github.com/saltstack/salt.git
synced 2025-04-16 01:30:20 +00:00
253 lines
7 KiB
PowerShell
253 lines
7 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Parent script that runs all other scripts required to build Salt
|
|
|
|
.DESCRIPTION
|
|
This script Cleans, Installs Dependencies, Builds Python, Installs Salt,
|
|
and builds the NullSoft Installer. It depends on the following Scripts
|
|
and are called in this order:
|
|
|
|
- clean_env.ps1
|
|
- install_nsis.ps1
|
|
- build_python.ps1
|
|
- install_salt.ps1
|
|
- build_pkg.ps1
|
|
|
|
.EXAMPLE
|
|
build.ps1
|
|
|
|
.EXAMPLE
|
|
build.ps1 -Version 3005 -PythonVersion 3.10.9
|
|
|
|
#>
|
|
|
|
param(
|
|
[Parameter(Mandatory=$false)]
|
|
[Alias("v")]
|
|
# The version of Salt to be built. If this is not passed, the script will
|
|
# attempt to get it from the git describe command on the Salt source
|
|
# repo
|
|
[String] $Version,
|
|
|
|
[Parameter(Mandatory=$false)]
|
|
[ValidateSet("x86", "x64", "amd64")]
|
|
[Alias("a")]
|
|
# The System Architecture to build. "x86" will build a 32-bit installer.
|
|
# "x64" will build a 64-bit installer. Default is: x64
|
|
$Architecture = "x64",
|
|
|
|
[Parameter(Mandatory=$false)]
|
|
[ValidatePattern("^\d{1,2}.\d{1,2}.\d{1,2}$")]
|
|
[ValidateSet(
|
|
"3.11.3",
|
|
"3.10.11"
|
|
)]
|
|
[Alias("p")]
|
|
[String] $PythonVersion = "3.10.11",
|
|
|
|
[Parameter(Mandatory=$false)]
|
|
[Alias("r")]
|
|
[String] $RelenvVersion = "0.12.3",
|
|
|
|
[Parameter(Mandatory=$false)]
|
|
[Alias("b")]
|
|
# Build python from source instead of fetching a tarball
|
|
# Requires VC Build Tools
|
|
[Switch] $Build,
|
|
|
|
[Parameter(Mandatory=$false)]
|
|
[Alias("c")]
|
|
# Don't pretify the output of the Write-Result
|
|
[Switch] $CICD,
|
|
|
|
[Parameter(Mandatory=$false)]
|
|
# Don't install. It should already be installed
|
|
[Switch] $SkipInstall
|
|
|
|
)
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Script Preferences
|
|
#-------------------------------------------------------------------------------
|
|
|
|
$ProgressPreference = "SilentlyContinue"
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Variables
|
|
#-------------------------------------------------------------------------------
|
|
$SCRIPT_DIR = (Get-ChildItem "$($myInvocation.MyCommand.Definition)").DirectoryName
|
|
$PROJECT_DIR = $(git rev-parse --show-toplevel)
|
|
|
|
if ( $Architecture -eq "amd64" ) {
|
|
$Architecture = "x64"
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Verify Salt and Version
|
|
#-------------------------------------------------------------------------------
|
|
|
|
if ( [String]::IsNullOrEmpty($Version) ) {
|
|
if ( ! (Test-Path -Path $PROJECT_DIR) ) {
|
|
Write-Host "Missing Salt Source Directory: $PROJECT_DIR"
|
|
exit 1
|
|
}
|
|
Push-Location $PROJECT_DIR
|
|
$Version = $( git describe )
|
|
$Version = $Version.Trim("v")
|
|
Pop-Location
|
|
if ( [String]::IsNullOrEmpty($Version) ) {
|
|
Write-Host "Failed to get version from $PROJECT_DIR"
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Start the Script
|
|
#-------------------------------------------------------------------------------
|
|
|
|
Write-Host $("#" * 80)
|
|
Write-Host "Build Salt Installer Packages" -ForegroundColor Cyan
|
|
Write-Host "- Salt Version: $Version"
|
|
Write-Host "- Python Version: $PythonVersion"
|
|
Write-Host "- Relenv Version: $RelenvVersion"
|
|
Write-Host "- Architecture: $Architecture"
|
|
Write-Host $("v" * 80)
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Install NSIS
|
|
#-------------------------------------------------------------------------------
|
|
|
|
$KeywordArguments = @{}
|
|
if ( $CICD ) {
|
|
$KeywordArguments["CICD"] = $true
|
|
}
|
|
& "$SCRIPT_DIR\install_nsis.ps1" @KeywordArguments
|
|
if ( ! $? ) {
|
|
Write-Host "Failed to install NSIS"
|
|
exit 1
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Install WIX
|
|
#-------------------------------------------------------------------------------
|
|
|
|
$KeywordArguments = @{}
|
|
if ( $CICD ) {
|
|
$KeywordArguments["CICD"] = $true
|
|
}
|
|
& "$SCRIPT_DIR\install_wix.ps1" @KeywordArguments
|
|
if ( ! $? ) {
|
|
Write-Host "Failed to install WIX"
|
|
exit 1
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Install Visual Studio Build Tools
|
|
#-------------------------------------------------------------------------------
|
|
|
|
$KeywordArguments = @{}
|
|
if ( $CICD ) {
|
|
$KeywordArguments["CICD"] = $true
|
|
}
|
|
& "$SCRIPT_DIR\install_vs_buildtools.ps1" @KeywordArguments
|
|
if ( ! $? ) {
|
|
Write-Host "Failed to install Visual Studio Build Tools"
|
|
exit 1
|
|
}
|
|
|
|
|
|
if ( ! $SkipInstall ) {
|
|
#-------------------------------------------------------------------------------
|
|
# Build Python
|
|
#-------------------------------------------------------------------------------
|
|
|
|
$KeywordArguments = @{
|
|
Version = $PythonVersion
|
|
Architecture = $Architecture
|
|
RelenvVersion = $RelenvVersion
|
|
}
|
|
if ( $Build ) {
|
|
$KeywordArguments["Build"] = $false
|
|
}
|
|
if ( $CICD ) {
|
|
$KeywordArguments["CICD"] = $true
|
|
}
|
|
|
|
& "$SCRIPT_DIR\build_python.ps1" @KeywordArguments
|
|
if ( ! $? ) {
|
|
Write-Host "Failed to build Python"
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Install Salt
|
|
#-------------------------------------------------------------------------------
|
|
|
|
$KeywordArguments = @{}
|
|
if ( $CICD ) {
|
|
$KeywordArguments["CICD"] = $true
|
|
}
|
|
if ( $SkipInstall ) {
|
|
$KeywordArguments["SkipInstall"] = $true
|
|
}
|
|
$KeywordArguments["PKG"] = $true
|
|
& "$SCRIPT_DIR\install_salt.ps1" @KeywordArguments
|
|
if ( ! $? ) {
|
|
Write-Host "Failed to install Salt"
|
|
exit 1
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Prep Salt for Packaging
|
|
#-------------------------------------------------------------------------------
|
|
|
|
$KeywordArguments = @{}
|
|
if ( $CICD ) {
|
|
$KeywordArguments["CICD"] = $true
|
|
}
|
|
$KeywordArguments["PKG"] = $true
|
|
& "$SCRIPT_DIR\prep_salt.ps1" @KeywordArguments
|
|
if ( ! $? ) {
|
|
Write-Host "Failed to Prepare Salt for packaging"
|
|
exit 1
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Build NSIS Package
|
|
#-------------------------------------------------------------------------------
|
|
|
|
$KeywordArguments = @{}
|
|
if ( ! [String]::IsNullOrEmpty($Version) ) {
|
|
$KeywordArguments.Add("Version", $Version)
|
|
}
|
|
if ( $CICD ) {
|
|
$KeywordArguments["CICD"] = $true
|
|
}
|
|
|
|
& "$SCRIPT_DIR\nsis\build_pkg.ps1" @KeywordArguments
|
|
|
|
if ( ! $? ) {
|
|
Write-Host "Failed to build NSIS package"
|
|
exit 1
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Build MSI Package
|
|
#-------------------------------------------------------------------------------
|
|
|
|
& "$SCRIPT_DIR\msi\build_pkg.ps1" @KeywordArguments
|
|
|
|
if ( ! $? ) {
|
|
Write-Host "Failed to build NSIS package"
|
|
exit 1
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# Script Complete
|
|
#-------------------------------------------------------------------------------
|
|
|
|
Write-Host $("^" * 80)
|
|
Write-Host "Build Salt $Architecture Completed" -ForegroundColor Cyan
|
|
Write-Host $("#" * 80)
|