blob: 63ca98bddd166dad3d43d43a72c29f7ba1d28526 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
# Maintainer: Carl Smedstad <carl.smedstad at protonmail dot com>
# Maintainer: Rikarnto Bariampa <richard1996ba@gmail.com>
# Maintainer: Kyle Sferrazza <kyle.sferrazza@gmail.com>
# Contributor: Max Liebkies <mail@maxliebkies.de>
pkgname=powershell
_binaryname=pwsh
pkgver=7.3.3
_pkgnum=${pkgver:0:1}
pkgrel=2
pkgdesc='A cross-platform automation and configuration tool/framework (latest release)'
arch=('x86_64')
url='https://github.com/PowerShell/PowerShell'
license=('MIT')
makedepends=('cmake' 'dotnet-sdk>=7.0.0')
depends=('krb5' 'gcc-libs' 'glibc' 'lttng-ust' 'zlib' 'openssl>=1.0' 'icu')
_googletest_commit_hash=4e4df226fc197c0dda6e37f5c8c3845ca1e73a49
_powershell_native_version=7.3.2
source=("$pkgname-$pkgver::$url/archive/refs/tags/v$pkgver.tar.gz"
"powershell-native-$_powershell_native_version::https://github.com/PowerShell/PowerShell-Native/archive/refs/tags/v$_powershell_native_version.tar.gz"
'Microsoft.PowerShell.SDK.csproj.TypeCatalog.targets'
"googletest-$_googletest_commit_hash.tar.gz::https://github.com/google/googletest/archive/$_googletest_commit_hash.tar.gz"
'version-from-environment-variable.patch')
sha256sums=('ad5f4533414b91abe67c46194aec81985313d6b54cf7c0019169cf62c1cb7bbd'
'1fcf21213a47f9554297f5cf3fc9adc866e037bde9a8d71c1c5889a2f5d79918'
'8d10afb45883813f805bdf74ec445ae3f2fdbd4d30ab2ce7ce3a55df80693696'
'eebf7507efcfe7a4dff5d69dcbe52ee090e99548c1407714fe10821ba359bf32'
'50c7265492cd5cd87d81df29fa737d06dacd97586b0fafb3a0f3af8451b8c052')
install=powershell.install
options=(staticlibs !strip)
_powershell_native_archive="PowerShell-Native-$_powershell_native_version"
_powershell_archive="PowerShell-$pkgver"
_googletest_archive="googletest-$_googletest_commit_hash"
prepare() {
cd "$srcdir/$_powershell_archive"
rm global.json
patch --forward --strip=1 --input="${srcdir}/version-from-environment-variable.patch"
cp -r "$srcdir/$_googletest_archive/." "$srcdir/$_powershell_native_archive/src/libpsl-native/test/googletest/"
}
build() {
cd "$srcdir/$_powershell_archive"
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
export DOTNET_CLI_TELEMETRY_OPTOUT=true
# Mock git describe output that the build expects
export POWERSHELL_GIT_DESCRIBE_OUTPUT="v$pkgver-0-gxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
## Restore
dotnet restore src/powershell-unix
dotnet restore src/ResGen
dotnet restore src/TypeCatalogGen
## Setup the build target to gather dependency information
cp "$srcdir/Microsoft.PowerShell.SDK.csproj.TypeCatalog.targets" "src/Microsoft.PowerShell.SDK/obj/Microsoft.PowerShell.SDK.csproj.TypeCatalog.targets"
dotnet msbuild src/Microsoft.PowerShell.SDK/Microsoft.PowerShell.SDK.csproj /t:_GetDependencies "/property:DesignTimeBuild=true;_DependencyFile=$(pwd)/src/TypeCatalogGen/powershell.inc" /nologo
## create the telemetry flag file
touch "$(pwd)/DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY"
## Generate resource binding C# files
pushd src/ResGen
dotnet run
popd
## Generate 'CorePsTypeCatalog.cs'
pushd src/TypeCatalogGen
dotnet run ../System.Management.Automation/CoreCLR/CorePsTypeCatalog.cs powershell.inc
popd
## Build native component
pushd "$srcdir/$_powershell_native_archive/src/libpsl-native"
cmake -DCMAKE_BUILD_TYPE=Debug .
make -j
popd
## Build powershell core
dotnet publish --self-contained --configuration Linux "src/powershell-unix/" --output bin --runtime "linux-x64"
}
check() {
cd "$srcdir/$_powershell_native_archive/src/libpsl-native"
make test
cd "$srcdir/$_powershell_archive/test/xUnit"
dotnet test
}
package() {
mkdir -p "$pkgdir/opt/microsoft/$pkgname/$_pkgnum"
cp -ar "$srcdir/$_powershell_archive/src/powershell-unix/bin/Linux/net7.0/linux-x64/." "$pkgdir/opt/microsoft/$pkgname/$_pkgnum/"
install -Dm644 "$srcdir/$_powershell_archive/LICENSE.txt" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
mkdir -p "$pkgdir/usr/bin"
ln -s "/opt/microsoft/$pkgname/$_pkgnum/$_binaryname" "$pkgdir/usr/bin/$_binaryname"
}
|