diff --git a/.oniro-ci/build-generic.yaml b/.oniro-ci/build-generic.yaml index 13249dc306a514ef2288f0a4882ad765973ec0a2..7cefde7117256ccc0e543a67f5e88080567427c7 100644 --- a/.oniro-ci/build-generic.yaml +++ b/.oniro-ci/build-generic.yaml @@ -136,13 +136,20 @@ # dropped. Some extra sed processing is used to quote the variables. # Everything runs in a sub-shell with bash pipefail disabled, as otherwise # lack of variables matching the grep pattern causes the execution to stop. + # Variables in the form of 'CI_ONIRO_BB_LOCAL_CONF_attr' are converted to + # 'attr = "value"'. It can include '_colon_' substrings which are converted + # to ':'. - | ( set +o pipefail; env \ - | grep -E '^CI_ONIRO_BB_LOCAL_CONF_[A-Z_0-9]+=' \ - | sed -e 's/^CI_ONIRO_BB_LOCAL_CONF_//g' -e 's/"/\\"/g' -e 's/=/ = "/g' -e 's/$/"/g' \ + | grep -v "_plus_equals_" \ + | grep -E '^CI_ONIRO_BB_LOCAL_CONF_[a-zA-Z_0-9]+=' \ + | sed -e 's/^CI_ONIRO_BB_LOCAL_CONF_//g' -e 's/_colon_/:/g' -e 's/"/\\"/g' -e 's/=/ = "/g' -e 's/$/"/g' \ | sort \ | tee -a conf/local.conf ) + # Variables in the form of 'CI_ONIRO_BB_LOCAL_CONF_plus_equals_attr' are + # converted to 'attr += "value"' + - | ( set +o pipefail; env \ | grep -E '^CI_ONIRO_BB_LOCAL_CONF_plus_equals_[A-Z_0-9]+=' \ @@ -150,7 +157,6 @@ | sort \ | tee -a conf/local.conf ) - # Sanity check: disallow using public build cache with a specific setting # in local.conf. The list of settings may grow over time. - | diff --git a/docs/ci/hidden-jobs/bitbake-workspace.rst b/docs/ci/hidden-jobs/bitbake-workspace.rst index 5c3e38a31a1e72f3567eaace55578b1ddc3b23ea..b2dc67301d079f3c3e2937e4a5d5c1244cd747ac 100644 --- a/docs/ci/hidden-jobs/bitbake-workspace.rst +++ b/docs/ci/hidden-jobs/bitbake-workspace.rst @@ -89,9 +89,11 @@ Configuring BitBake The ``local.conf`` file can define numerous variables that influence the BitBake build process. This job offers a declarative method of doing that. Job -variables with have the prefix ``CI_ONIRO_BB_LOCAL_CONF_`` are converted to -``attr = "value"`` and those with prefix -``CI_ONIRO_BB_LOCAL_CONF_plus_equals_`` are converted to ``attr += "value"``. +variables can be of two forms. ``CI_ONIRO_BB_LOCAL_CONF_attr`` and +``CI_ONIRO_BB_LOCAL_CONF_plus_equals_attr``. The former is converted to +``attr = "value"``. It can include ``_colon_`` substrings which are converted +to ``:``. And variables in the latter form are converted to +``attr += "value"``. This method is friendly to job inheritance and re-definition. Derivative jobs can add or re-define variables without having to duplicate any imperative logic