Freebsd
什麼是 ${PYTHON_REL} FreeBSD
我在製作埠時出錯,所以我檢查了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-wiki
bsd.python.mk
,後來更新了:將 bsd.python.mk 拆分為用於消費者埠的用途和特定於埠樹的 .mk 文件(20140809:送出 r364450)
並且該
PYTHON_REL
變數似乎已被視為已過時,因為在該送出之後不再定義它(請參閱文件)。如果它對您的埠很重要,您可以使用類似的東西構造該變數
PYTHON_REL = ${PYTHON3_DEFAULT:S/.//}