Age | Commit message (Collapse) | Author |
|
Change-Id: I9edf99b8a3c3f912a587be24093ffd3941d302cc
|
|
Change-Id: Icbe889d07ffb683ea00c63038d827f48a2d96080
|
|
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
|
|
Change-Id: I6db1b9e30e9b8df0cdd615e139dcc2c489219fb5
|
|
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
|
|
Specify binutils_branch and gcc_branch for gnu builds.
Change-Id: I52cd3d0d2837f1fe3c5c492dd657cc6c71408100
|
|
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
|
|
Use --manifest value when it's provided.
Change-Id: I7c4667c6c607e14ee31eafe2f0fee958abb962cb
|
|
Change-Id: Ic97842bbabe683981da22b5ace4f92a048bbcf2e
|
|
Change-Id: I56121d16c6d9381d0dcc036dde15de80dbc97d27
|
|
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
|
|
"Echo" concatenates all elements into a single string, so we
need to break them up for "grep" to match its pattern.
Change-Id: I954ca80fc6f0e289185780f76988688ce0f1ed78
|
|
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
|
|
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
|
|
We use the same form as clang, copying lld from the monorepo into
tools/lld.
Change-Id: Ieff55d1aafe2a49c87f3c7e518933a5adebcf8ff
|
|
I missed this change in the rename commit.
Change-Id: I82e5e93fe52e8e53d0ca9cfc95b70dda8485e2fb
|
|
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
|
|
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
|
|
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
|
|
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
|
|
See inline comments for details.
Change-Id: I22029c29185daf61e81309dbb266f233e06fafba
|
|
We get locks in git repo when builds are interrupted during
git remote update.
Change-Id: I184f6e0f4e401237d85f0e0af328a67be654faec
|
|
Add a comment explaining "==arr[key] value" syntax for parameters.
Change-Id: Id18bd5fc912297cd98e55161f8aa1fd30532e706
|
|
Change-Id: I2e1887bc565c3b0423690c48c768b1eeaea33531
|
|
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
|
|
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
|
|
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
|
|
Re-work commit title to handle multiple projects
Change-Id: I5532a36e961734246d6c1b028d70a3f9906b8180
|
|
Make push_baseline handle multiple projects being updated.
Change-Id: I9e6d2740154ac1987092c37ac09179e18b7f4da3
|
|
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
|
|
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
|
|
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
|
|
"ERROR:" detects linker errors and "] Error " detects make errors
Change-Id: I91fe470d2cf81487945e2e55796c0dfd3f5dc74c
|
|
Replaces uses of ${rr[linux_version]} and $toolchain with
${rr[ci_config]}, which makes code more generic.
Change-Id: I27030c467b3bdb448aa2dbed36272b93726789cb
|
|
Change-Id: I09d0c3f480b350eb8c1a9a51c13635bb191ce37f
|
|
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
|
|
Change-Id: I75da47bd84014024b702e4812af950743a94c380
|
|
Change-Id: I572cb8cbbbfdf21a7fa4a411527de60c259ebc46
|
|
Change-Id: Ifd517229bb3ee7642266e3e66a8682f177992076
|
|
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
|
|
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
|
|
... 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
|
|
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
|
|
Change-Id: I3af87f6a085ccdc781a67cf4462ebaf6abf393d7
|
|
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
|
|
Change-Id: Ia1382779ccd0a405d30b6fa6101cea987dbe2df0
|
|
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
|
|
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
|
|
Change-Id: I05cc8f40aaef1b56d32684b30ad70a8f86cf5bc9
|
|
Change-Id: I00df28006aec6f0ade815188d809dacbfe6b17f9
|