O que é o $ {PYTHON_REL} FreeBSD?

1

Eu tenho um erro ao fazer uma porta, então verifiquei o makefile e encontrei a linha problemática.

O problema é que eu não sei como consertar, já que não sei como alterar a variável Python_Rel.

Onde isso está localizado e como posso alterá-lo?

    
por Brandon Bradley 04.06.2016 / 18:02

1 resposta

1

Ele é definido em um arquivo de inclusão lido pelo programa make, por exemplo, por essa linha no final do makefile da porta:

.include <bsd.port.mk>

No meu sistema FreeBSD 10, os arquivos de inclusão estão em /usr/ports/Mk , e grep encontra essas correspondências:

$ 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)

e bsd.python.mk estão incluídos condicionalmente ( grep é seu amigo):

$ 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

e o comentário nesse arquivo diz

# 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). 

e usa a configuração assim:

.if defined(USE_PYTHON) || defined(USE_PYTHON_BUILD) || defined(USE_PYTHON_RUN) 
.include "${PORTSDIR}/Mk/bsd.python.mk"
.endif

Portanto, a resposta curta é que o makefile de sua porta não possui uma das configurações necessárias para incluir o arquivo que definiu PYTHON_REL , por exemplo,

USE_PYTHON = yes

Há um bom arquivo README na parte superior da árvore de portes, mostrando onde informações detalhadas podem ser encontradas.

Ao trabalhar com portas, talvez você queira acompanhar as alterações feitas. Por exemplo, bsd.python.mk foi atualizado mais tarde, de acordo com o wiki do ports do FreeBSD :

Divida o bsd.python.mk em um USES para portas do consumidor e um arquivo .mk específico da árvore de portas ( 20140809: Commit r364450 )

e a variável PYTHON_REL parece ter sido considerada obsoleta, uma vez que não estava mais definida após a confirmação (consulte arquivo ).

Se for importante para sua porta, você pode construir essa variável com algo como

PYTHON_REL = ${PYTHON3_DEFAULT:S/.//}
    
por 04.06.2016 / 19:59