Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 May 2018 18:06:26 +1000
From:      Kubilay Kocak <koobs@FreeBSD.org>
To:        Christopher Hall <christopherhall.hsw@gmail.com>, FreeBSD Ports <freebsd-ports@freebsd.org>, python <python@FreeBSD.org>, Nikolai Lifanov <lifanov@FreeBSD.org>
Subject:   Re: sysutils/ansible and FLAVOR (Python 3.6 support)
Message-ID:  <01e214e3-d119-3f50-ac34-6aad4cadc7bc@FreeBSD.org>
In-Reply-To: <20180515150248.63b852a6@gmail.com>
References:  <20180515150248.63b852a6@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 15/05/2018 5:02 pm, Christopher Hall wrote:
> Hello everyone,

Hi Christopher,

> I am looking at which is the best way to modify the sysutils/ansible
> port so that it will use Python3.6. Currently it has the "noflavors"
> option in the USE_PYTHON line son only a single packages with
> Python2.7 exists in the pkg repo.

tldr: Add PYTHON_PKGNAMEPREFIX to the port if you want to produce a py3x
version of the port. If you/we/users also want it from the official
package repositories, remove noflavors.

> Should it be renamed to sysutils/py-ansible and "noflavors" removed?
> To produce both py27-ansible and py36-ansible packages in repo,
> allowing a choice of Python version

The name of the directory is less relevant than whether a/the port uses
PYTHON_PKGNAMEPREFIX (to differentiate package names when built with/for
different Python versions. The current ansible port doesn't do this and
it should (since it correctly allows all python versions with
USES=python, without qualification)

> Alternatively, is it better to keep the name as sysutils/ansible and
> just change the "USES=python" to "USES=python:3.6+".  However this would
> make it a Python3 only package.
> 
> Any suggestions as to which approach would be preferable?

The Python team recommends that if a Python package supports multiple
Python versions (ansible does), then the port should reflect that and
not force one version or another, and use PYTHON_PKGNAMEPREFIX. This
includes Python packages supporting 2 & 3, and forcing 3.x or the
reverse, forcing 2.x.

This at *least* allows a user to select which version of the
port/package they want, using DEFAULT_VERSIONS overrides.

Separately, on the multiple flavours/package creation question in the
official package repositories, we also recommend that noflavors only be
used in the *very* rare cases where it is *entirely* irrelevant which
Python version is used, and where there isn't any value *whatsoever* in
having multiple packages, say if a user wants to transition between
using a 2.x version to 3.x on their own time at their own pace.

tldr, for maintainers:

- User choice should not be removed/precluded
- Be declarative, not imperative for Python ports/packages
- If it supports > 1 Python versions (any combination), use
PYTHON_PKGNAMEPREFIX



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?01e214e3-d119-3f50-ac34-6aad4cadc7bc>