diff options
author | Fabian Groffen <grobian@gentoo.org> | 2019-11-27 13:32:12 +0100 |
---|---|---|
committer | Fabian Groffen <grobian@gentoo.org> | 2019-11-27 13:32:12 +0100 |
commit | 042a38c90aa010f05ecf7222f9be929f109c581e (patch) | |
tree | 992c404aec9ec2910881598352c8f84b6b3f70f2 | |
parent | read_portage_profile: process in order as specified by PMS 5.2.1 (diff) | |
download | portage-utils-042a38c9.tar.gz portage-utils-042a38c9.tar.bz2 portage-utils-042a38c9.zip |
set_portage_env_var: don't include built-in value for incremental varsv0.82
discard the built-in value when any other value is found from the
profiles
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
-rw-r--r-- | main.c | 17 | ||||
-rwxr-xr-x | tests/profile/dotest | 16 | ||||
-rwxr-xr-x | tests/qmerge/dotest | 2 |
3 files changed, 16 insertions, 19 deletions
@@ -51,6 +51,8 @@ static char *portedb; static char *eprefix; static char *accept_license; +#define STR_DEFAULT "built-in default" + /* helper functions for showing errors */ const char *argv0; @@ -333,15 +335,18 @@ set_portage_env_var(env_vars *var, const char *value, const char *src) var->src = xstrdup(src); break; case _Q_ISTR: - if (*var->value.s == NULL) { - free(var->src); - var->src = xstrdup(src); - } else { + if (strcmp(var->src, STR_DEFAULT) != 0) { size_t l = strlen(var->src) + 2 + strlen(src) + 1; char *p = xmalloc(sizeof(char) * l); snprintf(p, l, "%s, %s", var->src, src); free(var->src); var->src = p; + } else { + free(*var->value.s); + *var->value.s = NULL; + var->value_len = 0; + free(var->src); + var->src = xstrdup(src); } strincr_var(var->name, value, var->value.s, &var->value_len); break; @@ -718,7 +723,7 @@ initialize_portage_env(void) var = &vars_to_read[i]; if (var->type != _Q_BOOL) *var->value.s = xstrdup(var->default_value); - var->src = xstrdup("built-in default"); + var->src = xstrdup(STR_DEFAULT); } /* figure out where to find our config files */ @@ -740,7 +745,7 @@ initialize_portage_env(void) if (array_cnt(overlays) == 0) { xarraypush_ptr(overlays, main_overlay); xarraypush_str(overlay_names, "<PORTDIR>"); - xarraypush_str(overlay_src, "built-in default"); + xarraypush_str(overlay_src, STR_DEFAULT); } else if (orig_main_overlay == main_overlay) { /* if no explicit overlay was flagged as main, take the first one */ main_overlay = array_get_elem(overlays, 0); diff --git a/tests/profile/dotest b/tests/profile/dotest index 2b77ee9..02c9fc4 100755 --- a/tests/profile/dotest +++ b/tests/profile/dotest @@ -2,32 +2,22 @@ . ../init.sh || exit 1 -qenv() { - # get q to dump its processed env so we can check - DEBUG= q -V 2>&1 >/dev/null -} - # Usage: <profile dir suffix> <variable> <value> tenv() { local profile=$1 var=$2 exp=$3 export PORTAGE_CONFIGROOT=${as}/profile${profile} - local e=$(qenv) - - res=$(echo "${e}" | sed -n "/^${var} = /{s:^${var} = ::;p}") + res=$(q -e "${var}") [[ ${res} == "${exp}" ]] if ! tend $? "(${profile}) ${var} = ${exp}" ; then echo "we got: {${res}}" - echo "full env:" - echo "${e}" | while read line ; do - printf '\t{%s}\n' "${line}" - done + echo "full env: $(q -ev "${var}")" fi } # clear out env vars that would affect our tests -unset $(qenv | awk '{print $1}') +unset $(q -e | cut -d= -f1) # test vars that should default to known values. # cannot test too many more as portage's default diff --git a/tests/qmerge/dotest b/tests/qmerge/dotest index 83cb991..86c6147 100755 --- a/tests/qmerge/dotest +++ b/tests/qmerge/dotest @@ -4,6 +4,8 @@ set -e +unset CONFIG_PROTECT CONFIG_PROTECT_MASK EPREFIX + export QMERGE=1 export PKGDIR=${as}/packages export FEATURES='config-protect-if-modified' |