Remove ability to generate split media
This commit is contained in:
parent
9976438e31
commit
d5ef2c25ff
@ -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')):
|
||||||
|
Loading…
Reference in New Issue
Block a user