Date: Tue, 4 Oct 2022 17:19:18 +1030 From: Shane Ambler <FreeBSD@ShaneWare.Biz> To: Tatsuki Makino <tatsuki_makino@hotmail.com>, ports@freebsd.org Subject: Re: Python version dependencies in pkg Message-ID: <ac71f8a1-4509-fca2-6cd5-a1e44b5e7120@ShaneWare.Biz> In-Reply-To: <PSAPR03MB56396A36ED700020784DBDD3FA5B9@PSAPR03MB5639.apcprd03.prod.outlook.com> 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>
next in thread | previous in thread | raw e-mail | index | archive | help
On 3/10/22 2:06 pm, Tatsuki Makino wrote: > I tend to just keep the answer in my head and forget the why :) > And a point I remembered. > > Shane Ambler wrote on 2022/10/02 12:27: >> While making or updating a port, I build and install for each flavour >> before testing with poudriere >> >> make FLAVOR=py38 stage-qa install clean >> make FLAVOR=py39 stage-qa install clean >> make FLAVOR=py310 stage-qa install clean >> >> I find that this doesn't carry through to dependencies so I end up >> setting FLAVOR in the env >> >> setenv FLAVOR py310; make stage-qa install clean >> >> and bash would be - export FLAVOR=py310; make install > > Isn't that behavior no problem because it is a USE_PYTHON=allflavors port or because BUILD_ALL_PYTHON_FLAVORS is defined in the /etc/make.conf? > In environments where this is not the case, the following occurs > > # 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. 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 > Stop. > make: stopped in /usr/ports/multimedia/libopenshot/ > > 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? :) Works for any port using flavours, the value given just has to be valid for the port you are building. lite is valid for llvm-devel, canna is valid for emacs. You can get a list of valid flavours for a port - make -C /usr/ports/devel/llvm-devel -V FLAVORS > 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. No - FLAVOR is a single value option, you only build one at a time. you can build multiple flavours in a loop - for F in py38 py39 py310 do make FLAVOR=$F install done Which means you can write a script that gets the valid flavours and builds all flavours for a given port. -- FreeBSD - the place to B...Software Developing Shane Ambler
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ac71f8a1-4509-fca2-6cd5-a1e44b5e7120>