Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 8 Oct 2022 13:36:58 +0900
From:      Tatsuki Makino <tatsuki_makino@hotmail.com>
To:        Shane Ambler <FreeBSD@ShaneWare.Biz>
Cc:        ports@freebsd.org
Subject:   Re: Python version dependencies in pkg
Message-ID:  <PSAPR03MB5639E515CAF178CBFFBC5836FA5E9@PSAPR03MB5639.apcprd03.prod.outlook.com>
In-Reply-To: <ac71f8a1-4509-fca2-6cd5-a1e44b5e7120@ShaneWare.Biz>
References:  <8B490359-27A3-410C-AE98-C1362D4FA9F0@gushi.org> <CAN6yY1sGnDF-oReRMFeVz78oGoTfUvsvwUOQwoBZWN9ibjTw3A@mail.gmail.com> <B2A3A400-F21A-4E92-8116-41E7945E4E5C@gushi.org> <CAN6yY1ujCH9Xnv3QN-GF8hN75v%2BxGkOTHrsr25jzxGNGdYW2vQ@mail.gmail.com> <89D2B2D7-FA3D-46F5-A93B-4846950A157C@gushi.org> <65597c37-813b-d0ed-ea9f-8591b68cf097@gwdg.de> <20220929083939.Horde.Viq2uLBgUctcrsgmaJxN_1u@webmail.leidinger.net> <F4395689-FFD7-4591-BE5C-3F15983BF82D@gushi.org> <PSAPR03MB5639D5A4E9655F3AE61361E6FA579@PSAPR03MB5639.apcprd03.prod.outlook.com> <1fdde4e6-fa80-720f-7c85-8417d2a3b642@ShaneWare.Biz> <PSAPR03MB5639F69C594D482C7A152DC0FA569@PSAPR03MB5639.apcprd03.prod.outlook.com> <adf633cd-9c47-c1a1-0201-3121d55f60e3@ShaneWare.Biz> <PSAPR03MB56396A36ED700020784DBDD3FA5B9@PSAPR03MB5639.apcprd03.prod.outlook.com> <ac71f8a1-4509-fca2-6cd5-a1e44b5e7120@ShaneWare.Biz>

next in thread | previous in thread | raw e-mail | index | archive | help
Shane Ambler wrote on 2022/10/04 15:49:
> On 3/10/22 2:06 pm, Tatsuki Makino wrote:
>> # make -C /usr/ports/multimedia/libopenshot/ install FLAVOR=py310
>> ===>  py310-libopenshot-0.2.7_4 Unknown flavor 'py310', possible flavors:
>> py39.
>> *** Error code 1
> 
> That error indicates a flavour that is not supported. For example a port
> specifying USES=python:3.9 means py39 is the only supported flavor so
> building with py310 would fail. USES=python:3.8-3.10 would build for
> py39 and py310 but fail for py311
> 
> So it isn't an option you can set globally, you only use it to build one
> flavour of the one port at a time, although you can set it in env so
> that it carries through to install deps that require and support the
> same flavour. Useful when first creating a port, sometimes for new
> versions, after that you use poudriere to test build all available
> flavours.

This is the behavior that causes the difference between USE_PYTHON=allflavors and -D BUILD_ALL_PYTHON_FLAVORS, which I am relentlessly :) repeating.
Specifically here: https://cgit.freebsd.org/ports/tree/Mk/Uses/python.mk?id=7d48381cbd686ee8d77871bc25cf1e926a314f85#n414
If the above variables are not defined here, FLAVORS will be narrowed down to only the PYTHON{,[23]}_DEFAULT flavors.
Currently _PYTHON_ARGS defaults to 3.7+, so only py39 remains.
If FLAVOR that does not exist in FLAVORS is specified, IGNORE is defined here.
https://cgit.freebsd.org/ports/tree/Mk/bsd.port.mk?id=b74ed0f79d32e7564969faac41a2e1083bbc49f4#n1474

> Instead of building flavours, you can use pkg to install all flavours
> that are available in the pkg repo.
> 
> pkg search numpy
> 
> pkg install py38-numpy py39-numpy

Thus, py-numpy is USE_PYTHON=allflavors, so all FLAVOR packages exist, but only py39- packages are made for those that are not allflavors.
For poudriere, to remove that restriction, write BUILD_ALL_PYTHON_FLAVORS= in /usr/local/etc/poudriere.d/*make.conf.
Then, once the bulk of category/usespythonport@py310 by poudriere is started, all the necessary py310-packages can be made.
poudriere bulk -j jail multimedia/openshot@py310

And, my this part
>> Next.
>> As long as FLAVOR was only used for Python, there was no problem.
>> But now FLAVOR has the following just for what I know.
>> devel/llvm-devel, editors/emacs, graphics/evince, graphics/gpu-firmware-*-kmod... and what else was there? :)
>> I don't know if the make variable FLAVOR is something that can have more than one FLAVOR in it.
>> Python and PHP seem to have a part where it puts the FLAVOR for itself into another variable like PY_FLAVOR or PHP_FLAVOR.
>> However, sometimes FLAVOR is used without considering the possibility that it may contain unrelated FLAVOR or multiple FLAVORs in other cases.

As another example, I am building evince-lite (graphics/evince@lite) and my question is what if evince starts requiring llvm-devel to build it?
I think it is just a matter of writing BUILD_DEPENDS=llvm-config-devel:devel/llvm-devel@default
However, in that case, I think the variable FLAVOR would no longer be something the user is allowed to touch.

I'm not sure :) I don't know if I explained it well :)
I think I'm not derailing from one of the original questions of this topic, about the python version being only 3.9 :)

Regards.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?PSAPR03MB5639E515CAF178CBFFBC5836FA5E9>