From e4bfbba75f40c3203267a235be5266d22adea6a3 Mon Sep 17 00:00:00 2001 From: Egor Chesakov Date: Mon, 12 Nov 2018 17:21:06 -0800 Subject: Simplify build.sh command line arguments for Linux/arm cross build (Part 1) (#20836) * Don't use crosscomponent|-crosscomponent command line args in build.sh * Don't use CROSSCOMPONENT environment variable in build.sh src/pal/tools/gen-buildsys-clang.sh * Remove mentioning -crosscomponent from usage() in build-test.sh * Don't use -crosscomponent in buildpipeline * Don't use -crosscomponent in Groovy files * Remove mentioning crosscomponent in Documentation/building/linux-instructions.md * Stop building Hostx86/armel crossgen in build.sh * Disable CrossGen-ing of System.Private.CoreLib on Linux/armel --- Documentation/building/linux-instructions.md | 2 +- build-test.sh | 2 -- build.sh | 23 ++++++++++------------ .../DotNet-CoreClr-Trusted-Linux-Crossbuild.json | 6 +----- buildpipeline/pipelines.json | 2 -- netci.groovy | 2 +- perf.groovy | 2 +- src/pal/tools/gen-buildsys-clang.sh | 3 --- 8 files changed, 14 insertions(+), 28 deletions(-) diff --git a/Documentation/building/linux-instructions.md b/Documentation/building/linux-instructions.md index 7696d37687..5f68791705 100644 --- a/Documentation/building/linux-instructions.md +++ b/Documentation/building/linux-instructions.md @@ -122,7 +122,7 @@ The CI system and official builds use Docker to build ARM for Linux (for example ``` ROOT=/Users/me/git/coreclr DOCKER_ARGS="run -i --rm -v ${ROOT}:/mnt/coreclr -w /mnt/coreclr -e ROOTFS_DIR=/crossrootfs/arm -e CAC_ROOTFS_DIR=/crossrootfs/x86 microsoft/dotnet-buildtools-prereqs:ubuntu-14.04-cross-e435274-20180426002420" -docker ${DOCKER_ARGS} /mnt/coreclr/build.sh arm checked cross crosscomponent +docker ${DOCKER_ARGS} /mnt/coreclr/build.sh arm checked cross docker ${DOCKER_ARGS} /mnt/coreclr/build-test.sh arm checked cross generatelayoutonly ``` diff --git a/build-test.sh b/build-test.sh index 4ad12458ff..8a09aefc6e 100755 --- a/build-test.sh +++ b/build-test.sh @@ -528,8 +528,6 @@ usage() echo "clangx.y - optional argument to build using clang version x.y - supported version 3.5 - 6.0" echo "cross - optional argument to signify cross compilation," echo " - will use ROOTFS_DIR environment variable if set." - echo "crosscomponent - optional argument to build cross-architecture component," - echo " - will use CAC_ROOTFS_DIR environment variable if set." echo "portableLinux - build for Portable Linux Distribution" echo "portablebuild - Use portable build." echo "verbose - optional argument to enable verbose build output." diff --git a/build.sh b/build.sh index 459e52719d..e9b5d062b0 100755 --- a/build.sh +++ b/build.sh @@ -34,8 +34,6 @@ usage() echo "-clangx.y - optional argument to build using clang version x.y." echo "-cross - optional argument to signify cross compilation," echo " - will use ROOTFS_DIR environment variable if set." - echo "-crosscomponent - optional argument to build cross-architecture component," - echo " - will use CAC_ROOTFS_DIR environment variable if set." echo "-nopgooptimize - do not use profile guided optimizations." echo "-pgoinstrument - generate instrumented code for profile guided optimization enabled binaries." echo "-ibcinstrument - generate IBC-tuning-enabled native images when invoking crossgen." @@ -383,14 +381,13 @@ build_cross_architecture_components() fi fi - __ExtraCmakeArgs="-DCLR_CMAKE_TARGET_ARCH=$__BuildArch -DCLR_CMAKE_TARGET_OS=$__BuildOS -DCLR_CMAKE_PACKAGES_DIR=$__PackagesDir -DCLR_CMAKE_PGO_INSTRUMENT=$__PgoInstrument -DCLR_CMAKE_OPTDATA_VERSION=$__PgoOptDataVersion -DCLR_CMAKE_PGO_OPTIMIZE=$__PgoOptimize" + __ExtraCmakeArgs="-DCLR_CMAKE_TARGET_ARCH=$__BuildArch -DCLR_CMAKE_TARGET_OS=$__BuildOS -DCLR_CMAKE_PACKAGES_DIR=$__PackagesDir -DCLR_CMAKE_PGO_INSTRUMENT=$__PgoInstrument -DCLR_CMAKE_OPTDATA_VERSION=$__PgoOptDataVersion -DCLR_CMAKE_PGO_OPTIMIZE=$__PgoOptimize -DCLR_CROSS_COMPONENTS_BUILD=1" build_native $__SkipCrossArchBuild "$crossArch" "$intermediatesForBuild" "$__ExtraCmakeArgs" "cross-architecture components" - # restore ROOTFS_DIR, CROSSCOMPONENT, and CROSSCOMPILE + # restore ROOTFS_DIR and CROSSCOMPILE if [ -n "$TARGET_ROOTFS" ]; then export ROOTFS_DIR="$TARGET_ROOTFS" fi - export CROSSCOMPONENT= export CROSSCOMPILE=1 } @@ -511,10 +508,10 @@ build_CoreLib() else exit 1 fi - elif [ $__DoCrossArchBuild == 1 ]; then - if [[ ( "$__CrossArch" == "x86" ) && ( "$__BuildArch" == "arm" || "$__BuildArch" == "armel" ) ]]; then + else + if [[ ( "$__CrossArch" == "x86" ) && ( "$__BuildArch" == "arm" ) ]]; then build_CoreLib_ni "$__CrossComponentBinDir/crossgen" - elif [[ ( "$__CrossArch" == "x64" ) && ( "$__BuildArch" == "arm" || "$__BuildArch" == "armel" ) ]]; then + elif [[ ( "$__CrossArch" == "x64" ) && ( "$__BuildArch" == "arm" ) ]]; then build_CoreLib_ni "$__CrossComponentBinDir/crossgen" elif [[ ( "$__HostArch" == "x64" ) && ( "$__BuildArch" == "arm64" ) ]]; then build_CoreLib_ni "$__CrossComponentBinDir/crossgen" @@ -540,7 +537,7 @@ generate_NugetPackages() echo "DistroRid is "$__DistroRid echo "ROOTFS_DIR is "$ROOTFS_DIR # Build the packages - $__ProjectRoot/run.sh build -Project=$__SourceDir/.nuget/packages.builds -MsBuildEventLogging="/l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log" -MsBuildLog="/flp:Verbosity=normal;LogFile=$__LogsDir/Nuget_$__BuildOS__$__BuildArch__$__BuildType.log" -BuildTarget -__IntermediatesDir=$__IntermediatesDir -__RootBinDir=$__RootBinDir -BuildNugetPackage=false -UseSharedCompilation=false -__DoCrossArchBuild=$__DoCrossArchBuild $__RunArgs $__UnprocessedBuildArgs + $__ProjectRoot/run.sh build -Project=$__SourceDir/.nuget/packages.builds -MsBuildEventLogging="/l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log" -MsBuildLog="/flp:Verbosity=normal;LogFile=$__LogsDir/Nuget_$__BuildOS__$__BuildArch__$__BuildType.log" -BuildTarget -__IntermediatesDir=$__IntermediatesDir -__RootBinDir=$__RootBinDir -BuildNugetPackage=false -UseSharedCompilation=false -__DoCrossArchBuild=$__CrossBuild $__RunArgs $__UnprocessedBuildArgs if [ $? -ne 0 ]; then echo "Failed to generate Nuget packages." @@ -678,7 +675,6 @@ __HostDistroRid="" __DistroRid="" __cmakeargs="" __SkipGenerateVersion=0 -__DoCrossArchBuild=0 __PortableBuild=1 __msbuildonunsupportedplatform=0 __PgoOptDataVersion="" @@ -845,7 +841,8 @@ while :; do ;; crosscomponent|-crosscomponent) - __DoCrossArchBuild=1 + # Accept "crosscomponent" for backward-compatibility but ignore it. + echo "WARNING: 'crosscomponent' is obsolete and should not be used" ;; skipmanaged|-skipmanaged) @@ -1051,11 +1048,11 @@ fi build_native $__SkipCoreCLR "$__BuildArch" "$__IntermediatesDir" "$__ExtraCmakeArgs" "CoreCLR component" # Build cross-architecture components -if [[ $__CrossBuild == 1 && $__DoCrossArchBuild == 1 ]]; then +if [[ $__CrossBuild == 1 ]]; then build_cross_architecture_components "$__CrossArch" # For now, continue building Hostx86/arm crossgen - if [[ "$__HostArch" == "x64" && ("$__BuildArch" == "arm" || "$__BuildArch" == "armel") ]]; then + if [[ "$__HostArch" == "x64" && "$__BuildArch" == "arm" ]]; then build_cross_architecture_components "x86" fi fi diff --git a/buildpipeline/DotNet-CoreClr-Trusted-Linux-Crossbuild.json b/buildpipeline/DotNet-CoreClr-Trusted-Linux-Crossbuild.json index ef671ffe68..4538fb51b4 100644 --- a/buildpipeline/DotNet-CoreClr-Trusted-Linux-Crossbuild.json +++ b/buildpipeline/DotNet-CoreClr-Trusted-Linux-Crossbuild.json @@ -179,7 +179,7 @@ }, "inputs": { "filename": "docker", - "arguments": "run --rm -e ROOTFS_DIR=$(ROOTFS_DIR) -e CAC_ROOTFS_DIR=$(CAC_ROOTFS_DIR) $(DockerCommonRunArgs) ./build.sh $(PB_BuildType) $(Architecture) skipnuget cross $(CrossArchBuildArgs) -skiprestore stripSymbols -OfficialBuildId=$(OfficialBuildId) -- /flp:\"v=diag\"", + "arguments": "run --rm -e ROOTFS_DIR=$(ROOTFS_DIR) -e CAC_ROOTFS_DIR=$(CAC_ROOTFS_DIR) $(DockerCommonRunArgs) ./build.sh $(PB_BuildType) $(Architecture) skipnuget cross -skiprestore stripSymbols -OfficialBuildId=$(OfficialBuildId) -- /flp:\"v=diag\"", "workingFolder": "", "failOnStandardError": "false" } @@ -506,10 +506,6 @@ "Architecture": { "value": "arm" }, - "CrossArchBuildArgs": { - "value": "", - "allowOverride": true - }, "CrossArchBuildPackagesArgs": { "value": "", "allowOverride": true diff --git a/buildpipeline/pipelines.json b/buildpipeline/pipelines.json index 0cc485a403..6f6e076b43 100644 --- a/buildpipeline/pipelines.json +++ b/buildpipeline/pipelines.json @@ -149,7 +149,6 @@ "Architecture": "arm", "Rid": "linux", "CrossArchitecture": "x86", - "CrossArchBuildArgs": "crosscomponent", "CrossArchBuildPackagesArgs": "-__DoCrossArchBuild=1", "CAC_ROOTFS_DIR": "/crossrootfs/$(CrossArchitecture)" }, @@ -167,7 +166,6 @@ "DockerTag": "ubuntu-16.04-cross-arm64-a3ae44b-20180315221921", "Architecture": "arm64", "Rid": "linux", - "CrossArchBuildArgs": "crosscomponent", "CrossArchBuildPackagesArgs": "-__DoCrossArchBuild=1" }, "ReportingParameters": { diff --git a/netci.groovy b/netci.groovy index c94cd67595..cf230b60f0 100755 --- a/netci.groovy +++ b/netci.groovy @@ -2530,7 +2530,7 @@ def static calculateBuildCommands(def newJob, def scenario, def branch, def isPR def dockerImage = getDockerImageName(architecture, os, true) def dockerCmd = "docker run -i --rm -v \${WORKSPACE}:\${WORKSPACE} -w \${WORKSPACE} -e ROOTFS_DIR=/crossrootfs/${architecture} ${additionalOpts} ${dockerImage} " - buildCommands += "${dockerCmd}\${WORKSPACE}/build.sh ${lowerConfiguration} ${architecture} cross crosscomponent" + buildCommands += "${dockerCmd}\${WORKSPACE}/build.sh ${lowerConfiguration} ${architecture} cross" if (doCoreFxTesting) { def scriptFileName = "\$WORKSPACE/set_stress_test_env.sh" diff --git a/perf.groovy b/perf.groovy index 8509d461f0..d01c9d91ef 100644 --- a/perf.groovy +++ b/perf.groovy @@ -466,7 +466,7 @@ def static getFullThroughputJobName(def project, def os, def arch, def isPR) { def dockerImage = getDockerImageName(architecture, 'Ubuntu', true) def dockerCmd = "docker run -i --rm -v \${WORKSPACE}:\${WORKSPACE} -w \${WORKSPACE} -e ROOTFS_DIR=/crossrootfs/${architecture} ${additionalOpts} ${dockerImage} " - buildCommands += "${dockerCmd}\${WORKSPACE}/build.sh release ${architecture} cross crosscomponent" + buildCommands += "${dockerCmd}\${WORKSPACE}/build.sh release ${architecture} cross" steps { buildCommands.each { buildCommand -> diff --git a/src/pal/tools/gen-buildsys-clang.sh b/src/pal/tools/gen-buildsys-clang.sh index a644653350..597ae5d76d 100755 --- a/src/pal/tools/gen-buildsys-clang.sh +++ b/src/pal/tools/gen-buildsys-clang.sh @@ -112,9 +112,6 @@ fi if [[ -n "$LLDB_INCLUDE_DIR" ]]; then cmake_extra_defines="$cmake_extra_defines -DWITH_LLDB_INCLUDES=$LLDB_INCLUDE_DIR" fi -if [[ -n "$CROSSCOMPONENT" ]]; then - cmake_extra_defines="$cmake_extra_defines -DCLR_CROSS_COMPONENTS_BUILD=1" -fi if [ "$CROSSCOMPILE" == "1" ]; then if ! [[ -n "$ROOTFS_DIR" ]]; then echo "ROOTFS_DIR not set for crosscompile" -- cgit v1.2.3