Rework how repodata gets generated for media.
Necessary as anaconda doesn't handle split metadata being on the DVD anymore.
This commit is contained in:
parent
3ce7826b06
commit
b2cf9776ea
@ -1,5 +1,8 @@
|
|||||||
* Mon Jan 21 2008 Jesse Keating <jkeating@redhat.com>
|
* Mon Jan 21 2008 Jesse Keating <jkeating@redhat.com>
|
||||||
- Use createrepo api instead of execing it from the cli
|
- Use createrepo api instead of execing it from the cli
|
||||||
|
- Create different repodata for the unified media, as anaconda no longer
|
||||||
|
deals with "ALL" or "1,2,3,4" correctly. Simplify anaconda by just
|
||||||
|
using normal metadata. Re-factor some things to handle this right.
|
||||||
|
|
||||||
* Mon Dec 17 Jesse Keating <jkeating@redhat.com>
|
* Mon Dec 17 Jesse Keating <jkeating@redhat.com>
|
||||||
- Always add the core comps group.
|
- Always add the core comps group.
|
||||||
|
@ -68,12 +68,12 @@ class Pungi(pypungi.PungiBase):
|
|||||||
return subfile.replace(basedir + os.path.sep, '')
|
return subfile.replace(basedir + os.path.sep, '')
|
||||||
|
|
||||||
def _makeMetadata(self, path, cachedir, comps=False, repoview=False, repoviewtitle=False,
|
def _makeMetadata(self, path, cachedir, comps=False, repoview=False, repoviewtitle=False,
|
||||||
baseurl=False, output=False, basedir=False, split=False):
|
baseurl=False, output=False, basedir=False, split=False, update=True):
|
||||||
"""Create repodata and repoview."""
|
"""Create repodata and repoview."""
|
||||||
|
|
||||||
conf = createrepo.MetaDataConfig()
|
conf = createrepo.MetaDataConfig()
|
||||||
conf.cachedir = os.path.join(cachedir, 'createrepocache')
|
conf.cachedir = os.path.join(cachedir, 'createrepocache')
|
||||||
conf.update = True
|
conf.update = update
|
||||||
if output:
|
if output:
|
||||||
conf.outputdir = output
|
conf.outputdir = output
|
||||||
else:
|
else:
|
||||||
@ -84,6 +84,8 @@ class Pungi(pypungi.PungiBase):
|
|||||||
conf.groupfile = comps
|
conf.groupfile = comps
|
||||||
if basedir:
|
if basedir:
|
||||||
conf.basedir = basedir
|
conf.basedir = basedir
|
||||||
|
if baseurl:
|
||||||
|
conf.baseurl = baseurl
|
||||||
if split:
|
if split:
|
||||||
conf.split = True
|
conf.split = True
|
||||||
conf.directories = split
|
conf.directories = split
|
||||||
@ -308,7 +310,7 @@ class Pungi(pypungi.PungiBase):
|
|||||||
timber.splitSRPMS()
|
timber.splitSRPMS()
|
||||||
self.logger.info("splitSRPMS complete")
|
self.logger.info("splitSRPMS complete")
|
||||||
|
|
||||||
def doCreateSplitrepo(self):
|
def doCreateMediarepo(self, split=False):
|
||||||
"""Create the split metadata for the isos"""
|
"""Create the split metadata for the isos"""
|
||||||
|
|
||||||
|
|
||||||
@ -317,14 +319,11 @@ class Pungi(pypungi.PungiBase):
|
|||||||
|
|
||||||
compsfile = os.path.join(self.workdir, '%s-%s-comps.xml' % (self.config.get('default', 'name'), self.config.get('default', 'version')))
|
compsfile = os.path.join(self.workdir, '%s-%s-comps.xml' % (self.config.get('default', 'name'), self.config.get('default', 'version')))
|
||||||
|
|
||||||
if self.config.getint('default', 'discs') == 1:
|
if not split:
|
||||||
pypungi._ensuredir('%s-disc1' % self.topdir, self.logger,
|
pypungi._ensuredir('%s-disc1' % self.topdir, self.logger,
|
||||||
clean=True) # rename this for single disc
|
clean=True) # rename this for single disc
|
||||||
|
|
||||||
if self.config.getint('default', 'discs') == 1:
|
|
||||||
path = self.topdir
|
path = self.topdir
|
||||||
basedir=None
|
basedir=None
|
||||||
split=False
|
|
||||||
else:
|
else:
|
||||||
path = '%s-disc1' % self.topdir
|
path = '%s-disc1' % self.topdir
|
||||||
basedir = path
|
basedir = path
|
||||||
@ -336,7 +335,7 @@ class Pungi(pypungi.PungiBase):
|
|||||||
self._makeMetadata(path, self.config.get('default', 'cachedir'), compsfile, repoview=False,
|
self._makeMetadata(path, self.config.get('default', 'cachedir'), compsfile, repoview=False,
|
||||||
baseurl='media://%s' % mediaid,
|
baseurl='media://%s' % mediaid,
|
||||||
output='%s-disc1' % self.topdir,
|
output='%s-disc1' % self.topdir,
|
||||||
basedir=basedir, split=split)
|
basedir=basedir, split=split, update=False)
|
||||||
|
|
||||||
# Write out a repo file for the disc to be used on the installed system
|
# Write out a repo file for the disc to be used on the installed system
|
||||||
self.logger.info('Creating media repo file.')
|
self.logger.info('Creating media repo file.')
|
||||||
@ -404,14 +403,9 @@ cost=500
|
|||||||
else:
|
else:
|
||||||
discs = int(treesize / cdsize + 1)
|
discs = int(treesize / cdsize + 1)
|
||||||
self.config.set('default', 'discs', str(discs))
|
self.config.set('default', 'discs', str(discs))
|
||||||
if self.config.get('default', 'arch') == 'source':
|
|
||||||
self.doSplitSRPMs()
|
|
||||||
else:
|
|
||||||
self.doPackageorder()
|
|
||||||
self.doSplittree()
|
|
||||||
|
|
||||||
if not self.config.get('default', 'arch') == 'source':
|
if not self.config.get('default', 'arch') == 'source':
|
||||||
self.doCreateSplitrepo()
|
self.doCreateMediarepo(split=False)
|
||||||
|
|
||||||
if treesize > 700: # we're larger than a 700meg CD
|
if treesize > 700: # we're larger than a 700meg CD
|
||||||
isoname = '%s-%s-%s-DVD.iso' % (self.config.get('default', 'iso_basename'), self.config.get('default', 'version'),
|
isoname = '%s-%s-%s-DVD.iso' % (self.config.get('default', 'iso_basename'), self.config.get('default', 'version'),
|
||||||
@ -478,10 +472,20 @@ cost=500
|
|||||||
shutil.move(os.path.join(self.config.get('default', 'destdir'),
|
shutil.move(os.path.join(self.config.get('default', 'destdir'),
|
||||||
'repodata-%s' % self.config.get('default', 'arch')), os.path.join(self.topdir, 'repodata'))
|
'repodata-%s' % self.config.get('default', 'arch')), os.path.join(self.topdir, 'repodata'))
|
||||||
|
|
||||||
|
# Move the unified disk out
|
||||||
|
shutil.rmtree(os.path.join(self.workdir, 'os-unified'), ignore_errors=True)
|
||||||
|
shutil.move('%s-disc1' % self.topdir, os.path.join(self.workdir, 'os-unified'))
|
||||||
|
|
||||||
# Write out a line describing the media
|
# Write out a line describing the media
|
||||||
self.writeinfo('media: %s' % isofile)
|
self.writeinfo('media: %s' % isofile)
|
||||||
|
|
||||||
if self.config.getint('default', 'discs') > 1:
|
if self.config.getint('default', 'discs') > 1:
|
||||||
|
if self.config.get('default', 'arch') == 'source':
|
||||||
|
self.doSplitSRPMs()
|
||||||
|
else:
|
||||||
|
self.doPackageorder()
|
||||||
|
self.doSplittree()
|
||||||
|
self.doCreateMediarepo(split=True)
|
||||||
for disc in range(1, self.config.getint('default', 'discs') + 1): # cycle through the CD isos
|
for disc in range(1, self.config.getint('default', 'discs') + 1): # cycle through the CD isos
|
||||||
isoname = '%s-%s-%s-disc%s.iso' % (self.config.get('default', 'iso_basename'), self.config.get('default', 'version'),
|
isoname = '%s-%s-%s-disc%s.iso' % (self.config.get('default', 'iso_basename'), self.config.get('default', 'version'),
|
||||||
self.config.get('default', 'arch'), disc)
|
self.config.get('default', 'arch'), disc)
|
||||||
|
Loading…
Reference in New Issue
Block a user