2011-11-14 31 views
5

Ho un progetto scritto principalmente in C++ che include alcuni script di aiuto scritti in python. Per il momento, gli script contengono variabili sostituiti dai autotools:autotools e python setup.py

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

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

Ed ecco un estratto di 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] 

Questi script hanno anche un paio di dipendenze dei moduli, che probabilmente sarebbe meglio gestito da uno script setup.py.

Quindi qual è il modo migliore per mixare gli autotools e gli strumenti di distroils python? Devo fare affidamento esclusivamente sugli autotools? Altrimenti come posso integrare l'avvio di setup.py nel Makefile.am?

risposta

2

Vorrei usare autoconf per impostare script.py invece di "make" come hai mostrato. Qualcosa di simile:

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

prima AC_OUTPUT in configure.ac dovrebbe farlo.

+0

Buon punto, questo farà automaticamente la sostituzione. Tuttavia, non aiuta molto con le dipendenze python. – hpixel

+0

Sto solo leggendo nel doc che la variabile di directory non è completamente espansa da AC_CONFIG_FILES, quindi questo non funzionerebbe bene per $ (pkgdatadir). – hpixel

+0

Ho sbagliato. La mia risposta non funzionerà con pkgdatadir perché viene configurata al momento dell'installazione. – ldav1s