Enable Alpine Arm64 SOS builds (#1010)
authorSteve MacLean <Steve.MacLean@microsoft.com>
Fri, 10 Apr 2020 22:37:31 +0000 (18:37 -0400)
committerMike McLaughlin <mikem@microsoft.com>
Thu, 23 Apr 2020 00:57:35 +0000 (17:57 -0700)
* Enable Alpine Arm64 SOS builds

* Revise clang version selection

Use clang-9 for linux-musl-arm64
Generalize -clang* options

Co-authored-by: Juan Hoyos <juan.hoyos@microsoft.com>
diagnostics.yml
eng/build.sh
src/SOS/SOS.Package/SOS.Symbol.Package.csproj
src/sos-packaging.props

index 34c0cd89e6d831df45393c1e6eb4e3c055e4797b..361c5d99174ec740d404e68f6a92f806228bb5f1 100644 (file)
@@ -144,6 +144,20 @@ stages:
                 _BuildArch: arm64
                 _PublishArtifacts: bin/Linux.arm64.Release
 
+      - template: /eng/build.yml
+        parameters:
+          name: Alpine3_6_cross64
+          osGroup: Linux
+          dockerImage: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-cross-arm64-alpine-406629a-20200127195039
+          crossrootfsDir: '/crossrootfs/arm64'
+          strategy:
+            matrix:
+              Build_Release:
+                _BuildOnly: true
+                _BuildConfig: Release
+                _BuildArch: arm64
+                _PublishArtifacts: bin/Linux.arm64.Release
+
 
       ############################
       #                          #
@@ -269,6 +283,7 @@ stages:
             - MacOS
             - Linux_cross
             - Linux_cross64
+            - Alpine3_6_cross64
             condition: succeeded()
             pool:
               name: NetCoreInternal-Pool
@@ -353,6 +368,15 @@ stages:
                 targetPath: '$(Build.SourcesDirectory)/artifacts/bin/Linux.arm64.Release'
               condition: succeeded()
 
+            # Linux MUSL arm64 download
+
+            - task: DownloadPipelineArtifact@2
+              displayName: Download Linux Musl arm64 Artifacts
+              inputs:
+                artifactName: Alpine3_6_cross64_arm64_Release
+                targetPath: '$(Build.SourcesDirectory)/artifacts/bin/Linux-musl.arm64.Release'
+              condition: succeeded()
+
             # MacOS download
 
             - task: DownloadPipelineArtifact@2
index da7042e18003a3c08c2d8267dae2e922f487f47d..9dcb0f8df2cc4534f6497c720dc9c3ca984aae04 100755 (executable)
@@ -242,39 +242,16 @@ while :; do
             __ExtraCmakeArgs="$__ExtraCmakeArgs -DSTRIP_SYMBOLS=true"
             ;;
 
-        -clang3.5)
-            __ClangMajorVersion=3
-            __ClangMinorVersion=5
-            ;;
-
-        -clang3.6)
-            __ClangMajorVersion=3
-            __ClangMinorVersion=6
-            ;;
-
-        -clang3.7)
-            __ClangMajorVersion=3
-            __ClangMinorVersion=7
-            ;;
-
-        -clang3.8)
-            __ClangMajorVersion=3
-            __ClangMinorVersion=8
-            ;;
-
-        -clang3.9)
-            __ClangMajorVersion=3
-            __ClangMinorVersion=9
-            ;;
-
-        -clang4.0)
-            __ClangMajorVersion=4
-            __ClangMinorVersion=0
-            ;;
-
-        -clang5.0)
-            __ClangMajorVersion=5
-            __ClangMinorVersion=0
+        -clang*)
+            __Compiler=clang
+            # clangx.y or clang-x.y
+            version="$(echo "$lowerI" | tr -d '[:alpha:]-=')"
+            parts=(${version//./ })
+            __ClangMajorVersion="${parts[0]}"
+            __ClangMinorVersion="${parts[1]}"
+            if [[ -z "$__ClangMinorVersion" && "$__ClangMajorVersion" -le 6 ]]; then
+                __ClangMinorVersion=0;
+            fi
             ;;
 
         -clean|-binarylog|-bl|-pipelineslog|-pl|-restore|-r|-rebuild|-pack|-integrationtest|-performancetest|-sign|-publish|-preparemachine)
@@ -322,16 +299,6 @@ __DotNetCli=$__ProjectRoot/.dotnet/dotnet
 # This is where all built native libraries will copied to.
 export __CMakeBinDir="$__BinDir"
 
-# Set default clang version
-if [[ $__ClangMajorVersion == 0 && $__ClangMinorVersion == 0 ]]; then
-   if [[ "$__BuildArch" == "arm" || "$__BuildArch" == "armel" ]]; then
-       __ClangMajorVersion=5
-       __ClangMinorVersion=0
-   else
-       __ClangMajorVersion=3
-       __ClangMinorVersion=9
-   fi
-fi
 
 if [[ "$__BuildArch" == "armel" ]]; then
     # Armel cross build is Tizen specific and does not support Portable RID build
@@ -425,6 +392,20 @@ initTargetDistroRid
 
 echo "RID: $__DistroRid"
 
+# Set default clang version
+if [[ $__ClangMajorVersion == 0 && $__ClangMinorVersion == 0 ]]; then
+   if [[ "$__BuildArch" == "arm" || "$__BuildArch" == "armel" ]]; then
+       __ClangMajorVersion=5
+       __ClangMinorVersion=0
+   elif [[ "$__BuildArch" == "arm64" && "$__DistroRid" == "linux-musl-arm64" ]]; then
+       __ClangMajorVersion=9
+       __ClangMinorVersion=
+   else
+       __ClangMajorVersion=3
+       __ClangMinorVersion=9
+   fi
+fi
+
 #
 # Setup LLDB paths for native build
 #
index cf0e5a0c8b3d09e108e3131be79a8fad519cd241..4a7408ffb1dbdb3fb0a875f3d45dfc2bbcd2d46a 100644 (file)
       <PackagePath>$(SOSPackagePathPrefix)/linux-arm64</PackagePath>
     </None>
 
+    <None Include="$(ArtifactsBinDir)\Linux-musl.arm64.$(Configuration)\libsosplugin.so.dbg" Pack="true" Visible="false">
+      <PackagePath>$(SOSPackagePathPrefix)/linux-musl-arm64</PackagePath>
+    </None>
+    <None Include="$(ArtifactsBinDir)\Linux-musl.arm64.$(Configuration)\libsos.so.dbg" Pack="true" Visible="false">
+      <PackagePath>$(SOSPackagePathPrefix)/linux-musl-arm64</PackagePath>
+    </None>
+
     <None Include="$(ArtifactsBinDir)\OSX.x64.$(Configuration)\libsosplugin.dylib.dwarf" Pack="true" Visible="false">
       <PackagePath>$(SOSPackagePathPrefix)/osx-x64</PackagePath>
     </None>
index de482365cb6344e44a16ba159fdde2c325acc488..8e05f87d31893c668db52ca26812e1e4097aef83 100644 (file)
       <PackagePath>$(SOSPackagePathPrefix)/linux-arm64</PackagePath>
     </None>
 
+    <None Include="$(SOSNETCoreBinaries)" Pack="true" Visible="false">
+      <PackagePath>$(SOSPackagePathPrefix)/linux-musl-arm64</PackagePath>
+    </None>
+    <None Include="$(ArtifactsBinDir)\Linux-musl.arm64.$(Configuration)\libsosplugin.so" Pack="true" Visible="false">
+      <PackagePath>$(SOSPackagePathPrefix)/linux-musl-arm64</PackagePath>
+    </None>
+    <None Include="$(ArtifactsBinDir)\Linux-musl.arm64.$(Configuration)\libsos.so" Pack="true" Visible="false">
+      <PackagePath>$(SOSPackagePathPrefix)/linux-musl-arm64</PackagePath>
+    </None>
+    <None Include="$(ArtifactsBinDir)\Linux-musl.arm64.$(Configuration)\sosdocsunix.txt" Pack="true" Visible="false">
+      <PackagePath>$(SOSPackagePathPrefix)/linux-musl-arm64</PackagePath>
+    </None>
+
     <None Include="$(SOSNETCoreBinaries)" Pack="true" Visible="false">
       <PackagePath>$(SOSPackagePathPrefix)/osx-x64</PackagePath>
     </None>