def processPackage(self, package, filename, checksum=None): if self.options.dontcopy: return if not CFG.PKG_DIR: self.warn(1, "No package directory specified; will not copy the package") return if not self.use_checksum_paths: checksum = None # Copy file to the prefered path packagePath = computePackagePaths(package, self.options.source, PREFIX, checksum)[0] packagePath = "%s/%s" % (CFG.PKG_DIR, packagePath) destdir = os.path.dirname(packagePath) if not os.path.isdir(destdir): # Try to create it try: os.makedirs(destdir, 0755) except OSError: self.warn(0, "Could not create directory %s" % destdir) return self.warn(1, "Copying %s to %s" % (filename, packagePath)) shutil.copy2(filename, packagePath) # Make sure the file permissions are set correctly, so that Apache can # see the files os.chmod(packagePath, 0644)
def checkSync(self): # set the org self.setOrg() # set the URL self.setURL() # set the channels self.setChannels() # set the server self.setServer() self.authenticate() # List the channel's contents channel_list = self._listChannel() # Convert it to a hash of hashes remotePackages = {} for channel in self.channels: remotePackages[channel] = {} for p in channel_list: channelName = p[-1] key = tuple(p[:5]) remotePackages[channelName][key] = None missing = [] for package in channel_list: found = False # if the package includes checksum info if self.use_checksum_paths: checksum = package[6] else: checksum = None packagePaths = computePackagePaths(package, 0, PREFIX, checksum) for packagePath in packagePaths: packagePath = "%s/%s" % (CFG.PKG_DIR, packagePath) if os.path.isfile(packagePath): found = True break if not found: missing.append([package, packagePaths[0]]) if not missing: self.warn(0, "Channels in sync with the server") return for package, packagePath in missing: channelName = package[-1] self.warn( 0, "Missing: %s in channel %s (path %s)" % (rpmPackageName(package), channelName, packagePath))
def checkSync(self): # set the org self.setOrg() # set the URL self.setURL() # set the channels self.setChannels() # set the server self.setServer() self.authenticate() # List the channel's contents channel_list = self._listChannel() # Convert it to a hash of hashes remotePackages = {} for channel in self.channels: remotePackages[channel] = {} for p in channel_list: channelName = p[-1] key = tuple(p[:5]) remotePackages[channelName][key] = None missing = [] for package in channel_list: found = False # if the package includes checksum info if self.use_checksum_paths: checksum = package[6] else: checksum = None packagePaths = computePackagePaths(package, 0, PREFIX, checksum) for packagePath in packagePaths: packagePath = "%s/%s" % (CFG.PKG_DIR, packagePath) if os.path.isfile(packagePath): found = True break if not found: missing.append([package, packagePaths[0]]) if not missing: self.warn(0, "Channels in sync with the server") return for package, packagePath in missing: channelName = package[-1] self.warn(0, "Missing: %s in channel %s (path %s)" % ( rpmPackageName(package), channelName, packagePath))
def copyonly(self): # Set the forcing factor self.setForce() # Relative directory self.setRelativeDir() # Set the count self.setCount() if not CFG.PKG_DIR: self.warn( 1, "No package directory specified; will not copy the package") return # We'll controll this manually, see comment below. self.use_checksum_paths = True for filename in self.files: fileinfo = self._processFile(filename, relativeDir=self.relativeDir, source=self.options.source, nosig=self.options.nosig) # This is an entirely local operation so we don't know what the # server capabilities are. Painful, but for each file look at the # options and see if we can find the file we're trying to replace. # If can't find it default to checksumless path. possiblePaths = computePackagePaths(fileinfo['nvrea'], filename, fileinfo['checksum']) found = False for path in possiblePaths: path = "%s/%s" % (CFG.PKG_DIR, path) if os.path.isfile(path): found = path break if found and fileinfo['checksum'] in found: checksum = fileinfo['checksum'] else: checksum = None self.processPackage(fileinfo['nvrea'], filename, checksum)