trouble building py3-requests -- dependencies build against wrong version of python.

Vick Khera vivek at khera.org
Fri Jun 9 13:47:10 UTC 2017


I'm trying to build py3-iocage, which has as one dependeny py3-requests.
When building this with poudriere, the py3-requests port somehow causes
py27-chardet to be built instead of py36-chardet, which then results in
py3-requests failing to find the dependency (which it just tried to build).

Here is a test I just ran:

% rm /usr/local/poudriere/data/packages/freebsd:11:x86:64/All/py*-chardet*
% poudriere bulk -j 11amd64 -J 4:6 www/py3-requests

The build fails with this:

[00:00:08] ====>> [01][00:00:00] Starting build of textproc/py-chardet
[00:00:14] ====>> [01][00:00:06] Finished build of textproc/py-chardet:
Success
[00:00:14] ====>> [01][00:00:00] Starting build of www/py3-requests
[00:00:19] ====>> [01][00:00:05] Finished build of www/py3-requests:
Failed: run-depends


Looking in the log file from poudriere we have:

=======================<phase: run-depends    >============================
===>   py36-requests-2.17.3 depends on package: py36-chardet>=3.0.2 - not found
===>   py36-requests-2.17.3 depends on package:
/packages/All/py36-chardet-3.0.3.txz - not found
===>   USE_PACKAGE_DEPENDS_ONLY set - not building missing dependency
from source

and we see that py27-chardet was actually built:

% ls -l
/usr/local/poudriere/data/packages/freebsd:11:x86:64/All/py*-chardet*
-rw-r--r--  1 root  wheel  155212 Jun  9 09:24
/usr/local/poudriere/data/packages/freebsd:11:x86:64/All/py27-chardet-3.0.3.txz

If I explicitly build py3-chardet I get the right version:

% rm /usr/local/poudriere/data/packages/freebsd:11:x86:64/All/py*-chardet*
% poudriere bulk -j 11amd64 -J 4:6 textproc/py3-chardet
% ls -l
/usr/local/poudriere/data/packages/freebsd:11:x86:64/All/py*-chardet*
-rw-r--r--  1 root  wheel  157916 Jun  9 09:35
/usr/local/poudriere/data/packages/freebsd:11:x86:64/All/py36-chardet-3.0.3.txz

When I subsequently build py3-requests it finds the py36-chardet package,
but then fails on its other dependencies with the same error pattern (ie,
it built py27-idna instead of py36-idna, etc.)


How can I convince py3-requests to build py3-chardet rather than py-chardet
(and py36-idna, etc.) like it does above? It seems to me that the "include"
method of making the py3 modules child ports of the py modules is failing
here with py3-requests.

My poudriere make.conf file has

DEFAULT_VERSIONS=mysql=5.6 pgsql=9.4 apache=2.4 perl5=5.24 ssl=openssl
php=7.0 python3=3.6

That is the only mention of python in there.

Running FreeBSD 11.0/amd64, ports tree updated as of this morning with
portsnap.


More information about the freebsd-ports mailing list