Construa o executável C com variáveis env através do Makefile [closed]

1

Eu tenho um aplicativo enorme escrito em C e Python. Eu tenho um Makefile que ajuda a construir o executável final em várias plataformas. Aqui está uma parte principal (não posso expor demais por causa de informações confidenciais):

PLATFORM     := $(shell uname -r)
MATCH = $(filter $(PLATFORM),$(PLATFORM_1) $(PLATFORM_2))
ifneq ($(MATCH),)
PYTHON       := $(shell which python2.6 || which python)
MAIN_PYSRC   = <path_to_main_python_script>
... # setting few more variables

else
PYTHON       := $(shell which python2.7 || which python)
MAIN_PYSRC   = <path_to_main_python_script>
... # setting few more variables

endif

all: build

build:
    @gcc -g -02 -Wall -DPYTHON=\"${PYTHON}\" -DPYTHON_EGG_CACHE=\"/tmp/.python-eggs\ -DMAIN_PYSRC=\"${MAIN_PYSRC}\" ... # few more variables

Quando executo "gmake all", funciona perfeitamente em qualquer plataforma. Mas o problema ocorre quando eu construo o pacote para o FreeBSD 7.3 (todos os outros funcionam perfeitamente), coloco no repositório interno e instalo com o comando:

sudo pkg_add -r <secret_internal_repo>/<secret_app>.tbz

Nos logs do pacote de construção, posso descobrir que ele foi executado no Makefile com sucesso. Mas quando executo o executável, ele gera um erro com permissões ruins para os ovos python, ou seja, ele tenta localizá-lo no meu diretório $ HOME em vez de /tmp/.python-eggs

Então eu executo

sudo gmake clean
sudo gmake all

E novamente funciona perfeitamente! Para verificar se ele é compilado com outras variáveis, tentei alterar, por exemplo, o caminho "MAIN_PYSRC" e ele não inicia de todo, porque não consigo encontrar o script python. Então, eu acredito que deve estar ok com essa string de compilação.

Eu sei, é difícil ajudar quando não posso compartilhar muitas informações, mas talvez você tenha uma ideia, pelo menos, qual é a raiz do problema.

UPDATE # 1. Em documentos antigos, descobri que ele deveria ser executado por um usuário específico no FreeBSD 7.3 (algo com permissões). De qualquer forma, isso elimina essa limitação depois que eu executo "gmake clean, gmake all" após a instalação. Eu acho que podemos fechar esta questão devido a uma solução parcial encontrada.

    
por Sergius 10.09.2018 / 20:14

0 respostas