Re: Python version dependencies in pkg

From: Tatsuki Makino <tatsuki_makino_at_hotmail.com>
Date: Mon, 03 Oct 2022 03:36:27 UTC
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

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? :)

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.

> This also works for non-py flavours
> 
> cd devel/binutils
> make FLAVOR=aarch64 install
> make FLAVOR=arm_none_eabi install
> make FLAVOR=mingw32 install
> 

Therefore, if an unrelated FLAVOR is specified, there are ports that cause strange things to happen.
For example...

# make -C /usr/ports/devel/llvm-devel/ -D BUILD_ALL_PYTHON_FLAVORS configure FLAVOR=py310
===>  llvm-devel-16.0.d20220928 Unknown flavor 'py310', possible flavors:
default lite.
*** Error code 1

Stop.
make: stopped in /usr/ports/devel/llvm-devel/

Python is used, but the FLAVOR specifying Python version cannot be passed.
This port is only supposed to work with the default version of Python.

The situation with the conflicts themselves seems to be better than before.
multimedia/libopenshot maintainer is probably slacking off without resolving the conflicts :)

I'm not sure, but I think there was such a restriction :)

Regards.