rpms/createrepo/F-8 createrepo-skip-stat.patch, NONE, 1.1 createrepo.spec, 1.31, 1.32
Luke Macken (lmacken)
fedora-extras-commits at redhat.com
Mon Jan 21 21:05:47 UTC 2008
Author: lmacken
Update of /cvs/pkgs/rpms/createrepo/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv15500
Modified Files:
createrepo.spec
Added Files:
createrepo-skip-stat.patch
Log Message:
* Mon Jan 21 2008 Luke Macken <lmacken at redhat.com> - 0.4.11-2
- Apply createrepo-skip-stat.patch to add a '--skip-stat' option that can
drastically speed up repository creation when used in conjunction with '--update'
createrepo-skip-stat.patch:
--- NEW FILE createrepo-skip-stat.patch ---
From: Seth Vidal <skvidal at fedoraproject.org>
Date: Fri, 18 Jan 2008 20:41:32 +0000 (-0500)
Subject: add --skip-stat to maintenance version of createrepo
X-Git-Url: http://devel.linux.duke.edu/gitweb/?p=createrepo.git;a=commitdiff_plain;h=cb9dfcb56f8190ffc440c7c841c969ab31d1bd91
add --skip-stat to maintenance version of createrepo
---
diff --git a/genpkgmetadata.py b/genpkgmetadata.py
index bef0225..631f95f 100755
--- a/genpkgmetadata.py
+++ b/genpkgmetadata.py
@@ -65,6 +65,8 @@ def usage(retval=1):
-p, --pretty = output xml files in pretty format.
--update = update existing metadata (if present)
-d, --database = generate the sqlite databases.
+ --skip-stat = skip the stat() call on a --update, assumes if the name
+ is the same then the file is the same.
""")
sys.exit(retval)
@@ -151,6 +153,9 @@ class MetaDataGenerator:
'verbose' : self.cmds['verbose'],
'pkgdir' : os.path.normpath(os.path.join(self.cmds['basedir'], directory))
}
+ if self.cmds['skip_stat']:
+ opts['do_stat'] = False
+
#and scan the old repo
self.oldData = readMetadata.MetadataIndex(self.cmds['outputdir'],
basefile, flfile, otherfile, opts)
@@ -434,6 +439,7 @@ def parseArgs(args):
cmds['file-pattern-match'] = ['.*bin\/.*', '^\/etc\/.*', '^\/usr\/lib\/sendmail$']
cmds['dir-pattern-match'] = ['.*bin\/.*', '^\/etc\/.*']
cmds['skip-symlinks'] = False
+ cmds['skip_stat'] = False
cmds['pkglist'] = []
try:
@@ -442,7 +448,8 @@ def parseArgs(args):
'baseurl=', 'groupfile=', 'checksum=',
'version', 'pretty', 'split', 'outputdir=',
'noepoch', 'checkts', 'database', 'update',
- 'skip-symlinks', 'pkglist='])
+ 'skip-symlinks', 'pkglist=',
+ 'skip-stat'])
except getopt.error, e:
errorprint(_('Options Error: %s.') % e)
usage()
@@ -514,6 +521,8 @@ def parseArgs(args):
cmds['database'] = True
elif arg in ['-S', '--skip-symlinks']:
cmds['skip-symlinks'] = True
+ elif arg == '--skip-stat':
+ cmds['skip_stat'] = True
elif arg in ['-i', '--pkglist']:
cmds['pkglist'] = a
diff --git a/readMetadata.py b/readMetadata.py
index 60e6129..3aaa891 100644
--- a/readMetadata.py
+++ b/readMetadata.py
@@ -87,6 +87,8 @@ class MetadataIndex(object):
mtime = None
size = None
relpath = None
+ do_stat = self.opts.get('do_stat', True)
+
while node is not None:
if node.type != "element":
node = node.next
@@ -112,24 +114,25 @@ class MetadataIndex(object):
if size is None:
print _("size missing for %s") % relpath
return
- filepath = os.path.join(self.opts['pkgdir'], relpath)
- try:
- st = os.stat(filepath)
- except OSError:
- #file missing -- ignore
- return
- if not stat.S_ISREG(st.st_mode):
- #ignore non files
- return
- #check size and mtime
- if st.st_size != size:
- if self.opts.get('verbose'):
- print _("Size (%i -> %i) changed for file %s") % (size,st.st_size,filepath)
- return
- if st.st_mtime != mtime:
- if self.opts.get('verbose'):
- print _("Modification time changed for %s") % filepath
- return
+ if do_stat:
+ filepath = os.path.join(self.opts['pkgdir'], relpath)
+ try:
+ st = os.stat(filepath)
+ except OSError:
+ #file missing -- ignore
+ return
+ if not stat.S_ISREG(st.st_mode):
+ #ignore non files
+ return
+ #check size and mtime
+ if st.st_size != size:
+ if self.opts.get('verbose'):
+ print _("Size (%i -> %i) changed for file %s") % (size,st.st_size,filepath)
+ return
+ if st.st_mtime != mtime:
+ if self.opts.get('verbose'):
+ print _("Modification time changed for %s") % filepath
+ return
#otherwise we index
self.basenodes[relpath] = top
self.pkg_ids[relpath] = pkgid
Index: createrepo.spec
===================================================================
RCS file: /cvs/pkgs/rpms/createrepo/F-8/createrepo.spec,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- createrepo.spec 29 Nov 2007 17:00:27 -0000 1.31
+++ createrepo.spec 21 Jan 2008 21:05:06 -0000 1.32
@@ -1,10 +1,11 @@
Summary: Creates a common metadata repository
Name: createrepo
Version: 0.4.11
-Release: 1%{?dist}
+Release: 2%{?dist}
License: GPLv2
Group: System Environment/Base
Source: %{name}-%{version}.tar.gz
+Patch0: %{name}-skip-stat.patch
URL: http://linux.duke.edu/projects/metadata/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArchitectures: noarch
@@ -18,6 +19,7 @@
%prep
%setup -q
+%patch0 -p1 -b .skip-stat
%build
@@ -38,6 +40,10 @@
%{_mandir}/*/*
%changelog
+* Mon Jan 21 2008 Luke Macken <lmacken at redhat.com> - 0.4.11-2
+- Apply createrepo-skip-stat.patch to add a '--skip-stat' option that can
+ drastically speed up repository creation when used in conjunction with '--update'
+
* Mon Nov 26 2007 Luke Macken <lmacken at redhat.com> - 0.4.11-1
- Update to 0.4.11
- Include COPYING file and change License to GPLv2
More information about the fedora-extras-commits
mailing list