lib name on LIB_DEPENDS

Rainer Hurling rhurlin at gwdg.de
Mon Oct 29 13:15:27 UTC 2012


Am 29.10.2012 14:03 (UTC+1) schrieb Ruslan Mahmatkhanov:
> 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.
>>>>> http://paste.sistematico.org/14
>>>>>
>>>>> # 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/feedparser.py
>>>>
>>>> To be path and version independent you should use something like
>>>>
>>>> ${PYTHON_SITELIBDIR}/feedparser.py:${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}/feedparser.py would test, if the file
>> 'feedparser.py' exists in the path '${PYTHONPREFIX_SITELIBDIR}'? (better
>> than '${PYTHON_SITELIBDIR}'?
> 
> 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.

Many thanks for this detailed and understandable explanations :)

I really appreciate it,
Rainer

>> In PH, chapter 6.14, three cases are mentioned:
>>
>> (1) PYTHON_PKGNAMEPREFIX
>> Used as a PKGNAMEPREFIX to distinguish packages for different Python
>> versions. Example: py24-
>>
>> (2) PYTHON_SITELIBDIR
>> 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.
>>
>> (3) PYTHONPREFIX_SITELIBDIR
>> 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 bsd.python.mk.
> 


More information about the freebsd-ports mailing list