Freebsd

什麼是 ${PYTHON_REL} FreeBSD

  • June 4, 2016

我在製作埠時出錯,所以我檢查了makefile,發現了有問題的行。

問題是我不知道如何修復它,因為我不知道如何更改 Python_Rel 變數。

它位於哪裡,我該如何更改?

它在 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文件,顯示了可以找到詳細資訊的位置。

在使用埠時,您可能希望跟踪所做的更改。例如,根據FreeBSD 的 ports-wikibsd.python.mk ,後來更新了:

將 bsd.python.mk 拆分為用於消費者埠的用途和特定於埠樹的 .mk 文件(20140809:送出 r364450

並且該PYTHON_REL變數似乎已被視為已過時,因為在該送出之後不再定義它(請參閱文件)。

如果它對您的埠很重要,您可以使用類似的東西構造該變數

PYTHON_REL = ${PYTHON3_DEFAULT:S/.//}

引用自:https://unix.stackexchange.com/questions/287676