Remove ability to generate split media

This commit is contained in:
Jesse Keating 2010-11-12 09:27:10 -08:00
parent 9976438e31
commit d5ef2c25ff
1 changed files with 15 additions and 160 deletions

View File

@ -24,7 +24,6 @@ import urlgrabber.progress
import subprocess import subprocess
import createrepo import createrepo
import ConfigParser import ConfigParser
import pypungi.splittree
class MyConfigParser(ConfigParser.ConfigParser): class MyConfigParser(ConfigParser.ConfigParser):
"""A subclass of ConfigParser which does not lowercase options""" """A subclass of ConfigParser which does not lowercase options"""
@ -693,7 +692,7 @@ 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, update=True): baseurl=False, output=False, basedir=False, update=True):
"""Create repodata and repoview.""" """Create repodata and repoview."""
conf = createrepo.MetaDataConfig() conf = createrepo.MetaDataConfig()
@ -712,12 +711,7 @@ class Pungi(pypungi.PungiBase):
conf.basedir = basedir conf.basedir = basedir
if baseurl: if baseurl:
conf.baseurl = baseurl conf.baseurl = baseurl
if split: repomatic = createrepo.MetaDataGenerator(conf)
conf.split = True
conf.directories = split
repomatic = createrepo.SplitMetaDataGenerator(conf)
else:
repomatic = createrepo.MetaDataGenerator(conf)
self.logger.info('Making repodata') self.logger.info('Making repodata')
repomatic.doPkgMetadata() repomatic.doPkgMetadata()
repomatic.doRepoMetadata() repomatic.doRepoMetadata()
@ -872,22 +866,6 @@ class Pungi(pypungi.PungiBase):
treeinfo.write(treefile) treeinfo.write(treefile)
treefile.close() treefile.close()
def doPackageorder(self):
"""Run anaconda-runtime's pkgorder on the tree, used for splitting media."""
pkgorderfile = open(os.path.join(self.workdir, 'pkgorder-%s' % self.config.get('pungi', 'arch')), 'w')
# setup the command
pkgorder = ['/usr/bin/pkgorder']
#pkgorder.append('TMPDIR=%s' % self.workdir)
pkgorder.append(self.topdir)
pkgorder.append(self.config.get('pungi', 'arch'))
pkgorder.append(self.config.get('pungi', 'product_path'))
# run the command
pypungi.util._doRunCommand(pkgorder, self.logger, output=pkgorderfile)
pkgorderfile.close()
def doGetRelnotes(self): def doGetRelnotes(self):
"""Get extra files from packages in the tree to put in the topdir of """Get extra files from packages in the tree to put in the topdir of
the tree.""" the tree."""
@ -950,59 +928,8 @@ class Pungi(pypungi.PungiBase):
self.logger.info("Copying release note dir %s" % directory) self.logger.info("Copying release note dir %s" % directory)
shutil.copytree(os.path.join(dirpath, directory), os.path.join(self.topdir, directory)) shutil.copytree(os.path.join(dirpath, directory), os.path.join(self.topdir, directory))
def doSplittree(self): def doCreateMediarepo(self):
"""Use anaconda-runtime's splittree to split the tree into appropriate """Create the metadata for the iso"""
sized chunks."""
timber = splittree.Timber()
timber.arch = self.config.get('pungi', 'arch')
timber.disc_size = self.config.getfloat('pungi', 'cdsize')
timber.src_discs = 0
timber.release_str = '%s %s' % (self.config.get('pungi', 'name'), self.config.get('pungi', 'version'))
timber.package_order_file = os.path.join(self.workdir, 'pkgorder-%s' % self.config.get('pungi', 'arch'))
timber.dist_dir = self.topdir
timber.src_dir = os.path.join(self.config.get('pungi', 'destdir'), self.config.get('pungi', 'version'), 'source', 'SRPMS')
timber.product_path = self.config.get('pungi', 'product_path')
timber.common_files = self.common_files
timber.comps_size = 0
#timber.reserve_size =
self.logger.info("Running splittree.")
output = timber.main()
if output:
self.logger.debug("Output from splittree: %s" % '\n'.join(output))
def doSplitSRPMs(self):
"""Use anaconda-runtime's splittree to split the srpms into appropriate
sized chunks."""
timber = splittree.Timber()
timber.arch = self.config.get('pungi', 'arch')
timber.target_size = self.config.getfloat('pungi', 'cdsize') * 1024 * 1024
#timber.total_discs = self.config.getint('pungi', 'discs')
#timber.bin_discs = self.config.getint('pungi', 'discs')
#timber.release_str = '%s %s' % (self.config.get('pungi', 'name'), self.config.get('pungi', 'version'))
#timber.package_order_file = os.path.join(self.config.get('pungi', 'destdir'), 'pkgorder-%s' % self.config.get('pungi', 'arch'))
timber.dist_dir = os.path.join(self.config.get('pungi', 'destdir'),
self.config.get('pungi', 'version'),
self.config.get('pungi', 'flavor'),
'source', 'SRPMS')
timber.src_dir = os.path.join(self.config.get('pungi', 'destdir'),
self.config.get('pungi', 'version'),
self.config.get('pungi', 'flavor'),
'source', 'SRPMS')
#timber.product_path = self.config.get('pungi', 'product_path')
#timber.reserve_size =
self.logger.info("Splitting SRPMs")
timber.splitSRPMS()
self.logger.info("splitSRPMS complete")
def doCreateMediarepo(self, split=False):
"""Create the split metadata for the isos"""
discinfo = open(os.path.join(self.topdir, '.discinfo'), 'r').readlines() discinfo = open(os.path.join(self.topdir, '.discinfo'), 'r').readlines()
@ -1010,25 +937,18 @@ class Pungi(pypungi.PungiBase):
compsfile = os.path.join(self.workdir, '%s-%s-comps.xml' % (self.config.get('pungi', 'name'), self.config.get('pungi', 'version'))) compsfile = os.path.join(self.workdir, '%s-%s-comps.xml' % (self.config.get('pungi', 'name'), self.config.get('pungi', 'version')))
if not split: pypungi.util._ensuredir('%s-disc1' % self.topdir, self.logger,
pypungi.util._ensuredir('%s-disc1' % self.topdir, self.logger, force=self.config.getboolean('pungi',
force=self.config.getboolean('pungi', 'force'),
'force'), clean=True) # rename this for single disc
clean=True) # rename this for single disc path = self.topdir
path = self.topdir basedir=None
basedir=None
else:
path = '%s-disc1' % self.topdir
basedir = path
split=[]
for disc in range(1, self.config.getint('pungi', 'discs') + 1):
split.append('%s-disc%s' % (self.topdir, disc))
# set up the process # set up the process
self._makeMetadata(path, self.config.get('pungi', 'cachedir'), compsfile, repoview=False, self._makeMetadata(path, self.config.get('pungi', '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, update=False) basedir=basedir, 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.')
@ -1061,8 +981,8 @@ cost=500
sys.exit(1) sys.exit(1)
checkfile.close() checkfile.close()
def doCreateIsos(self, split=True): def doCreateIsos(self):
"""Create isos of the tree, optionally splitting the tree for split media.""" """Create iso of the tree."""
isolist=[] isolist=[]
@ -1107,7 +1027,7 @@ cost=500
treesize = treesize * 2048 / 1024 / 1024 treesize = treesize * 2048 / 1024 / 1024
if not self.config.get('pungi', 'arch') == 'source': if not self.config.get('pungi', 'arch') == 'source':
self.doCreateMediarepo(split=False) self.doCreateMediarepo()
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('pungi', 'iso_basename'), self.config.get('pungi', 'version'), isoname = '%s-%s-%s-DVD.iso' % (self.config.get('pungi', 'iso_basename'), self.config.get('pungi', 'version'),
@ -1119,7 +1039,7 @@ cost=500
isofile = os.path.join(self.isodir, isoname) isofile = os.path.join(self.isodir, isoname)
if not self.config.get('pungi', 'arch') == 'source': if not self.config.get('pungi', 'arch') == 'source':
# move the main repodata out of the way to use the split repodata # move the main repodata out of the way to use the media repodata
if os.path.isdir(os.path.join(self.config.get('pungi', 'destdir'), if os.path.isdir(os.path.join(self.config.get('pungi', 'destdir'),
'repodata-%s' % self.config.get('pungi', 'arch'))): 'repodata-%s' % self.config.get('pungi', 'arch'))):
shutil.rmtree(os.path.join(self.config.get('pungi', 'destdir'), shutil.rmtree(os.path.join(self.config.get('pungi', 'destdir'),
@ -1190,71 +1110,6 @@ cost=500
# Write out a line describing the media # Write out a line describing the media
self.writeinfo('media: %s' % self.mkrelative(isofile)) self.writeinfo('media: %s' % self.mkrelative(isofile))
# See if our tree size is big enough and we want to make split media
if treesize > 700 and split:
discs = 0
if self.config.get('pungi', 'arch') == 'source':
self.doSplitSRPMs()
dirs = os.listdir(self.archdir)
for dir in dirs:
if dir.startswith('%s-disc' % os.path.basename(self.topdir)):
discs += 1
# Set the number of discs for future use
self.config.set('pungi', 'discs', str(discs))
else:
self.doPackageorder()
self.doSplittree()
# Figure out how many discs splittree made for us
dirs = os.listdir(self.archdir)
for dir in dirs:
if dir.startswith('%s-disc' % os.path.basename(self.topdir)):
discs += 1
# Set the number of discs for future use
self.config.set('pungi', 'discs', str(discs))
self.doCreateMediarepo(split=True)
for disc in range(1, discs + 1): # cycle through the CD isos
isoname = '%s-%s-%s-disc%s.iso' % (self.config.get('pungi', 'iso_basename'), self.config.get('pungi', 'version'),
self.config.get('pungi', 'arch'), disc)
isofile = os.path.join(self.isodir, isoname)
extraargs = []
if disc == 1: # if this is the first disc, we want to set boot flags
if self.config.get('pungi', 'arch') == 'i386' or self.config.get('pungi', 'arch') == 'x86_64':
extraargs.extend(x86bootargs)
elif self.config.get('pungi', 'arch') == 'ia64':
extraargs.extend(ia64bootargs)
elif self.config.get('pungi', 'arch') == 'ppc':
extraargs.extend(ppcbootargs)
extraargs.append(os.path.join('%s-disc%s' % (self.topdir, disc), "ppc/mac"))
elif self.config.get('pungi', 'arch') == 'sparc':
extraargs.extend(sparcbootargs)
extraargs.append('-V')
extraargs.append('%s %s %s Disc %s' % (self.config.get('pungi', 'name'),
self.config.get('pungi', 'version'), self.config.get('pungi', 'arch'), disc))
extraargs.append('-o')
extraargs.append(isofile)
extraargs.append(os.path.join('%s-disc%s' % (self.topdir, disc)))
# run the command
pypungi.util._doRunCommand(mkisofs + extraargs, self.logger)
# implant md5 for mediacheck on all but source arches
if not self.config.get('pungi', 'arch') == 'source':
pypungi.util._doRunCommand(['/usr/bin/implantisomd5', isofile], self.logger)
# shove the checksum into a file
self._doIsoChecksum(isofile, csumfile)
# keep track of the CD images we've written
isolist.append(self.mkrelative(isofile))
# Write out a line describing the CD set
self.writeinfo('mediaset: %s' % ' '.join(isolist))
# Now link the boot iso # Now link the boot iso
if not self.config.get('pungi', 'arch') == 'source' and \ if not self.config.get('pungi', 'arch') == 'source' and \
os.path.exists(os.path.join(self.topdir, 'images', 'boot.iso')): os.path.exists(os.path.join(self.topdir, 'images', 'boot.iso')):