# Mesa broken ?



## daeron (Jul 12, 2019)

Can anyone suggest why Mesa-libs is building Python27 or suggest any other way around this ports issue?

For the past week a new 12-STABLE system (AMD64) has been unable to build/install devel/meson
because the mesa-libs port automatically builds Python27 instead of using Python36 which is already on the system as the current default version of Python.
After also building and installing llvm80 with this stupid Python27 it gets to devel/meson to announce:
"meson-0.51.0 needs Python 3.5 at least, but 2.7 was specified"

As a result all the depending ports fail (e.g. libdrm, mesa-libs, cairo, gobject-intropection, gtk-update-icon-cache, xfce4-wm, xfce4)


----------



## daeron (Jul 12, 2019)

Appears to be another example of  Bug 233723 "PYTHON_VERSION poisoning during chained build of dependencies"
which has been open for seven (?!?) months.
- Question 1: should graphics/mesa-dri/Makefile-common line 48 still include "python:2.7,build" ??
- Question 2: does anyone understand the Python versioning logic used in devel/py-Jinja2/Makefile ??


----------



## SirDice (Jul 12, 2019)

1) yes.
2) yes. It's to support different "flavors". So the same port can be used to build Python 2.7 _and_ 3.6 versions of the Python module.


----------



## Barney (Jul 14, 2019)

Any insight on why it doesnt work? I have a fresh install of 11.3 and I can't get past this because mesa can't find python 3.6


----------



## e-regen (Jul 15, 2019)

Same problem: Tried to install emacs from a fresh port (downloaded yesterday). I am new at this. Any help/hint to get around this?


----------



## Lamia (Jul 15, 2019)

MESA won't install on 11.3. I have just upgraded from 11.2. The problem was a variable in pango. Another build problem was with clamav. Curl was acting up then. The fix for these build problems was to update ports, base, etc using portsnap fetch update, freebsd-update fetch install and the likes. You are likely faced with a dependency or dependencies problem - old/incompatible shared lib, etc.


----------



## Barney (Jul 15, 2019)

After many trials and tribulations, I got the meson port to build with:

make PYTHON_VERSION=python3.6 install


----------



## SirDice (Jul 15, 2019)

The correct way would be `make FLAVOR=py36 install`.


----------



## Barney (Jul 15, 2019)

Seems to me that the point of ports would be to have this work without human intervention.


----------



## SirDice (Jul 15, 2019)

A lot of us use automated tools to build our own packages. Especially if you have to maintain more than one machine.


----------



## Barney (Jul 15, 2019)

Im talking about having to know (how to) specify the flavor in order for it to build. If you can specify that a port requires python 3.5+, there should also be a way for it to find it if it's installed on the system. 

I shouldnt have to specify the flavor on a command line to make it not fail to build.


----------



## SirDice (Jul 15, 2019)

Barney said:


> Im talking about having to know (how to) specify the flavor in order for it to build. If you can specify that a port requires python 3.5+, there should also be a way for it to find it if it's installed on the system.


Have a look at /usr/ports/Mk/bsd.default-versions.mk and /usr/ports/Mk/Uses/python.mk. While our documentation is quite good it usually lags somewhat behind the actual implementation. Reading the source can be quite enlightening.


----------



## Lamia (Jul 15, 2019)

So far from my side, py27 as default python went to the grave with FreeBSD11.2. It was a gradual migration. I had py36 set as default in my make.conf and subsequent builds were all successful for a long time. Hence, I switched to py36 on all other machines. It does not mean that py27 modules don't get installed at some point. No! They do if they are dependencies for some other pkgs.


----------



## SirDice (Jul 16, 2019)

Ports can request _a_ python and they can request specific versions. The default changed so all ports that request _any_ version will change. Ports that request a specific version don't. 

Lots of ports specifically request Python 2.7 as a _build_ dependency. _Build_ dependencies are only required to, well, build the port.

Ports have three types of dependencies; build, run and library. Packages only have two; run and library.


----------



## Lamia (Jul 16, 2019)

I just thanked you. That was informational. I am also correct that there are some rudiments pf Py27. I need run 'pkg autoremove' at some point to weed them out. I knew that long ago.


----------



## Oclair (Jan 4, 2020)

Barney said:


> After many trials and tribulations, I got the meson port to build with:
> 
> make PYTHON_VERSION=python3.6 install





SirDice said:


> The correct way would be `make FLAVOR=py36 install`.



No Dice Barney is correct
on 12.1
make FLAVOR=py37 install returned
`/usr/ports/devel/meson # make FLAVOR=py37 install
===>  meson-0.52.1 FLAVOR is defined (to py37) while this port does not have
FLAVORS..
*** Error code 1`

while
/usr/ports/devel/meson # make PYTHON_VERSION=python3.7 install

built the port


----------

