Gentoo Archives: gentoo-commits

From: Sergei Trofimovich <slyfox@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/crossdev:master commit in: /
Date: Mon, 21 Jun 2021 21:23:27
Message-Id: 1624300948.0f2a105de5c407a2fa0113d0815d54e0067bbb4b.slyfox@gentoo
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