summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
authorCarl Smedstad2024-02-09 14:15:06 +0100
committerCarl Smedstad2024-02-10 13:33:56 +0100
commitd0d65e31b993e80736885657e0c3e64dc0a1ac29 (patch)
tree4c3f7bde41fffe85693d9bf9b14e434f934eb150 /PKGBUILD
parentdf1a3db87e2a69262d02f81031fb19b835418980 (diff)
downloadaur-d0d65e31b993e80736885657e0c3e64dc0a1ac29.tar.gz
upgpkg: 7.4.1-3: Refactor PKGBUILD
* Remove dependency on upstream's 3.5k LOC build script 'build.psm1'. * Ensure dependencies are fetched in in the prepare function. * Use Git repository as source to avoid patching and properly inject VCS info.
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD221
1 files changed, 127 insertions, 94 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 660559113310..9fa98846a3b5 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -4,145 +4,133 @@
# Contributor: Max Liebkies <mail@maxliebkies.de>
pkgname=powershell
+_pkgname=PowerShell
pkgver=7.4.1
-pkgrel=2
+_commit=a4348e51b87075cb8cd8047830e6575e4f91f3cf
+pkgrel=3
pkgdesc="A cross-platform automation and configuration tool/framework (latest release)"
arch=(x86_64)
url="https://github.com/PowerShell/PowerShell"
license=(MIT)
+_dotnet_version=8.0
depends=(
- 'dotnet-runtime>=8.0.0'
- 'dotnet-runtime<9.0.0'
+ "dotnet-runtime-$_dotnet_version"
gcc-libs
glibc
)
makedepends=(
- dotnet-sdk
+ "dotnet-sdk-$_dotnet_version"
+ git
+ unzip
)
checkdepends=(
- xdg-utils
- iputils
inetutils
+ iputils
+ xdg-utils
)
-
-_dotnet_version=8.0
-
+install=powershell.install
source=(
- "$pkgname-$pkgver::$url/archive/refs/tags/v$pkgver.tar.gz"
+ "git+$url.git#commit=$_commit"
"Microsoft.PowerShell.SDK.csproj.TypeCatalog.targets"
- "version-from-environment-variable.patch"
- "skip-distro-check.patch"
+ "https://globalcdn.nuget.org/packages/pester.4.10.1.nupkg"
)
+noextract=("pester.4.10.1.nupkg")
sha256sums=(
- '8f0f1908eea0f88e5e49dd51ebeaf52917eda2c07895416d06f08ab319ebe784'
+ 'SKIP'
'0c81200e5211a2f63bc8d9941432cbf98b5988249f0ceeb1f118a14adddbaa8e'
- '50c7265492cd5cd87d81df29fa737d06dacd97586b0fafb3a0f3af8451b8c052'
- '1f25aa517b73d5d17c547757be8c6fb39e3d2f0fd128805ac42c4192348716ac'
+ '6c996dc4dc8bef068cefb1680292154f45577c66fb0600dd0fb50939bbf8a3a3'
)
-install=powershell.install
-options=(staticlibs)
-_archive="PowerShell-$pkgver"
+_archive="$_pkgname"
prepare() {
cd "$_archive"
- printf '{"sdk": {"version": "%s"}}' "$_dotnet_version" > global.json
+ # I couldn't find any way of silencing the very verbose warnings from
+ # Microsoft.SourceLink other than to set the remote to a proper URL..
+ git remote set-url origin "$url"
- patch --forward --strip=1 --input="$srcdir/version-from-environment-variable.patch"
- patch --forward --strip=1 --input="$srcdir/skip-distro-check.patch"
-}
+ export NUGET_PACKAGES="$PWD/nuget"
+ export DOTNET_NOLOGO=true
+ export DOTNET_CLI_TELEMETRY_OPTOUT=true
-_publish_path="src/powershell-unix/bin/Release/net$_dotnet_version/linux-x64/publish"
+ # Replicating build.psm1:Start-PSBuild()
+ ## Restore-PSPackage()
+ dotnet restore --locked-mode -p:PublishReadyToRun=true src/powershell-unix
-build() {
- cd "$_archive"
+ dotnet restore --locked-mode src/TypeCatalogGen
+ dotnet restore --locked-mode src/ResGen
+ dotnet restore --locked-mode src/Modules
+ dotnet restore --locked-mode src/Microsoft.PowerShell.GlobalTool.Shim
- export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
- export DOTNET_CLI_TELEMETRY_OPTOUT=true
- export DOTNET_NOLOGO=true
- export DOTNET_ROOT=/usr/share/dotnet
+ dotnet restore --locked-mode test/tools/TestAlc
+ dotnet restore --locked-mode test/tools/TestExe
+ dotnet restore --locked-mode test/tools/UnixSocket
+ dotnet restore --locked-mode test/tools/Modules
- export NUGET_PACKAGES="$PWD/nuget"
- export POWERSHELL_GIT_DESCRIBE_OUTPUT="v$pkgver-0-gxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+ dotnet restore --locked-mode -p:RuntimeIdentifiers=linux-x64 test/tools/TestService
+ dotnet restore --locked-mode -p:RuntimeIdentifiers=linux-x64 test/tools/WebListener
- # Replicating build.psm1:Start-PSBuild()
+ dotnet restore --locked-mode test/tools/NamedPipeConnection/src/code
+}
- ## Restore-PSPackage()
- local restore_args='--disable-parallel /property:SDKToUse=Microsoft.NET.Sdk'
- # shellcheck disable=2086
- {
- dotnet restore $restore_args src/powershell-unix
- dotnet restore $restore_args src/TypeCatalogGen
- dotnet restore $restore_args src/ResGen
- dotnet restore $restore_args src/Modules
- dotnet restore $restore_args src/Microsoft.PowerShell.GlobalTool.Shim
- }
+build() {
+ cd "$_archive"
+
+ export NUGET_PACKAGES="$PWD/nuget"
+ export DOTNET_NOLOGO=true
+ export DOTNET_CLI_TELEMETRY_OPTOUT=true
## Start-ResGen()
- (
- cd src/ResGen
- dotnet run
- )
+ pushd src/ResGen
+ dotnet run --no-restore
+ popd
## Start-TypeGen()
- cp \
- "$srcdir/Microsoft.PowerShell.SDK.csproj.TypeCatalog.targets" \
- "src/Microsoft.PowerShell.SDK/obj/Microsoft.PowerShell.SDK.csproj.TypeCatalog.targets"
+ cp -t src/Microsoft.PowerShell.SDK/obj \
+ "$srcdir/Microsoft.PowerShell.SDK.csproj.TypeCatalog.targets"
local inc_file="$PWD/src/TypeCatalogGen/powershell_linux-x64.inc"
- (
- cd src/Microsoft.PowerShell.SDK
- dotnet msbuild \
- ./Microsoft.PowerShell.SDK.csproj \
- /t:_GetDependencies "/property:DesignTimeBuild=true;_DependencyFile=$inc_file" \
- /nologo
- )
-
- (
- cd src/TypeCatalogGen
- dotnet run ../System.Management.Automation/CoreCLR/CorePsTypeCatalog.cs powershell_linux-x64.inc
- )
+ dotnet msbuild \
+ src/Microsoft.PowerShell.SDK \
+ -t:_GetDependencies \
+ -p:DesignTimeBuild=true \
+ -p:_DependencyFile="$inc_file" \
+ -nologo
+
+ dotnet run \
+ --no-restore \
+ --project src/TypeCatalogGen \
+ src/System.Management.Automation/CoreCLR/CorePsTypeCatalog.cs \
+ "$inc_file"
## Publish PowerShell
dotnet publish \
- --configuration Release \
- --framework net$_dotnet_version \
- --no-self-contained \
+ --no-restore \
+ --framework "net$_dotnet_version" \
--runtime linux-x64 \
- /property:ErrorOnDuplicatePublishOutputFiles=false \
- /property:GenerateFullPaths=true \
- /property:IsWindows=false \
- /property:SDKToUse=Microsoft.NET.Sdk \
- /property:UseAppHost=true \
+ --no-self-contained \
+ --configuration Release \
+ --output lib \
src/powershell-unix/
## Publish reference assemblies
- mkdir -p "$_publish_path/ref"
grep 'Microsoft.NETCore.App' "$inc_file" | sed 's/;//' | while read -r assembly; do
- cp "$assembly" "$_publish_path/ref"
+ install -Dm755 -t lib/ref "$assembly"
done
## Restore-PSModuleToBuild()
- cp -ar "$NUGET_PACKAGES/microsoft.powershell.archive/1.2.5/." "$_publish_path/Modules/Microsoft.PowerShell.Archive"
- cp -ar "$NUGET_PACKAGES/microsoft.powershell.psresourceget/1.0.1/." "$_publish_path/Modules/Microsoft.PowerShell.PSResourceGet"
- cp -ar "$NUGET_PACKAGES/packagemanagement/1.4.8.1/." "$_publish_path/Modules/PackageManagement"
- cp -ar "$NUGET_PACKAGES/powershellget/2.2.5/." "$_publish_path/Modules/PowerShellGet"
- cp -ar "$NUGET_PACKAGES/psreadline/2.3.4/." "$_publish_path/Modules/PSReadLine"
- cp -ar "$NUGET_PACKAGES/threadjob/2.0.3/." "$_publish_path/Modules/ThreadJob"
-
- ## Restore-PSPester()
- "$_publish_path/pwsh" -command "
- Save-Module -Name Pester -Path $_publish_path/Modules -Repository PSGallery -MaximumVersion 4.99
- "
+ cp -a "$NUGET_PACKAGES/microsoft.powershell.archive/1.2.5/." lib/Modules/Microsoft.PowerShell.Archive
+ cp -a "$NUGET_PACKAGES/microsoft.powershell.psresourceget/1.0.1/." lib/Modules/Microsoft.PowerShell.PSResourceGet
+ cp -a "$NUGET_PACKAGES/packagemanagement/1.4.8.1/." lib/Modules/PackageManagement
+ cp -a "$NUGET_PACKAGES/powershellget/2.2.5/." lib/Modules/PowerShellGet
+ cp -a "$NUGET_PACKAGES/psreadline/2.3.4/." lib/Modules/PSReadLine
+ cp -a "$NUGET_PACKAGES/threadjob/2.0.3/." lib/Modules/ThreadJob
}
check() {
cd "$_archive"
- export LANG=en_US.UTF-8
- export LC_ALL=en_US.UTF-8
-
# One failing test related to JSON & datetime, don't know why
rm test/powershell/Modules/Microsoft.PowerShell.Utility/ConvertTo-Json.Tests.ps1
@@ -153,7 +141,7 @@ check() {
rm test/powershell/Language/Scripting/NativeExecution/NativeCommandProcessor.Tests.ps1
rm test/powershell/Modules/Microsoft.PowerShell.Utility/Invoke-Item.Tests.ps1
- # Creates & leaves directories in $HOME, yikes.. Skipping
+ # Creates & leaves directories in $HOME, skipping
rm test/powershell/Language/Parser/ParameterBinding.Tests.ps1
rm test/powershell/Language/Scripting/ScriptHelp.Tests.ps1
rm test/powershell/Modules/Microsoft.PowerShell.Utility/Add-Type.Tests.ps1
@@ -164,12 +152,57 @@ check() {
# Some users report this test failing, cannot reproduce but removing anyway
rm test/powershell/Modules/Microsoft.PowerShell.Management/Start-Process.Tests.ps1
- # shellcheck disable=2016
- "$_publish_path/pwsh" -command "
- \$ErrorActionPreference = \"Stop\"
- Import-Module ./build.psm1 -ArgumentList \$true
- Start-PSPester -BinDir $_publish_path -ThrowOnFailure
- "
+ ## Restore-PSPester()
+ unzip -ud temp_pester "$srcdir/pester.4.10.1.nupkg"
+ cp -a temp_pester/tools lib/Modules/Pester
+
+ unzip -ud test/tools/Modules/SelfSignedCertificate \
+ "$NUGET_PACKAGES/selfsignedcertificate/0.0.4/selfsignedcertificate.0.0.4.nupkg"
+
+ export NUGET_PACKAGES="$PWD/nuget"
+ export DOTNET_NOLOGO=true
+ export DOTNET_CLI_TELEMETRY_OPTOUT=true
+
+ dotnet publish \
+ --no-restore \
+ --framework "net$_dotnet_version" \
+ --configuration Debug \
+ test/tools/TestAlc
+
+ for project in TestExe TestService UnixSocket WebListener; do
+ dotnet publish \
+ --no-restore \
+ --framework "net$_dotnet_version" \
+ --runtime linux-x64 \
+ --self-contained \
+ --configuration Debug \
+ --output test/tools/$project/bin \
+ test/tools/$project
+ export PATH="$PATH:$PWD/test/tools/$project/bin/Debug/net8.0/linux-x64"
+ done
+
+ dotnet publish \
+ --no-restore \
+ --configuration Debug \
+ --framework "net$_dotnet_version" \
+ --output test/tools/Modules/Microsoft.PowerShell.NamedPipeConnection \
+ test/tools/NamedPipeConnection/src/code
+ install -Dm644 -t test/tools/Modules/Microsoft.PowerShell.NamedPipeConnection \
+ test/tools/NamedPipeConnection/src/Microsoft.PowerShell.NamedPipeConnection.psd1
+
+ export LANG=en_US.UTF-8
+ export LC_ALL=en_US.UTF-8
+
+ # shellcheck disable=SC2016
+ lib/pwsh -noprofile -command '
+ $env:PSModulePath = "$(Get-Location)/test/tools/Modules:" + $env:PSModulePath
+ Import-Module "Pester"
+ Invoke-Pester -Show Header,Failed,Summary -EnableExit `
+ -OutputFormat NUnitXml -OutputFile pester-tests.xml `
+ -ExcludeTag @("Slow", "RequireSudoOnUnix") `
+ -Tag @("CI", "Feature") `
+ "test/powershell"
+ '
}
package() {
@@ -177,8 +210,8 @@ package() {
local pkgnum=${pkgver:0:1}
- install -dm755 "$pkgdir/usr/lib/$pkgname-$pkgnum/"
- cp --archive --no-preserve=ownership "$_publish_path/." "$pkgdir/usr/lib/$pkgname-$pkgnum/"
+ install -dm755 "$pkgdir/usr/lib/$pkgname-$pkgnum"
+ cp --archive -t "$pkgdir/usr/lib/$pkgname-$pkgnum" lib/*
install -dm755 "$pkgdir/usr/bin"
ln -s "/usr/lib/$pkgname-$pkgnum/pwsh" "$pkgdir/usr/bin/pwsh"