Skip to content

Commit

Permalink
Merge pull request dotnet/coreclr#5786 from prajwal-aithal/devel/arm-…
Browse files Browse the repository at this point in the history
…ci-cross-build-fix

ARM-CI: Convert Linux ARM emulator CI check to cross build (fixes PR dotnet/coreclr#5680)

Commit migrated from dotnet/coreclr@ab4cc73
  • Loading branch information
Jarret Shook committed Jun 15, 2016
2 parents a4e62bb + 66989ab commit 786fd54
Showing 1 changed file with 23 additions and 13 deletions.
36 changes: 23 additions & 13 deletions src/coreclr/netci.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -1018,7 +1018,7 @@ def static addTriggers(def job, def branch, def isPR, def architecture, def os,
Utilities.addGithubPRTriggerForBranch(job, branch, "${os} ${architecture} Cross ${configuration} Build")
}
else {
Utilities.addGithubPRTriggerForBranch(job, branch, "Linux ARM Emulator Build", "(?i).*test\\W+Linux\\W+arm\\W+emulator.*")
Utilities.addGithubPRTriggerForBranch(job, branch, "Linux ARM Emulator Cross ${configuration} Build", "(?i).*test\\W+Linux\\W+arm\\W+emulator\\W+${configuration}.*")
}
break
default:
Expand Down Expand Up @@ -1728,19 +1728,29 @@ combinedScenarios.each { scenario ->
break
}
else {
// Build only for Debug or Release
if ( lowerConfiguration != 'debug' && lowerConfiguration != 'release' ) {
break
}

// Setup variables to hold emulator folder path and the rootfs mount path
def armemul_path = '/opt/linux-arm-emulator'
def armrootfs_mountpath = '/opt/linux-arm-emulator-root'
// Unmount previously mounted rootfs and mount the Linux ARM emulator rootfs at /opt/linux-arm-emulator-root/
buildCommands += "if grep -qs '/opt/linux-arm-emulator-root' /proc/mounts; then sudo umount /opt/linux-arm-emulator-root; fi ; sudo mount /opt/linux-arm-emulator/platform/rootfs-t30.ext4 /opt/linux-arm-emulator-root/"
// Remove old copy of coreclr and copy the latest version of coreclr
// This need to be done as it is not possible to clone the repository inside the chroot jail
buildCommands += "sudo rm -rf /opt/linux-arm-emulator-root/home/coreclr; sudo mkdir /opt/linux-arm-emulator-root/home/coreclr; sudo cp -R ./ /opt/linux-arm-emulator-root/home/coreclr"

// Chroot into the Linux ARM emulator environment and execute the build
buildCommands += """echo \"Chrooting into Linux ARM emulator environment\"
sudo chroot /opt/linux-arm-emulator-root/ /bin/bash -x <<EOF
source /dotnet/setenv/setenv_coreclr.sh
cd home/coreclr
./build.sh arm clean verbose skipmscorlib
EOF"""
buildCommands += "if grep -qs ${armrootfs_mountpath} /proc/mounts; then sudo umount ${armrootfs_mountpath}; fi ; sudo mount ${armemul_path}/platform/rootfs-t30.ext4 ${armrootfs_mountpath}"

// Export LINUX_ARM_INCPATH to hold the include paths to be used by CPLUS_INCLUDE_PATH environment variable
// Apply the changes needed to the library search paths to build for the emulator rootfs
buildCommands += """echo \"Exporting LINUX_ARM_INCPATH environment variable\"
source ${armrootfs_mountpath}/dotnet/setenv/setenv_incpath.sh ${armrootfs_mountpath}
echo \"Applying cross build patch to suit Linux ARM emulator rootfs\"
git am < ${armrootfs_mountpath}/dotnet/setenv/coreclr_cross.patch
ROOTFS_DIR=${armrootfs_mountpath} CPLUS_INCLUDE_PATH=\$LINUX_ARM_INCPATH CXXFLAGS=\$LINUX_ARM_CXXFLAGS ./build.sh arm-softfp clean cross verbose skipmscorlib clang3.5 ${lowerConfiguration}
echo \"Rewinding HEAD to master code\"
git reset --hard HEAD^"""

// Basic archiving of the build, no pal tests
Utilities.addArchival(newJob, "/opt/linux-arm-emulator-root/home/coreclr/bin/Product/**")
Expand Down

0 comments on commit 786fd54

Please sign in to comment.