我在制作端口时出错,所以我检查了 makefile,发现了有问题的行。
问题是我不知道如何修复它,因为我不知道如何更改 Python_Rel 变量。
它位于哪里以及如何更改它?
答案1
它是在 make 程序读取的包含文件中定义的,例如,通过端口 makefile 末尾的这一行:
.include <bsd.port.mk>
在我的 FreeBSD 10 系统上,包含文件位于 中/usr/ports/Mk
,并grep
找到以下匹配项:
$ fgrep -n PYTHON_REL *
bsd.python.mk:70:# PYTHON_REL - Version number in numerical format, to ease
bsd.python.mk:353:PYTHON_REL= 341
bsd.python.mk:364:PYTHON_REL= 335
bsd.python.mk:375:PYTHON_REL= 325
bsd.python.mk:386:PYTHON_REL= 278
bsd.python.mk:394:PYTHON_REL!= ${PYTHON_CMD} -c 'import sys; h = "%x" % sys.hexversion; \
bsd.python.mk:505: defined(PYTHON_REL)
bsd.python.mk:553:.if ${PYTHON_REL} >= 320 && defined(PYTHON_PY3K_PLIST_HACK)
bsd.python.mk:569:.endif # ${PYTHON_REL} >= 320 && defined(PYTHON_PY3K_PLIST_HACK)
并且bsd.python.mk
有条件地包含在内(grep
是您的朋友):
$ fgrep -n bsd.python.mk *
bsd.port.mk:398:# Implies inclusion of bsd.python.mk. (Also see
bsd.port.mk:1446:.include "${PORTSDIR}/Mk/bsd.python.mk"
bsd.port.mk:1893:.include "${PORTSDIR}/Mk/bsd.python.mk"
bsd.python.mk:4:# $FreeBSD: head/Mk/bsd.python.mk 362364 2014-07-20 19:47:45Z antoine $
bsd.python.mk:9:Python_Pre_Include= bsd.python.mk
bsd.python.mk:630:Python_Post_Include= bsd.python.mk
bsd.wx.mk:11:# variables (e.g. USE_PYTHON) are defined before it (this is a bsd.python.mk
该文件中的评论说
# USE_PYTHON - If set, this port relies on the Python language.
# Implies inclusion of bsd.python.mk. (Also see
# that file for more information on USE_PYTHON_*
# and USE_PYDISTUTILS).
和它用途像这样的设置:
.if defined(USE_PYTHON) || defined(USE_PYTHON_BUILD) || defined(USE_PYTHON_RUN)
.include "${PORTSDIR}/Mk/bsd.python.mk"
.endif
所以简短的答案是您的端口 makefile 缺少包含定义的文件所需的设置之一PYTHON_REL
,例如,
USE_PYTHON = yes
README
端口树的顶部有一个很好的文件,显示了可以找到详细信息的位置。
在使用端口时,您可能希望跟踪所做的更改。例如,bsd.python.mk
稍后更新,根据FreeBSD ports-wiki:
将 bsd.python.mk 拆分为消费者端口的用途和端口树特定的 .mk 文件(20140809:提交 r364450)
并且该PYTHON_REL
变量似乎已被视为已过时,因为在该提交之后不再定义它(请参阅文件)。
如果它对您的端口很重要,您可以使用类似的内容构造该变量
PYTHON_REL = ${PYTHON3_DEFAULT:S/.//}