From a7c6c7c6029766156dc652b13bdea01b1a84855a Mon Sep 17 00:00:00 2001 From: Vitor Bandeira Date: Thu, 15 Aug 2024 15:59:43 +0000 Subject: [PATCH 1/8] ci: enable testing Signed-off-by: Vitor Bandeira --- jenkins/public_tests_all.Jenkinsfile | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/jenkins/public_tests_all.Jenkinsfile b/jenkins/public_tests_all.Jenkinsfile index 3a99aec191..061353733d 100644 --- a/jenkins/public_tests_all.Jenkinsfile +++ b/jenkins/public_tests_all.Jenkinsfile @@ -1,4 +1,4 @@ -@Library('utils@orfs-v2.1.0') _ +@Library('utils@orfs-arm') _ node { @@ -39,11 +39,7 @@ node { } stage('Run Tests') { - if (env.CHANGE_BRANCH && env.CHANGE_BRANCH.contains('ci-dev')) { - runTests(DOCKER_IMAGE, 'dev'); - } else { - runTests(DOCKER_IMAGE, 'pr'); - } + runTests(DOCKER_IMAGE, 'dev'); } stage ('Cleanup and Reporting') { From 02f73e67f14049025baadc3dc46a3c3507cf4f42 Mon Sep 17 00:00:00 2001 From: Vitor Bandeira Date: Thu, 22 Aug 2024 19:11:34 -0300 Subject: [PATCH 2/8] ci: try parallel archs Signed-off-by: Vitor Bandeira --- jenkins/public_tests_all.Jenkinsfile | 67 +++++++++++++++------------- 1 file changed, 37 insertions(+), 30 deletions(-) diff --git a/jenkins/public_tests_all.Jenkinsfile b/jenkins/public_tests_all.Jenkinsfile index 061353733d..48db4933bb 100644 --- a/jenkins/public_tests_all.Jenkinsfile +++ b/jenkins/public_tests_all.Jenkinsfile @@ -2,45 +2,52 @@ node { + def DOCKER_IMAGE; properties([copyArtifactPermission('${JOB_NAME},'+env.BRANCH_NAME)]); - stage('Checkout') { - if (env.BRANCH_NAME && env.BRANCH_NAME == 'master') { - checkout([ - $class: 'GitSCM', - branches: [[name: scm.branches[0].name]], - doGenerateSubmoduleConfigurations: false, - extensions: [ - [$class: 'CloneOption', noTags: false], - [$class: 'SubmoduleOption', recursiveSubmodules: true] - ], - submoduleCfg: [], - userRemoteConfigs: scm.userRemoteConfigs - ]); + Map archs = [failFast: false]; + + archs['x86'] = { + stage('Checkout') { + if (env.BRANCH_NAME && env.BRANCH_NAME == 'master') { + checkout([ + $class: 'GitSCM', + branches: [[name: scm.branches[0].name]], + doGenerateSubmoduleConfigurations: false, + extensions: [ + [$class: 'CloneOption', noTags: false], + [$class: 'SubmoduleOption', recursiveSubmodules: true] + ], + submoduleCfg: [], + userRemoteConfigs: scm.userRemoteConfigs + ]); + } + else { + checkout scm; + } + def description = sh(script: "git log -1 --pretty=%B", returnStdout: true).trim(); + if (description.contains('ci') && description.contains('skip')) { + currentBuild.result = 'SKIPPED'; // 'SUCCESS', 'SKIPPED' + return; + } } - else { - checkout scm; + stage('Build and Push Docker Image') { + DOCKER_IMAGE = dockerPush('ubuntu22.04', 'orfs'); + echo "Docker image is $DOCKER_IMAGE"; } - def description = sh(script: "git log -1 --pretty=%B", returnStdout: true).trim(); - if (description.contains('ci') && description.contains('skip')) { - currentBuild.result = 'SKIPPED'; // 'SUCCESS', 'SKIPPED' - return; + stage('Build ORFS and Stash bins') { + buildBins(DOCKER_IMAGE); + } + stage('Run Tests') { + runTests(DOCKER_IMAGE, 'dev'); } } - def DOCKER_IMAGE; - stage('Build and Push Docker Image') { - DOCKER_IMAGE = dockerPush('ubuntu22.04', 'orfs'); - echo "Docker image is $DOCKER_IMAGE"; - } - - stage('Build ORFS and Stash bins') { - buildBins(DOCKER_IMAGE); + archs['aarch64'] = { + aarch64(); } - stage('Run Tests') { - runTests(DOCKER_IMAGE, 'dev'); - } + parallel(archs); stage ('Cleanup and Reporting') { finalReport(DOCKER_IMAGE); From eeb692120d540f1c0840cdc55e56089d4decf8fc Mon Sep 17 00:00:00 2001 From: Vitor Bandeira Date: Thu, 22 Aug 2024 17:36:51 -0300 Subject: [PATCH 3/8] etc: multithread compile of klayout in aarch64 Signed-off-by: Vitor Bandeira --- etc/DependencyInstaller.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/DependencyInstaller.sh b/etc/DependencyInstaller.sh index 79617c94dc..0e95e41d6b 100755 --- a/etc/DependencyInstaller.sh +++ b/etc/DependencyInstaller.sh @@ -140,9 +140,9 @@ _installUbuntuPackages() { if [ ! -f ${klayoutPrefix}/klayout ]; then _installKlayoutDependenciesUbuntuAarch64 echo "Installing KLayout for aarch64 architecture" - git clone https://github.com/KLayout/klayout.git + git clone --depth=1 -b "v${klayoutVersion}" https://github.com/KLayout/klayout.git cd klayout - ./build.sh -bin "${klayoutPrefix}" + ./build.sh -bin "${klayoutPrefix}" -j $(nproc) else echo "Klayout is already installed" fi From 694beb827a1c5e68b9fb84b8f53d8be6997cb6be Mon Sep 17 00:00:00 2001 From: Vitor Bandeira Date: Thu, 22 Aug 2024 23:32:56 -0300 Subject: [PATCH 4/8] etc: fix prefix for klayout on aarch64 Signed-off-by: Vitor Bandeira --- etc/DependencyInstaller.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/DependencyInstaller.sh b/etc/DependencyInstaller.sh index 0e95e41d6b..409a1fec40 100755 --- a/etc/DependencyInstaller.sh +++ b/etc/DependencyInstaller.sh @@ -133,7 +133,7 @@ _installUbuntuPackages() { lastDir="$(pwd)" # temp dir to download and compile baseDir=/tmp/installers - klayoutPrefix=${PREFIX:-"/usr/local"} + klayoutPrefix=${PREFIX:-"/usr/local/bin"} mkdir -p "${baseDir}" cd "${baseDir}" if [[ $arch == "aarch64" ]]; then @@ -142,7 +142,7 @@ _installUbuntuPackages() { echo "Installing KLayout for aarch64 architecture" git clone --depth=1 -b "v${klayoutVersion}" https://github.com/KLayout/klayout.git cd klayout - ./build.sh -bin "${klayoutPrefix}" -j $(nproc) + ./build.sh -prefix "${klayoutPrefix}" -j $(nproc) else echo "Klayout is already installed" fi From e1c92223278cce04d44aa406a93864f3f2e64627 Mon Sep 17 00:00:00 2001 From: Vitor Bandeira Date: Thu, 22 Aug 2024 18:21:23 -0300 Subject: [PATCH 5/8] etc: add dependencies Signed-off-by: Vitor Bandeira --- etc/DependencyInstaller.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/etc/DependencyInstaller.sh b/etc/DependencyInstaller.sh index 409a1fec40..76a8c54dbb 100755 --- a/etc/DependencyInstaller.sh +++ b/etc/DependencyInstaller.sh @@ -195,7 +195,9 @@ _installCI() { coreutils \ curl \ python3 \ - software-properties-common + software-properties-common \ + unzip \ + wget } _help() { From 97e038579827945ec8a427403e9ea212d0975723 Mon Sep 17 00:00:00 2001 From: Vitor Bandeira Date: Fri, 23 Aug 2024 01:25:00 -0300 Subject: [PATCH 6/8] etc: DependencyInstaller format Signed-off-by: Vitor Bandeira --- etc/DependencyInstaller.sh | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/etc/DependencyInstaller.sh b/etc/DependencyInstaller.sh index 76a8c54dbb..1b0c654c7d 100755 --- a/etc/DependencyInstaller.sh +++ b/etc/DependencyInstaller.sh @@ -39,14 +39,14 @@ _installCommon() { baseDir=$(mktemp -d /tmp/DependencyInstaller-orfs-XXXXXX) # Install Verilator - verilatorPrefix=`realpath ${PREFIX:-"/usr/local"}` + verilatorPrefix="$(realpath ${PREFIX:-/usr/local})" if [[ ! -x ${verilatorPrefix}/bin/verilator ]]; then pushd $baseDir git clone --depth=1 -b "v$verilatorVersion" https://github.com/verilator/verilator.git pushd verilator autoconf ./configure --prefix "${verilatorPrefix}" - make -j`nproc` + make -j $(nproc) make install popd rm -r verilator @@ -67,16 +67,16 @@ _installCentosPackages() { ruby-devel if ! [ -x "$(command -v klayout)" ]; then - yum -y install https://www.klayout.org/downloads/CentOS_7/klayout-${klayoutVersion}-0.x86_64.rpm - else - currentVersion=$(klayout -v | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+') - if _versionCompare $currentVersion -ge $klayoutVersion; then - echo "KLayout version greater than or equal to ${klayoutVersion}" - else - echo "KLayout version less than ${klayoutVersion}" - sudo yum remove -y klayout yum -y install https://www.klayout.org/downloads/CentOS_7/klayout-${klayoutVersion}-0.x86_64.rpm - fi + else + currentVersion=$(klayout -v | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+') + if _versionCompare $currentVersion -ge $klayoutVersion; then + echo "KLayout version greater than or equal to ${klayoutVersion}" + else + echo "KLayout version less than ${klayoutVersion}" + sudo yum remove -y klayout + yum -y install https://www.klayout.org/downloads/CentOS_7/klayout-${klayoutVersion}-0.x86_64.rpm + fi fi } @@ -90,11 +90,12 @@ _installKlayoutDependenciesUbuntuAarch64() { export DEBIAN_FRONTEND=noninteractive apt-get -y update apt-get -y install build-essential \ - qtbase5-dev qttools5-dev libqt5xmlpatterns5-dev qtmultimedia5-dev libqt5multimediawidgets5 libqt5svg5-dev \ - ruby ruby-dev \ - python3 python3-dev \ - libz-dev\ - libgit2-dev + qtbase5-dev qttools5-dev libqt5xmlpatterns5-dev qtmultimedia5-dev libqt5multimediawidgets5 libqt5svg5-dev \ + ruby ruby-dev \ + python3 python3-dev \ + libz-dev\ + libgit2-dev + echo "All dependencies installed successfully" } @@ -145,7 +146,7 @@ _installUbuntuPackages() { ./build.sh -prefix "${klayoutPrefix}" -j $(nproc) else echo "Klayout is already installed" - fi + fi else if [[ $1 == 20.04 ]]; then klayoutChecksum=15a26f74cf396d8a10b7985ed70ab135 @@ -164,6 +165,7 @@ _installUbuntuPackages() { install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg \ -o /etc/apt/keyrings/docker.asc + chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: From cad4dab95b68dcbc7eb0c05b0a0420744bba06da Mon Sep 17 00:00:00 2001 From: Vitor Bandeira Date: Thu, 22 Aug 2024 20:22:51 -0300 Subject: [PATCH 7/8] docker: add arch to image tag Signed-off-by: Vitor Bandeira --- etc/DockerTag.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/etc/DockerTag.sh b/etc/DockerTag.sh index 180b06e575..c719b0a6e4 100755 --- a/etc/DockerTag.sh +++ b/etc/DockerTag.sh @@ -17,10 +17,11 @@ if [[ "$@" == "-dev" ]]; then "./tools/OpenROAD/etc/DockerHelper.sh" "./tools/OpenROAD/etc/DockerTag.sh" ) - cat "${file_list[@]}" | sha256sum | awk '{print substr($1, 1, 6)}' + ret=$(cat "${file_list[@]}" | sha256sum | awk '{print substr($1, 1, 6)}') elif [[ "$@" == "-master" ]]; then - git describe + ret=$(git describe) else echo "Usage: $0 {-dev|-master}" exit 1 fi +echo "${ret}-$(uname -m)" From f62a9d16c3a15c9717fc15bd27912ddfc33e5774 Mon Sep 17 00:00:00 2001 From: Vitor Bandeira Date: Wed, 28 Aug 2024 13:00:27 -0300 Subject: [PATCH 8/8] Bump OpenROAD submodule Signed-off-by: Vitor Bandeira --- tools/OpenROAD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/OpenROAD b/tools/OpenROAD index 42ba30d730..237cb00ad9 160000 --- a/tools/OpenROAD +++ b/tools/OpenROAD @@ -1 +1 @@ -Subproject commit 42ba30d730851a73bd2996c5673a05fd79520f87 +Subproject commit 237cb00ad95178fc1bc830290ec3f6d6fcb91bdc