2011-11-14 16 views
5

Tengo un proyecto escrito principalmente en C++ que incluye algunos scripts de ayuda escritos en python. Por el momento, los guiones contienen las variables sustituidas por las autotools:autotools y python setup.py

#[email protected]@ 
# -*- coding: utf-8 -*- 
... 

try: 
    datapath = os.environ['DATA_PATH'] 
except KeyError: 
    datapath = '@[email protected]' 

Y aquí es un extracto de Makefile.am:

BUILT_SOURCES = script.py 
nodist_python_PYTHON = script.py 
CLEANFILES = $(python_PYTHON) 
EXTRA_DIST = script.py.in 

do_subst = sed -e 's,[@]PYTHON[@],$(PYTHON),g'\ 
      -e 's,[@]pkgdatadir[@],$(pkgdatadir),g' 

script.py: script.py.in 
    $(do_subst) < $< > [email protected] 
chmod +x [email protected] 

Estos scripts tienen también algunas dependencias del módulo que probablemente sería mejor manejado por una secuencia de comandos setup.py

Entonces, ¿cuál es la mejor manera de mezclar las herramientas autotools y python distutils? ¿Debería confiar completamente en las autotools? De lo contrario, ¿cómo puedo integrar el lanzamiento de setup.py en Makefile.am?

Respuesta

2

Utilizaría autoconf para configurar script.py en lugar de 'hacer' como lo ha demostrado. Algo así como:

AC_CONFIG_FILES([script.py], [chmod +x script.py]) 

antes de AC_OUTPUT en configure.ac debería hacerlo.

+0

Buen punto, esto hará la sustitución automáticamente. Sin embargo, realmente no ayuda con las dependencias de Python. – hpixel

+0

Acabo de leer en el documento que la variable de directorio no está completamente expandida por AC_CONFIG_FILES, por lo que esto no funcionaría bien para $ (pkgdatadir). – hpixel

+0

Estaba equivocado. Mi respuesta no funcionará con pkgdatadir porque se configura en el momento de la instalación. – ldav1s

Cuestiones relacionadas