On Sun, Jun 03, 2012 at 10:01:01PM +0200, Baptiste Daroussin wrote:
> On Sun, Jun 03, 2012 at 09:20:23PM +0200, Roland Smith wrote:
> > [Please cc me, since I'm not subscribed to this list. I originally asked 
> > this
> > on questions@.]
> > 
> > Hi,
> > 
> > With the release of the new options framework for ports, I've run into a
> > problem trying to convert one of my ports.
> > 
> > The nature of the problem is that the port seems to ignore the setting 
> > stored
> > in /var/db/ports/<portname>/options:
> > 
> > I've used 'make config' to set the PYCAIRO option to on;
> > 
> > slackbox# cat /var/db/ports/py27-py-stl/options
> > # This file is auto-generated by 'make config'.
> > # Options for py27-py-stl-3.1
> > _OPTIONS_READ=py27-py-stl-3.1
> > _FILE_COMPLETE_OPTIONS_LIST=PYCAIRO
> > OPTIONS_FILE_SET+=PYCAIRO
> > 
> > But the port seems to ignore it:
> > 
> > slackbox# make showconfig
> > ===> The following configuration options are available for py27-py-stl-3.1:
> >      PYCAIRO=off: Use (py)Cairo to enable stl2pdf
> > ===> Use 'make config' to modify these settings
> > 
> > slackbox# make -V PORT_OPTIONS
> > DOCS EXAMPLES NLS
> > 
> > Every time I do 'make config', the PYCAIRO option will be unset, even if it
> > shows as set in /var/db/ports/<portname>/options!
> > 
> > My port Makefile is as follows:
> > ------------ port Makefile ----------------
> > # New ports collection makefile for:    py-stl
> > # Date created:                         28 Dec 2011
> > # Whom:                                 rsm...@xs4all.nl
> > #
> > # $FreeBSD$
> > 
> > PORTNAME=           py-stl
> > PORTVERSION=                3.1
> > CATEGORIES=         graphics python
> > MASTER_SITES=               http://rsmith.home.xs4all.nl/software/
> > PKGNAMEPREFIX=              ${PYTHON_PKGNAMEPREFIX}
> > 
> > MAINTAINER=         rsm...@xs4all.nl
> > COMMENT=            Converts STL models to POV-Ray meshes or PostScript/PDF 
> > images
> > 
> > USE_ZIP=            YES
> > USE_PYTHON=         2.5+
> > USE_PYDISTUTILS=    YES
> > 
> > CONFLICTS=          stl2pov-[0-9]*
> > 
> > MAN1=                       stl2ps.1 stlinfo.1
> > 
> > OPTIONS_DEFINE=     PYCAIRO
> > PYCAIRO_DESC=       Use (py)Cairo to enable stl2pdf
> > 
> > .include <bsd.port.options.mk>
> > 
> > .if ${PORT_OPTIONS:MPYCAIRO}
> > RUN_DEPENDS+=               
> > ${PYTHON_PKGNAMEPREFIX}cairo>1.8:${PORTSDIR}/graphics/py-cairo
> > MAN1+=                      stl2pdf.1
> > PLIST_SUB+=         STL2PDF=""
> > .else
> > PLIST_SUB+=         STL2PDF="@comment "
> > .endif
> > 
> > NO_BUILD=           YES
> > 
> > post-install:
> > .if ${PORT_OPTIONS:MPYCAIRO}
> >     @${INSTALL_MAN} ${WRKSRC}/stl2pdf.1 ${MANPREFIX}/man/man1
> >     @${MV} ${PREFIX}/bin/stl2pdf.py ${PREFIX}/bin/stl2pdf
> > .else
> >     @${RM} -f ${PREFIX}/bin/stl2pdf.py
> >     @${RM} -f  ${MANPREFIX}/man/man1/stl2pdf.1*
> > .endif
> >     @${INSTALL_MAN} ${WRKSRC}/stl2ps.1 ${MANPREFIX}/man/man1
> >     @${INSTALL_MAN} ${WRKSRC}/stlinfo.1 ${MANPREFIX}/man/man1
> >     @${MV} ${PREFIX}/bin/stl2ps.py  ${PREFIX}/bin/stl2ps
> >     @${MV} ${PREFIX}/bin/stl2pov.py ${PREFIX}/bin/stl2pov
> >     @${MV} ${PREFIX}/bin/stlinfo.py ${PREFIX}/bin/stlinfo
> >     @${MV} 
> > ${PYTHON_SITELIBDIR}/py_stl-${PORTVERSION}-py${PYTHON_VER}.egg-info 
> > ${PYTHON_SITELIBDIR}/${PYDISTUTILS_EGGINFO}
> > 
> > .include <bsd.port.mk>
> > ------------ port Makefile ----------------
> > 
> > I've looked at other ports makefiles and see no obvious defects. Help?
> > 
> > Roland
> > -- 
> > R.F.Smith                                   http://rsmith.home.xs4all.nl/
> > [plain text _non-HTML_ PGP/GnuPG encrypted/signed email much appreciated]
> > pgp: 1A2B 477F 9970 BA3C 2914  B7CE 1277 EFB0 C321 A725 (KeyID: C321A725)
> 
> You found a nice bug.
> 
> The options file is read the thing is that the UNIQUENAME is changed is
> py-py-stl when the optionsfile is read and it is py27-py-stl when it is 
> written.
> 
> I don't know why yet, I'll fix it asap.
> 
> regards,
> Bapt

FYI the bug you found also happen with python and rubygem ports, it can also
happen with apache ports, in fact any ports depending on bsd.*.mk where bsd.*.mk
defines the pkgnameprefix.

nothing directly related to optionsNG a good example of workaround is: look at
py-yaml

You can have multiple workarounds:
first one: define OPTIONSFILE in your ports like py-yaml
second one: replace bsd.port.options.mk by bsd.port.pre.mk (do not forget in
that case the bsd.port.post.mk in the end)
thrid define LATEST_LINK in your port.

The real fix which will be long term, any volunteer? would be to define a
PKGNAMEEXTRAPREFIX in bsd.port.mk that bsd.*.mk can overwrite and create a
UNIQUENAME that is independant from that EXTRAPREFIX.

regards,
Bapt

Attachment: pgp2RAmfv77cP.pgp
Description: PGP signature

Reply via email to