- Add a cache dir for pungi (/var/cache/pungi) and a cli option to override

- Fix some typos
- Handle cache dir not being on same file system
This commit is contained in:
Jesse Keating 2007-08-26 19:44:38 -04:00 committed by Jesse Keating
parent 666fb84064
commit b8b7d763f9
4 changed files with 50 additions and 9 deletions

View File

@ -1,5 +1,6 @@
* Sun Aug 26 2007 Jesse Keating <jkeating@redhat.com>
- Add better support for %packages syntax using native pykickstart
- Add a cache dir for pungi (/var/cache/pungi) and a cli option to override
* Sat Aug 25 2007 Jesse Keating <jkeating@redhat.com>
- Use a kickstart file as input now (for cdsize and package manifest)

5
pungi
View File

@ -54,13 +54,14 @@ def main():
config.set('default', 'relnotedirre', relnotedirre)
config.set('default', 'relnotepkgs', relnotepkgs)
config.set('default', 'product_path', 'Packages')
config.set('default', 'cachedir', '/srv/pungi/cache') # needs to be handled better
config.set('default', 'cachedir', '/var/cache/pungi')
# set configs from cli options
config.set('default', 'name', opts.name)
config.set('default', 'version', opts.ver)
config.set('default', 'flavor', opts.flavor)
config.set('default', 'destdir', opts.destdir)
config.set('default', 'cachedir', opts.cachedir)
config.set('default', 'bugurl', opts.bugurl)
config.set('default', 'discs', opts.discs)
@ -156,6 +157,8 @@ if __name__ == '__main__':
help='the flavor of your distribution spin (optional)')
parser.add_option("--destdir", default=".", dest="destdir",
help='destination directory (defaults to current directory)')
parser.add_option("--cachedir", default="/var/cache/pungi", dest="cachedir",
help='package cache directory (defaults to /var/cache/pungi)')
parser.add_option("--bugurl", default="http://bugzilla.redhat.com", dest="bugurl",
help='the url for your bug system (defaults to http://bugzilla.redhat.com)')
parser.add_option("--discs", default='1', dest="discs",

View File

@ -30,6 +30,7 @@ A tool to create anaconda based installation trees/isos of a set of rpms.
%install
rm -rf $RPM_BUILD_ROOT
%{__python} setup.py install -O1 --skip-build --root $RPM_BUILD_ROOT
%{__install} -d $RPM_BUILD_ROOT/var/cache/pungi
%clean
@ -44,6 +45,7 @@ rm -rf $RPM_BUILD_ROOT
%{python_sitelib}/pypungi
%{_bindir}/pungi
%{_datadir}/pungi
/var/cache/pungi
%changelog

View File

@ -197,11 +197,11 @@ class Gather(pypungi.PungiBase):
packages.extend(groupobj.mandatory_packages.keys())
# Add the default packages unless we don't want them
if group.include == 1
if group.include == 1:
packages.extend(groupobj.default_packages.keys())
# Add the optional packages if we want them
if group.include == 2
if group.include == 2:
packages.extend(groupobj.default_packages.keys())
packages.extend(groupobj.optional_packages.keys())
@ -325,7 +325,15 @@ class Gather(pypungi.PungiBase):
target = os.path.join(pkgdir, os.path.basename(remote))
if os.path.exists(target):
os.remove(target) # avoid traceback after interrupted download
os.link(local, target)
try:
os.link(local, target)
except OSError, e:
if e.errno == 18:
# Can't hardlink cross file systems
shutil.copy2(local, target)
else:
self.logger.error('Got an error linking from cache: %s' % e)
raise OSError, e
continue
# Disable cache otherwise things won't download
@ -336,9 +344,18 @@ class Gather(pypungi.PungiBase):
# do a little dance for file:// repos...
path = repo.getPackage(pkg)
if not os.path.exists(local) or not os.path.samefile(path, local):
shutil.copy2(path, local)
shutil.copy2(local, path)
try:
os.link(local, os.path.join(pkgdir, os.path.basename(remote)))
except OSError, e:
if e.errno == 18:
# Can't hardlink cross file systems
shutil.copy2(local, os.path.join(pkgdir, os.path.basename(remote)))
else:
self.logger.error('Got an error linking from cache: %s' % e)
raise OSError, e
os.link(local, os.path.join(pkgdir, os.path.basename(remote)))
self.logger.info('Finished downloading packages.')
@ -425,7 +442,16 @@ class Gather(pypungi.PungiBase):
if os.path.exists(os.path.join(pkgdir, os.path.basename(remote))) and self.verifyCachePkg(pkg, os.path.join(pkgdir, os.path.basename(remote))):
self.logger.debug("%s already exists in tree and appears to be complete" % local)
else:
os.link(local, os.path.join(pkgdir, os.path.basename(remote)))
try:
os.link(local, os.path.join(pkgdir, os.path.basename(remote)))
except OSError, e:
if e.errno == 18:
# Can't hardlink cross file systems
shutil.copy2(local, os.path.join(pkgdir, os.path.basename(remote)))
else:
self.logger.error('Got an error linking from cache: %s' % e)
raise OSError, e
continue
# Disable cache otherwise things won't download
@ -436,6 +462,15 @@ class Gather(pypungi.PungiBase):
# do a little dance for file:// repos...
path = repo.getPackage(pkg)
if not os.path.exists(local) or not os.path.samefile(path, local):
shutil.copy2(path, local)
shutil.copy2(local, path)
try:
os.link(local, os.path.join(pkgdir, os.path.basename(remote)))
except OSError, e:
if e.errno == 18:
# Can't hardlink cross file systems
shutil.copy2(local, target)
else:
self.logger.error('Got an error linking from cache: %s' % e)
raise OSError, e
os.link(local, os.path.join(pkgdir, os.path.basename(remote)))