lib name on LIB_DEPENDS

Ruslan Mahmatkhanov cvs-src at
Mon Oct 29 13:04:01 UTC 2012

Rainer Hurling wrote on 29.10.2012 14:34:
> Am 29.10.2012 08:53 (UTC+1) schrieb Ruslan Mahmatkhanov:
>> Rainer Hurling wrote on 28.10.2012 19:46:
>>> On 28.10.2012 16:12 (UTC+2), Lucas Saliés Brum wrote:
>>>> Hello all!
>>>> This is my first e-mail that list.
>>>> I'm having problems with a new port that I'm trying to create.
>>>> # make install
>>>> ...
>>>> ===>   Registering installation for py27-feedparser-5.1.2
>>>> ===>   Returning to build of cgmail-0.6.2
>>>> Error: shared library "feedparser" does not exist
>>>> *** [lib-depends] Error code 1
>>>> Stop in /usr/home/lucas/apps/ports/cgmail.
>>>> What name should I use LIB_DEPENDS=
>>>> [HERE]:${PORTSDIR}/textproc/py-feedparser ?
>>> textproc/py-feedparser does not install any library, so you need to test
>>> the presence of the python script, installed by this port:
>>> /usr/local/lib/python2.7/site-packages/
>>> To be path and version independent you should use something like
>>> ${PYTHON_SITELIBDIR}/${PORTSDIR}/textproc/py-feedparser
>> Please note that using
>> ${PYTHON_PKGNAMEPREFIX}feedparser>0:${PORTSDIR}/textproc/py-feedparser
>> is preferable.
> Thanks for this info. I wasn't sure about what is best to use in
> 'DEPENDS' lines.
> Do I understand it right, that '${PYTHON_PKGNAMEPREFIX}feedparser>0'
> tests directly, if the port py27-feedparser is installed and
> '${PYTHONPREFIX_SITELIBDIR}/ would test, if the file
> '' exists in the path '${PYTHONPREFIX_SITELIBDIR}'? (better

Yes, you understanding it right. ${PYTHON_PKGNAMEPREFIX} will accept any 
value according to what PYTHON_DEFAULT_VERSION is set in user's 
environment (py27-, py26-, py32- etc). The main difference over using 
PYTHON_SITELIBDIR is that it will work correctly if/when dependent port 
will be switched to egg-install. In fact it works fine for both 
egg-installed ports, and with distutils-installed ones. And hardcoding 
dependency on some file is ugly, imho. Your package needs another 
package, so why should it bother to which file in filesystem it depends? 
Dropping SITELIBDIR usage is a common trend in ports tree - perl and 
ruby ports do the same.

> In PH, chapter 6.14, three cases are mentioned:
> Used as a PKGNAMEPREFIX to distinguish packages for different Python
> versions. Example: py24-
> Location of the site-packages tree, that contains installation path of
> Python (usually LOCALBASE). The PYTHON_SITELIBDIR variable can be very
> useful when installing Python modules.
> The PREFIX-clean variant of PYTHON_SITELIBDIR. Always use
> %%PYTHON_SITELIBDIR%% in pkg-plist when possible. The default value of
> %%PYTHON_SITELIBDIR%% is lib/python%%PYTHON_VERSION%%/site-packages

I'm not sure what the difference among (2) and (3). They looking the 
same for me. Never used (3) and see no problem. Can't tell you more at 
the moment, it needs to digging into


Tinderboxing kills... the drives.

More information about the freebsd-ports mailing list