--- updatechecker.py.bak 2010-07-12 23:11:59.000000000 +0200 +++ updatechecker.py 2010-07-12 23:11:43.000000000 +0200 @@ -21,10 +21,18 @@ pacman_conf_fp = open(self.pacman_conf_file) try: pacman_conf_list = pacman_conf_fp.read().split("\n") + architecture = '' ignore_pkg = [] for elm in pacman_conf_list: if elm.split("=")[0].strip() in ["IgnorePkg"]: ignore_pkg.extend([ e.strip() for e in elm.split("=")[1].split(" ") if e.strip() != '']) + elif elm.split("=")[0].strip() == 'Architecture': + architecture = elm.split("=")[1].strip() + if architecture == '': + log_entry("Architecture not set in %s" % self.pacman_conf_file, False, True) + if architecture == 'auto': + architecture = os.uname()[4] + log_entry("Using architecture: %s" % architecture, False, False) repositories = [] # Read bottom to top, to get the right order of the repositories for i in range(len(pacman_conf_list) - 1, 0, -1): @@ -39,13 +47,20 @@ except IOError: sys.exit(_("ERROR") + ": " + _("problem opening, reading, parsing or closing %s") % self.pacman_conf_file) + def check_repo_url(url): + if architecture == '' and '$arch' in url: + log_entry("The mirror '%s' contains the $arch variable, but no Architecture is defined" % url, False, True) + return False + return True + packages = {} - db_file_downloaded = False for i in range(0, len(repositories), 3): + db_file_downloaded = False if repositories[i + 1] == 'Server': try: - db_file = urllib.urlretrieve(repositories[i + 2].replace('$repo', repositories[i]) + "/" + repositories[i] + '.db.tar.gz')[0] - db_file_downloaded = True + if check_repo_url(repositories[i + 2]): + db_file = urllib.urlretrieve(repositories[i + 2].replace('$repo', repositories[i]).replace('$arch', architecture) + "/" + repositories[i] + '.db.tar.gz')[0] + db_file_downloaded = True except IOError: log_entry('[' + repositories[i] + '] ' + _("failed to download:") + ' ' + repositories[i + 2] + "/" + repositories[i] + '.db.tar.gz', True, True) else: # Include @@ -60,9 +75,10 @@ sys.exit(_("ERROR") + ": " + (_("problem opening, reading or closing %s") + "%s") % (self.pacman_dir, repositories[i])) for server in servers: try: - db_file = urllib.urlretrieve(server + '/' + repositories[i] + '.db.tar.gz')[0] - db_file_downloaded = True - break + if check_repo_url(server) : + db_file = urllib.urlretrieve(server.replace('$arch', architecture) + '/' + repositories[i] + '.db.tar.gz')[0] + db_file_downloaded = True + break except IOError: log_entry('[' + repositories[i] + '] ' + _("Failed to download:") + ' ' + server + "/" + repositories[i] + '.db.tar.gz, trying next server on list.', True, True) if server == servers[-1]: