mirror of
https://github.com/actions/python-versions.git
synced 2025-12-16 07:46:47 +00:00
Delete builders/nix-python-builder.psm1
This commit is contained in:
@@ -1,170 +0,0 @@
|
|||||||
|
|
||||||
using module "./python-builder.psm1"
|
|
||||||
|
|
||||||
class NixPythonBuilder : PythonBuilder {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Base Python builder class for *Nix systems.
|
|
||||||
|
|
||||||
.DESCRIPTION
|
|
||||||
Contains methods that required to build Python artifact for *nix systems. Inherited from base PythonBuilder class.
|
|
||||||
|
|
||||||
.PARAMETER version
|
|
||||||
The version of Python that should be built.
|
|
||||||
|
|
||||||
.PARAMETER Platform
|
|
||||||
The type of platform for which Python should be built.
|
|
||||||
|
|
||||||
.PARAMETER PlatformVersion
|
|
||||||
The version of platform for which Python should be built.
|
|
||||||
|
|
||||||
.PARAMETER InstallationTemplateName
|
|
||||||
The name of template that will be used to create installation script for generated Python artifact.
|
|
||||||
|
|
||||||
.PARAMETER InstallationScriptName
|
|
||||||
The name of installation script that will be generated for Python artifact.
|
|
||||||
|
|
||||||
.PARAMETER OutputArtifactName
|
|
||||||
The name of archive with Python binaries that will be generated as part of Python artifact.
|
|
||||||
|
|
||||||
#>
|
|
||||||
|
|
||||||
[string] $InstallationTemplateName
|
|
||||||
[string] $InstallationScriptName
|
|
||||||
[string] $OutputArtifactName
|
|
||||||
|
|
||||||
NixPythonBuilder(
|
|
||||||
[semver] $version,
|
|
||||||
[string] $architecture,
|
|
||||||
[string] $platform
|
|
||||||
) : Base($version, $architecture, $platform) {
|
|
||||||
$this.InstallationTemplateName = "nix-setup-template.sh"
|
|
||||||
$this.InstallationScriptName = "setup.sh"
|
|
||||||
$this.OutputArtifactName = "python-$Version-$Platform-$Architecture.tar.gz"
|
|
||||||
}
|
|
||||||
|
|
||||||
[uri] GetSourceUri() {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Get base Python URI and return complete URI for Python sources.
|
|
||||||
#>
|
|
||||||
|
|
||||||
$base = $this.GetBaseUri()
|
|
||||||
$versionName = $this.GetBaseVersion()
|
|
||||||
$nativeVersion = Convert-Version -version $this.Version
|
|
||||||
|
|
||||||
return "${base}/${versionName}/Python-${nativeVersion}.tgz"
|
|
||||||
}
|
|
||||||
|
|
||||||
[string] GetPythonBinary() {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Return name of Python binary.
|
|
||||||
#>
|
|
||||||
|
|
||||||
if ($this.Version.Major -eq 2) { $pythonBinary = "python" } else { $pythonBinary = "python3" }
|
|
||||||
return $pythonBinary
|
|
||||||
}
|
|
||||||
|
|
||||||
[string] Download() {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Download Python sources and extract them at temporary work folder. Returns expanded archive location path.
|
|
||||||
#>
|
|
||||||
|
|
||||||
$sourceUri = $this.GetSourceUri()
|
|
||||||
Write-Host "Sources URI: $sourceUri"
|
|
||||||
|
|
||||||
$archiveFilepath = Download-File -Uri $sourceUri -OutputFolder $this.WorkFolderLocation
|
|
||||||
$expandedSourceLocation = Join-Path -Path $this.TempFolderLocation -ChildPath "SourceCode"
|
|
||||||
New-Item -Path $expandedSourceLocation -ItemType Directory
|
|
||||||
|
|
||||||
Extract-TarArchive -ArchivePath $archiveFilepath -OutputDirectory $expandedSourceLocation
|
|
||||||
Write-Debug "Done; Sources location: $expandedSourceLocation"
|
|
||||||
|
|
||||||
return $expandedSourceLocation
|
|
||||||
}
|
|
||||||
|
|
||||||
[void] CreateInstallationScript() {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Create Python artifact installation script based on template specified in InstallationTemplateName property.
|
|
||||||
#>
|
|
||||||
|
|
||||||
$installationScriptLocation = New-Item -Path $this.WorkFolderLocation -Name $this.InstallationScriptName -ItemType File
|
|
||||||
$installationTemplateLocation = Join-Path -Path $this.InstallationTemplatesLocation -ChildPath $this.InstallationTemplateName
|
|
||||||
|
|
||||||
$installationTemplateContent = Get-Content -Path $installationTemplateLocation -Raw
|
|
||||||
|
|
||||||
$variablesToReplace = @{
|
|
||||||
"{{__VERSION_FULL__}}" = $this.Version;
|
|
||||||
"{{__ARCH__}}" = $this.Architecture;
|
|
||||||
}
|
|
||||||
$variablesToReplace.keys | ForEach-Object { $installationTemplateContent = $installationTemplateContent.Replace($_, $variablesToReplace[$_]) }
|
|
||||||
|
|
||||||
$installationTemplateContent | Out-File -FilePath $installationScriptLocation
|
|
||||||
|
|
||||||
Write-Debug "Done; Installation script location: $installationScriptLocation)"
|
|
||||||
}
|
|
||||||
|
|
||||||
[void] Make() {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Executes "make" and "make install" commands for configured build sources. Make output will be writen in build_output.txt located in artifact location folder.
|
|
||||||
#>
|
|
||||||
|
|
||||||
Write-Debug "make Python $($this.Version)-$($this.Architecture) $($this.Platform)"
|
|
||||||
$buildOutputLocation = New-Item -Path $this.WorkFolderLocation -Name "build_output.txt" -ItemType File
|
|
||||||
|
|
||||||
Execute-Command -Command "make 2>&1 | tee $buildOutputLocation" -ErrorAction Continue
|
|
||||||
Execute-Command -Command "make install" -ErrorAction Continue
|
|
||||||
|
|
||||||
Write-Debug "Done; Make log location: $buildOutputLocation"
|
|
||||||
}
|
|
||||||
|
|
||||||
[void] CopyBuildResults() {
|
|
||||||
$buildFolder = $this.GetFullPythonToolcacheLocation()
|
|
||||||
Move-Item -Path "$buildFolder/*" -Destination $this.WorkFolderLocation
|
|
||||||
}
|
|
||||||
|
|
||||||
[void] ArchiveArtifact() {
|
|
||||||
$OutputPath = Join-Path $this.ArtifactFolderLocation $this.OutputArtifactName
|
|
||||||
Create-TarArchive -SourceFolder $this.WorkFolderLocation -ArchivePath $OutputPath
|
|
||||||
}
|
|
||||||
|
|
||||||
[void] Build() {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Build Python artifact from sources.
|
|
||||||
#>
|
|
||||||
|
|
||||||
Write-Host "Prepare Python Hostedtoolcache location..."
|
|
||||||
$this.PreparePythonToolcacheLocation()
|
|
||||||
|
|
||||||
Write-Host "Prepare system environment..."
|
|
||||||
$this.PrepareEnvironment()
|
|
||||||
|
|
||||||
Write-Host "Download Python $($this.Version)[$($this.Architecture)] sources..."
|
|
||||||
$sourcesLocation = $this.Download()
|
|
||||||
|
|
||||||
Push-Location -Path $sourcesLocation
|
|
||||||
Write-Host "Configure for $($this.Platform)..."
|
|
||||||
$this.Configure()
|
|
||||||
|
|
||||||
Write-Host "Make for $($this.Platform)..."
|
|
||||||
$this.Make()
|
|
||||||
Pop-Location
|
|
||||||
|
|
||||||
Write-Host "Generate structure dump"
|
|
||||||
New-ToolStructureDump -ToolPath $this.GetFullPythonToolcacheLocation() -OutputFolder $this.WorkFolderLocation
|
|
||||||
|
|
||||||
Write-Host "Copying build results to destination location"
|
|
||||||
$this.CopyBuildResults()
|
|
||||||
|
|
||||||
Write-Host "Create installation script..."
|
|
||||||
$this.CreateInstallationScript()
|
|
||||||
|
|
||||||
Write-Host "Archive artifact..."
|
|
||||||
$this.ArchiveArtifact()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user