1 |
commit: 042a38c90aa010f05ecf7222f9be929f109c581e |
2 |
Author: Fabian Groffen <grobian <AT> gentoo <DOT> org> |
3 |
AuthorDate: Wed Nov 27 12:32:12 2019 +0000 |
4 |
Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org> |
5 |
CommitDate: Wed Nov 27 12:32:12 2019 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=042a38c9 |
7 |
|
8 |
set_portage_env_var: don't include built-in value for incremental vars |
9 |
|
10 |
discard the built-in value when any other value is found from the |
11 |
profiles |
12 |
|
13 |
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org> |
14 |
|
15 |
main.c | 17 +++++++++++------ |
16 |
tests/profile/dotest | 16 +++------------- |
17 |
tests/qmerge/dotest | 2 ++ |
18 |
3 files changed, 16 insertions(+), 19 deletions(-) |
19 |
|
20 |
diff --git a/main.c b/main.c |
21 |
index 5ffe0ba..056e09c 100644 |
22 |
--- a/main.c |
23 |
+++ b/main.c |
24 |
@@ -51,6 +51,8 @@ static char *portedb; |
25 |
static char *eprefix; |
26 |
static char *accept_license; |
27 |
|
28 |
+#define STR_DEFAULT "built-in default" |
29 |
+ |
30 |
/* helper functions for showing errors */ |
31 |
const char *argv0; |
32 |
|
33 |
@@ -333,15 +335,18 @@ set_portage_env_var(env_vars *var, const char *value, const char *src) |
34 |
var->src = xstrdup(src); |
35 |
break; |
36 |
case _Q_ISTR: |
37 |
- if (*var->value.s == NULL) { |
38 |
- free(var->src); |
39 |
- var->src = xstrdup(src); |
40 |
- } else { |
41 |
+ if (strcmp(var->src, STR_DEFAULT) != 0) { |
42 |
size_t l = strlen(var->src) + 2 + strlen(src) + 1; |
43 |
char *p = xmalloc(sizeof(char) * l); |
44 |
snprintf(p, l, "%s, %s", var->src, src); |
45 |
free(var->src); |
46 |
var->src = p; |
47 |
+ } else { |
48 |
+ free(*var->value.s); |
49 |
+ *var->value.s = NULL; |
50 |
+ var->value_len = 0; |
51 |
+ free(var->src); |
52 |
+ var->src = xstrdup(src); |
53 |
} |
54 |
strincr_var(var->name, value, var->value.s, &var->value_len); |
55 |
break; |
56 |
@@ -718,7 +723,7 @@ initialize_portage_env(void) |
57 |
var = &vars_to_read[i]; |
58 |
if (var->type != _Q_BOOL) |
59 |
*var->value.s = xstrdup(var->default_value); |
60 |
- var->src = xstrdup("built-in default"); |
61 |
+ var->src = xstrdup(STR_DEFAULT); |
62 |
} |
63 |
|
64 |
/* figure out where to find our config files */ |
65 |
@@ -740,7 +745,7 @@ initialize_portage_env(void) |
66 |
if (array_cnt(overlays) == 0) { |
67 |
xarraypush_ptr(overlays, main_overlay); |
68 |
xarraypush_str(overlay_names, "<PORTDIR>"); |
69 |
- xarraypush_str(overlay_src, "built-in default"); |
70 |
+ xarraypush_str(overlay_src, STR_DEFAULT); |
71 |
} else if (orig_main_overlay == main_overlay) { |
72 |
/* if no explicit overlay was flagged as main, take the first one */ |
73 |
main_overlay = array_get_elem(overlays, 0); |
74 |
|
75 |
diff --git a/tests/profile/dotest b/tests/profile/dotest |
76 |
index 2b77ee9..02c9fc4 100755 |
77 |
--- a/tests/profile/dotest |
78 |
+++ b/tests/profile/dotest |
79 |
@@ -2,32 +2,22 @@ |
80 |
|
81 |
. ../init.sh || exit 1 |
82 |
|
83 |
-qenv() { |
84 |
- # get q to dump its processed env so we can check |
85 |
- DEBUG= q -V 2>&1 >/dev/null |
86 |
-} |
87 |
- |
88 |
# Usage: <profile dir suffix> <variable> <value> |
89 |
tenv() { |
90 |
local profile=$1 var=$2 exp=$3 |
91 |
|
92 |
export PORTAGE_CONFIGROOT=${as}/profile${profile} |
93 |
- local e=$(qenv) |
94 |
- |
95 |
- res=$(echo "${e}" | sed -n "/^${var} = /{s:^${var} = ::;p}") |
96 |
+ res=$(q -e "${var}") |
97 |
|
98 |
[[ ${res} == "${exp}" ]] |
99 |
if ! tend $? "(${profile}) ${var} = ${exp}" ; then |
100 |
echo "we got: {${res}}" |
101 |
- echo "full env:" |
102 |
- echo "${e}" | while read line ; do |
103 |
- printf '\t{%s}\n' "${line}" |
104 |
- done |
105 |
+ echo "full env: $(q -ev "${var}")" |
106 |
fi |
107 |
} |
108 |
|
109 |
# clear out env vars that would affect our tests |
110 |
-unset $(qenv | awk '{print $1}') |
111 |
+unset $(q -e | cut -d= -f1) |
112 |
|
113 |
# test vars that should default to known values. |
114 |
# cannot test too many more as portage's default |
115 |
|
116 |
diff --git a/tests/qmerge/dotest b/tests/qmerge/dotest |
117 |
index 83cb991..86c6147 100755 |
118 |
--- a/tests/qmerge/dotest |
119 |
+++ b/tests/qmerge/dotest |
120 |
@@ -4,6 +4,8 @@ |
121 |
|
122 |
set -e |
123 |
|
124 |
+unset CONFIG_PROTECT CONFIG_PROTECT_MASK EPREFIX |
125 |
+ |
126 |
export QMERGE=1 |
127 |
export PKGDIR=${as}/packages |
128 |
export FEATURES='config-protect-if-modified' |