diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 9c069b12f6f..c1fdd08c945 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -44,6 +44,14 @@ $(DefineConstants);ARM64 + + + $(DefineConstants);PPC64LE + + + + $(DefineConstants);S390X + diff --git a/src/Misc/externals.sh b/src/Misc/externals.sh index 8806a20fa8f..adf5622326a 100755 --- a/src/Misc/externals.sh +++ b/src/Misc/externals.sh @@ -187,3 +187,15 @@ fi if [[ "$PACKAGERUNTIME" == "linux-arm" ]]; then acquireExternalTool "$NODE_URL/v${NODE20_VERSION}/node-v${NODE20_VERSION}-linux-armv7l.tar.gz" node20 fix_nested_dir fi + +# PowerPC 64-bit LE: Download Node.js binaries for JavaScript action execution +if [[ "$PACKAGERUNTIME" == "linux-ppc64le" ]]; then + acquireExternalTool "$NODE_URL/v${NODE20_VERSION}/node-v${NODE20_VERSION}-linux-ppc64le.tar.gz" node20 fix_nested_dir + acquireExternalTool "$NODE_URL/v${NODE24_VERSION}/node-v${NODE24_VERSION}-linux-ppc64le.tar.gz" node24 fix_nested_dir +fi + +# IBM Z mainframe: Download Node.js binaries for JavaScript action execution +if [[ "$PACKAGERUNTIME" == "linux-s390x" ]]; then + acquireExternalTool "$NODE_URL/v${NODE20_VERSION}/node-v${NODE20_VERSION}-linux-s390x.tar.gz" node20 fix_nested_dir + acquireExternalTool "$NODE_URL/v${NODE24_VERSION}/node-v${NODE24_VERSION}-linux-s390x.tar.gz" node24 fix_nested_dir +fi diff --git a/src/Misc/layoutroot/config.sh b/src/Misc/layoutroot/config.sh index 14cc6bab0c3..a5ac863fe6c 100755 --- a/src/Misc/layoutroot/config.sh +++ b/src/Misc/layoutroot/config.sh @@ -9,7 +9,8 @@ if [ $user_id -eq 0 -a -z "$RUNNER_ALLOW_RUNASROOT" ]; then fi # Check dotnet Core 6.0 dependencies for Linux -if [[ (`uname` == "Linux") ]] +# Skip dependency checks for ppc64le/s390x (non-self-contained deployment uses system .NET runtime) +if [[ (`uname` == "Linux") && (`uname -m` != "ppc64le") && (`uname -m` != "s390x") ]] then command -v ldd > /dev/null if [ $? -ne 0 ] diff --git a/src/Runner.Common/Constants.cs b/src/Runner.Common/Constants.cs index 583958981a9..fe2eff91b67 100644 --- a/src/Runner.Common/Constants.cs +++ b/src/Runner.Common/Constants.cs @@ -59,7 +59,9 @@ public enum Architecture X86, X64, Arm, - Arm64 + Arm64, + Ppc64le, // PowerPC 64-bit Little Endian (IBM Power Systems) + S390x // IBM Z mainframe architecture } public static class Runner @@ -82,6 +84,12 @@ public static class Runner public static readonly Architecture PlatformArchitecture = Architecture.Arm; #elif ARM64 public static readonly Architecture PlatformArchitecture = Architecture.Arm64; +#elif PPC64LE + // PowerPC 64-bit LE: Detected when built with PPC64LE symbol (set by Directory.Build.props) + public static readonly Architecture PlatformArchitecture = Architecture.Ppc64le; +#elif S390X + // IBM Z mainframe: Detected when built with S390X symbol (set by Directory.Build.props) + public static readonly Architecture PlatformArchitecture = Architecture.S390x; #else public static readonly Architecture PlatformArchitecture = Architecture.X64; #endif diff --git a/src/Runner.Common/Runner.Common.csproj b/src/Runner.Common/Runner.Common.csproj index 6c4635626a2..a4c0b23a2a9 100644 --- a/src/Runner.Common/Runner.Common.csproj +++ b/src/Runner.Common/Runner.Common.csproj @@ -4,6 +4,9 @@ net8.0 Library win-x64;win-x86;linux-x64;linux-arm64;linux-arm;osx-x64;osx-arm64;win-arm64 + + false + false true NU1701;NU1603;SYSLIB0050;SYSLIB0051 $(Version) diff --git a/src/Runner.Common/Util/VarUtil.cs b/src/Runner.Common/Util/VarUtil.cs index 97273a1adb3..2895111049b 100644 --- a/src/Runner.Common/Util/VarUtil.cs +++ b/src/Runner.Common/Util/VarUtil.cs @@ -53,6 +53,10 @@ public static string OSArchitecture return "ARM"; case Constants.Architecture.Arm64: return "ARM64"; + case Constants.Architecture.Ppc64le: + return "PPC64LE"; // Used in RUNNER_ARCH environment variable + case Constants.Architecture.S390x: + return "S390X"; // Used in RUNNER_ARCH environment variable default: throw new NotSupportedException(); // Should never reach here. } diff --git a/src/Runner.Listener/Runner.Listener.csproj b/src/Runner.Listener/Runner.Listener.csproj index 68df8fbbc67..09a213120d3 100644 --- a/src/Runner.Listener/Runner.Listener.csproj +++ b/src/Runner.Listener/Runner.Listener.csproj @@ -5,6 +5,9 @@ Exe win-x64;win-x86;linux-x64;linux-arm64;linux-arm;osx-x64;osx-arm64;win-arm64 true + + false + false true NU1701;NU1603;SYSLIB0050;SYSLIB0051 $(Version) diff --git a/src/Runner.PluginHost/Runner.PluginHost.csproj b/src/Runner.PluginHost/Runner.PluginHost.csproj index 81a8d2e4304..658df2d6dfc 100644 --- a/src/Runner.PluginHost/Runner.PluginHost.csproj +++ b/src/Runner.PluginHost/Runner.PluginHost.csproj @@ -5,6 +5,9 @@ Exe win-x64;win-x86;linux-x64;linux-arm64;linux-arm;osx-x64;osx-arm64;win-arm64 true + + false + false true NU1701;NU1603;SYSLIB0050;SYSLIB0051 $(Version) diff --git a/src/Runner.Plugins/Runner.Plugins.csproj b/src/Runner.Plugins/Runner.Plugins.csproj index a786cf1cd1b..a5470d94344 100644 --- a/src/Runner.Plugins/Runner.Plugins.csproj +++ b/src/Runner.Plugins/Runner.Plugins.csproj @@ -5,6 +5,9 @@ Library win-x64;win-x86;linux-x64;linux-arm64;linux-arm;osx-x64;osx-arm64;win-arm64 true + + false + false true NU1701;NU1603;SYSLIB0050;SYSLIB0051 $(Version) diff --git a/src/Runner.Sdk/Runner.Sdk.csproj b/src/Runner.Sdk/Runner.Sdk.csproj index 55dbf12627c..d0427c0951b 100644 --- a/src/Runner.Sdk/Runner.Sdk.csproj +++ b/src/Runner.Sdk/Runner.Sdk.csproj @@ -5,6 +5,9 @@ Library win-x64;win-x86;linux-x64;linux-arm64;linux-arm;osx-x64;osx-arm64;win-arm64 true + + false + false true NU1701;NU1603;SYSLIB0050;SYSLIB0051 $(Version) diff --git a/src/Runner.Worker/Runner.Worker.csproj b/src/Runner.Worker/Runner.Worker.csproj index 4470920e10c..633d61c86d2 100644 --- a/src/Runner.Worker/Runner.Worker.csproj +++ b/src/Runner.Worker/Runner.Worker.csproj @@ -5,6 +5,9 @@ Exe win-x64;win-x86;linux-x64;linux-arm64;linux-arm;osx-x64;osx-arm64;win-arm64 true + + false + false true NU1701;NU1603;SYSLIB0050;SYSLIB0051 $(Version) diff --git a/src/Test/L0/ConstantGenerationL0.cs b/src/Test/L0/ConstantGenerationL0.cs index f3c1b8f9eaf..aaede893d19 100644 --- a/src/Test/L0/ConstantGenerationL0.cs +++ b/src/Test/L0/ConstantGenerationL0.cs @@ -20,6 +20,8 @@ public void BuildConstantGenerateSucceed() "linux-x64", "linux-arm", "linux-arm64", + "linux-ppc64le", // PowerPC 64-bit LE (IBM Power Systems) + "linux-s390x", // IBM Z mainframe "osx-x64", "osx-arm64" }; diff --git a/src/Test/L0/Listener/SelfUpdaterL0.cs b/src/Test/L0/Listener/SelfUpdaterL0.cs index 8003dd071f1..80cec5e2e12 100644 --- a/src/Test/L0/Listener/SelfUpdaterL0.cs +++ b/src/Test/L0/Listener/SelfUpdaterL0.cs @@ -1,4 +1,6 @@ -#if !(OS_WINDOWS && ARM64) +// Skip self-updater tests on Windows ARM64, ppc64le, and s390x +// These architectures don't have official runner packages available for self-update +#if !(OS_WINDOWS && ARM64) && !PPC64LE && !S390X using System; using System.Collections.Generic; using System.IO; diff --git a/src/Test/L0/Listener/SelfUpdaterV2L0.cs b/src/Test/L0/Listener/SelfUpdaterV2L0.cs index a91e112730e..2dd481195a1 100644 --- a/src/Test/L0/Listener/SelfUpdaterV2L0.cs +++ b/src/Test/L0/Listener/SelfUpdaterV2L0.cs @@ -1,4 +1,6 @@ -#if !(OS_WINDOWS && ARM64) +// Skip self-updater tests on Windows ARM64, ppc64le, and s390x +// These architectures don't have official runner packages available for self-update +#if !(OS_WINDOWS && ARM64) && !PPC64LE && !S390X using System; using System.Collections.Generic; using System.IO; diff --git a/src/dev.sh b/src/dev.sh index 716fa08e677..5bca226f154 100755 --- a/src/dev.sh +++ b/src/dev.sh @@ -54,6 +54,8 @@ elif [[ "$CURRENT_PLATFORM" == 'linux' ]]; then case $CPU_NAME in armv7l) RUNTIME_ID="linux-arm";; aarch64) RUNTIME_ID="linux-arm64";; + ppc64le) RUNTIME_ID="linux-ppc64le";; # PowerPC 64-bit LE (IBM Power) + s390x) RUNTIME_ID="linux-s390x";; # IBM Z mainframe esac fi elif [[ "$CURRENT_PLATFORM" == 'darwin' ]]; then @@ -72,7 +74,7 @@ fi # Make sure current platform support publish the dotnet runtime # Windows can publish win-x86/x64/arm64 -# Linux can publish linux-x64/arm/arm64 +# Linux can publish linux-x64/x86/arm/arm64/ppc64le/s390x # OSX can publish osx-x64/arm64 if [[ "$CURRENT_PLATFORM" == 'windows' ]]; then if [[ ("$RUNTIME_ID" != 'win-x86') && ("$RUNTIME_ID" != 'win-x64') && ("$RUNTIME_ID" != 'win-arm64') ]]; then @@ -80,7 +82,7 @@ if [[ "$CURRENT_PLATFORM" == 'windows' ]]; then exit 1 fi elif [[ "$CURRENT_PLATFORM" == 'linux' ]]; then - if [[ ("$RUNTIME_ID" != 'linux-x64') && ("$RUNTIME_ID" != 'linux-x86') && ("$RUNTIME_ID" != 'linux-arm64') && ("$RUNTIME_ID" != 'linux-arm') ]]; then + if [[ ("$RUNTIME_ID" != 'linux-x64') && ("$RUNTIME_ID" != 'linux-x86') && ("$RUNTIME_ID" != 'linux-arm64') && ("$RUNTIME_ID" != 'linux-arm') && ("$RUNTIME_ID" != 'linux-ppc64le') && ("$RUNTIME_ID" != 'linux-s390x') ]]; then echo "Failed: Can't build $RUNTIME_ID package $CURRENT_PLATFORM" >&2 exit 1 fi @@ -200,7 +202,8 @@ function package () } # Install .NET SDK -if [[ (! -d "${DOTNETSDK_INSTALLDIR}") || (! -e "${DOTNETSDK_INSTALLDIR}/.${DOTNETSDK_VERSION}") || (! -e "${DOTNETSDK_INSTALLDIR}/dotnet") ]]; then +# Skip SDK installation for ppc64le/s390x (use system-installed .NET runtime) +if [[ ("$RUNTIME_ID" != "linux-ppc64le") && ("$RUNTIME_ID" != "linux-s390x") && ((! -d "${DOTNETSDK_INSTALLDIR}") || (! -e "${DOTNETSDK_INSTALLDIR}/.${DOTNETSDK_VERSION}") || (! -e "${DOTNETSDK_INSTALLDIR}/dotnet")) ]]; then # Download dotnet SDK to ../_dotnetsdk directory heading "Ensure Dotnet SDK" diff --git a/src/dir.proj b/src/dir.proj index 056a312e8f8..8c06d3a3091 100644 --- a/src/dir.proj +++ b/src/dir.proj @@ -42,7 +42,9 @@ - + + +