Release: waf vs install directories

James Browning jamesb192 at jamesb192.com
Tue Mar 25 12:30:31 UTC 2025


On Monday, March 24, 2025 8:25:10 PM Pacific Daylight Time you wrote:
> > The code has changed, behavior is not noticeably different than it was
> > before.
> Didn't it change from dist-packages to site-packages on Debian and friends?

Yes, it does due to upstream waf and/or Python changes.

According to the table I made (below), waf 2.0 on Ubuntu wrongly installs in 
the dist packages folder and PYTHON{,ARCH}DIR are only separated on Fedora 
running Python 3 and waf 2.0; I didn't check other distributions. 

 Distro | Python | waf | PYTHONDIR / PYTHONARCHDIR |
 ------ | ---- | ------ | ------------------------- |
 Fedora | 2. 7 | 2.0.25 | /usr/local/lib/python2.7/site-packages |
 Fedora | 2. 7 | 2.1. 4 | /usr/local/lib/python2.7/site-packages |
 Fedora | 3.13 | 2.0.25 | /usr/local/lib{,64}/python3.13/site-packages |
 Fedora | 3.13 | 2.1. 4 | /usr/local/lib/python3.13/site-packages |
 Ubuntu | 2. 7 | 2.0.25 | /usr/local/lib/python2.7/dist-packages  |
 Ubuntu | 2. 7 | 2.1. 4 | /usr/local/lib/python2.7/site-packages |
 Ubuntu | 3.12 | 2.0.25 | /usr/local/lib/python3/dist-packages |
 Ubuntu | 3.12 | 2.1. 4 | /usr/local/lib/python3.12/site-packages |

The source for PYTHONDIR and PYTHONARCHDIR changed sometime between waf 
2.0.25 and 2.14. 

waf 2.0.25 tries to get them from distutils.sysconfig.get_python_lib, or if 
that fails sysconfig.get_path via a wrapper in waflib.Tools.python

waf 2.1.4 OTOH only uses sysconfig.get_path via a waflib.Tools.python wrapper

TLDW details are in the .waf-* folders after an initial waf run.




More information about the devel mailing list