def create_make_conf(self): self.output.info(" Creating layman's make.conf file") # create layman's %(storage)s/make.conf # so portage won't error from layman.makeconf import MakeConf maker = MakeConf(self.config, None) maker.write()
def add(self, overlay): ''' Add an overlay to the local list of overlays. >>> import tempfile >>> tmpdir = tempfile.mkdtemp(prefix="laymantmp_") >>> write = os.path.join(tmpdir, 'installed.xml') >>> write2 = os.path.join(tmpdir, 'make.conf') >>> here = os.path.dirname(os.path.realpath(__file__)) >>> from layman.config import OptionConfig >>> myoptions = {'installed' : ... here + '/tests/testfiles/global-overlays.xml', ... 'local_list': here + '/tests/testfiles/overlays.xml', ... 'make_conf' : write2, ... 'nocheck' : 'yes', ... 'storage' : tmpdir} >>> config = OptionConfig(myoptions) >>> config.set_option('quietness', 3) >>> a = DB(config) >>> config.set_option('installed', write) >>> b = DB(config) >>> config['output'].set_colorize(False) >>> m = MakeConf(config, b.overlays) >>> m.path = write2 >>> success = m.write() >>> success True # Commented out since it needs network access: # >>> b.add(a.select('wrobel-stable')) #doctest: +ELLIPSIS # * Running command "/usr/bin/rsync -rlptDvz --progress --delete --delete-after --timeout=180 --exclude="distfiles/*" --exclude="local/*" --exclude="packages/*" "rsync://gunnarwrobel.de/wrobel-stable/*" "/tmp/file.../wrobel-stable""... # >>> c = DbBase([write, ], dict()) # >>> c.overlays.keys() # [u'wrobel-stable'] # >>> m = MakeConf(config, b.overlays) # >>> [i.name for i in m.overlays] #doctest: +ELLIPSIS # [u'wrobel-stable'] # >>> os.unlink(write) >>> os.unlink(write2) >>> import shutil >>> shutil.rmtree(tmpdir) ''' if overlay.name not in self.overlays.keys(): result = overlay.add(self.config['storage']) if result == 0: if 'priority' in self.config.keys(): overlay.set_priority(self.config['priority']) self.overlays[overlay.name] = overlay self.write(self.path) if self.config['make_conf']: make_conf = MakeConf(self.config, self.overlays) make_ok = make_conf.add(overlay) return make_ok return True else: mdir = path([self.config['storage'], overlay.name]) delete_empty_directory(mdir, self.output) if os.path.exists(mdir): self.output.error('Adding repository "%s" failed!' ' Possible remains of the operation have NOT' ' been removed and may be left at "%s".' ' Please remove them manually if required.' \ % (overlay.name, mdir)) return False else: self.output.error( 'Adding repository "%s" failed!' % overlay.name) return False else: self.output.error('Repository "' + overlay.name + '" already in the local (installed) list!') return False
def delete(self, overlay): ''' Add an overlay to the local list of overlays. >>> import tempfile >>> tmpdir = tempfile.mkdtemp(prefix="laymantmp_") >>> write = os.path.join(tmpdir, 'installed.xml') >>> write2 = os.path.join(tmpdir, 'make.conf') >>> here = os.path.dirname(os.path.realpath(__file__)) >>> from layman.config import OptionConfig >>> myoptions = {'installed' : ... here + '/tests/testfiles/global-overlays.xml', ... 'local_list': here + '/tests/testfiles/overlays.xml', ... 'make_conf' : write2, ... 'nocheck' : 'yes', ... 'storage' : tmpdir} >>> config = OptionConfig(myoptions) >>> config.set_option('quietness', 3) >>> a = DB(config) >>> config.set_option('installed', write) >>> b = DB(config) >>> config['output'].set_colorize(False) >>> m = MakeConf(config, b.overlays) >>> m.path = here + '/tests/testfiles/make.conf' >>> m.read() True >>> m.path = write2 >>> m.write() True # >>> b.add(a.select('wrobel-stable')) #doctest: +ELLIPSIS # * Running command "/usr/bin/rsync -rlptDvz --progress --delete --delete-after --timeout=180 --exclude="distfiles/*" --exclude="local/*" --exclude="packages/*" "rsync://gunnarwrobel.de/wrobel-stable/*" "/tmp/file.../wrobel-stable""... # >>> b.add(a.select('wrobel')) #doctest: +ELLIPSIS # * Running command "/usr/bin/svn co "https://overlays.gentoo.org/svn/dev/wrobel/" "/tmp/file.../wrobel""... # >>> c = DbBase([write, ], dict()) # >>> c.overlays.keys() # [u'wrobel', u'wrobel-stable'] # >>> b.delete(b.select('wrobel')) # >>> c = DbBase([write, ], dict()) # >>> c.overlays.keys() # [u'wrobel-stable'] # >>> m = MakeConf(config, b.overlays) # >>> [i.name for i in m.overlays] #doctest: +ELLIPSIS # [u'wrobel-stable'] # >>> os.unlink(write) >>> os.unlink(write2) >>> import shutil >>> shutil.rmtree(tmpdir) ''' if overlay.name in self.overlays.keys(): make_conf = MakeConf(self.config, self.overlays) overlay.delete(self.config['storage']) del self.overlays[overlay.name] self.write(self.path) make_conf.delete(overlay) else: self.output.error('No local overlay named "' + overlay.name + '"!') return False return True