[Python] distutils[2].build_extension e gestione 'depends'

Matteo Bertini matteo a naufraghi.net
Ven 13 Gen 2012 19:19:02 CET


Ho notato una scelta che non capisco nel codice di distutils:

http://bit.ly/build_ext_471

def build_extension(self, ext):
...
        depends = sources + ext.depends
        if not (self.force or newer_group(depends, ext_path, 'newer')):
            logger.debug("skipping '%s' extension (up-to-date)", ext.name)
            return
        else:
            logger.info("building '%s' extension", ext.name)
...

In pratica una estensione viene rebuildata quando:

self.force è True

oppure

newer_group(depends, ext_path, 'newer') quando qualche depends è più nuovo del
target.

La cosa che non capisco è quel 'newer' che fa figurare le dipendenza mancanti
come più nuove del target.

Che senso ha? Nel mio caso un typo in depends aveva come effetto dei continui
rebuild (che avrei ottenuto più volentieri con --force)

Non mi viene in mente un caso sensato in cui una dipendenza mancante deve
forzare un rebuild e non dare un errore, però accetto suggerimenti :)



Maggiori informazioni sulla lista Python