[gentoo-portage-dev] [PATCH] emerge: use parse_intermixed_args when available (bug 784566)

2021-04-20 Thread Zac Medico
The included unit test case previously failed with this error:

  emerge: error: unrecognized arguments: dev-libs/A

Bug: https://bugs.gentoo.org/784566
Signed-off-by: Zac Medico 
---
 lib/_emerge/main.py |  2 +-
 lib/portage/tests/emerge/test_simple.py | 10 +-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/lib/_emerge/main.py b/lib/_emerge/main.py
index 31e690584..191be6479 100644
--- a/lib/_emerge/main.py
+++ b/lib/_emerge/main.py
@@ -834,7 +834,7 @@ def parse_opts(tmpcmdline, silent=False):
 
tmpcmdline = insert_optional_args(tmpcmdline)
 
-   myoptions = parser.parse_args(args=tmpcmdline)
+   myoptions = getattr(parser, "parse_intermixed_args", 
parser.parse_args)(args=tmpcmdline)
 
if myoptions.alert in true_y:
myoptions.alert = True
diff --git a/lib/portage/tests/emerge/test_simple.py 
b/lib/portage/tests/emerge/test_simple.py
index 6e282337f..5b110407f 100644
--- a/lib/portage/tests/emerge/test_simple.py
+++ b/lib/portage/tests/emerge/test_simple.py
@@ -1,6 +1,7 @@
 # Copyright 2011-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
+import argparse
 import subprocess
 
 import portage
@@ -289,7 +290,14 @@ call_has_and_best_version() {
port=binhost_server.server_port,
path=binhost_remote_path)
 
-   test_commands = (
+   test_commands = ()
+
+   if hasattr(argparse.ArgumentParser, "parse_intermixed_args"):
+   test_commands += (
+   emerge_cmd + ("--oneshot", "dev-libs/A", "-v", 
"dev-libs/A"),
+   )
+
+   test_commands += (
emerge_cmd + ("--usepkgonly", "--root", cross_root, 
"--quickpkg-direct=y", "--quickpkg-direct-root", "/", "dev-libs/A"),
emerge_cmd + ("--usepkgonly", "--quickpkg-direct=y", 
"--quickpkg-direct-root", cross_root, "dev-libs/A"),
env_update_cmd,
-- 
2.26.2




Re: [gentoo-portage-dev] profile-formats not respected ?

2021-04-20 Thread Zac Medico
On 4/20/21 5:03 AM, Joakim Tjernlund wrote:
> On Mon, 2021-04-19 at 14:10 -0700, Zac Medico wrote:
>> On 4/19/21 6:36 AM, Joakim Tjernlund wrote:
>>> I got an embedded ppc32 system which I build in a QEMU user chroot and I 
>>> cannot
>>> make the profile-formats = portage-2 profile-bashrcs profile-set in my own 
>>> profiles layout.conf
>>> work for me.
>>> Seems like portage just ignores this setting and I cannot understand why.
>>> Any pointers?
>>>
>>>  Jocke
>>>
>>
>> Hopefully this command will provide a clue:
>>
>> python -c 'import portage;
>> print(portage.settings._locations_manager.profiles_complex)'
> 
> Got some progress. I got a profile.bashrc: 
> .../my-overlay/profiles/cusfpv3/profile.bashrc
> where I setup PKG_INSTALL_MASK/INSTALL_MASK and this does not work in
> portage-3.0.18. I can echo the vars. and see them set but portage ignores 
> these settings.
> This system was previously using a very old portage, 2.3.76 and that was fine.
> 
> 
> Another strange thing is my own set, i need to keep that at 
> .../my-overlay/{sets, sets.conf}
> In our amd64 DE profile I can have my sets at 
> .../my-overlay/profiles/infinera/sets , why is that?

A setting like this in /etc/portage/sets.conf would do it:

[my-overlay-profile-sets]
class = portage.sets.files.StaticFileSet
multiset = true
directory = /my-overlay/profiles/infinera/sets
world-candidate = true

> Anyhow, here is my profile printout:
> ./print-port.py 
> (_profile_node(location='/usr/portage/profiles/base', 
> portage1_directories=True, user_config=False, 
> profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False,
> show_deprecated_warning=False), 
> _profile_node(location='/usr/portage/profiles/default/linux', 
> portage1_directories=True, user_config=False, 
> profile_formats=('portage-1-compat',),
> eapi='5', allow_build_id=False, show_deprecated_warning=False), 
> _profile_node(location='/usr/portage/profiles/arch/base', 
> portage1_directories=True, user_config=False,
> profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False, 
> show_deprecated_warning=False), 
> _profile_node(location='/usr/portage/profiles/arch/powerpc',
> portage1_directories=True, user_config=False, 
> profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False, 
> show_deprecated_warning=False),
> _profile_node(location='/usr/portage/profiles/default/linux/powerpc', 
> portage1_directories=True, user_config=False, 
> profile_formats=('portage-1-compat',), eapi='5',
> allow_build_id=False, show_deprecated_warning=False), 
> _profile_node(location='/usr/portage/profiles/arch/base', 
> portage1_directories=True, user_config=False,
> profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False, 
> show_deprecated_warning=False), 
> _profile_node(location='/usr/portage/profiles/arch/powerpc',
> portage1_directories=True, user_config=False, 
> profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False, 
> show_deprecated_warning=False),
> _profile_node(location='/usr/portage/profiles/arch/powerpc/ppc32', 
> portage1_directories=True, user_config=False, 
> profile_formats=('portage-1-compat',), eapi='5',
> allow_build_id=False, show_deprecated_warning=False), 
> _profile_node(location='/usr/portage/profiles/default/linux/powerpc/ppc32', 
> portage1_directories=True, user_config=False,
> profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False, 
> show_deprecated_warning=False), 
> _profile_node(location='/usr/portage/profiles/releases',
> portage1_directories=True, user_config=False, 
> profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False, 
> show_deprecated_warning=False),
> _profile_node(location='/usr/portage/profiles/releases/17.0', 
> portage1_directories=True, user_config=False, 
> profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False,
> show_deprecated_warning=False), 
> _profile_node(location='/usr/portage/profiles/default/linux/powerpc/ppc32/17.0',
>  portage1_directories=True, user_config=False,
> profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False, 
> show_deprecated_warning=True), 
> _profile_node(location='/usr/local/portage/tmv3-target-
> overlay/profiles/cusfpv3', portage1_directories=True, user_config=False, 
> profile_formats=('profile-bashrcs', 'portage-2', 'profile-set'), eapi='5', 
> allow_build_id=False,
> show_deprecated_warning=True), _profile_node(location='/etc/portage/profile', 
> portage1_directories=True, user_config=True, 
> profile_formats=('profile-bashrcs', 'profile-set'),
> eapi=None, allow_build_id=True, show_deprecated_warning=False))
> 

Are these effective profile_formats now consistent with your
expectations, and do they now behave as you would expect?
-- 
Thanks,
Zac



signature.asc
Description: OpenPGP digital signature


Re: [gentoo-portage-dev] profile-formats not respected ?

2021-04-20 Thread Joakim Tjernlund
On Mon, 2021-04-19 at 14:10 -0700, Zac Medico wrote:
> On 4/19/21 6:36 AM, Joakim Tjernlund wrote:
> > I got an embedded ppc32 system which I build in a QEMU user chroot and I 
> > cannot
> > make the profile-formats = portage-2 profile-bashrcs profile-set in my own 
> > profiles layout.conf
> > work for me.
> > Seems like portage just ignores this setting and I cannot understand why.
> > Any pointers?
> > 
> >  Jocke
> > 
> 
> Hopefully this command will provide a clue:
> 
> python -c 'import portage;
> print(portage.settings._locations_manager.profiles_complex)'

Got some progress. I got a profile.bashrc: 
.../my-overlay/profiles/cusfpv3/profile.bashrc
where I setup PKG_INSTALL_MASK/INSTALL_MASK and this does not work in
portage-3.0.18. I can echo the vars. and see them set but portage ignores these 
settings.
This system was previously using a very old portage, 2.3.76 and that was fine.


Another strange thing is my own set, i need to keep that at 
.../my-overlay/{sets, sets.conf}
In our amd64 DE profile I can have my sets at 
.../my-overlay/profiles/infinera/sets , why is that?

Anyhow, here is my profile printout:
./print-port.py 
(_profile_node(location='/usr/portage/profiles/base', 
portage1_directories=True, user_config=False, 
profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False,
show_deprecated_warning=False), 
_profile_node(location='/usr/portage/profiles/default/linux', 
portage1_directories=True, user_config=False, 
profile_formats=('portage-1-compat',),
eapi='5', allow_build_id=False, show_deprecated_warning=False), 
_profile_node(location='/usr/portage/profiles/arch/base', 
portage1_directories=True, user_config=False,
profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False, 
show_deprecated_warning=False), 
_profile_node(location='/usr/portage/profiles/arch/powerpc',
portage1_directories=True, user_config=False, 
profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False, 
show_deprecated_warning=False),
_profile_node(location='/usr/portage/profiles/default/linux/powerpc', 
portage1_directories=True, user_config=False, 
profile_formats=('portage-1-compat',), eapi='5',
allow_build_id=False, show_deprecated_warning=False), 
_profile_node(location='/usr/portage/profiles/arch/base', 
portage1_directories=True, user_config=False,
profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False, 
show_deprecated_warning=False), 
_profile_node(location='/usr/portage/profiles/arch/powerpc',
portage1_directories=True, user_config=False, 
profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False, 
show_deprecated_warning=False),
_profile_node(location='/usr/portage/profiles/arch/powerpc/ppc32', 
portage1_directories=True, user_config=False, 
profile_formats=('portage-1-compat',), eapi='5',
allow_build_id=False, show_deprecated_warning=False), 
_profile_node(location='/usr/portage/profiles/default/linux/powerpc/ppc32', 
portage1_directories=True, user_config=False,
profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False, 
show_deprecated_warning=False), 
_profile_node(location='/usr/portage/profiles/releases',
portage1_directories=True, user_config=False, 
profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False, 
show_deprecated_warning=False),
_profile_node(location='/usr/portage/profiles/releases/17.0', 
portage1_directories=True, user_config=False, 
profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False,
show_deprecated_warning=False), 
_profile_node(location='/usr/portage/profiles/default/linux/powerpc/ppc32/17.0',
 portage1_directories=True, user_config=False,
profile_formats=('portage-1-compat',), eapi='5', allow_build_id=False, 
show_deprecated_warning=True), 
_profile_node(location='/usr/local/portage/tmv3-target-
overlay/profiles/cusfpv3', portage1_directories=True, user_config=False, 
profile_formats=('profile-bashrcs', 'portage-2', 'profile-set'), eapi='5', 
allow_build_id=False,
show_deprecated_warning=True), _profile_node(location='/etc/portage/profile', 
portage1_directories=True, user_config=True, 
profile_formats=('profile-bashrcs', 'profile-set'),
eapi=None, allow_build_id=True, show_deprecated_warning=False))