Re: Why does createrepo -C use ctime, not mtime?
Seth Vidal <[email protected]>
| Newsgroups | gmane.linux.rpm.metadata |
|---|---|
| Message-ID | <[email protected]> |
On Wed, 7 Apr 2010, Seth Vidal wrote: > > > On Wed, 7 Apr 2010, Robert Vogelgesang wrote: > >> Hello developers, >> >> currently, I'm investigating an issue with "createrepo --update -C" >> when run by "cobbler reposync", and found in createrepo's source >> that the -C option is based on Python's os.path.getctime(), i. e. the >> time of the last status change on *nix hosts (ctime). >> >> As of version 2.0.3.1, "cobbler reposync" chown's and chmod's all >> files in a repo on each run, changing the ctime of all files in the >> repo; I think this is a bug in itself, but nonetheless I'd expect >> that mtime is used by createrepo when checking for changed files. >> >> createrepo's variable which holds the reference timestamp, >> self.mdtimestamp in class MetaDataConfig, seems to indicate that mtime >> should be, or even was historically used. So, is there any special >> reason why this is based on ctime and not mtime? I've searched >> createrepo's source, and http://createrepo.baseurl.org/, but found >> no answer. >> >> Can you shed some light on this, please? > > You have to search pretty far back. > > here is where the original -C behavior comes from: > > http://lists.baseurl.org/pipermail/rpm-metadata/2006-July/000663.html > And looking back further - the original behavior was getmtime() but Pete found some problems with the reliability of mtime() for the check. I don't remember the _why_ there, though. -sv