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