summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-03-07tcwg_gnu-build.sh: Update after merge.tcwg_gnuMaxim Kuvyrkov
Change-Id: I9edf99b8a3c3f912a587be24093ffd3941d302cc
2019-03-07Merge remote-tracking branch 'gerrit/master' into tcwg_gnuMaxim Kuvyrkov
Change-Id: Icbe889d07ffb683ea00c63038d827f48a2d96080
2019-03-06Use APM boards for cross-testing.Christophe Lyon
In print_tester_label_for_target(), do not use tk1/tx1 anymore, use APMs instead. However, this means we no longer use armv7 hardware to test arm-* configurations (as opposed to armv8l*). Change-Id: Iff08678c39ad15f59628e5a91f62d0812d0bb0b3
2019-03-04Avoid passing --enable bootstrap for specialized bootstrap configs.Prathamesh Kulkarni
Change-Id: I6db1b9e30e9b8df0cdd615e139dcc2c489219fb5
2019-03-04tcwg-cleanup-stale-containers.sh: Report failure to kill stale ssh-agent ↵Christophe Lyon
processes. Without this patch, failure to kill such processes is not reported as part of the script exit status. This happens for instance when the killall command is not installed on the machine. Change-Id: Ic0fa10ce6b69f12fb2382cfa3680fcc1c7d1b4bd
2019-03-01tcwg_kernel-bisect.sh: Fix linux-next rebase workaround for gnu buildsMaxim Kuvyrkov
Specify binutils_branch and gcc_branch for gnu builds. Change-Id: I52cd3d0d2837f1fe3c5c492dd657cc6c71408100
2019-03-01tcwg_kernel-bisect.sh: Handle bisecting between branches/tagsMaxim Kuvyrkov
Rename bad_rev and baseline_rev to bad_branch and baseline_branch, and resolve them to SHA1 revisions. The motivation for this change is ability to gather historical data, e.g., code size regressions from GCC/LLVM 5 to 6, to 7, to 8, and so on. The bisects are intended to be triggered manually, which is why branch handling is desired. Change-Id: I9c46270e0092e72836986a4bed08799ec6d84a00
2019-03-01tcwg-dev-build.sh: Fix thinkoMaxim Kuvyrkov
Use --manifest value when it's provided. Change-Id: I7c4667c6c607e14ee31eafe2f0fee958abb962cb
2019-02-28Add support for bootstrap-O1, bootstrap-lto and bootstrap-debug configs.Prathamesh Kulkarni
Change-Id: Ic97842bbabe683981da22b5ace4f92a048bbcf2e
2019-02-28Change rr[ci_project] to tcwg_gnu instead of tcwg_bmk.Prathamesh Kulkarni
Change-Id: I56121d16c6d9381d0dcc036dde15de80dbc97d27
2019-02-26tcwg-dev-build: Enable builds using manifestsMaxim Kuvyrkov
If manifest.txt was uploaded in job's parameters, then pass --manifest option to MakeRelease.job. Fix MakeRelease.job to not pass --target when manifest is set, otherwise ABE complains. Change-Id: I2aa25d3840281159e2ed00cfaab3b9e47a661801
2019-02-26tcwg-cleanup-stale-containers.sh: Fix volume cleanupMaxim Kuvyrkov
"Echo" concatenates all elements into a single string, so we need to break them up for "grep" to match its pattern. Change-Id: I954ca80fc6f0e289185780f76988688ce0f1ed78
2019-02-26tcwg_kernel-build.sh: Restrict linking with LLD to defconfigMaxim Kuvyrkov
Many configurations seems to fail. Below are some examples: - llvm-master-aarch64-lts-allmodconfig -- produces 2k less .o files - llvm-master-arm-next-allmodconfig -- produces 4k less .o files - llvm-master-aarch64-next-allmodconfig -- produces 5k less .o files - llvm-release-aarch64-lts-allnoconfig -- can't boot - llvm-release-aarch64-mainline-allnoconfig -- can't boot Change-Id: I5e88e83579e6acbf75aaf850b3defcf5d4ed850a
2019-02-25tcwg_kernel-build.sh: Use LLD for LLVM Linux kernel link jobsPeter Smith
It is expected that developers using clang to build the linux kernel will also use LLD for the linker. We would like to test this in the LLVM builds of the linux kernel as much as possible. To use LLD in the kernel build we set LD=/path/to/linker when calling make. At the moment we use LLD for llvm-*-aarch64-*-* builds and for llvm-master-arm-*-* builds. Change-Id: Ib1d543480278abec193cde6aeba0f457bcd603aa
2019-02-25round-robin.sh: Add LLD to the linux kernel round-robin buildPeter Smith
We use the same form as clang, copying lld from the monorepo into tools/lld. Change-Id: Ieff55d1aafe2a49c87f3c7e518933a5adebcf8ff
2019-02-22tcwg_kernel-build.sh: Update build step nameMaxim Kuvyrkov
I missed this change in the rename commit. Change-Id: I82e5e93fe52e8e53d0ca9cfc95b70dda8485e2fb
2019-02-22tcwg_kernel-build.sh: Add boot-testing of kernelMaxim Kuvyrkov
This implements https://projects.linaro.org/browse/TCWG-1503 . Count_linux_objs() was renamed to build_linux (with build_linux() renamed to build_linux_1()). New step boot_linux() was added to boot kernel with qemu. Defconfig configurations for aarch64 and arm seem to boot, allnoconfig doesn't boot, others -- will see. No_regression_p() was reworked to handle result hierarchy "boot" -> "all" -> "Number of objects". Change-Id: Ib3377c72de51745a537714d1c693303b3935188c
2019-02-22Trivial cleanupsMaxim Kuvyrkov
The "last-good" result is, in reality, just "good". We no longer kernel.release file (to troubleshoot ccache issues). Remove "if true". Change-Id: If64798625e693c9abfaf085f6e5b23f77eadf73f
2019-02-22jenkins-helpers.sh: Simplify run_step* functionsMaxim Kuvyrkov
Remove copying of entries from base-artifacts/STEP/ to artifacts/STEP/ for skipped steps. We used to rely on $run_step_prev_artifacts/build-ok markers to detect pass/fail conditions of the previous step -- something that we now explicitly handle with skip_/reset_/stop_on_on_fail modes of run_step(). So remove unused feature. Change-Id: I06e4298aa06ffb2aaf677d2c51e89da61ae9b119
2019-02-21round-robin.sh: Fix base-artifacts grooming in update_baselineMaxim Kuvyrkov
To have a history of pending regressions we mark baseline resets with reset-baseline file/marker (remember that resets correspond to "first-bad" builds triggered by bisect job). We have mistakenly tried to look for reset-baseline markers in the current revision of base-artifacts, while we should have looked in $prev_head revision. This patch fixes this and simplifies overall grooming of regression history. Change-Id: I3a819e6dfcdc2e8f02370216db001c00c067912b
2019-02-19round-robin.sh: Fix rsync in update_baseline.Maxim Kuvyrkov
See inline comments for details. Change-Id: I22029c29185daf61e81309dbb266f233e06fafba
2019-02-19jenkins-helpers.sh: Remove stale locks in git repos.Maxim Kuvyrkov
We get locks in git repo when builds are interrupted during git remote update. Change-Id: I184f6e0f4e401237d85f0e0af328a67be654faec
2019-02-19convert_args_to_variables: Document "==" syntaxDiana Picus
Add a comment explaining "==arr[key] value" syntax for parameters. Change-Id: Id18bd5fc912297cd98e55161f8aa1fd30532e706
2019-02-19round-robin.sh: Fix assertsMaxim Kuvyrkov
Change-Id: I2e1887bc565c3b0423690c48c768b1eeaea33531
2019-02-19tcwg_kernel-bisect.sh: Fix handling of spurious failuresMaxim Kuvyrkov
For linux-next rebase workaround we reset baseline to linux-next:stable, and for spurious failures we re-trigger build with default parameters. Change-Id: I448870d101b7dfd554ecc4a91e71ce74538ecec6
2019-02-19round-robin.sh: Add asserts to troubleshoot strange failuresMaxim Kuvyrkov
We are seeing strange behavior with base-artifacts -- results file is not being updated, so we get corrupted baselines. It's unclear why or how this happens, so add these asserts. If nothing else, these asserts will prevent push_baseline from pushing bogus results to the base-artifacts repo. The following script can be used to identified branches with bogus results: === set -euf -o pipefail git reset --hard git clean -fd branches=($(git branch -r | grep linaro-local/ci)) for branch in "${branches[@]}"; do git checkout --detach $branch > /dev/null 2>&1 while git rev-parse HEAD^ >/dev/null 2>&1; do if [ x"$(git diff HEAD HEAD^ -- results)" = x"" ]; then echo "$branch: $(git rev-parse HEAD)" git log --oneline HEAD | head -n2 tail -n1 results fi git checkout --detach HEAD^ > /dev/null 2>&1 done done === Change-Id: I840041f63dffc5aeb3a72a4cbd6859ea0191d336
2019-02-18[rr-many 6/N] Improve update_baselineMaxim Kuvyrkov
Be more deliberate in preserving "first-bad" commit in the base-artifacts repo. Create a marker file reset-baseline for such builds. Also prepend the commit message title with number of pending commits, which is roughly twice the number of pending regressions. Change-Id: I14e16d893cab12637b71037665c8aee9b6ef24f1
2019-02-18[rr-many 5/N] Update update_baselineMaxim Kuvyrkov
Re-work commit title to handle multiple projects Change-Id: I5532a36e961734246d6c1b028d70a3f9906b8180
2019-02-18[rr-many 4/N] Update round-robin.sh: push_baseline()Maxim Kuvyrkov
Make push_baseline handle multiple projects being updated. Change-Id: I9e6d2740154ac1987092c37ac09179e18b7f4da3
2019-02-18[rr-many 3/N] Rework trigger files for follow-up builds.Maxim Kuvyrkov
Now that we reliably reach check_regression (due to previous improvements in run_step support) move creation of trigger files here from clone_repo. If updating multiple components -- create trigger files for individual builds. I.e., trigger-build-llvm: llvm_branch=SHA1_LLVM linux_branch=baseline trigger-build-linux: llvm_branch=baseline linux_branch=SHA1_LINUX If updating a single component -- create trigger-bisect like before. In the tcwg_kernel-bisect.sh script we start using trigger files produced by the build script, thus simplifying and generalizing bisect script. Change-Id: Iaee02ce0f8fbb3f9f5dbee805089ff31f1859cb5
2019-02-18[rr-many 2/N] Update and simplify round-robin.sh: clone_repo()Maxim Kuvyrkov
With simpler meaning of rr[COMPONENT_branch] to be either "baseline" (instead of "default", overrides from ${rr[current_project]}, etc.) we only need to resolve "baseline" value. Change-Id: I5f32949587688d152402b6b64ed4a37ac062019e
2019-02-18[rr-many 1/N]: Support testing multiple projects in the same buildMaxim Kuvyrkov
This patch series is both a major cleanup and an optimization of round-robin jobs. We switch from testing each component (binutils, gcc, linux) in separate builds in round-robin fashion to testing all components in the same build, and, if there's a failure, re-triggering builds for individual components like we are doing now. Then if individual build fails, it triggers bisect on that one component. The cleanup part is that jenkins triggers are greatly simplified and we can remove all trigger jobs (of which we had hundreds). The optimization part is that successful builds (which is the majority) now consume N times less resources, where N is the number of components -- 3 in case of binutils, gcc, linux, -- because all components are updated and tested in the same build. This patch is the first in the series, and it replaces uses of $current_project and $current_branch with "baseline" keyword of components' branches. I.e., for testing LLVM in LLVM+Kernel jobs we currently use ==rr[llvm_branch] master ==rr[linux_branch] master \ ==rr[current_project] llvm ==rr[current_branch] SHA1 and it will change to ==rr[llvm_branch] SHA1 ==rr[linux_branch] baseline . IMO, the latter is significantly more intuitive. Change-Id: Ib47dcac1571381f870150e4872ec37be5d900a07
2019-02-18tcwg_kernel-bisect.sh: Detect linker and make errors in the logsMaxim Kuvyrkov
"ERROR:" detects linker errors and "] Error " detects make errors Change-Id: I91fe470d2cf81487945e2e55796c0dfd3f5dc74c
2019-02-18tcwg_kernel-bisect.sh: Use rr[ci_config] instead of its sub-itemsMaxim Kuvyrkov
Replaces uses of ${rr[linux_version]} and $toolchain with ${rr[ci_config]}, which makes code more generic. Change-Id: I27030c467b3bdb448aa2dbed36272b93726789cb
2019-02-14Merge branch 'master' into tcwg_gnuPrathamesh Kulkarni
Change-Id: I09d0c3f480b350eb8c1a9a51c13635bb191ce37f
2019-02-14Set run_step_status to 0 before running step.Prathamesh Kulkarni
run_step_status is set to exit status of step only if it fails, else it holds the value of exit status of previous step. Avoid that by initializing it to 0. Change-Id: I1e7625ffc22ad2a44470892b11092e80f2b52eae
2019-02-13tcwg-update-llvmbot-containers: Don't start silent bots by defaultDiana Picus
Change-Id: I75da47bd84014024b702e4812af950743a94c380
2019-02-12s/ubsan_bootstrap/bootstrap_ubsan and pass --enable bootstrap in build_abe.Prathamesh Kulkarni
Change-Id: I572cb8cbbbfdf21a7fa4a411527de60c259ebc46
2019-02-12Merge branch 'master' into tcwg_gnuPrathamesh Kulkarni
Change-Id: Ifd517229bb3ee7642266e3e66a8682f177992076
2019-02-08jenkins-helpers.sh: Workaround DNS issueMaxim Kuvyrkov
We don't have DNS alias entries tcwg-x86_64-build-09.tcwglab and tcwg-x86_64-build-10.tcwglab -- for build-09.tcwglab and build-10.tcwglab machines. Change-Id: Ib32956b92098ac610be6f178c5d24c23ffa994f0
2019-02-08jenkins-helpers.sh: Support custom docker root dirsMaxim Kuvyrkov
Several of our machines have docker root dir set to /home/docker instead of standard /var/lib/docker. The reason for using /home/docker is to allocate docker containers on the biggest disk partition. Change-Id: I6d16f561b5b8d303cb58d3a30f2847814eb55756
2019-02-07tcwg_kernel-*.sh: Avoid proxy variablesMaxim Kuvyrkov
... and use ${rr[X]} instead of $X. We make an exception for $current_project in tcwg_kernel-bisect.sh to do a mechanical change in a separate patch. Change-Id: Ib365552483d016e9096cc791f61a34015e50e32a
2019-02-07tcwg-benchmark.sh: Ssh directly to the benchmark board.Maxim Kuvyrkov
We [ab]used build_container_exec to ssh the target board to get most recent ssh configuration. We have since started to require local ssh access to work as well (e.g., for reboot functionality), and implemented automatic updates of tcwg-buildslave and tcwg-benchmark /home files. Also, don't use ssh multiplexing (-Snone) to reliably forward ssh agent to the benchmarking board. We have seen strange ssh-agent failures over shared connections. Change-Id: Iab09821272aa91f8a80b0e1b8fc5a9dd1a6bd3fb
2019-02-07tcwg-benchmark-results.sh: Rework and cleanup.Maxim Kuvyrkov
Change-Id: I3af87f6a085ccdc781a67cf4462ebaf6abf393d7
2019-02-07round-robin.sh: Support using ABE's internal sources in build_abeMaxim Kuvyrkov
Use ABE's internal linux sources for installation of kernel headers. This simplifies tcwg_bmk project where we don't need to track kernel sources. Change-Id: I2a8eb6978f7b8783fefb6278b601353941d06aa0
2019-02-07round-robin.sh: Fix typoMaxim Kuvyrkov
Change-Id: Ia1382779ccd0a405d30b6fa6101cea987dbe2df0
2019-02-07round-robin.sh: Add support for handling new configurationsMaxim Kuvyrkov
Every configuration depends on baseline branches linaro-local/ci/$ci_project/$ci_config existing in all relevant repos, which is a pain to arrange by hand. We add new variable rr[init_configuration], which defaults to 'false'. For new configurations we set this parameter to true, which causes the build script to use relevant upstream branches for components and special "empty" branch for base-artifacts. The net result is that after leaving new configuration for a day or two with rr[init_configuration] set, the builds will initialize branches in all relevant repos themselves, at which point we can turn rr[init_configuration] back off. Change-Id: Id1c78772619626f1a3e98a213e26046266f838e7
2019-02-07jenkins-helpers.sh: Improve remote_execMaxim Kuvyrkov
Don't add "exec" to the remote command unless necessary. We need this to trigger jenkins jobs via === remote_exec "ci.linaro.org:2222::-l $USER@linaro.org" build ... === Note that "build" is a command of jenkins-cli, not an executable, so prepending "exec" breaks the invocation. Change-Id: If122869dadb76711666aa49690f508757e7ebce9
2019-02-07Remove uses of results_id and BUILD_NUMBER.Prathamesh Kulkarni
Change-Id: I05cc8f40aaef1b56d32684b30ad70a8f86cf5bc9
2019-02-05Add tcwg_gnu-build and modify build_abe to support bootstrap.Prathamesh Kulkarni
Change-Id: I00df28006aec6f0ade815188d809dacbfe6b17f9