mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-13 11:19:50 +03:00
162 lines
4.8 KiB
Text
162 lines
4.8 KiB
Text
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
|
|
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
|
|
pkgname=powershell
|
|
pkgver=7.5.1
|
|
pkgrel=0
|
|
pkgdesc="A cross-platform automation and configuration tool/framework"
|
|
arch="x86_64 aarch64 armv7" # blocked by dotnet runtime
|
|
url="https://github.com/PowerShell/PowerShell"
|
|
license="MIT"
|
|
depends="
|
|
dotnet9-runtime
|
|
libpsl-native
|
|
"
|
|
makedepends="
|
|
dotnet9-sdk
|
|
git
|
|
"
|
|
source="
|
|
$pkgname-$pkgver.tar.gz::https://github.com/PowerShell/PowerShell/archive/v$pkgver.tar.gz
|
|
add-missing-nuget-src.patch
|
|
dependency-gatherer.targets
|
|
fix-filesystem-test.patch
|
|
"
|
|
builddir="$srcdir/PowerShell-$pkgver"
|
|
# if true, then within pipeline environment, in which case send logs there
|
|
# to be scooped
|
|
if [ -d "$APORTSDIR/logs" ]; then
|
|
_logdir="$APORTSDIR"/logs
|
|
else
|
|
_logdir="$srcdir"/logs
|
|
fi
|
|
|
|
# mono-flavored runtime does not support crossgen2
|
|
case $CARCH in
|
|
armhf|s390x|ppc64le) _use_crossgen2=false;;
|
|
esac
|
|
|
|
# change nuget cache
|
|
export NUGET_PACKAGES="$srcdir"/nuget_cache
|
|
|
|
# secfixes:
|
|
# 7.3.10-r0:
|
|
# - CVE-2023-36013
|
|
|
|
prepare() {
|
|
default_prepare
|
|
|
|
# build expects to be in git directory
|
|
git init
|
|
git config user.name "example"
|
|
git config user.email "example@example.com"
|
|
git add -f ./*
|
|
git commit -m 'Initial'
|
|
git tag -a "v$pkgver" -m "Initial"
|
|
git remote add origin "$url"
|
|
rm "global.json"
|
|
mkdir -p "$_logdir"
|
|
|
|
# Replicating build.psm1:Start-PSBuild()
|
|
## Restore-PSPackage()
|
|
dotnet restore --locked-mode -p:PublishReadyToRun=$_use_crossgen2 --use-current-runtime src/powershell-unix
|
|
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
|
|
}
|
|
|
|
build() {
|
|
msg "Building $pkgname"
|
|
|
|
## Start-ResGen(): Generate resource binding C# files
|
|
(
|
|
cd "$builddir"/src/ResGen
|
|
dotnet run --no-restore
|
|
)
|
|
|
|
## Start-TypeGen(): Setup the build target to gather dependency information
|
|
cp "$srcdir/dependency-gatherer.targets" \
|
|
"src/Microsoft.PowerShell.SDK/obj/Microsoft.PowerShell.SDK.csproj.TypeCatalog.targets"
|
|
|
|
dotnet msbuild \
|
|
src/Microsoft.PowerShell.SDK \
|
|
-t:_GetDependencies \
|
|
-p:DesignTimeBuild=true \
|
|
-p:_DependencyFile="$builddir"/src/TypeCatalogGen/powershell.inc \
|
|
-nologo
|
|
|
|
dotnet run \
|
|
--no-restore \
|
|
--project src/TypeCatalogGen \
|
|
src/System.Management.Automation/CoreCLR/CorePsTypeCatalog.cs \
|
|
"$builddir"/src/TypeCatalogGen/powershell.inc
|
|
|
|
## Build powershell core
|
|
dotnet publish --configuration Linux "src/powershell-unix/" \
|
|
--output lib \
|
|
--no-self-contained \
|
|
--no-restore \
|
|
--framework "net9.0" \
|
|
--use-current-runtime \
|
|
-p:PublishReadyToRun=$_use_crossgen2 \
|
|
/bl:"$_logdir"/powershell-build.binlog \
|
|
/consoleLoggerParameters:ShowTimestamp
|
|
|
|
## Publish reference assemblies
|
|
grep 'Microsoft.NETCore.App' "$builddir"/src/TypeCatalogGen/powershell.inc | sed 's/;//' | while read -r assembly; do
|
|
install -Dm755 -t lib/ref "$assembly"
|
|
done
|
|
|
|
# powershell doesn't build all standard libraries,
|
|
# emulate upstream build behavior
|
|
# see https://github.com/PowerShell/PowerShell/issues/20143
|
|
(
|
|
cd "$NUGET_PACKAGES"
|
|
_missing_libs="
|
|
PackageManagement PowerShellGet Microsoft.PowerShell.Archive
|
|
PSReadLine ThreadJob
|
|
"
|
|
for lib in $_missing_libs; do
|
|
local pkg="$(echo $lib | tr '[:upper:]' '[:lower:]' )"
|
|
cp -ar "$(find $pkg/* -maxdepth 0 | tail -n 1)" "$builddir"/lib/Modules/$lib
|
|
done
|
|
)
|
|
}
|
|
|
|
check() {
|
|
msg "Checking $pkgname"
|
|
cd "$builddir"/test/xUnit
|
|
dotnet test \
|
|
-c Release \
|
|
--runtime "$(dotnet --info | awk '$1=="RID:"{print $2}')" \
|
|
-p:PublishReadyToRun=$_use_crossgen2 \
|
|
/bl:"$_logdir"/powershell-check.binlog \
|
|
/consoleLoggerParameters:ShowTimestamp
|
|
}
|
|
|
|
package() {
|
|
# directory creation
|
|
install -dm 755 \
|
|
"$pkgdir"/usr/lib \
|
|
"$pkgdir"/usr/bin
|
|
|
|
# libary copy
|
|
cp -ar "$builddir"/lib "$pkgdir"/usr/lib/$pkgname
|
|
|
|
# already provided by 'libpsl-native' aport
|
|
rm -f "$pkgdir"/usr/lib/$pkgname/libpsl-native.so
|
|
|
|
# does not build for linux-musl, thus points to libc.so rather than musl
|
|
# see https://github.com/dotnet/runtime/issues/63187
|
|
rm -f "$pkgdir"/usr/lib/$pkgname/libSystem.IO.Ports.Native.so
|
|
|
|
# binary link
|
|
ln -s "/usr/lib/$pkgname/pwsh" "$pkgdir"/usr/bin/pwsh
|
|
}
|
|
|
|
sha512sums="
|
|
32ebd2d4d2957ab0f117ba1b869f81d1a8a43802f9a0640012a094cb25bff8ee730f475e0cddd2a304177265e55a0e23c91a16364bc793a0847459477ac3dd13 powershell-7.5.1.tar.gz
|
|
b03ea346d7f4e57b7c2dd8d797ed24a142f511f92ccd876ad9a4b581c8786c404bffef8c7e85ec00ef0e3aff3d6faf96972461e895451de127939771b32e391b add-missing-nuget-src.patch
|
|
5a70efe247cdae8ed5c66702909137e0727cf5e25aca54983891fc17716a56081825f9a6e57c56f8fa8aa5615a159f81c68ca501d42e2ce085c073be633b3025 dependency-gatherer.targets
|
|
0e7550d8b702eeb9ebbd42100b32cbf7a0be676c5922cd6ee03ecdd3ba11d20d42a468f73ee428c6c92c8b7b18f9b022591a368191c2a358034ba4d7e78d2b84 fix-filesystem-test.patch
|
|
"
|