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.