richardbar

PowerShell PKGBUILD

Jan 16th, 2021
454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.87 KB | None | 0 0
  1. pkgname=powershell
  2. _binaryname=pwsh
  3. _pkgver=7.1.1
  4. _pkgnum=${_pkgver:0:1}
  5. pkgver=${_pkgver/-/.}
  6. pkgrel=1
  7. pkgdesc='A cross-platform automation and configuration tool/framework (latest release)'
  8. arch=('x86_64')
  9. url='https://github.com/PowerShell/PowerShell'
  10. license=('MIT')
  11. makedepends=('git' 'cmake' 'dotnet-sdk>=5.0.1')
  12. depends=('krb5' 'gcc-libs' 'glibc' 'lttng-ust' 'zlib' 'openssl-1.0' 'icu')
  13. source=($pkgname::"git+https://github.com/PowerShell/PowerShell.git#tag=v$_pkgver"
  14. 'powershell-native::git+https://github.com/PowerShell/PowerShell-Native.git'
  15. 'Microsoft.PowerShell.SDK.csproj.TypeCatalog.targets')
  16. sha256sums=('SKIP'
  17. 'SKIP'
  18. '8d10afb45883813f805bdf74ec445ae3f2fdbd4d30ab2ce7ce3a55df80693696')
  19. install=powershell.install
  20. options=(staticlibs !strip)
  21.  
  22. prepare() {
  23. cd "$srcdir/powershell-native"
  24. git submodule init
  25. git submodule update
  26. rm "$srcdir/powershell/global.json"
  27. }
  28.  
  29. build() {
  30. cd $pkgname
  31. export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
  32. export DOTNET_CLI_TELEMETRY_OPTOUT=true
  33.  
  34. ## Restore
  35. dotnet restore src/powershell-unix
  36. dotnet restore src/ResGen
  37. dotnet restore src/TypeCatalogGen
  38.  
  39. ## Setup the build target to gather dependency information
  40. cp "$srcdir/Microsoft.PowerShell.SDK.csproj.TypeCatalog.targets" "src/Microsoft.PowerShell.SDK/obj/Microsoft.PowerShell.SDK.csproj.TypeCatalog.targets"
  41. dotnet msbuild src/Microsoft.PowerShell.SDK/Microsoft.PowerShell.SDK.csproj /t:_GetDependencies "/property:DesignTimeBuild=true;_DependencyFile=$(pwd)/src/TypeCatalogGen/powershell.inc" /nologo
  42.  
  43. ## Generate 'powershell.version'
  44. git --git-dir="$(pwd)/.git" describe --dirty --abbrev=60 > "$(pwd)/powershell.version"
  45.  
  46. ## create the telemetry flag file
  47. touch "$(pwd)/DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY"
  48.  
  49. ## Generate resource binding C# files
  50. pushd src/ResGen
  51. dotnet run
  52. popd
  53.  
  54. ## Generate 'CorePsTypeCatalog.cs'
  55. pushd src/TypeCatalogGen
  56. dotnet run ../System.Management.Automation/CoreCLR/CorePsTypeCatalog.cs powershell.inc
  57. popd
  58.  
  59. ## Build native component
  60. pushd $srcdir/powershell-native/src/libpsl-native
  61. cmake -DCMAKE_BUILD_TYPE=Debug .
  62. make -j
  63. popd
  64.  
  65. ## Build powershell core
  66. dotnet publish --configuration Linux "src/powershell-unix/" --output bin --runtime "linux-x64"
  67. }
  68.  
  69. check() {
  70. cd "$srcdir/powershell-native/src/libpsl-native"
  71. make test
  72.  
  73. cd "$srcdir/powershell/test/xUnit"
  74. dotnet test
  75. }
  76.  
  77. package() {
  78. mkdir -pv "$pkgdir/opt/microsoft/$pkgname/$_pkgnum"
  79. cd "$srcdir/$pkgname/src/powershell-unix/bin/Linux/net5.0/linux-x64/"
  80.  
  81. cp -ar ./ "$pkgdir/opt/microsoft/$pkgname/$_pkgnum/"
  82.  
  83. mkdir -p "$pkgdir/usr/share/licenses/$pkgname"
  84. cp LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
  85. mkdir -p "$pkgdir/usr/bin"
  86. ln -s "/opt/microsoft/$pkgname/$_pkgnum/$_binaryname" "$pkgdir/usr/bin/$_binaryname"
  87. }
  88.  
Advertisement
Add Comment
Please, Sign In to add comment