#!/usr/bin/python # # a script that convert urpmi configuration to smart configuration # run smart update to complete the conversion # # this script is released under the term of GPL v2 # 18/07/2005, by Michael Scherer ( misc@mandriva.org ) # 09/09/2007 modified by David Walluck import string def normalise_name(name): #TODO return name.strip() def fetch_urpmi_cfg(): config={} in_block=0 urpmi_cfg_f=open('/etc/urpmi/urpmi.cfg') for line in urpmi_cfg_f.readlines(): line = line.strip() if len(line) <= 0: continue if line[-1] == '}': in_block = 0 if line[-1] == '{': in_block = 1 s = line.split(' ') if len(s) == 1: continue url = s[-2] name = ' '.join(s[0:-2]) config[name] = {} config[name]['url'] = url continue if not in_block: continue if line.find(': ') > 0: (key,value) = line.split(': ') config[name][key.strip()] = value.strip() else: config[name][line.strip()] = 1 return config from smart import * import smart ctrl = smart.init() urpmi_cfg = fetch_urpmi_cfg() for i in urpmi_cfg: name = i try: while smart.sysconf.get('channels').has_key(name): name = name + '_' except AttributeError: pass name = normalise_name(i) baseurl = urpmi_cfg[i]['url'].replace('ssh://', 'scp://') hdlurl = urpmi_cfg[i]['url'] + '/' if urpmi_cfg[i].has_key('with_hdlist'): hdlurl += urpmi_cfg[i]['with_hdlist'] elif urpmi_cfg[i].has_key('media_info_dir'): hdlurl += urpmi_cfg[i]['media_info_dir'] + '/synthesis.hdlist.cz' else: hdlurl += 'media_info/synthesis.hdlist.cz' hdlurl = hdlurl.replace('ssh://', 'scp://') sysconf.set(("channels", name), {"type": "urpmi", "name": i, "baseurl": baseurl, "hdlurl": hdlurl}) ctrl.saveSysConf()