2011-01-11 10 views
10

Utilizzo DBI e DBD :: SQLite e ora mi piacerebbe utilizzare la funzione R * Tree di SQLite. Poiché questa funzione non è compilata da DBD :: SQLite per impostazione predefinita, devo aggiungere un -DSQLITE_ENABLE_RTREE=1 alla variabile @CC_DEFINE in Makefile.PL DBD :: SQLite. Se faccio un 'perl Makefile.PL & & make & & make install', tutto funziona bene localmente sulla mia macchina, ma questo alla fine deve essere distribuibile/distribuibile agli utenti finali.Le migliori pratiche per l'utilizzo di un modulo leggermente modificabile da CPAN?

Cosa devo fare in un caso come questo? Dovrei copiare il sorgente, grep il sorgente e creare un DBD :: SQLite :: WithRTree? Creare una versione privata di DBD :: SQLite 1.31.1 (Dove 1.31 è la versione corrente di DBD :: SQLite)? Forse un modo migliore del tutto?

Tutte le altre distribuzioni nel progetto vengono distribuite/distribuite tramite un CPAN :: Mini mirror + CPAN :: Mini :: Inject.

risposta

11

devo aggiungere un '-DSQLITE_ENABLE_RTREE = 1' alla variabile @CC_DEFINE in DBD :: Makefile.PL di SQLite

Lo stai facendo male, perl Makefile.PL DEFINE='-DSQLITE_ENABLE_RTREE=1' opere. Questo è documentato in ExtUtils::MakeMaker. Ora che lo sai, una soluzione semplice che coinvolge Distroprefs probabilmente andrà a posto.

3

Per problemi simili, ho installato la distribuzione modificata in una directory separata (senza modificare alcun nome di modulo) e utilizzando use lib qw(the/special/directory) o l'impostazione $PERL5LIB per gli script che devono utilizzare il modulo avanzato.

Anche il tweaking del modulo potrebbe fare il lavoro, ma sembra molto più lavoro da fare e provare.

+1

E mantenere un'attenta registrazione di ciò che si è modificato – justintime

0

Si può fare questo:

cpan 
o conf makepl_arg "DEFINE='-DSQLITE_ENABLE_RTREE=1'" 
o conf commit 

CPAN sarà quindi aggiungere in modo permanente che definiscono alla parte anteriore del tutto il vostro Makefile.PL chiama.

Quindi, dovrebbe essere solo

cpan DBD::SQLite 

E le opzioni di makefile dovrebbe ottenere farcito sulle vostre linee di compilazione

Problemi correlati