1 |
commit: 0f2a105de5c407a2fa0113d0815d54e0067bbb4b |
2 |
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon Jun 21 18:42:28 2021 +0000 |
4 |
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Jun 21 18:42:28 2021 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/crossdev.git/commit/?id=0f2a105d |
7 |
|
8 |
crossdev: fail eval when multilib.eclass sourcing fails |
9 |
|
10 |
Before the change failure to source 'multilib.eclass' resuled in |
11 |
a fallback mode to be used instead of hard failure. |
12 |
|
13 |
It was caused by two expansion layers of 'eval $(...)'. |
14 |
|
15 |
After the change falure to source 'mmultilib.eclass' hard fails early: |
16 |
|
17 |
``` |
18 |
$ PORTAGE_CONFIGROOT=$(pwd)/foo EPREFIX=$(pwd)/foo PORT_LOGDIR=$(pwd)/foo ./crossdev -t mmix -P -p |
19 |
* error: : EAPI 0 not supported |
20 |
* |
21 |
* If you file a bug, please attach the following logfiles: |
22 |
* /home/slyfox/dev/git/crossdev/foo/cross--info.log |
23 |
* |
24 |
* error: could not load multilib settings for 'HCHOST' |
25 |
* |
26 |
* If you file a bug, please attach the following logfiles: |
27 |
* /home/slyfox/dev/git/crossdev/foo/cross-mmix-info.log |
28 |
``` |
29 |
|
30 |
Reported-by: Marco Scardovi (scardracs) |
31 |
Bug: https://bugs.gentoo.org/797367 |
32 |
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org> |
33 |
|
34 |
crossdev | 5 +++++ |
35 |
1 file changed, 5 insertions(+) |
36 |
|
37 |
diff --git a/crossdev b/crossdev |
38 |
index 1a2b030..619603f 100755 |
39 |
--- a/crossdev |
40 |
+++ b/crossdev |
41 |
@@ -968,6 +968,9 @@ fi |
42 |
# parse multilib settings until profiles are sane |
43 |
load_multilib_env() { |
44 |
local var=$1 |
45 |
+ # TODO: avoid eval+subshell and use subshell only. It will make error |
46 |
+ # handling simpler. |
47 |
+ local eval_result=failed |
48 |
eval $( |
49 |
# see what target to parse |
50 |
CTARGET=${!var} |
51 |
@@ -1016,7 +1019,9 @@ load_multilib_env() { |
52 |
echo ${_v}=\'${!d}\' |
53 |
done |
54 |
done |
55 |
+ echo "eval_result='succeeded'" |
56 |
) |
57 |
+ [[ $eval_result = succeeded ]] || die "could not load multilib settings for '${var}'" |
58 |
} |
59 |
# Load settings for the host. |
60 |
MULTILIB_ABIS=${HOST_ABI} load_multilib_env HCHOST |