You've already forked macports-ports
mirror of
https://github.com/macports/macports-ports.git
synced 2026-07-12 18:20:25 -07:00
163 lines
6.2 KiB
Plaintext
163 lines
6.2 KiB
Plaintext
# -*- coding: utf-8; mode: tcl; tab-width: 4; truncate-lines: t; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
|
|
PortSystem 1.0
|
|
PortGroup github 1.0
|
|
|
|
github.setup PowerShell PowerShell 7.6.3 v
|
|
github.tarball_from archive
|
|
name [string tolower ${github.project}]
|
|
revision 0
|
|
|
|
categories shells dotnet
|
|
supported_archs arm64 x86_64
|
|
license MIT
|
|
maintainers {i0ntempest @i0ntempest} openmaintainer
|
|
|
|
description Cross-platform automation and configuration tool/framework
|
|
long_description ${github.project} is a cross-platform task automation solution \
|
|
made up of a command-line shell, a scripting language, \
|
|
and a configuration management framework.
|
|
|
|
homepage https://microsoft.com/PowerShell
|
|
|
|
checksums rmd160 4953035ba63b6a45f2aaec503b965861ae3dd0a1 \
|
|
sha256 eb19d7952d8a10d4376f7e78e99b55e95fb3266992e64547ee50e18c92c0b209 \
|
|
size 10991486
|
|
|
|
universal_variant no
|
|
|
|
set dotnet_sdk_ver_maj \
|
|
10
|
|
depends_build port:dotnet-sdk-${dotnet_sdk_ver_maj} \
|
|
path:bin/dotnet:dotnet-cli
|
|
depends_lib port:dotnet-runtime-${dotnet_sdk_ver_maj}
|
|
|
|
set dotnet_root_env DOTNET_ROOT=${prefix}/share/dotnet
|
|
set shared_env "
|
|
${dotnet_root_env} \
|
|
DOTNET_CLI_TELEMETRY_OPTOUT=1 \
|
|
DOTNET_CLI_HOME=${workpath} \
|
|
NUGET_PACKAGES=${workpath}/.nuget/packages \
|
|
DOTNET_CLI_USE_MSBUILD_SERVER=0 \
|
|
DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
|
"
|
|
|
|
configure.env-append \
|
|
{*}$shared_env
|
|
build.env-append {*}$shared_env
|
|
destroot.env-append {*}$shared_env
|
|
|
|
if {${build_arch} eq "x86_64"} {
|
|
# file name is "x64" for x86_64
|
|
set arch_filename \
|
|
x64
|
|
} else {
|
|
# arm64
|
|
set arch_filename \
|
|
${build_arch}
|
|
}
|
|
set target_framework \
|
|
"net${dotnet_sdk_ver_maj}.0"
|
|
set inc_file "powershell.inc"
|
|
set publish_path ${worksrcpath}/src/powershell-unix/bin/Release/${target_framework}/osx-${arch_filename}/publish
|
|
set dotnet_cmd ${prefix}/bin/dotnet
|
|
|
|
post-extract {
|
|
# _GetDependencies target, see https://github.com/PowerShell/PowerShell/blob/v7.5.4/build.psm1#L2572-L2589
|
|
set target_file "${worksrcpath}/src/Microsoft.PowerShell.SDK/obj/Microsoft.PowerShell.SDK.csproj.TypeCatalog.targets"
|
|
file mkdir [file dirname ${target_file}]
|
|
copy ${filespath}/_GetDependencies.xml ${target_file}
|
|
|
|
# install PsGallery modules (PackageManagement, PowerShellGet), see https://github.com/PowerShell/PowerShell/blob/v7.5.4/build.psm1#L2830
|
|
copy ${filespath}/copy-psgallery-modules.ps1 ${worksrcpath}
|
|
}
|
|
|
|
post-patch {
|
|
reinplace "s|git describe --abbrev=60 --long|echo ${github.tag_prefix}${version}|" ${worksrcpath}/PowerShell.Common.props
|
|
|
|
set dotnet_sdks [split [exec env ${dotnet_root_env} ${dotnet_cmd} --list-sdks] "\n"]
|
|
foreach line $dotnet_sdks {
|
|
if {[regexp "^${dotnet_sdk_ver_maj}\\\.\[0-9\]+\\\.\[0-9\]+" $line match]} {
|
|
set dotnet_sdk_ver $match
|
|
}
|
|
}
|
|
ui_debug "dotnet SDK version ${dotnet_sdk_ver}"
|
|
reinplace "s|\"version\": \"\.\*\"|\"version\": \"${dotnet_sdk_ver}\"|" ${worksrcpath}/global.json
|
|
|
|
reinplace "s|%%WORKSRCPATH%%|${worksrcpath}|g" ${worksrcpath}/copy-psgallery-modules.ps1
|
|
reinplace "s|%%PUBLISHPATH%%|${publish_path}|g" ${worksrcpath}/copy-psgallery-modules.ps1
|
|
}
|
|
|
|
configure {
|
|
ui_debug "configure - restore project"
|
|
system -W ${worksrcpath} \
|
|
"${configure.env} ${dotnet_cmd} restore PowerShell.sln \
|
|
--disable-build-servers \
|
|
--use-current-runtime \
|
|
--nologo \
|
|
--source https://api.nuget.org/v3/index.json"
|
|
}
|
|
|
|
pre-build {
|
|
ui_debug "pre-build step 1 - ResGen"
|
|
system -W ${worksrcpath}/src/ResGen \
|
|
"${build.env} ${dotnet_cmd} run \
|
|
--framework ${target_framework} \
|
|
-c Release \
|
|
-property:UseSharedCompilation=false"
|
|
ui_debug "pre-build step 2 - _GetDependencies target"
|
|
system -W ${worksrcpath} \
|
|
"${build.env} ${dotnet_cmd} msbuild \
|
|
src/Microsoft.PowerShell.SDK/Microsoft.PowerShell.SDK.csproj \
|
|
-t:_GetDependencies \
|
|
-property:DesignTimeBuild=true \
|
|
-property:_DependencyFile=${worksrcpath}/src/TypeCatalogGen/${inc_file} \
|
|
-nologo \
|
|
-nodeReuse:false \
|
|
-property:UseSharedCompilation=false"
|
|
ui_debug "pre-build step 3 - TypeCatalogGen"
|
|
system -W ${worksrcpath}/src/TypeCatalogGen \
|
|
"${build.env} ${dotnet_cmd} run \
|
|
--framework ${target_framework} \
|
|
-c Release \
|
|
../System.Management.Automation/CoreCLR/CorePsTypeCatalog.cs \
|
|
${inc_file} \
|
|
-property:UseSharedCompilation=false"
|
|
ui_debug "pre-build steps done"
|
|
}
|
|
|
|
build.cmd ${dotnet_cmd} publish
|
|
build.target src/powershell-unix/powershell-unix.csproj
|
|
build.args --disable-build-servers \
|
|
--nologo \
|
|
--framework ${target_framework} \
|
|
-c Release \
|
|
--no-self-contained \
|
|
--use-current-runtime \
|
|
-property:PublishReadyToRun=false \
|
|
-property:GenerateFullPaths=true \
|
|
-property:ErrorOnDuplicatePublishOutputFiles=false \
|
|
-property:IsWindows=false \
|
|
-property:ReleaseTag=${version} \
|
|
-nodeReuse:false \
|
|
-property:UseSharedCompilation=false
|
|
|
|
destroot {
|
|
# install PsGallery modules (PackageManagement, PowerShellGet)
|
|
system -W ${worksrcpath} \
|
|
"${destroot.env} ${publish_path}/pwsh -NoLogo -NoProfile -File ${worksrcpath}/copy-psgallery-modules.ps1"
|
|
|
|
copy ${publish_path} ${destroot}${prefix}/libexec/${name}
|
|
|
|
# install wrapper script setting DOTNET_ROOT
|
|
set wrapper ${destroot}${prefix}/bin/pwsh
|
|
set fh [open ${wrapper} w]
|
|
puts ${fh} "#!/bin/sh"
|
|
puts ${fh} "export ${dotnet_root_env}"
|
|
puts ${fh} "exec ${prefix}/libexec/${name}/pwsh \"\$@\""
|
|
close ${fh}
|
|
file attributes ${wrapper} -permissions 0755
|
|
|
|
xinstall -m 0644 ${worksrcpath}/assets/manpage/pwsh.1 ${destroot}${prefix}/share/man/man1/
|
|
}
|