Sem categoria

Instalação de scripts Python a partir do automake...

Tenho trabalhado para tornar mais fácil para os desenvolvedores compilar e instalar o Membase, e hoje aprendi mais um pouco da mágica do automake. Sou um daqueles desenvolvedores que não querem passar muito tempo trabalhando no sistema de compilação, quero passar meu tempo trabalhando no código. Ao mesmo tempo, não quero fazer um trabalho manual desnecessário e chato que o sistema de compilação deveria fazer por mim.

Partes do Membase são implementadas em Python, e eu estava tentando descobrir como instalar essas partes. Não gosto de bagunçar o diretório /bin com arquivos de "biblioteca", portanto, precisava de uma maneira de empacotar melhor as partes do Python. Tenho usado um script de wrapper que define a variável PYTHONPATH anteriormente, mas nunca tentei integrar isso em um makefile gerado pelo automake.

Como sempre, comecei pedindo ajuda ao Google, mas não encontrei um exemplo bom e fácil, então acabei lendo o manual do automake. Acontece que é bastante fácil fazer exatamente o que eu quero, então decidi compartilhar o conhecimento em uma postagem de blog :-)

Não queremos codificar o caminho para o nosso binário em nenhum lugar, portanto, a primeira coisa que precisamos fazer é atualizar o configure.ac para gerar também o nosso script de wrapper:

AC_CONFIG_FILES(Makefile python_wrapper)

Tenho vários programas implementados com Python e não quero criar uma tonelada de wrappers, portanto, meu python_wrapper.in tem a seguinte aparência:

#! /bin/sh
if test -z "${PYTHONPATH}"; then
   PYTHONPATH=@libdir@/python
mais
   PYTHONPATH=@libdir@/python:${PYTHONPATH}
fi
exportar PYTHONPATH
exec @libdir@/python/nome de base $0.py "$@"

Isso significa que, se eu instalar esse script como /opt/membase/bin/stats, ele tentará executar /opt/membase/lib/python/stats.py com os mesmos argumentos. Portanto, vamos adicionar uma regra ao Makefile.am para gerar os scripts com os nomes corretos:

PYTHON_TOOLS=stats
${PYTHON_TOOLS}: python_wrapper
    cp $< $@

BUILT_SOURCES += ${PYTHON_TOOLS}
CLEANFILES+= ${PYTHON_TOOLS}
bin_SCRIPTS+= ${PYTHON_TOOLS}

Agora temos o script wrapper instalado e geramos todos os scripts para iniciar nossos programas. A próxima coisa a fazer seria criar o diretório de destino para os bits python e instalar todos eles lá. Para isso, precisamos criar uma variável que termine com "dir" para conter o nome do diretório. Vamos nomear nosso "pythonlibdir" e colocá-lo em um subdiretório chamado python do libdir especificado:

pythonlibdir=$(libdir)/python

Por fim, precisamos listar todos os arquivos que queremos colocar lá:

pythonlib_DATA=
                mc_bin_client.py
                mc_bin_servidor.py
                memcacheConstants.py
 
pythonlib_SCRIPTS=
                stats.py

O motivo pelo qual uso pythonlib_SCRIPTS para o último é porque quero que o bit de execução seja definido no arquivo.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Trond Norbye

Trond Norbye é arquiteto de software na Couchbase. Principal colaborador dos projetos Couchbase e Memcached. Criou as bibliotecas de clientes C/C++ e node.js do Couchbase.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.