poudriere, FLAVOR and rebuilding for python3.6

Matthew Seaman matthew at FreeBSD.org
Mon Sep 10 06:12:07 UTC 2018


On 09/09/2018 19:34, Bjarne wrote:
> 
> I have been using python 2.7 so far for all ports, which means all
> python packages  are built as py27-something. These python packages are
> all automaticcaly build as dependencies from other packages, for example
> like py27-dnspython which is a requirement of mailman.
> 
> Now I am trying to change to python36, but can't get the py36 packages
> to build. In the transition period,  I would like to simultaneously have:
> py27-something
> py36-something
> 
> 
> In make.conf for the jail I set:
> DEFAULT_VERSIONS+= python=3.6 python=2.7

This does not do what you're expecting, and will be equivalent to just
'python=2.7'

> I would expect a new "poudriere bulk" command would build all
> py36-something for me, but no, got nothing.
> No packages where build.
> 
> 
> I added the follwing to  poudriere.conf:
> FLAVOR_DEFAULT_ALL=yes
> Still without any luck.
> 
> I can of course specify that I want to build for example dnspython and
> then poudriere builds py36-dnspython, but that means I will have to go
> through all dependencies by hand.
> 
> So what am I supposed to do.

OK, there are two ways of handling this.

Firstly you can specify a package as:

   some/port at all

in the list of packages you feed to poudriere.  I think you can use that
on a package which is not itself flavoured, and the effect is inherited
by flavoured dependencies, but you'll need to experiment.  If you do
this explicitly for python ports it will result in building both
python-2.7 and python-3.6 versions.

Secondly you can build your packages with one default setting, and then
do an incremental bulk using the other default setting, which should
result in you ending up with both flavours in your repository.
Something like:

  # echo 'DEFAULT_VERSIONS+= python=3.6' >
/usr/local/etc/poudriere.d/python36-make.conf
  # poudriere bulk -c -f /usr/local/etc/poudriere.d/my-ports
  # poudriere bulk -z python36 -f  /usr/local/etc/poudriere.d/my-ports

It is, quite feasible to have simultaneous parallel installs of
python-2.7 and python-3.6 -- the DEFAULT_VERSIONS make.conf setting will
affect which version you get by typing plain 'python' by controlling how
various symbolic links are created.

Note that the version of any flavoured dependencies will be baked into
unflavoured packages, and it's the last built that will appear in your
repository.

However, your example of trying to treat the mail/mailman port in this
way is unfortunately doomed to failure, as mailman is specifically
restricted to python-2.7 only.

	Cheers,

	Matthew

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 963 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20180910/5785a4c8/attachment.sig>


More information about the freebsd-ports mailing list