diff mbox series

[1/3] utils/test-pkg: add support for externals

Message ID 20211201230827.35080-1-matthew.weber@collins.com
State Rejected
Headers show
Series [1/3] utils/test-pkg: add support for externals | expand

Commit Message

Matthew Weber Dec. 1, 2021, 11:08 p.m. UTC
Add support to test-pkg to allow the usage br2-externals, so that
it may be leveraged for packages outside of upstream buildroot as well.

Signed-off-by: Matthew Weber <matthew.weber@collins.com>
---
 utils/test-pkg | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

Comments

Yann E. MORIN Jan. 3, 2022, 8:59 p.m. UTC | #1
Matthew, All,

On 2021-12-01 17:08 -0600, Matthew Weber via buildroot spake thusly:
> Add support to test-pkg to allow the usage br2-externals, so that
> it may be leveraged for packages outside of upstream buildroot as well.

Why is it even needed? Just pass BR2_EXTERNAL in the environment:

    BR2_EXTERNAL=/path/to/foo:/path/to/bar ./utils/test-pkg

Maybe we should change the manual to state that BR2_EXTERNAL can be set
in the environment as well, and the help for ./utils/test-pkg could also
mention that.

Oh, and by the way: we should not have added the -e option to
support/kconfig/merge_config.sh either, because even in that case,
BR2_EXTERNAL in the environment works as well.

Regards,
Yann E. MORIN.

> Signed-off-by: Matthew Weber <matthew.weber@collins.com>
> ---
>  utils/test-pkg | 20 ++++++++++++++------
>  1 file changed, 14 insertions(+), 6 deletions(-)
> 
> diff --git a/utils/test-pkg b/utils/test-pkg
> index 526b95b1fb..d0472f176b 100755
> --- a/utils/test-pkg
> +++ b/utils/test-pkg
> @@ -3,6 +3,7 @@ set -e
>  
>  TOOLCHAINS_CSV='support/config-fragments/autobuild/toolchain-configs.csv'
>  TEMP_CONF=""
> +BR2_EXTERNALS=""
>  
>  do_clean() {
>      if [ ! -z "${TEMP_CONF}" ]; then
> @@ -17,8 +18,8 @@ main() {
>      local -a toolchains
>      local pkg_br_name
>  
> -    o='hakc:d:n:p:r:t:'
> -    O='help,all,keep,prepare-only,config-snippet:,build-dir:,number:,package:,random:,toolchains-csv:'
> +    o='hakc:d:n:p:r:t:e:'
> +    O='help,all,keep,prepare-only,config-snippet:,build-dir:,number:,package:,random:,toolchains-csv:,externals:,'
>      opts="$(getopt -n "${my_name}" -o "${o}" -l "${O}" -- "${@}")"
>      eval set -- "${opts}"
>  
> @@ -61,6 +62,9 @@ main() {
>          (-t|--toolchains-csv)
>              toolchains_csv="${2}"; shift 2
>              ;;
> +        (-e|--externals)
> +            BR2_EXTERNALS="${2}"; shift 2
> +            ;;
>          (--)
>              shift; break
>              ;;
> @@ -155,7 +159,7 @@ build_one() {
>  
>      mkdir -p "${dir}"
>  
> -    CONFIG_= support/kconfig/merge_config.sh -O "${dir}" \
> +    CONFIG_= support/kconfig/merge_config.sh -e "${BR2_EXTERNALS}" -O "${dir}" \
>          "${toolchainconfig}" "support/config-fragments/minimal.config" "${cfg}" \
>          >> "${dir}/logfile" 2>&1
>      # We want all the options from the snippet to be present as-is (set
> @@ -181,7 +185,7 @@ build_one() {
>      fi
>  
>      if [ -n "${pkg}" ]; then
> -        if ! make O="${dir}" "${pkg}-dirclean" >> "${dir}/logfile" 2>&1; then
> +        if ! make BR2_EXTERNAL="${BR2_EXTERNALS}" O="${dir}" "${pkg}-dirclean" >> "${dir}/logfile" 2>&1; then
>              return 2
>          fi
>      fi
> @@ -193,14 +197,14 @@ build_one() {
>  
>      # legal-info done systematically, because some packages have different
>      # sources depending on the configuration (e.g. lua-5.2 vs. lua-5.3)
> -    if ! make O="${dir}" legal-info >> "${dir}/logfile" 2>&1; then
> +    if ! make BR2_EXTERNAL="${BR2_EXTERNALS}" O="${dir}" legal-info >> "${dir}/logfile" 2>&1; then
>          return 3
>      fi
>  
>      # If we get here, the build was successful. Clean up the build/host
>      # directories to save disk space, unless 'keep' was set.
>      if [ ${keep} -ne 1 ]; then
> -        make O="${dir}" clean >> "${dir}/logfile" 2>&1
> +        make BR2_EXTERNAL="${BR2_EXTERNALS}" O="${dir}" clean >> "${dir}/logfile" 2>&1
>      fi
>  }
>  
> @@ -271,6 +275,10 @@ Options:
>          Only prepare the .config files, but do not build them. Output the
>          list of build directories to stdout, and the status on stderr.
>  
> +    -e, --externals
> +        Externals to be used as part of the build process. Packages from
> +        within these externals may be tested.
> +
>  Example:
>  
>      Testing libcec would require a config snippet that contains:
> -- 
> 2.17.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/utils/test-pkg b/utils/test-pkg
index 526b95b1fb..d0472f176b 100755
--- a/utils/test-pkg
+++ b/utils/test-pkg
@@ -3,6 +3,7 @@  set -e
 
 TOOLCHAINS_CSV='support/config-fragments/autobuild/toolchain-configs.csv'
 TEMP_CONF=""
+BR2_EXTERNALS=""
 
 do_clean() {
     if [ ! -z "${TEMP_CONF}" ]; then
@@ -17,8 +18,8 @@  main() {
     local -a toolchains
     local pkg_br_name
 
-    o='hakc:d:n:p:r:t:'
-    O='help,all,keep,prepare-only,config-snippet:,build-dir:,number:,package:,random:,toolchains-csv:'
+    o='hakc:d:n:p:r:t:e:'
+    O='help,all,keep,prepare-only,config-snippet:,build-dir:,number:,package:,random:,toolchains-csv:,externals:,'
     opts="$(getopt -n "${my_name}" -o "${o}" -l "${O}" -- "${@}")"
     eval set -- "${opts}"
 
@@ -61,6 +62,9 @@  main() {
         (-t|--toolchains-csv)
             toolchains_csv="${2}"; shift 2
             ;;
+        (-e|--externals)
+            BR2_EXTERNALS="${2}"; shift 2
+            ;;
         (--)
             shift; break
             ;;
@@ -155,7 +159,7 @@  build_one() {
 
     mkdir -p "${dir}"
 
-    CONFIG_= support/kconfig/merge_config.sh -O "${dir}" \
+    CONFIG_= support/kconfig/merge_config.sh -e "${BR2_EXTERNALS}" -O "${dir}" \
         "${toolchainconfig}" "support/config-fragments/minimal.config" "${cfg}" \
         >> "${dir}/logfile" 2>&1
     # We want all the options from the snippet to be present as-is (set
@@ -181,7 +185,7 @@  build_one() {
     fi
 
     if [ -n "${pkg}" ]; then
-        if ! make O="${dir}" "${pkg}-dirclean" >> "${dir}/logfile" 2>&1; then
+        if ! make BR2_EXTERNAL="${BR2_EXTERNALS}" O="${dir}" "${pkg}-dirclean" >> "${dir}/logfile" 2>&1; then
             return 2
         fi
     fi
@@ -193,14 +197,14 @@  build_one() {
 
     # legal-info done systematically, because some packages have different
     # sources depending on the configuration (e.g. lua-5.2 vs. lua-5.3)
-    if ! make O="${dir}" legal-info >> "${dir}/logfile" 2>&1; then
+    if ! make BR2_EXTERNAL="${BR2_EXTERNALS}" O="${dir}" legal-info >> "${dir}/logfile" 2>&1; then
         return 3
     fi
 
     # If we get here, the build was successful. Clean up the build/host
     # directories to save disk space, unless 'keep' was set.
     if [ ${keep} -ne 1 ]; then
-        make O="${dir}" clean >> "${dir}/logfile" 2>&1
+        make BR2_EXTERNAL="${BR2_EXTERNALS}" O="${dir}" clean >> "${dir}/logfile" 2>&1
     fi
 }
 
@@ -271,6 +275,10 @@  Options:
         Only prepare the .config files, but do not build them. Output the
         list of build directories to stdout, and the status on stderr.
 
+    -e, --externals
+        Externals to be used as part of the build process. Packages from
+        within these externals may be tested.
+
 Example:
 
     Testing libcec would require a config snippet that contains: