--- smart/channels/yast2.py +++ smart/channels/yast2.py @@ -40,9 +40,9 @@ def getFetchSteps(self): return 4 - def __fetchFile(self, file, fetcher, progress): + def __fetchFile(self, file, fetcher, progress, uncompress=False): fetcher.reset() - item = fetcher.enqueue(file) + item = fetcher.enqueue(file,uncomp=uncompress) fetcher.run(progress=progress) failed = item.getFailedReason() if failed: @@ -77,21 +77,25 @@ self.removeLoaders() descrdir = "suse/setup/descr" datadir = "RPMS" + uncompress = False for line in open(fetched.getTargetPath()): if line.startswith("DESCRDIR"): descrdir = line[9:-1] if line.startswith("DATADIR"): datadir = line[8:-1] + if line.strip().endswith("packages.gz"): uncompress = True # Fetch package information (req, dep, prov, etc) fetchitem = posixpath.join(self._baseurl, (("%s/packages") % descrdir)) - fetched = self.__fetchFile(fetchitem, fetcher, progress) + if uncompress: fetchitem += ".gz" + fetched = self.__fetchFile(fetchitem, fetcher, progress, uncompress) if not fetched or fetched.getStatus() == FAILED: return False self.removeLoaders() pkginfofile = fetched.getTargetPath() if open(pkginfofile).read(9) == "=Ver: 2.0": fetchitem = posixpath.join(self._baseurl, (("%s/packages.en") % descrdir)) - fetched = self.__fetchFile(fetchitem, fetcher, progress) + if uncompress: fetchitem += ".gz" + fetched = self.__fetchFile(fetchitem, fetcher, progress, uncompress) if not fetched or fetched.getStatus() == FAILED or open(fetched.getTargetPath()).read(9) != "=Ver: 2.0": raise Error, "YaST2 package descriptions not loaded." loader = YaST2Loader(self._baseurl, datadir, pkginfofile)