Skip to contentSkip to conversation

support/test-pkg: fixes and enhancements + add autobuild defconfigs

PATCH Superseded Arnout Vandecappelle (Essensium/Mind) 3 participants 25 messages Apr 6, 2017 – Apr 7, 2017 Kbuild

v5 of 6 Superseded Latest is v6 →

lore
Share & tools
lore
#0 lore raw

v5 cover support/test-pkg: fixes and enhancements + add autobuild defconfigs

Hi all,

This series combines the test-pkg rework from Yann [1] with my adding the
autobuild toolchain defconfigs in-tree [2]. The two series are combined because I added a patch that makes test-pkg use the in-tree autobuild defconfigs instead of fetching them from [3], so the two series conflict with each other.

Since the defconfigs are now in-tree, there is no toolchain URL anymore,
so adding the option to specify an alternate URL [4] doesn't make much sense. It is replaced with an option to specify an alternate toolchain directory.

Finally, I added some further enhancement (refactoring) patches:
- moving the minimal config fragment into a separate file;
- using merge_config.sh (which requires two preparatory patches). These can be applied more or less independently.

Regards,
Arnout

[1] http://patchwork.ozlabs.org/patch/728392/
[2] http://patchwork.ozlabs.org/patch/743573/
[3] http://autobuild.buildroot.org/toolchains/configs/toolchain-configs.csv
[4] http://patchwork.ozlabs.org/patch/728393/

The following changes since commit 9a521546ed553d2be23740bbf1a7aa05bce9eb09:

libnspr: use __nios2__ instead of nios2 (2017-04-06 16:13:52 +0200)

are available in the git repository at:

https://gitlab.com/arnout/buildroot toolchain-defconfigs

for you to fetch changes up to 698b2328063f47c75ed2d298cf378a2afd41ac37:

[RFC] list-defconfigs: support defconfigs in subdirectories (2017-04-06 20:12:49 +0200)

----------------------------------------------------------------
Arnout Vandecappelle (9):
Makefile: support defconfigs in subdirectories
configs: add autobuild toolchain defconfigs support/test-pkg: move minimal.config into a separate file support/test-pkg: get configs from buildroot defconfigs support/test-pkg: add option to use an alternate toolchain directory
Makefile: refactor *config targets
Makefile: add alldefconfig target
support/test-pkg: use merge_config.sh to merge the fragments [RFC] list-defconfigs: support defconfigs in subdirectories

Yann E. MORIN (4):
docs/manual: document the test-pkg script support/test-pkg: print number of toolchains and progress support/test-pkg: calculate toolchain name only once support/test-pkg: run legal-info

 Makefile                                           |  82 ++++++----------
 .../autobuild/armv5-ctng-linux-gnueabi_defconfig   |  10 ++
 .../autobuild/armv7-ctng-linux-gnueabihf_defconfig |  13 +++
 configs/autobuild/br-aarch64-glibc_defconfig       |   9 ++
 configs/autobuild/br-arc-full-internal_defconfig   |   3 +
 configs/autobuild/br-arcle-hs38_defconfig          |  10 ++
 configs/autobuild/br-arm-basic_defconfig           |   8 ++
 configs/autobuild/br-arm-cortex-a9-glibc_defconfig |  11 +++
 configs/autobuild/br-arm-cortex-a9-musl_defconfig  |  11 +++
 configs/autobuild/br-arm-cortex-m4-full_defconfig  |  12 +++
 configs/autobuild/br-arm-full-nothread_defconfig   |  11 +++
 configs/autobuild/br-arm-full-static_defconfig     |  11 +++
 configs/autobuild/br-arm-full_defconfig            |  10 ++
 configs/autobuild/br-arm-internal-full_defconfig   |   6 ++
 configs/autobuild/br-bfin-full_defconfig           |  12 +++
 .../autobuild/br-i386-pentium-mmx-musl_defconfig   |  10 ++
 configs/autobuild/br-i386-pentium4-full_defconfig  |  10 ++
 configs/autobuild/br-m68k-5208-full_defconfig      |  11 +++
 configs/autobuild/br-m68k-68040-full_defconfig     |  10 ++
 .../br-microblazeel-full-internal_defconfig        |   1 +
 configs/autobuild/br-microblazeel-full_defconfig   |  10 ++
 .../autobuild/br-mips32r6-el-hf-glibc_defconfig    |  11 +++
 configs/autobuild/br-mips64-n64-full_defconfig     |  10 ++
 .../autobuild/br-mips64r6-el-hf-glibc_defconfig    |  12 +++
 configs/autobuild/br-mipsel-o32-full_defconfig     |  10 ++
 configs/autobuild/br-nios2-glibc_defconfig         |   9 ++
 configs/autobuild/br-openrisc-uclibc_defconfig     |  10 ++
 .../autobuild/br-powerpc-603e-basic-cpp_defconfig  |  10 ++
 configs/autobuild/br-powerpc-e500mc-full_defconfig |  11 +++
 .../autobuild/br-powerpc-internal-full_defconfig   |   5 +
 .../autobuild/br-powerpc64-power7-glibc_defconfig  |   9 ++
 .../br-powerpc64le-power8-glibc_defconfig          |   9 ++
 configs/autobuild/br-sh4-full_defconfig            |  10 ++
 configs/autobuild/br-sparc-uclibc_defconfig        |   9 ++
 configs/autobuild/br-sparc64-glibc_defconfig       |   8 ++
 configs/autobuild/br-x86-64-core2-full_defconfig   |  11 +++
 configs/autobuild/br-x86-64-musl_defconfig         |  10 ++
 .../autobuild/br-xtensa-full-internal_defconfig    |   4 +
 configs/autobuild/br-xtensa-full_defconfig         |   9 ++
 configs/autobuild/i686-ctng-linux-gnu_defconfig    |  10 ++
 configs/autobuild/linaro-aarch64_defconfig         |   2 +
 configs/autobuild/linaro-arm_defconfig             |   4 +
 .../mips64el-ctng_n32-linux-gnu_defconfig          |   9 ++
 .../mips64el-ctng_n64-linux-gnu_defconfig          |  11 +++
 .../powerpc-ctng_e500v2-linux-gnuspe_defconfig     |  11 +++
 configs/autobuild/sourcery-arm-armv4t_defconfig    |   4 +
 configs/autobuild/sourcery-arm-thumb2_defconfig    |   6 ++
 configs/autobuild/sourcery-arm_defconfig           |   3 +
 configs/autobuild/sourcery-mips64_defconfig        |   5 +
 configs/autobuild/sourcery-mips_defconfig          |   4 +
 configs/autobuild/sourcery-nios2_defconfig         |   2 +
 configs/autobuild/sourcery-sh_defconfig            |   4 +
 configs/autobuild/sourcery-x86-64_defconfig        |   4 +
 configs/autobuild/sourcery-x86_defconfig           |   3 +
 .../x86_64-ctng_locales-linux-gnu_defconfig        |  11 +++
 docs/manual/adding-packages-tips.txt               |  94 +++++++++++++++++++
 docs/manual/adding-packages.txt                    |   3 +
 support/misc/minimal.config                        |   6 ++
 support/scripts/test-pkg                           | 104 +++++++++++----------
 59 files changed, 636 insertions(+), 102 deletions(-)
 create mode 100644 configs/autobuild/armv5-ctng-linux-gnueabi_defconfig
 create mode 100644 configs/autobuild/armv7-ctng-linux-gnueabihf_defconfig
 create mode 100644 configs/autobuild/br-aarch64-glibc_defconfig
 create mode 100644 configs/autobuild/br-arc-full-internal_defconfig
 create mode 100644 configs/autobuild/br-arcle-hs38_defconfig
 create mode 100644 configs/autobuild/br-arm-basic_defconfig
 create mode 100644 configs/autobuild/br-arm-cortex-a9-glibc_defconfig
 create mode 100644 configs/autobuild/br-arm-cortex-a9-musl_defconfig
 create mode 100644 configs/autobuild/br-arm-cortex-m4-full_defconfig
 create mode 100644 configs/autobuild/br-arm-full-nothread_defconfig
 create mode 100644 configs/autobuild/br-arm-full-static_defconfig
 create mode 100644 configs/autobuild/br-arm-full_defconfig
 create mode 100644 configs/autobuild/br-arm-internal-full_defconfig
 create mode 100644 configs/autobuild/br-bfin-full_defconfig
 create mode 100644 configs/autobuild/br-i386-pentium-mmx-musl_defconfig
 create mode 100644 configs/autobuild/br-i386-pentium4-full_defconfig
 create mode 100644 configs/autobuild/br-m68k-5208-full_defconfig
 create mode 100644 configs/autobuild/br-m68k-68040-full_defconfig
 create mode 100644 configs/autobuild/br-microblazeel-full-internal_defconfig
 create mode 100644 configs/autobuild/br-microblazeel-full_defconfig
 create mode 100644 configs/autobuild/br-mips32r6-el-hf-glibc_defconfig
 create mode 100644 configs/autobuild/br-mips64-n64-full_defconfig
 create mode 100644 configs/autobuild/br-mips64r6-el-hf-glibc_defconfig
 create mode 100644 configs/autobuild/br-mipsel-o32-full_defconfig
 create mode 100644 configs/autobuild/br-nios2-glibc_defconfig
 create mode 100644 configs/autobuild/br-openrisc-uclibc_defconfig
 create mode 100644 configs/autobuild/br-powerpc-603e-basic-cpp_defconfig
 create mode 100644 configs/autobuild/br-powerpc-e500mc-full_defconfig
 create mode 100644 configs/autobuild/br-powerpc-internal-full_defconfig
 create mode 100644 configs/autobuild/br-powerpc64-power7-glibc_defconfig
 create mode 100644 configs/autobuild/br-powerpc64le-power8-glibc_defconfig
 create mode 100644 configs/autobuild/br-sh4-full_defconfig
 create mode 100644 configs/autobuild/br-sparc-uclibc_defconfig
 create mode 100644 configs/autobuild/br-sparc64-glibc_defconfig
 create mode 100644 configs/autobuild/br-x86-64-core2-full_defconfig
 create mode 100644 configs/autobuild/br-x86-64-musl_defconfig
 create mode 100644 configs/autobuild/br-xtensa-full-internal_defconfig
 create mode 100644 configs/autobuild/br-xtensa-full_defconfig
 create mode 100644 configs/autobuild/i686-ctng-linux-gnu_defconfig
 create mode 100644 configs/autobuild/linaro-aarch64_defconfig
 create mode 100644 configs/autobuild/linaro-arm_defconfig
 create mode 100644 configs/autobuild/mips64el-ctng_n32-linux-gnu_defconfig
 create mode 100644 configs/autobuild/mips64el-ctng_n64-linux-gnu_defconfig
 create mode 100644 configs/autobuild/powerpc-ctng_e500v2-linux-gnuspe_defconfig
 create mode 100644 configs/autobuild/sourcery-arm-armv4t_defconfig
 create mode 100644 configs/autobuild/sourcery-arm-thumb2_defconfig
 create mode 100644 configs/autobuild/sourcery-arm_defconfig
 create mode 100644 configs/autobuild/sourcery-mips64_defconfig
 create mode 100644 configs/autobuild/sourcery-mips_defconfig
 create mode 100644 configs/autobuild/sourcery-nios2_defconfig
 create mode 100644 configs/autobuild/sourcery-sh_defconfig
 create mode 100644 configs/autobuild/sourcery-x86-64_defconfig
 create mode 100644 configs/autobuild/sourcery-x86_defconfig
 create mode 100644 configs/autobuild/x86_64-ctng_locales-linux-gnu_defconfig
 create mode 100644 support/misc/minimal.config
Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
#1 lore raw

PATCH v5 1/13 docs/manual: document the test-pkg script

From: "Yann E. MORIN" <[email protected]>

---
Changes v4 -> v5:
Yann:
- enhance the description for SKIPPED (Thomas)
- typoes (Thomas)
Arnout:
- additional fixes of typing and wording

---
 docs/manual/adding-packages-tips.txt | 93 ++++++++++++++++++++++++++++++++++++
 docs/manual/adding-packages.txt      |  3 ++
 2 files changed, 96 insertions(+)
docs/manual/adding-packages-tips.txt +93 -0
index 896be00b36..09cf9d437f 100644
@@ -32,6 +32,99 @@ using the following rules:
   with `.` and `-` characters substituted with `_` (e.g.:
   +FOO_BAR_BOO_VERSION+).
 
+[[testing-package]]
+==== How to test your package
+
+Once you have added your new package, it is important that you test it
+under various conditions: does it build for all architectures? Does it
+build with the different C libraries? Does it need threads, NPTL? And
+so on...
+
+Buildroot runs http://autobuild.buildroot.org/[autobuilders] which
+continuously test random configurations. However, these only build the
+`master` branch of the git tree, and your new fancy package is not yet
+there.
+
+Buildroot provides a script in +support/scripts/test-pkg+ that uses the
+same base configurations as used by the autobuilders so you can test
+your package in the same conditions.
+
+First, create a config snippet that contains all the necessary options
+needed to enable your package, but without any architecture or toolchain
+option. For example, let's create a config snippet that just enables
++libcurl+, without any TLS backend:
+
+----
+$ cat libcurl.config
+BR2_PACKAGE_LIBCURL=y
+----
+
+If your package needs more configuration options, you can add them to the
+config snippet. For example, here's how you would test +libcurl+ with
++openssl+ as a TLS backend and the +curl+ program:
+
+----
+$ cat libcurl.config
+BR2_PACKAGE_LIBCURL=y
+BR2_PACKAGE_CURL=y
+BR2_PACKAGE_OPENSSL=y
+----
+
+Then run the +test-pkg+ script, by telling it what config snippet to use
+and what package to test:
+
+----
+$ ./support/scripts/test-pkg -c libcurl.config -p libcurl
+----
+
+This will try to build your package against all the toolchains used
+by the autobuilders (except for the internal toolchains, because it takes
+too long to do so). The output lists all toolchains and the corresponding
+result (excerpt, results are fake):
+
+----
+$ ./support/scripts/test-pkg -c libcurl.config -p libcurl
+                armv5-ctng-linux-gnueabi: OK
+              armv7-ctng-linux-gnueabihf: OK
+                        br-aarch64-glibc: SKIPPED
+                           br-arcle-hs38: SKIPPED
+                            br-arm-basic: FAILED
+                  br-arm-cortex-a9-glibc: OK
+                   br-arm-cortex-a9-musl: FAILED
+                   br-arm-cortex-m4-full: OK
+                             br-arm-full: OK
+                    br-arm-full-nothread: OK
+                      br-arm-full-static: OK
+11 builds, 2 skipped, 2 failed
+----
+
+The results mean:
+
+* `OK`: the build was successful.
+* `SKIPPED`: one or more configuration options listed in the config
+  snippet were not present in the final configuration. This is due to
+  options having dependencies not satisfied by the toolchain, such as
+  for example a package that +depends on BR2_USE_MMU+ with a noMMU
+  toolchain. The missing options are reported in +config.missing+ in
+  the output build directory (+~/br-test-pkg/TOOLCHAIN_NAME/+ by
+  default).
+* `FAILED`: the build failed. Inspect the +logfile+ file in the output
+  build  directory to see what went wrong:
+** the actual build failed,
+** one of the preliminary steps (downloading the config file, applying
+   the configuration, running `dirclean` for the package) failed.
+
+When there are failures, you can just re-run the script with the same
+options (after you fixed your package); the script will attempt to
+re-build the package specified with +-p+ for all toolchains, without
+the need to re-build all the dependencies of that package.
+
+The +test-pkg+ script accepts a few options, for which you can get some
+help by running:
+
+----
+$ ./support/scripts/test-pkg -h
+----
 
 [[github-download-url]]
 ==== How to add a package from GitHub
docs/manual/adding-packages.txt +3 -0
index 4595991f0d..d577ff030e 100644
@@ -9,6 +9,9 @@ applications) can be integrated into Buildroot. It also shows how
 existing packages are integrated, which is needed for fixing issues or
 tuning their configuration.
 
+When you add a new package, be sure to test it in various conditions;
+see xref:testing-package[]
+
 include::adding-packages-directory.txt[]
 
 include::adding-packages-generic.txt[]
Signature · 1 line
2.11.0
#2 lore raw

PATCH v5 1/13 docs/manual: document the test-pkg script

Hello,

Quoted 11 lines · Arnout Vandecappelle (Essensium/Mind)

From: "Yann E. MORIN" <[email protected]>

---
Changes v4 -> v5:
Yann:
- enhance the description for SKIPPED (Thomas)
- typoes (Thomas)
Arnout:
- additional fixes of typing and wording

Quoted 4 lines
---
 docs/manual/adding-packages-tips.txt | 93 ++++++++++++++++++++++++++++++++++++
 docs/manual/adding-packages.txt      |  3 ++
 2 files changed, 96 insertions(+)

Applied to master, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#3 lore raw

PATCH v5 2/13 support/test-pkg: print number of toolchains and progress

In reply to Arnout Vandecappelle (Essensium/Mind)

From: "Yann E. MORIN" <[email protected]>

---
Changes v4 -> v5 by Arnout:
- toolchain -> toolchains in commit message
- rebase

---
 docs/manual/adding-packages-tips.txt | 22 +++++++++++-----------
 support/scripts/test-pkg             | 24 +++++++++---------------
 2 files changed, 20 insertions(+), 26 deletions(-)
docs/manual/adding-packages-tips.txt +11 -11
index 09cf9d437f..e1f6986724 100644
@@ -84,17 +84,17 @@ result (excerpt, results are fake):
 
 ----
 $ ./support/scripts/test-pkg -c libcurl.config -p libcurl
-                armv5-ctng-linux-gnueabi: OK
-              armv7-ctng-linux-gnueabihf: OK
-                        br-aarch64-glibc: SKIPPED
-                           br-arcle-hs38: SKIPPED
-                            br-arm-basic: FAILED
-                  br-arm-cortex-a9-glibc: OK
-                   br-arm-cortex-a9-musl: FAILED
-                   br-arm-cortex-m4-full: OK
-                             br-arm-full: OK
-                    br-arm-full-nothread: OK
-                      br-arm-full-static: OK
+                armv5-ctng-linux-gnueabi [ 1/11]: OK
+              armv7-ctng-linux-gnueabihf [ 2/11]: OK
+                        br-aarch64-glibc [ 3/11]: SKIPPED
+                           br-arcle-hs38 [ 4/11]: SKIPPED
+                            br-arm-basic [ 5/11]: FAILED
+                  br-arm-cortex-a9-glibc [ 6/11]: OK
+                   br-arm-cortex-a9-musl [ 7/11]: FAILED
+                   br-arm-cortex-m4-full [ 8/11]: OK
+                             br-arm-full [ 9/11]: OK
+                    br-arm-full-nothread [10/11]: OK
+                      br-arm-full-static [11/11]: OK
 11 builds, 2 skipped, 2 failed
 ----
 
support/scripts/test-pkg +9 -15
index 0e7779de49..f9f994402d 100755
@@ -6,7 +6,7 @@ TOOLCHAINS_URL='http://autobuild.buildroot.org/toolchains/configs/toolchain-conf
 main() {
     local o O opts
     local cfg dir pkg random toolchain
-    local ret nb nb_skip nb_fail
+    local ret nb nb_skip nb_fail nb_tc
     local -a toolchains
 
     o='hc:d:p:r:'
@@ -60,7 +60,8 @@ main() {
                  )
                )
 
-    if [ ${#toolchains[@]} -eq 0 ]; then
+    nb_tc="${#toolchains[@]}"
+    if [ ${nb_tc} -eq 0 ]; then
         printf "error: no toolchain found (networking issue?)\n" >&2; exit 1
     fi
 
@@ -68,13 +69,15 @@ main() {
     nb_skip=0
     nb_fail=0
     for toolchain in "${toolchains[@]}"; do
+        : $((nb++))
+        printf "%40s [%*d/%d]: " "$(basename "${toolchain}" .config)" \
+                                 ${#nb_tc} ${nb} ${nb_tc}
         build_one "${dir}" "${toolchain}" "${cfg}" "${pkg}" && ret=0 || ret=${?}
         case ${ret} in
-        (0) ;;
-        (1) : $((nb_skip++));;
-        (2) : $((nb_fail++));;
+        (0) printf "OK\n";;
+        (1) : $((nb_skip++)); printf "SKIPPED\n";;
+        (2) : $((nb_fail++)); printf "FAILED\n";;
         esac
-        : $((nb++))
     done
 
     printf "%d builds, %d skipped, %d failed\n" ${nb} ${nb_skip} ${nb_fail}
@@ -90,13 +93,10 @@ build_one() {
     # Using basename(1) on a URL works nicely
     toolchain="$(basename "${url}" .config)"
 
-    printf "%40s: " "${toolchain}"
-
     dir="${dir}/${toolchain}"
     mkdir -p "${dir}"
 
     if ! curl -s "${url}" >"${dir}/.config"; then
-        printf "FAILED\n"
         return 2
     fi
 
@@ -109,7 +109,6 @@ build_one() {
     cat "${cfg}" >>"${dir}/.config"
 
     if ! make O="${dir}" olddefconfig > "${dir}/logfile" 2>&1; then
-        printf "FAILED\n"
         return 2
     fi
     # We want all the options from the snippet to be present as-is (set
@@ -120,7 +119,6 @@ build_one() {
     # done in the same locale.
     comm -23 <(sort "${cfg}") <(sort "${dir}/.config") >"${dir}/missing.config"
     if [ -s "${dir}/missing.config" ]; then
-        printf "SKIPPED\n"
         return 1
     fi
     # Remove file, it's empty anyway.
@@ -128,18 +126,14 @@ build_one() {
 
     if [ -n "${pkg}" ]; then
         if ! make O="${dir}" "${pkg}-dirclean" >> "${dir}/logfile" 2>&1; then
-            printf "FAILED\n"
             return 2
         fi
     fi
 
     # shellcheck disable=SC2086
     if ! make O="${dir}" ${pkg} >> "${dir}/logfile" 2>&1; then
-        printf "FAILED\n"
         return 2
     fi
-
-    printf "OK\n"
 }
 
 help() {
Signature · 1 line
2.11.0
#4 lore raw

PATCH v5 2/13 support/test-pkg: print number of toolchains and progress

Hello,

Quoted 5 lines · Arnout Vandecappelle (Essensium/Mind)

From: "Yann E. MORIN" <[email protected]>

Quoted 8 lines

---
Changes v4 -> v5 by Arnout:
- toolchain -> toolchains in commit message
- rebase

---
 docs/manual/adding-packages-tips.txt | 22 +++++++++++-----------
 support/scripts/test-pkg             | 24 +++++++++---------------
 2 files changed, 20 insertions(+), 26 deletions(-)

Applied to master, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#5 lore raw

PATCH v5 3/13 support/test-pkg: calculate toolchain name only once

In reply to Arnout Vandecappelle (Essensium/Mind)

From: "Yann E. MORIN" <[email protected]>

The toolchain name was calculated in main() for reporting to the user, and again in build_one() for creating the build directory. Calculate it only once, in main(), and pass the build directory as an argument to build_one().

---
I'm not sure why the mkdir is also moved up to main() - IMO, it fits better in build_one(). Yann, the original commit message was just "create build dir from caller", any reason _why_ you did that?

Changes v4 -> v5 by Arnout:
- Reword commit message
- Reorder patch series

---
 support/scripts/test-pkg | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)
support/scripts/test-pkg +8 -12
index f9f994402d..27601168b1 100755
@@ -6,7 +6,7 @@ TOOLCHAINS_URL='http://autobuild.buildroot.org/toolchains/configs/toolchain-conf
 main() {
     local o O opts
     local cfg dir pkg random toolchain
-    local ret nb nb_skip nb_fail nb_tc
+    local ret nb nb_skip nb_fail nb_tc build_dir
     local -a toolchains
 
     o='hc:d:p:r:'
@@ -68,11 +68,14 @@ main() {
     nb=0
     nb_skip=0
     nb_fail=0
-    for toolchain in "${toolchains[@]}"; do
+    for toolchainconfig in "${toolchains[@]}"; do
         : $((nb++))
-        printf "%40s [%*d/%d]: " "$(basename "${toolchain}" .config)" \
-                                 ${#nb_tc} ${nb} ${nb_tc}
-        build_one "${dir}" "${toolchain}" "${cfg}" "${pkg}" && ret=0 || ret=${?}
+        # Using basename(1) on a URL works nicely
+        toolchain="$(basename "${toolchainconfig}" .config)"
+        build_dir="${dir}/${toolchain}"
+        mkdir -p "${build_dir}"
+        printf "%40s [%*d/%d]: " "${toolchain}" ${#nb_tc} ${nb} ${nb_tc}
+        build_one "${build_dir}" "${toolchainconfig}" "${cfg}" "${pkg}" && ret=0 || ret=${?}
         case ${ret} in
         (0) printf "OK\n";;
         (1) : $((nb_skip++)); printf "SKIPPED\n";;
@@ -88,13 +91,6 @@ build_one() {
     local url="${2}"
     local cfg="${3}"
     local pkg="${4}"
-    local toolchain
-
-    # Using basename(1) on a URL works nicely
-    toolchain="$(basename "${url}" .config)"
-
-    dir="${dir}/${toolchain}"
-    mkdir -p "${dir}"
 
     if ! curl -s "${url}" >"${dir}/.config"; then
         return 2
Signature · 1 line
2.11.0
#6 lore raw

PATCH v5 3/13 support/test-pkg: calculate toolchain name only once

Arnout, All,

On 2017-04-06 20:18 +0200, Arnout Vandecappelle (Essensium/Mind) spake thusly:

Quoted 7 lines

From: "Yann E. MORIN" <[email protected]>

The toolchain name was calculated in main() for reporting to the user, and again in build_one() for creating the build directory. Calculate it only once, in main(), and pass the build directory as an argument to build_one().

Quoted 6 lines

---
I'm not sure why the mkdir is also moved up to main() - IMO, it fits better in build_one(). Yann, the original commit message was just "create build dir from caller", any reason _why_ you did that?

Because when I initially did the legal-info step, it was in a spearate function, not in build_one, so it looked more logicial to create the directory in main().

But now it is not really meaningful anymore, indeed...

Regards,
Yann E. MORIN.

Quoted 56 lines

Changes v4 -> v5 by Arnout:
- Reword commit message
- Reorder patch series

---
 support/scripts/test-pkg | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)
support/scripts/test-pkg +8 -12
index f9f994402d..27601168b1 100755
@@ -6,7 +6,7 @@ TOOLCHAINS_URL='http://autobuild.buildroot.org/toolchains/configs/toolchain-conf
 main() {
     local o O opts
     local cfg dir pkg random toolchain
-    local ret nb nb_skip nb_fail nb_tc
+    local ret nb nb_skip nb_fail nb_tc build_dir
     local -a toolchains
 
     o='hc:d:p:r:'
@@ -68,11 +68,14 @@ main() {
     nb=0
     nb_skip=0
     nb_fail=0
-    for toolchain in "${toolchains[@]}"; do
+    for toolchainconfig in "${toolchains[@]}"; do
         : $((nb++))
-        printf "%40s [%*d/%d]: " "$(basename "${toolchain}" .config)" \
-                                 ${#nb_tc} ${nb} ${nb_tc}
-        build_one "${dir}" "${toolchain}" "${cfg}" "${pkg}" && ret=0 || ret=${?}
+        # Using basename(1) on a URL works nicely
+        toolchain="$(basename "${toolchainconfig}" .config)"
+        build_dir="${dir}/${toolchain}"
+        mkdir -p "${build_dir}"
+        printf "%40s [%*d/%d]: " "${toolchain}" ${#nb_tc} ${nb} ${nb_tc}
+        build_one "${build_dir}" "${toolchainconfig}" "${cfg}" "${pkg}" && ret=0 || ret=${?}
         case ${ret} in
         (0) printf "OK\n";;
         (1) : $((nb_skip++)); printf "SKIPPED\n";;
@@ -88,13 +91,6 @@ build_one() {
     local url="${2}"
     local cfg="${3}"
     local pkg="${4}"
-    local toolchain
-
-    # Using basename(1) on a URL works nicely
-    toolchain="$(basename "${url}" .config)"
-
-    dir="${dir}/${toolchain}"
-    mkdir -p "${dir}"
 
     if ! curl -s "${url}" >"${dir}/.config"; then
         return 2
Signature · 1 line
2.11.0
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#7 lore raw

PATCH v5 3/13 support/test-pkg: calculate toolchain name only once

Quoted 17 lines · Yann E. MORIN

Arnout, All,

On 2017-04-06 20:18 +0200, Arnout Vandecappelle (Essensium/Mind) spake thusly:

Quoted 7 lines

From: "Yann E. MORIN" <[email protected]>

The toolchain name was calculated in main() for reporting to the user, and again in build_one() for creating the build directory. Calculate it only once, in main(), and pass the build directory as an argument to build_one().

Quoted 6 lines

---
I'm not sure why the mkdir is also moved up to main() - IMO, it fits better in build_one(). Yann, the original commit message was just "create build dir from caller", any reason _why_ you did that?

Quoted 5 lines

Because when I initially did the legal-info step, it was in a spearate function, not in build_one, so it looked more logicial to create the directory in main().

But now it is not really meaningful anymore, indeed...

OK, in v6 it will move back down into build_one.

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
#8 lore raw

PATCH v5 4/13 support/test-pkg: run legal-info

In reply to Arnout Vandecappelle (Essensium/Mind)

From: "Yann E. MORIN" <[email protected]>

---
Changes v4 -> v5 by Arnout:
- Reorder patch series

---
 docs/manual/adding-packages-tips.txt |  5 +++--
 support/scripts/test-pkg             | 15 +++++++++++++--
 2 files changed, 16 insertions(+), 4 deletions(-)
docs/manual/adding-packages-tips.txt +3 -2
index e1f6986724..d1eab2b440 100644
@@ -93,9 +93,9 @@ $ ./support/scripts/test-pkg -c libcurl.config -p libcurl
                    br-arm-cortex-a9-musl [ 7/11]: FAILED
                    br-arm-cortex-m4-full [ 8/11]: OK
                              br-arm-full [ 9/11]: OK
-                    br-arm-full-nothread [10/11]: OK
+                    br-arm-full-nothread [10/11]: FAILED
                       br-arm-full-static [11/11]: OK
-11 builds, 2 skipped, 2 failed
+11 builds, 2 skipped, 2 build failed, 1 legal-info failed
 ----
 
 The results mean:
@@ -111,6 +111,7 @@ The results mean:
 * `FAILED`: the build failed. Inspect the +logfile+ file in the output
   build  directory to see what went wrong:
 ** the actual build failed,
+** the legal-info failed,
 ** one of the preliminary steps (downloading the config file, applying
    the configuration, running `dirclean` for the package) failed.
 
support/scripts/test-pkg +13 -2
index 27601168b1..0d093e8c2f 100755
@@ -6,7 +6,7 @@ TOOLCHAINS_URL='http://autobuild.buildroot.org/toolchains/configs/toolchain-conf
 main() {
     local o O opts
     local cfg dir pkg random toolchain
-    local ret nb nb_skip nb_fail nb_tc build_dir
+    local ret nb nb_skip nb_fail nb_legal nb_tc build_dir
     local -a toolchains
 
     o='hc:d:p:r:'
@@ -68,6 +68,7 @@ main() {
     nb=0
     nb_skip=0
     nb_fail=0
+    nb_legal=0
     for toolchainconfig in "${toolchains[@]}"; do
         : $((nb++))
         # Using basename(1) on a URL works nicely
@@ -80,10 +81,12 @@ main() {
         (0) printf "OK\n";;
         (1) : $((nb_skip++)); printf "SKIPPED\n";;
         (2) : $((nb_fail++)); printf "FAILED\n";;
+        (3) : $((nb_legal++)); printf "FAILED\n";;
         esac
     done
 
-    printf "%d builds, %d skipped, %d failed\n" ${nb} ${nb_skip} ${nb_fail}
+    printf "%d builds, %d skipped, %d build failed, %d legal-info failed\n" \
+        ${nb} ${nb_skip} ${nb_fail} ${nb_legal}
 }
 
 build_one() {
@@ -130,6 +133,14 @@ build_one() {
     if ! make O="${dir}" ${pkg} >> "${dir}/logfile" 2>&1; then
         return 2
     fi
+
+    # legal-info done systematically, because some packages have different
+    # sources depending on the configuration (e.g. lua-5.2 vs. lua-5.3)
+    if [ -n "${pkg}" ]; then
+        if ! make O="${dir}" "${pkg}-legal-info" >> "${dir}/logfile" 2>&1; then
+            return 3
+        fi
+    fi
 }
 
 help() {
Signature · 1 line
2.11.0
#9 lore raw

PATCH v5 5/13 Makefile: support defconfigs in subdirectories

In reply to Arnout Vandecappelle (Essensium/Mind)

The pattern rule %_defconfig doesn't support a pattern that includes a / because of the following weird make behavior. From the GNU make info page:

When the target pattern does not contain a slash (and it usually does not), directory names in the file names are removed from the file name before it is compared with the target prefix and suffix. After the comparison of the file name to the target pattern, the directory names, along with the slash that ends them, are added on to the prerequisite file names generated from the pattern rule's prerequisite patterns and the file name.

In other words, foo/bar_defconfig would depend on foo/configs/bar_defconfig instead of configs/foo/bar_defconfig.

As a workaround, introduce an intermediate target that does contain a / and where the pattern is at the beginning: %/.../defconfig. Since this target does contain a /, the weird splitting of the pattern doesn't occur and we can make that target depend on .../configs/%_defconfig.

It gets slightly more complicated still because chains of pattern rules only work if they all have commands. So we need to add a dummy command for the %_defconfig rule.

---
 Makefile | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)
Makefile +10 -3
index 941bf789c8..1d377099b2 100644
@@ -895,10 +895,17 @@ defconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
 	@$(COMMON_CONFIG_ENV) $< --defconfig$(if $(DEFCONFIG),=$(DEFCONFIG)) $(CONFIG_CONFIG_IN)
 
 define percent_defconfig
+# Introduce a phony intermediate target to handle / in the pattern.
+# make puts anything up to the / in the beginning if the target pattern doesn't
+# contain a /. Without the intermediate, foo/bar_defconfig would depend on
+# foo/$(1)/configs/bar_defconfig instead of $(1)/configs/foo/bar_defconfig.
+.PHONY: %$(1)/defconfig
+%_defconfig: %$(1)/defconfig
+	@: dummy command to make chain of phony targets work
 # Override the BR2_DEFCONFIG from COMMON_CONFIG_ENV with the new defconfig
-%_defconfig: $(BUILD_DIR)/buildroot-config/conf $(1)/configs/%_defconfig prepare-kconfig
-	@$$(COMMON_CONFIG_ENV) BR2_DEFCONFIG=$(1)/configs/$$@ \
-		$$< --defconfig=$(1)/configs/$$@ $$(CONFIG_CONFIG_IN)
+%$(1)/defconfig: $(BUILD_DIR)/buildroot-config/conf $(1)/configs/%_defconfig prepare-kconfig
+	@$$(COMMON_CONFIG_ENV) BR2_DEFCONFIG=$(1)/configs/$$*_defconfig \
+		$$< --defconfig=$(1)/configs/$$*_defconfig $$(CONFIG_CONFIG_IN)
 endef
 $(eval $(foreach d,$(call reverse,$(TOPDIR) $(BR2_EXTERNAL_DIRS)),$(call percent_defconfig,$(d))$(sep)))
 
Signature · 1 line
2.11.0
#10 lore raw

PATCH v5 6/13 configs: add autobuild toolchain defconfigs

In reply to Arnout Vandecappelle (Essensium/Mind)

We currently have a list of toolchain configurations that are used by the autobuilders at [1]. However, this makes it a little more difficult for people to use these configurations, and also to have a different list of configurations for different branches. For example if a new architecture is introduced, the 2017.02.x branch doesn't have support for this architecture yet so it shouldn't try to run those configs.

Therefore, include the autobuild defconfigs directly in Buildroot, so they can be branched together with the rest. To avoid polluting the configs/ directory too much, the autobuild defconfigs are kept in an "autobuild" subdirectory.

Generated with
wget -nd --no-parent --recursive http://autobuild.buildroot.net/toolchains/configs/
mmv '*.config' '#1_defconfig'

The toolchain CSV file [1] contained some additional information, but this information turns out not to be needed.

- The hostarch required by the toolchain binary. This is used by the autobuild script to avoid trying a toolchain that it cannot use. However, it is better that the autobuild script instead just checks if all the options specified in the toolchain config are still selected after creating a full config, like is done in the test-pkg script. That's much more robust against other things that might block a toolchain from being used.

- The libc used. This is used only for one thing: to let the autobuild script decide if it should try to enable BR2_STATIC_LIBS or not. However, that line can just be added unconditionally: for glibc toolchains, it will get removed again, no harm done.

[1] http://autobuild.buildroot.net/toolchains/configs/toolchain-configs.csv

---
v2: Refresh after rebuild of the br-* toolchains
Don't add HOSTARCH, it's not needed as explained above

Note: I choose to name them xxx_defconfig and put them under to configs directory so they can be used directly as a quick way to set up a build with an external toolchain. However, neither test-pkg nor autobuild-run will use them as _defconfig, so we could just as well call them *.config and put them under e.g. support/autobuild-toolchains. Let me know what you think.

---
 configs/autobuild/armv5-ctng-linux-gnueabi_defconfig        | 10 ++++++++++
 configs/autobuild/armv7-ctng-linux-gnueabihf_defconfig      | 13 +++++++++++++
 configs/autobuild/br-aarch64-glibc_defconfig                |  9 +++++++++
 configs/autobuild/br-arc-full-internal_defconfig            |  3 +++
 configs/autobuild/br-arcle-hs38_defconfig                   | 10 ++++++++++
 configs/autobuild/br-arm-basic_defconfig                    |  8 ++++++++
 configs/autobuild/br-arm-cortex-a9-glibc_defconfig          | 11 +++++++++++
 configs/autobuild/br-arm-cortex-a9-musl_defconfig           | 11 +++++++++++
 configs/autobuild/br-arm-cortex-m4-full_defconfig           | 12 ++++++++++++
 configs/autobuild/br-arm-full-nothread_defconfig            | 11 +++++++++++
 configs/autobuild/br-arm-full-static_defconfig              | 11 +++++++++++
 configs/autobuild/br-arm-full_defconfig                     | 10 ++++++++++
 configs/autobuild/br-arm-internal-full_defconfig            |  6 ++++++
 configs/autobuild/br-bfin-full_defconfig                    | 12 ++++++++++++
 configs/autobuild/br-i386-pentium-mmx-musl_defconfig        | 10 ++++++++++
 configs/autobuild/br-i386-pentium4-full_defconfig           | 10 ++++++++++
 configs/autobuild/br-m68k-5208-full_defconfig               | 11 +++++++++++
 configs/autobuild/br-m68k-68040-full_defconfig              | 10 ++++++++++
 configs/autobuild/br-microblazeel-full-internal_defconfig   |  1 +
 configs/autobuild/br-microblazeel-full_defconfig            | 10 ++++++++++
 configs/autobuild/br-mips32r6-el-hf-glibc_defconfig         | 11 +++++++++++
 configs/autobuild/br-mips64-n64-full_defconfig              | 10 ++++++++++
 configs/autobuild/br-mips64r6-el-hf-glibc_defconfig         | 12 ++++++++++++
 configs/autobuild/br-mipsel-o32-full_defconfig              | 10 ++++++++++
 configs/autobuild/br-nios2-glibc_defconfig                  |  9 +++++++++
 configs/autobuild/br-openrisc-uclibc_defconfig              | 10 ++++++++++
 configs/autobuild/br-powerpc-603e-basic-cpp_defconfig       | 10 ++++++++++
 configs/autobuild/br-powerpc-e500mc-full_defconfig          | 11 +++++++++++
 configs/autobuild/br-powerpc-internal-full_defconfig        |  5 +++++
 configs/autobuild/br-powerpc64-power7-glibc_defconfig       |  9 +++++++++
 configs/autobuild/br-powerpc64le-power8-glibc_defconfig     |  9 +++++++++
 configs/autobuild/br-sh4-full_defconfig                     | 10 ++++++++++
 configs/autobuild/br-sparc-uclibc_defconfig                 |  9 +++++++++
 configs/autobuild/br-sparc64-glibc_defconfig                |  8 ++++++++
 configs/autobuild/br-x86-64-core2-full_defconfig            | 11 +++++++++++
 configs/autobuild/br-x86-64-musl_defconfig                  | 10 ++++++++++
 configs/autobuild/br-xtensa-full-internal_defconfig         |  4 ++++
 configs/autobuild/br-xtensa-full_defconfig                  |  9 +++++++++
 configs/autobuild/i686-ctng-linux-gnu_defconfig             | 10 ++++++++++
 configs/autobuild/linaro-aarch64_defconfig                  |  2 ++
 configs/autobuild/linaro-arm_defconfig                      |  4 ++++
 configs/autobuild/mips64el-ctng_n32-linux-gnu_defconfig     |  9 +++++++++
 configs/autobuild/mips64el-ctng_n64-linux-gnu_defconfig     | 11 +++++++++++
 .../autobuild/powerpc-ctng_e500v2-linux-gnuspe_defconfig    | 11 +++++++++++
 configs/autobuild/sourcery-arm-armv4t_defconfig             |  4 ++++
 configs/autobuild/sourcery-arm-thumb2_defconfig             |  6 ++++++
 configs/autobuild/sourcery-arm_defconfig                    |  3 +++
 configs/autobuild/sourcery-mips64_defconfig                 |  5 +++++
 configs/autobuild/sourcery-mips_defconfig                   |  4 ++++
 configs/autobuild/sourcery-nios2_defconfig                  |  2 ++
 configs/autobuild/sourcery-sh_defconfig                     |  4 ++++
 configs/autobuild/sourcery-x86-64_defconfig                 |  4 ++++
 configs/autobuild/sourcery-x86_defconfig                    |  3 +++
 configs/autobuild/x86_64-ctng_locales-linux-gnu_defconfig   | 11 +++++++++++
 54 files changed, 449 insertions(+)
 create mode 100644 configs/autobuild/armv5-ctng-linux-gnueabi_defconfig
 create mode 100644 configs/autobuild/armv7-ctng-linux-gnueabihf_defconfig
 create mode 100644 configs/autobuild/br-aarch64-glibc_defconfig
 create mode 100644 configs/autobuild/br-arc-full-internal_defconfig
 create mode 100644 configs/autobuild/br-arcle-hs38_defconfig
 create mode 100644 configs/autobuild/br-arm-basic_defconfig
 create mode 100644 configs/autobuild/br-arm-cortex-a9-glibc_defconfig
 create mode 100644 configs/autobuild/br-arm-cortex-a9-musl_defconfig
 create mode 100644 configs/autobuild/br-arm-cortex-m4-full_defconfig
 create mode 100644 configs/autobuild/br-arm-full-nothread_defconfig
 create mode 100644 configs/autobuild/br-arm-full-static_defconfig
 create mode 100644 configs/autobuild/br-arm-full_defconfig
 create mode 100644 configs/autobuild/br-arm-internal-full_defconfig
 create mode 100644 configs/autobuild/br-bfin-full_defconfig
 create mode 100644 configs/autobuild/br-i386-pentium-mmx-musl_defconfig
 create mode 100644 configs/autobuild/br-i386-pentium4-full_defconfig
 create mode 100644 configs/autobuild/br-m68k-5208-full_defconfig
 create mode 100644 configs/autobuild/br-m68k-68040-full_defconfig
 create mode 100644 configs/autobuild/br-microblazeel-full-internal_defconfig
 create mode 100644 configs/autobuild/br-microblazeel-full_defconfig
 create mode 100644 configs/autobuild/br-mips32r6-el-hf-glibc_defconfig
 create mode 100644 configs/autobuild/br-mips64-n64-full_defconfig
 create mode 100644 configs/autobuild/br-mips64r6-el-hf-glibc_defconfig
 create mode 100644 configs/autobuild/br-mipsel-o32-full_defconfig
 create mode 100644 configs/autobuild/br-nios2-glibc_defconfig
 create mode 100644 configs/autobuild/br-openrisc-uclibc_defconfig
 create mode 100644 configs/autobuild/br-powerpc-603e-basic-cpp_defconfig
 create mode 100644 configs/autobuild/br-powerpc-e500mc-full_defconfig
 create mode 100644 configs/autobuild/br-powerpc-internal-full_defconfig
 create mode 100644 configs/autobuild/br-powerpc64-power7-glibc_defconfig
 create mode 100644 configs/autobuild/br-powerpc64le-power8-glibc_defconfig
 create mode 100644 configs/autobuild/br-sh4-full_defconfig
 create mode 100644 configs/autobuild/br-sparc-uclibc_defconfig
 create mode 100644 configs/autobuild/br-sparc64-glibc_defconfig
 create mode 100644 configs/autobuild/br-x86-64-core2-full_defconfig
 create mode 100644 configs/autobuild/br-x86-64-musl_defconfig
 create mode 100644 configs/autobuild/br-xtensa-full-internal_defconfig
 create mode 100644 configs/autobuild/br-xtensa-full_defconfig
 create mode 100644 configs/autobuild/i686-ctng-linux-gnu_defconfig
 create mode 100644 configs/autobuild/linaro-aarch64_defconfig
 create mode 100644 configs/autobuild/linaro-arm_defconfig
 create mode 100644 configs/autobuild/mips64el-ctng_n32-linux-gnu_defconfig
 create mode 100644 configs/autobuild/mips64el-ctng_n64-linux-gnu_defconfig
 create mode 100644 configs/autobuild/powerpc-ctng_e500v2-linux-gnuspe_defconfig
 create mode 100644 configs/autobuild/sourcery-arm-armv4t_defconfig
 create mode 100644 configs/autobuild/sourcery-arm-thumb2_defconfig
 create mode 100644 configs/autobuild/sourcery-arm_defconfig
 create mode 100644 configs/autobuild/sourcery-mips64_defconfig
 create mode 100644 configs/autobuild/sourcery-mips_defconfig
 create mode 100644 configs/autobuild/sourcery-nios2_defconfig
 create mode 100644 configs/autobuild/sourcery-sh_defconfig
 create mode 100644 configs/autobuild/sourcery-x86-64_defconfig
 create mode 100644 configs/autobuild/sourcery-x86_defconfig
 create mode 100644 configs/autobuild/x86_64-ctng_locales-linux-gnu_defconfig
configs/autobuild/armv5-ctng-linux-gnueabi_defconfig new file +10 -0
new file mode 100644
index 0000000000..c2f4cb62ca
@@ -0,0 +1,10 @@
+BR2_arm=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/armv5-ctng-linux-gnueabi.tar.xz"
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="armv5-ctng-linux-gnueabi"
+BR2_TOOLCHAIN_EXTERNAL_GCC_4_8=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/armv7-ctng-linux-gnueabihf_defconfig new file +13 -0
new file mode 100644
index 0000000000..60ec952940
@@ -0,0 +1,13 @@
+BR2_arm=y
+BR2_cortex_a9=y
+BR2_ARM_ENABLE_NEON=y
+BR2_ARM_ENABLE_VFP=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/armv7-ctng-linux-gnueabihf.tar.xz"
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="armv7-ctng-linux-gnueabihf"
+BR2_TOOLCHAIN_EXTERNAL_GCC_4_8=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-aarch64-glibc_defconfig new file +9 -0
new file mode 100644
index 0000000000..1e7387aa29
@@ -0,0 +1,9 @@
+BR2_aarch64=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-aarch64-glibc-2017.02-744-g40962a0.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-arc-full-internal_defconfig new file +3 -0
new file mode 100644
index 0000000000..4755c9e45b
@@ -0,0 +1,3 @@
+BR2_arcle=y
+BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
configs/autobuild/br-arcle-hs38_defconfig new file +10 -0
new file mode 100644
index 0000000000..ab5476c51f
@@ -0,0 +1,10 @@
+BR2_arcle=y
+BR2_archs38=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arcle-hs38-full-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_6=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-arm-basic_defconfig new file +8 -0
new file mode 100644
index 0000000000..676ffb0ebf
@@ -0,0 +1,8 @@
+BR2_arm=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-basic-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
configs/autobuild/br-arm-cortex-a9-glibc_defconfig new file +11 -0
new file mode 100644
index 0000000000..919a062b58
@@ -0,0 +1,11 @@
+BR2_arm=y
+BR2_cortex_a9=y
+BR2_ARM_ENABLE_VFP=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-cortex-a9-glibc-2017.02-744-g40962a0.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_6=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-arm-cortex-a9-musl_defconfig new file +11 -0
new file mode 100644
index 0000000000..7bd0f4ed10
@@ -0,0 +1,11 @@
+BR2_arm=y
+BR2_cortex_a9=y
+BR2_ARM_ENABLE_VFP=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-cortex-a9-musl-2017.02-744-g40962a0.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-arm-cortex-m4-full_defconfig new file +12 -0
new file mode 100644
index 0000000000..228de9f514
@@ -0,0 +1,12 @@
+BR2_arm=y
+BR2_cortex_m4=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-cortex-m4-full-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-arm-full-nothread_defconfig new file +11 -0
new file mode 100644
index 0000000000..9942453bb2
@@ -0,0 +1,11 @@
+BR2_arm=y
+BR2_arm1176jzf_s=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm11-full-nothread-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-arm-full-static_defconfig new file +11 -0
new file mode 100644
index 0000000000..b343c3f076
@@ -0,0 +1,11 @@
+BR2_arm=y
+BR2_STATIC_LIBS=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-static-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-arm-full_defconfig new file +10 -0
new file mode 100644
index 0000000000..736dea6d6d
@@ -0,0 +1,10 @@
+BR2_arm=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_4_8=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-arm-internal-full_defconfig new file +6 -0
new file mode 100644
index 0000000000..2e70534882
@@ -0,0 +1,6 @@
+BR2_arm=y
+BR2_ARM_EABI=y
+BR2_UCLIBC_VERSION_NG=y
+BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
+BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
configs/autobuild/br-bfin-full_defconfig new file +12 -0
new file mode 100644
index 0000000000..dde98379fa
@@ -0,0 +1,12 @@
+BR2_bfin=y
+BR2_bf512=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-bfin-full-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_6=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-i386-pentium-mmx-musl_defconfig new file +10 -0
new file mode 100644
index 0000000000..14aa0d6f42
@@ -0,0 +1,10 @@
+BR2_x86_pentium_mmx=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-i386-pentium-mmx-musl-2017.02-744-g40962a0.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_SSP is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-i386-pentium4-full_defconfig new file +10 -0
new file mode 100644
index 0000000000..919c64839e
@@ -0,0 +1,10 @@
+BR2_x86_pentium4=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-i386-pentium4-full-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-m68k-5208-full_defconfig new file +11 -0
new file mode 100644
index 0000000000..4b31fe7c4d
@@ -0,0 +1,11 @@
+BR2_m68k=y
+BR2_m68k_cf5208=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-m68k-5208-full-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-m68k-68040-full_defconfig new file +10 -0
new file mode 100644
index 0000000000..816ee1af08
@@ -0,0 +1,10 @@
+BR2_m68k=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-m68k-68040-full-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-microblazeel-full-internal_defconfig new file +1 -0
new file mode 100644
index 0000000000..0d2d7df8f1
@@ -0,0 +1 @@
+BR2_microblazeel=y
configs/autobuild/br-microblazeel-full_defconfig new file +10 -0
new file mode 100644
index 0000000000..057b80fe45
@@ -0,0 +1,10 @@
+BR2_microblazeel=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-microblaze-full-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-mips32r6-el-hf-glibc_defconfig new file +11 -0
new file mode 100644
index 0000000000..3f47ea499c
@@ -0,0 +1,11 @@
+BR2_mipsel=y
+BR2_mips_32r6=y
+# BR2_MIPS_SOFT_FLOAT is not set
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mips32r6-el-hf-2017.02-744-g40962a0.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-mips64-n64-full_defconfig new file +10 -0
new file mode 100644
index 0000000000..be287b4144
@@ -0,0 +1,10 @@
+BR2_mips64el=y
+BR2_MIPS_NABI64=y
+# BR2_MIPS_SOFT_FLOAT is not set
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mips64-n64-full-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_4_8=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-mips64r6-el-hf-glibc_defconfig new file +12 -0
new file mode 100644
index 0000000000..bdb709d5b5
@@ -0,0 +1,12 @@
+BR2_mips64el=y
+BR2_mips_64r6=y
+BR2_MIPS_NABI64=y
+# BR2_MIPS_SOFT_FLOAT is not set
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mips64r6-n64-el-hf-2017.02-744-g40962a0.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-mipsel-o32-full_defconfig new file +10 -0
new file mode 100644
index 0000000000..e648b6bdc0
@@ -0,0 +1,10 @@
+BR2_mipsel=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mipsel-o32-full-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-nios2-glibc_defconfig new file +9 -0
new file mode 100644
index 0000000000..6500fcc781
@@ -0,0 +1,9 @@
+BR2_nios2=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-nios2-full-2017.02-744-g40962a0.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-openrisc-uclibc_defconfig new file +10 -0
new file mode 100644
index 0000000000..40e3af1e83
@@ -0,0 +1,10 @@
+BR2_or1k=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-openrisc-full-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-powerpc-603e-basic-cpp_defconfig new file +10 -0
new file mode 100644
index 0000000000..58523723c9
@@ -0,0 +1,10 @@
+BR2_powerpc=y
+BR2_powerpc_603e=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-powerpc-603e-basic-cpp-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-powerpc-e500mc-full_defconfig new file +11 -0
new file mode 100644
index 0000000000..43b4c8c0a9
@@ -0,0 +1,11 @@
+BR2_powerpc=y
+BR2_powerpc_e500mc=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-powerpc-e500mc-full-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-powerpc-internal-full_defconfig new file +5 -0
new file mode 100644
index 0000000000..2621e9fb41
@@ -0,0 +1,5 @@
+BR2_powerpc=y
+BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y
+BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
+BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
configs/autobuild/br-powerpc64-power7-glibc_defconfig new file +9 -0
new file mode 100644
index 0000000000..5c56a0d453
@@ -0,0 +1,9 @@
+BR2_powerpc64=y
+BR2_powerpc_power7=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-powerpc64-power7-glibc-2017.02-744-g40962a0.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-powerpc64le-power8-glibc_defconfig new file +9 -0
new file mode 100644
index 0000000000..e11c22fa87
@@ -0,0 +1,9 @@
+BR2_powerpc64le=y
+BR2_powerpc_power8=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-powerpc64le-power8-glibc-2017.02-744-g40962a0.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-sh4-full_defconfig new file +10 -0
new file mode 100644
index 0000000000..593d813227
@@ -0,0 +1,10 @@
+BR2_sh=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-sh4-full-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-sparc-uclibc_defconfig new file +9 -0
new file mode 100644
index 0000000000..b5d3556e55
@@ -0,0 +1,9 @@
+BR2_sparc=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-sparc-uclibc-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-sparc64-glibc_defconfig new file +8 -0
new file mode 100644
index 0000000000..a7fa8b525d
@@ -0,0 +1,8 @@
+BR2_sparc64=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-sparc64-full-2017.02-744-g40962a0.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-x86-64-core2-full_defconfig new file +11 -0
new file mode 100644
index 0000000000..d680b1466c
@@ -0,0 +1,11 @@
+BR2_x86_64=y
+BR2_x86_core2=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-x86-64-core2-full-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-x86-64-musl_defconfig new file +10 -0
new file mode 100644
index 0000000000..f2bbcb32d1
@@ -0,0 +1,10 @@
+BR2_x86_64=y
+BR2_x86_atom=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-x86-64-musl-2017.02-744-g40962a0.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/br-xtensa-full-internal_defconfig new file +4 -0
new file mode 100644
index 0000000000..f642a4d76b
@@ -0,0 +1,4 @@
+BR2_xtensa=y
+BR2_JLEVEL=8
+BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
configs/autobuild/br-xtensa-full_defconfig new file +9 -0
new file mode 100644
index 0000000000..c56393e306
@@ -0,0 +1,9 @@
+BR2_xtensa=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-xtensa-full-2017.02-756-gae15148.tar.bz2"
+BR2_TOOLCHAIN_EXTERNAL_GCC_5=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10=y
+BR2_TOOLCHAIN_EXTERNAL_LOCALE=y
+# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/i686-ctng-linux-gnu_defconfig new file +10 -0
new file mode 100644
index 0000000000..9a961123c3
@@ -0,0 +1,10 @@
+BR2_x86_i686=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/i686-ctng-linux-gnu.tar.xz"
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="i686-ctng-linux-gnu"
+BR2_TOOLCHAIN_EXTERNAL_GCC_4_8=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/linaro-aarch64_defconfig new file +2 -0
new file mode 100644
index 0000000000..bb466f384b
@@ -0,0 +1,2 @@
+BR2_aarch64=y
+BR2_TOOLCHAIN_EXTERNAL=y
configs/autobuild/linaro-arm_defconfig new file +4 -0
new file mode 100644
index 0000000000..91149a7d1d
@@ -0,0 +1,4 @@
+BR2_arm=y
+BR2_cortex_a8=y
+BR2_ARM_EABIHF=y
+BR2_TOOLCHAIN_EXTERNAL=y
configs/autobuild/mips64el-ctng_n32-linux-gnu_defconfig new file +9 -0
new file mode 100644
index 0000000000..cf33ea26f3
@@ -0,0 +1,9 @@
+BR2_mips64el=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/mips64el-ctng_n32-linux-gnu.tar.xz"
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="mips64el-ctng_n32-linux-gnu"
+BR2_TOOLCHAIN_EXTERNAL_GCC_4_8=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/mips64el-ctng_n64-linux-gnu_defconfig new file +11 -0
new file mode 100644
index 0000000000..942a1b13b5
@@ -0,0 +1,11 @@
+BR2_mips64el=y
+BR2_MIPS_NABI64=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/mips64el-ctng_n64-linux-gnu.tar.xz"
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="mips64el-ctng_n64-linux-gnu"
+BR2_TOOLCHAIN_EXTERNAL_GCC_4_8=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/powerpc-ctng_e500v2-linux-gnuspe_defconfig new file +11 -0
new file mode 100644
index 0000000000..e82d3fbda7
@@ -0,0 +1,11 @@
+BR2_powerpc=y
+BR2_powerpc_8548=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/powerpc-ctng_e500v2-linux-gnuspe.tar.xz"
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="powerpc-ctng_e500v2-linux-gnuspe"
+BR2_TOOLCHAIN_EXTERNAL_GCC_4_7=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
configs/autobuild/sourcery-arm-armv4t_defconfig new file +4 -0
new file mode 100644
index 0000000000..4c0e01fecb
@@ -0,0 +1,4 @@
+BR2_arm=y
+BR2_arm920t=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM=y
configs/autobuild/sourcery-arm-thumb2_defconfig new file +6 -0
new file mode 100644
index 0000000000..14b64b7892
@@ -0,0 +1,6 @@
+BR2_arm=y
+BR2_cortex_a8=y
+BR2_ARM_EABI=y
+BR2_ARM_INSTRUCTIONS_THUMB2=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TARGET_OPTIMIZATION=""
configs/autobuild/sourcery-arm_defconfig new file +3 -0
new file mode 100644
index 0000000000..8ade4647f2
@@ -0,0 +1,3 @@
+BR2_arm=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM=y
configs/autobuild/sourcery-mips64_defconfig new file +5 -0
new file mode 100644
index 0000000000..77e3a853e1
@@ -0,0 +1,5 @@
+BR2_mips64el=y
+BR2_mips_64r2=y
+BR2_MIPS_NABI64=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS=y
configs/autobuild/sourcery-mips_defconfig new file +4 -0
new file mode 100644
index 0000000000..103e20bfc2
@@ -0,0 +1,4 @@
+BR2_mips=y
+BR2_mips_32r2=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS=y
configs/autobuild/sourcery-nios2_defconfig new file +2 -0
new file mode 100644
index 0000000000..0124413d9f
@@ -0,0 +1,2 @@
+BR2_nios2=y
+BR2_TOOLCHAIN_EXTERNAL=y
configs/autobuild/sourcery-sh_defconfig new file +4 -0
new file mode 100644
index 0000000000..515fc8fbb1
@@ -0,0 +1,4 @@
+BR2_sh=y
+BR2_sh4a=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH=y
configs/autobuild/sourcery-x86-64_defconfig new file +4 -0
new file mode 100644
index 0000000000..6c7ad4c5b7
@@ -0,0 +1,4 @@
+BR2_x86_64=y
+BR2_x86_steamroller=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64=y
configs/autobuild/sourcery-x86_defconfig new file +3 -0
new file mode 100644
index 0000000000..ad629f626b
@@ -0,0 +1,3 @@
+BR2_x86_pentium4=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86=y
configs/autobuild/x86_64-ctng_locales-linux-gnu_defconfig new file +11 -0
new file mode 100644
index 0000000000..435034be27
@@ -0,0 +1,11 @@
+BR2_x86_64=y
+BR2_x86_corei7=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
+BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/x86_64-ctng_locales-linux-gnu.tar.xz"
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="x86_64-ctng_locales-linux-gnu"
+BR2_TOOLCHAIN_EXTERNAL_GCC_4_8=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
Signature · 1 line
2.11.0
#11 lore raw

PATCH v5 6/13 configs: add autobuild toolchain defconfigs

Hello,

Quoted 6 lines · Arnout Vandecappelle (Essensium/Mind)

Note: I choose to name them xxx_defconfig and put them under to configs directory so they can be used directly as a quick way to set up a build with an external toolchain. However, neither test-pkg nor autobuild-run will use them as _defconfig, so we could just as well call them *.config and put them under e.g. support/autobuild-toolchains. Let me know what you think.

It's not a fully clear-cut opinion, but I believe I have a preference for having those in support/<something>/ rather than as official defconfigs.

I don't think it makes much sense to advertise them as defconfigs. Those base configurations are very specialized, some of them use completely stupid toolchain configurations (ARM no thread, really?) that only exist for the sake of testing various combinations of toolchain features. So making those visible to random users along with real defconfigs for boards doesn't seem like a good idea.

Plus it avoids the need to support defconfigs in subfolders (even though I guess you went through great lengths to workaround make stupidity about how patterns without slashes are handled), and the big question of your last RFC patch on how to display them in "list-defconfigs".

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#12 lore raw

PATCH v5 6/13 configs: add autobuild toolchain defconfigs

Quoted 23 lines · Thomas Petazzoni

Hello,

Quoted 6 lines · Arnout Vandecappelle (Essensium/Mind)

Note: I choose to name them xxx_defconfig and put them under to configs directory so they can be used directly as a quick way to set up a build with an external toolchain. However, neither test-pkg nor autobuild-run will use them as _defconfig, so we could just as well call them *.config and put them under e.g. support/autobuild-toolchains. Let me know what you think.

It's not a fully clear-cut opinion, but I believe I have a preference for having those in support/<something>/ rather than as official defconfigs.

I don't think it makes much sense to advertise them as defconfigs. Those base configurations are very specialized, some of them use completely stupid toolchain configurations (ARM no thread, really?) that only exist for the sake of testing various combinations of toolchain features. So making those visible to random users along with real defconfigs for boards doesn't seem like a good idea.

Quoted 5 lines

Plus it avoids the need to support defconfigs in subfolders (even though I guess you went through great lengths to workaround make stupidity about how patterns without slashes are handled), and the big question of your last RFC patch on how to display them in "list-defconfigs".

Yeah, it's only at the last minute that I realized that there was no need for
them to be defconfigs. So at that point I just reworded the commit message and pressed send :-)

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
#13 lore raw

PATCH v5 7/13 support/test-pkg: move minimal.config into a separate file

In reply to Arnout Vandecappelle (Essensium/Mind)

This minimal configuration is also very useful outside test-pkg. In addition, it will simplify the config merge in a later patch.

---
 support/misc/minimal.config | 6 ++++++
 support/scripts/test-pkg    | 8 +-------
 2 files changed, 7 insertions(+), 7 deletions(-)
 create mode 100644 support/misc/minimal.config
support/misc/minimal.config new file +6 -0
new file mode 100644
index 0000000000..0f20847f6d
@@ -0,0 +1,6 @@
+# This config fragment disables Buildroot options that are turned on by
+# default, in order to arrive at minimal build time.
+BR2_INIT_NONE=y
+BR2_SYSTEM_BIN_SH_NONE=y
+# BR2_PACKAGE_BUSYBOX is not set
+# BR2_TARGET_ROOTFS_TAR is not set
support/scripts/test-pkg +1 -7
index 0d093e8c2f..67f88ec380 100755
@@ -99,13 +99,7 @@ build_one() {
         return 2
     fi
 
-    cat >>"${dir}/.config" <<-_EOF_
-	BR2_INIT_NONE=y
-	BR2_SYSTEM_BIN_SH_NONE=y
-	# BR2_PACKAGE_BUSYBOX is not set
-	# BR2_TARGET_ROOTFS_TAR is not set
-	_EOF_
-    cat "${cfg}" >>"${dir}/.config"
+    cat "support/misc/minimal.config" "${cfg}" >>"${dir}/.config"
 
     if ! make O="${dir}" olddefconfig > "${dir}/logfile" 2>&1; then
         return 2
Signature · 1 line
2.11.0
#14 lore raw

PATCH v5 8/13 support/test-pkg: get configs from buildroot defconfigs

In reply to Arnout Vandecappelle (Essensium/Mind)

Now we have the toolchain configs in the buildroot directory itself, it is no longer necessary to fetch it from the toolchain URL.

---
 support/scripts/test-pkg | 29 +++++++++++++----------------
 1 file changed, 13 insertions(+), 16 deletions(-)
support/scripts/test-pkg +13 -16
index 67f88ec380..f86d266e6a 100755
@@ -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:
 
Signature · 1 line
2.11.0
#15 lore raw

PATCH v5 8/13 support/test-pkg: get configs from buildroot defconfigs

Hello,

Quoted 5 lines · Arnout Vandecappelle (Essensium/Mind)

Now we have the toolchain configs in the buildroot directory itself, it is no longer necessary to fetch it from the toolchain URL.

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

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#16 lore raw

PATCH v5 8/13 support/test-pkg: get configs from buildroot defconfigs

Thomas, All,

On 2017-04-06 21:37 +0200, Thomas Petazzoni spake thusly:

Quoted 8 lines
Quoted 5 lines · Arnout Vandecappelle (Essensium/Mind)

Now we have the toolchain configs in the buildroot directory itself, it is no longer necessary to fetch it from the toolchain URL.

Quoted 6 lines

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.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#17 lore raw

PATCH v5 8/13 support/test-pkg: get configs from buildroot defconfigs

Hello,

Quoted 9 lines · Yann E. MORIN
Quoted 6 lines

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

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#18 lore raw

PATCH v5 8/13 support/test-pkg: get configs from buildroot defconfigs

Quoted 14 lines · Thomas Petazzoni

Hello,

Quoted 9 lines · Yann E. MORIN
Quoted 6 lines

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.

Quoted 8 lines

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

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
#19 lore raw

PATCH v5 8/13 support/test-pkg: get configs from buildroot defconfigs

Hello,

Quoted 4 lines · Arnout Vandecappelle

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

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#20 lore raw

PATCH v5 9/13 support/test-pkg: add option to use an alternate toolchain directory

In reply to Arnout Vandecappelle (Essensium/Mind)

For now, testing a package requires network access. However, there are situations where everything is already cached locally (especially the toolchains tarballs) and network is not available (e.g. in the train, travelling back from FOSDEM...)

Alternatively, one may also want to test against a subset of the default toolchains (e.g. the ones known to have a specific issue), or against additional toolchains (e.g. the ones used within the company).

Add an option to use an alternate directory containing the defconfigs of toolchains to try.

---
Loosely based on http://patchwork.ozlabs.org/patch/728395/ but with a directory instead of URL, and completely rewritten help text.

---
 support/scripts/test-pkg | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)
support/scripts/test-pkg +17 -5
index f86d266e6a..d7f5cbe8cf 100755
@@ -5,16 +5,17 @@ TOOLCHAINS_DIR=configs/autobuild
 
 main() {
     local o O opts
-    local cfg dir pkg random toolchain
+    local cfg dir pkg random toolchains_dir toolchain
     local ret nb nb_skip nb_fail nb_legal nb_tc build_dir
     local -a toolchains
 
-    o='hc:d:p:r:'
-    O='help,config-snippet:build-dir:package:,random:'
+    o='hc:d:p:r:t:'
+    O='help,config-snippet:build-dir:package:,random:,toolchains-dir:'
     opts="$(getopt -n "${my_name}" -o "${o}" -l "${O}" -- "${@}")"
     eval set -- "${opts}"
 
     random=0
+    toolchains_dir="${TOOLCHAINS_DIR}"
     while [ ${#} -gt 0 ]; do
         case "${1}" in
         (-h|--help)
@@ -32,6 +33,9 @@ main() {
         (-r|--random)
             random="${2}"; shift 2
             ;;
+        (-t|--toolchains-dir)
+            toolchains_dir="${2}"; shift 2
+            ;;
         (--)
             shift; break
             ;;
@@ -49,7 +53,7 @@ main() {
 
     # Find external toolchains
     # shellcheck disable=SC2011
-    toolchains=($(ls -1 "${TOOLCHAINS_DIR}"/*_defconfig \
+    toolchains=($(ls -1 "${toolchains_dir}"/*_defconfig 2>/dev/null \
                   |xargs -r grep -l -F -x "BR2_TOOLCHAIN_EXTERNAL=y" \
                   |if [ ${random} -gt 0 ]; then \
                       sort -R |head -n ${random}
@@ -149,7 +153,11 @@ specify a package (with -p), the package build dir will be removed first.
 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.
+Buildroot toolchain would take too long. An alternative directory
+containing defconfigs of toolchains to try can be specified with the -t
+option. These defconfigs should contain only the toolchain and architecture
+settings. Again, only defconfigs which specify an external toolchain will
+be tried.
 
 Options:
 
@@ -171,6 +179,10 @@ Options:
         Limit the tests to the N randomly selected toolchains, instead of
         building with all toolchains.
 
+    -t DIR, --toolchain-dir DIR
+        Directory containing defconfigs of toolchains to try. If not specified,
+        the toolchains in ${TOOLCHAINS_DIR} will be used.
+
 Example:
 
     Testing libcec would require a config snippet that contains:
Signature · 1 line
2.11.0
#21 lore raw

PATCH v5 10/13 Makefile: refactor *config targets

In reply to Arnout Vandecappelle (Essensium/Mind)

The rules for the *config targets are all very similar, so factor them together using $@.

---
 Makefile | 42 ++++++------------------------------------
 1 file changed, 6 insertions(+), 36 deletions(-)
Makefile +6 -36
index 1d377099b2..89eb748df6 100644
@@ -846,50 +846,20 @@ config: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
 # no values are set for the legacy options so a subsequent oldconfig
 # will query them. Therefore, run an additional olddefconfig.
 
-oldconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
-	@$(COMMON_CONFIG_ENV) $< --oldconfig $(CONFIG_CONFIG_IN)
-
-randconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
-	@$(COMMON_CONFIG_ENV) SKIP_LEGACY=y $< --randconfig $(CONFIG_CONFIG_IN)
-	@$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null
-
-allyesconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
-	@$(COMMON_CONFIG_ENV) SKIP_LEGACY=y $< --allyesconfig $(CONFIG_CONFIG_IN)
-	@$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null
-
-allnoconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
-	@$(COMMON_CONFIG_ENV) SKIP_LEGACY=y $< --allnoconfig $(CONFIG_CONFIG_IN)
-	@$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null
-
-randpackageconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
-	@grep -v BR2_PACKAGE_ $(BR2_CONFIG) > $(CONFIG_DIR)/.config.nopkg
-	@$(COMMON_CONFIG_ENV) SKIP_LEGACY=y \
-		KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \
-		$< --randconfig $(CONFIG_CONFIG_IN)
-	@rm -f $(CONFIG_DIR)/.config.nopkg
+randconfig allyesconfig allnoconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
+	@$(COMMON_CONFIG_ENV) SKIP_LEGACY=y $< --$@ $(CONFIG_CONFIG_IN)
 	@$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null
 
-allyespackageconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
+randpackageconfig allyespackageconfig allnopackageconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
 	@grep -v BR2_PACKAGE_ $(BR2_CONFIG) > $(CONFIG_DIR)/.config.nopkg
 	@$(COMMON_CONFIG_ENV) SKIP_LEGACY=y \
 		KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \
-		$< --allyesconfig $(CONFIG_CONFIG_IN)
+		$< --$(subst package,,$@) $(CONFIG_CONFIG_IN)
 	@rm -f $(CONFIG_DIR)/.config.nopkg
 	@$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null
 
-allnopackageconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
-	@grep -v BR2_PACKAGE_ $(BR2_CONFIG) > $(CONFIG_DIR)/.config.nopkg
-	@$(COMMON_CONFIG_ENV) SKIP_LEGACY=y \
-		KCONFIG_ALLCONFIG=$(CONFIG_DIR)/.config.nopkg \
-		$< --allnoconfig $(CONFIG_CONFIG_IN)
-	@rm -f $(CONFIG_DIR)/.config.nopkg
-	@$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null
-
-silentoldconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
-	$(COMMON_CONFIG_ENV) $< --silentoldconfig $(CONFIG_CONFIG_IN)
-
-olddefconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
-	$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN)
+oldconfig silentoldconfig olddefconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
+	@$(COMMON_CONFIG_ENV) $< --$@ $(CONFIG_CONFIG_IN)
 
 defconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
 	@$(COMMON_CONFIG_ENV) $< --defconfig$(if $(DEFCONFIG),=$(DEFCONFIG)) $(CONFIG_CONFIG_IN)
Signature · 1 line
2.11.0
#22 lore raw

PATCH v5 11/13 Makefile: add alldefconfig target

In reply to Arnout Vandecappelle (Essensium/Mind)

It is used by Kconfig's merge_config.sh.

No alldefpackageconfig is added, since it's rather pointless: it would only enable busybox.

---
 Makefile | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
Makefile +3 -2
index 89eb748df6..b68e464da6 100644
@@ -126,7 +126,7 @@ DATE := $(shell date +%Y%m%d)
 export BR2_VERSION_FULL := $(BR2_VERSION)$(shell $(TOPDIR)/support/scripts/setlocalversion)
 
 noconfig_targets := menuconfig nconfig gconfig xconfig config oldconfig randconfig \
-	defconfig %_defconfig allyesconfig allnoconfig silentoldconfig release \
+	defconfig %_defconfig allyesconfig allnoconfig alldefconfig silentoldconfig release \
 	randpackageconfig allyespackageconfig allnopackageconfig \
 	print-version olddefconfig distclean manual manual-html manual-split-html \
 	manual-pdf manual-text manual-epub
@@ -846,7 +846,7 @@ config: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
 # no values are set for the legacy options so a subsequent oldconfig
 # will query them. Therefore, run an additional olddefconfig.
 
-randconfig allyesconfig allnoconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
+randconfig allyesconfig alldefconfig allnoconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig
 	@$(COMMON_CONFIG_ENV) SKIP_LEGACY=y $< --$@ $(CONFIG_CONFIG_IN)
 	@$(COMMON_CONFIG_ENV) $< --olddefconfig $(CONFIG_CONFIG_IN) >/dev/null
 
@@ -957,6 +957,7 @@ help:
 	@echo '  savedefconfig          - Save current config to BR2_DEFCONFIG (minimal config)'
 	@echo '  allyesconfig           - New config where all options are accepted with yes'
 	@echo '  allnoconfig            - New config where all options are answered with no'
+	@echo '  alldefconfig           - New config where all options are set to default'
 	@echo '  randpackageconfig      - New config with random answer to package options'
 	@echo '  allyespackageconfig    - New config where pkg options are accepted with yes'
 	@echo '  allnopackageconfig     - New config where package options are answered with no'
Signature · 1 line
2.11.0
#23 lore raw

PATCH v5 12/13 support/test-pkg: use merge_config.sh to merge the fragments

In reply to Arnout Vandecappelle (Essensium/Mind)

It is supposedly more robust than just concatenating.

---
 support/scripts/test-pkg | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
support/scripts/test-pkg +2 -4
index d7f5cbe8cf..383e018c63 100755
@@ -98,11 +98,9 @@ build_one() {
     local cfg="${3}"
     local pkg="${4}"
 
-    cat "${toolchainconfig}" "support/misc/minimal.config" "${cfg}" >>"${dir}/.config"
+    support/kconfig/merge_config.sh -O "${dir}" \
+        "${toolchainconfig}" "support/misc/minimal.config" "${cfg}" > /dev/null
 
-    if ! make O="${dir}" olddefconfig > "${dir}/logfile" 2>&1; then
-        return 2
-    fi
     # We want all the options from the snippet to be present as-is (set
     # or not set) in the actual .config; if one of them is not, it means
     # some dependency from the toolchain or arch is not available, in
Signature · 1 line
2.11.0
#24 lore raw

RFC PATCH v5 13/13 list-defconfigs: support defconfigs in subdirectories

In reply to Arnout Vandecappelle (Essensium/Mind)

Now defconfigs in subdirectories are supported, list-defconfigs should also report them.

The obvious way to do this would be to use

	find $(1)/configs -name \*_defconfig

However, it is difficult to keep its output sorted properly: we don't want defconfigs in subdirectories to appear intermingled with the rest.

The output tends to become a little bit messy, because defconfigs in subdirectories will typically need more than 35 characters. If we can find a solution for that, it can be done in a later patch.

---
With the ugly output, and the uglification of the code, I'm not entirely sure that we really want this patch.

---
 Makefile | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)
Makefile +13 -11
index b68e464da6..186e8b6d88 100644
@@ -1013,18 +1013,20 @@ help:
 # $(2): br2-external name, empty for bundled
 define list-defconfigs
 	@first=true; \
-	for defconfig in $(1)/configs/*_defconfig; do \
-		[ -f "$${defconfig}" ] || continue; \
-		if $${first}; then \
-			if [ "$(2)" ]; then \
-				printf 'External configs in "$(call qstrip,$(2))":\n'; \
-			else \
-				printf "Built-in configs:\n"; \
+	for dir in `find $(1)/configs/ -type d`; do \
+		for defconfig in $${dir}/*_defconfig; do \
+			[ -f "$${defconfig}" ] || continue; \
+			if $${first}; then \
+				if [ "$(2)" ]; then \
+					printf 'External configs in "$(call qstrip,$(2))":\n'; \
+				else \
+					printf "Built-in configs:\n"; \
+				fi; \
+				first=false; \
 			fi; \
-			first=false; \
-		fi; \
-		defconfig="$${defconfig##*/}"; \
-		printf "  %-35s - Build for %s\n" "$${defconfig}" "$${defconfig%_defconfig}"; \
+			defconfig="$${defconfig##$(1)/configs/}"; \
+			printf "  %-35s - Build for %s\n" "$${defconfig}" "$${defconfig%_defconfig}"; \
+		done; \
 	done; \
 	$${first} || printf "\n"
 endef
Signature · 1 line
2.11.0