什么是 ${PYTHON_REL} FreeBSD

什么是 ${PYTHON_REL} FreeBSD

我在制作端口时出错,所以我检查了 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/.//}

相关内容