Staging, poudriere and PYTHON_SITELIBDIR => package won't build

Michael Gmelin freebsd at grem.de
Mon Dec 2 00:12:53 UTC 2013


On Sun, 1 Dec 2013 21:16:17 +0100
Michael Gmelin <freebsd at grem.de> wrote:

> I'm in the process of converting a port to staging, it works ok when
> run in my normal environment, but when run using poudriere testport
> the package step falls apart (staging is all ok, without violations),
> e.g.
> 
> pkg-static:lstat(/wrkdirs/usr/ports/devel/py-ice/work/stage/prefix/py27-Ice-3.5.1/lib/python2.7/site-packages/Ice.pth):
> No such file or directory
> 
> Corresponding entry in pkg-plist:
> %%PYTHON_SITELIBDIR%%/Ice.pth
> 
> The actual file is in:
> /wrkdirs/usr/ports/devel/py-ice/work/stage/usr/local/lib/python2.7/site-packages/Ice.pth
> 
> Which makes sense, since the port installs it (and all its other
> files) there:
> 
>         ${ECHO} "Ice" > ${STAGEDIR}${PYTHON_SITELIBDIR}/Ice.pth
> 
> The port installs a lot more files of course.
> 
> Is this a general problem when PREFIX != LOCALBASE for python ports?
> 
> Using poudriere testport -n it works as expected.
> 
> Thanks,
> Michael
> 

To answer my own question:
This also happened without poudriere and PREFIX != LOCALBASE and
staging enabled.

I worked around the issue by putting this into Makefile

.if ${PREFIX} != ${LOCALBASE} && !defined(NO_STAGE)
PYSITEDIR=      ${PREFIX}${PYTHON_SITELIBDIR:S|^${LOCALBASE}||}
.else
PYSITEDIR=      ${PYTHON_SITELIBDIR}
.endif

and replacing ${PYTHON_SITELIBDIR} with ${PYSITEDIR}, e.g.

        ${ECHO} "Ice" > ${STAGEDIR}${PYSITEDIR}/Ice.pth

-- 
Michael Gmelin


More information about the freebsd-ports mailing list