diff mbox

[v5,08/13] support/test-pkg: get configs from buildroot defconfigs

Message ID 20170406181854.5242-8-arnout@mind.be
State Superseded
Headers show

Commit Message

Arnout Vandecappelle April 6, 2017, 6:18 p.m. UTC
Now we have the toolchain configs in the buildroot directory itself, it
is no longer necessary to fetch it from the toolchain URL.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Cc: Yann E. MORIN <yann.morin.1998@free.fr>
---
 support/scripts/test-pkg | 29 +++++++++++++----------------
 1 file changed, 13 insertions(+), 16 deletions(-)

Comments

Thomas Petazzoni April 6, 2017, 7:37 p.m. UTC | #1
Hello,

On Thu, 6 Apr 2017 20:18:48 +0200, Arnout Vandecappelle
(Essensium/Mind) wrote:
> Now we have the toolchain configs in the buildroot directory itself, it
> is no longer necessary to fetch it from the toolchain URL.
> 
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> Cc: Yann E. MORIN <yann.morin.1998@free.fr>

On the principle, I am OK with this direction, but it is needs to be
coordinated with a change to autobuild-run to also use the base
autobuild defconfigs from the Buildroot tree. Otherwise, we will have
two copies: one used by people running test-pkg, one used by the actual
autobuilders. It is not difficult to see those two copies quickly
getting out of sync.

Best regards,

Thomas
Yann E. MORIN April 6, 2017, 8:48 p.m. UTC | #2
Thomas, All,

On 2017-04-06 21:37 +0200, Thomas Petazzoni spake thusly:
> On Thu, 6 Apr 2017 20:18:48 +0200, Arnout Vandecappelle
> (Essensium/Mind) wrote:
> > Now we have the toolchain configs in the buildroot directory itself, it
> > is no longer necessary to fetch it from the toolchain URL.
> > 
> > Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> > Cc: Yann E. MORIN <yann.morin.1998@free.fr>
> 
> On the principle, I am OK with this direction, but it is needs to be
> coordinated with a change to autobuild-run to also use the base
> autobuild defconfigs from the Buildroot tree. Otherwise, we will have
> two copies: one used by people running test-pkg, one used by the actual
> autobuilders. It is not difficult to see those two copies quickly
> getting out of sync.

I think the idea is not to sync, but to get rid of the toolchain configs
in autobuild-run altogether, and only use those in the Buildroot tree.

Regards,
Yann E. MORIN.
Thomas Petazzoni April 6, 2017, 8:50 p.m. UTC | #3
Hello,

On Thu, 6 Apr 2017 22:48:04 +0200, Yann E. MORIN wrote:

> > On the principle, I am OK with this direction, but it is needs to be
> > coordinated with a change to autobuild-run to also use the base
> > autobuild defconfigs from the Buildroot tree. Otherwise, we will have
> > two copies: one used by people running test-pkg, one used by the actual
> > autobuilders. It is not difficult to see those two copies quickly
> > getting out of sync.  
> 
> I think the idea is not to sync, but to get rid of the toolchain configs
> in autobuild-run altogether, and only use those in the Buildroot tree.

Huh, you must have misunderstood what I wrote, or it wasn't clear.

My point was precisely that we want to avoid sync'ing them. But to
achieve that the autobuild-run script needs to be changed to use base
toolchain configs from the Buildroot tree rather than through the
CSV file downloaded from autobuild.b.o. And I'm exactly saying that we
need to change the autobuild-run script at the same time as we move
base toolchain configs in the tree, otherwise we have duplication.

Thomas
Arnout Vandecappelle April 7, 2017, 10:35 a.m. UTC | #4
On 06-04-17 22:50, Thomas Petazzoni wrote:
> Hello,
> 
> On Thu, 6 Apr 2017 22:48:04 +0200, Yann E. MORIN wrote:
> 
>>> On the principle, I am OK with this direction, but it is needs to be
>>> coordinated with a change to autobuild-run to also use the base
>>> autobuild defconfigs from the Buildroot tree. Otherwise, we will have
>>> two copies: one used by people running test-pkg, one used by the actual
>>> autobuilders. It is not difficult to see those two copies quickly
>>> getting out of sync.  
>>
>> I think the idea is not to sync, but to get rid of the toolchain configs
>> in autobuild-run altogether, and only use those in the Buildroot tree.
> 
> Huh, you must have misunderstood what I wrote, or it wasn't clear.
> 
> My point was precisely that we want to avoid sync'ing them. But to
> achieve that the autobuild-run script needs to be changed to use base
> toolchain configs from the Buildroot tree rather than through the
> CSV file downloaded from autobuild.b.o. And I'm exactly saying that we
> need to change the autobuild-run script at the same time as we move
> base toolchain configs in the tree, otherwise we have duplication.

 I'm working on updating autobuild-run. Unfortunately it's a bit difficult to
test changes in that script, e.g. removing the condition on BR2_STATIC_LIBS. I
basically have to wait until the script hits a glibc toolchain to see if it
works correctly. Can you think of any way to speed that up?

 Regards,
 Arnout
Thomas Petazzoni April 7, 2017, 10:44 a.m. UTC | #5
Hello,

On Fri, 7 Apr 2017 12:35:09 +0200, Arnout Vandecappelle wrote:

>  I'm working on updating autobuild-run. Unfortunately it's a bit difficult to
> test changes in that script, e.g. removing the condition on BR2_STATIC_LIBS. I
> basically have to wait until the script hits a glibc toolchain to see if it
> works correctly. Can you think of any way to speed that up?

For this sort of situation, I was editing the CSV file to keep only the
one toolchain I'm interested in. Or alternatively, hacking the function
that chooses the toolchain to always pick up the one I'm interested in.

Thomas
diff mbox

Patch

diff --git a/support/scripts/test-pkg b/support/scripts/test-pkg
index 67f88ec380..f86d266e6a 100755
--- a/support/scripts/test-pkg
+++ b/support/scripts/test-pkg
@@ -1,7 +1,7 @@ 
 #!/bin/bash
 set -e
 
-TOOLCHAINS_URL='http://autobuild.buildroot.org/toolchains/configs/toolchain-configs.csv'
+TOOLCHAINS_DIR=configs/autobuild
 
 main() {
     local o O opts
@@ -47,11 +47,10 @@  main() {
         dir="${HOME}/br-test-pkg"
     fi
 
-    # Extract the URLs of the toolchains; drop internal toolchains
-    # E.g.: http://server/path/to/name.config,arch,libc
-    #  -->  http://server/path/to/name.config
-    toolchains=($(curl -s "${TOOLCHAINS_URL}" \
-                  |sed -r -e 's/,.*//; /internal/d;' \
+    # Find external toolchains
+    # shellcheck disable=SC2011
+    toolchains=($(ls -1 "${TOOLCHAINS_DIR}"/*_defconfig \
+                  |xargs -r grep -l -F -x "BR2_TOOLCHAIN_EXTERNAL=y" \
                   |if [ ${random} -gt 0 ]; then \
                       sort -R |head -n ${random}
                    else
@@ -62,7 +61,7 @@  main() {
 
     nb_tc="${#toolchains[@]}"
     if [ ${nb_tc} -eq 0 ]; then
-        printf "error: no toolchain found (networking issue?)\n" >&2; exit 1
+        printf "error: no toolchain found\n" >&2; exit 1
     fi
 
     nb=0
@@ -72,7 +71,7 @@  main() {
     for toolchainconfig in "${toolchains[@]}"; do
         : $((nb++))
         # Using basename(1) on a URL works nicely
-        toolchain="$(basename "${toolchainconfig}" .config)"
+        toolchain="$(basename "${toolchainconfig}" _defconfig)"
         build_dir="${dir}/${toolchain}"
         mkdir -p "${build_dir}"
         printf "%40s [%*d/%d]: " "${toolchain}" ${#nb_tc} ${nb} ${nb_tc}
@@ -91,15 +90,11 @@  main() {
 
 build_one() {
     local dir="${1}"
-    local url="${2}"
+    local toolchainconfig="${2}"
     local cfg="${3}"
     local pkg="${4}"
 
-    if ! curl -s "${url}" >"${dir}/.config"; then
-        return 2
-    fi
-
-    cat "support/misc/minimal.config" "${cfg}" >>"${dir}/.config"
+    cat "${toolchainconfig}" "support/misc/minimal.config" "${cfg}" >>"${dir}/.config"
 
     if ! make O="${dir}" olddefconfig > "${dir}/logfile" 2>&1; then
         return 2
@@ -151,8 +146,10 @@  In case failures are noticed, you can fix the package and just re-run the
 same command again; it will re-run the test where it failed. If you did
 specify a package (with -p), the package build dir will be removed first.
 
-The list of toolchains is retrieved from the Buildroot autobuilders, available
-at ${TOOLCHAINS_URL}.
+The toolchains to try are retrieved from ${TOOLCHAINS_DIR}. This directory
+contains a defconfig file for each toolchain configuration used by the
+autobuilders. Only the external toolchains are tried, because building a
+Buildroot toolchain would take too long.
 
 Options: