Package backend :: Package server :: Package importlib :: Module mpmSource
[hide private]
[frames] | no frames]

Source Code for Module backend.server.importlib.mpmSource

  1  # 
  2  # Copyright (c) 2008--2016 Red Hat, Inc. 
  3  # 
  4  # This software is licensed to you under the GNU General Public License, 
  5  # version 2 (GPLv2). There is NO WARRANTY for this software, express or 
  6  # implied, including the implied warranties of MERCHANTABILITY or FITNESS 
  7  # FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 
  8  # along with this software; if not, see 
  9  # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. 
 10  # 
 11  # Red Hat trademarks are not licensed under GPLv2. No permission is 
 12  # granted to use or replicate Red Hat trademarks that are incorporated 
 13  # in this software or its documentation. 
 14  # 
 15  # 
 16  # Converts headers to the intermediate format 
 17  # 
 18   
 19  import headerSource 
 20  import debPackage 
 21   
 22   
23 -class mpmBinaryPackage(headerSource.rpmBinaryPackage):
24 25 tagMap = headerSource.rpmBinaryPackage.tagMap.copy() 26 27 # Remove already-mapped tags 28 _already_mapped = [ 29 'rpm_version', 'payload_size', 'payload_format', 30 'package_group', 'build_time', 'build_host' 31 ] 32 for t in _already_mapped: 33 if t in tagMap: 34 del tagMap[t] 35
36 - def populate(self, header, size, checksum_type, checksum, path=None, org_id=None, 37 channels=[]):
38 39 # call to base class method 40 headerSource.rpmBinaryPackage.populate(self, header, size, checksum_type, checksum, path, 41 org_id, channels) 42 43 srpm = self.get('source_rpm', '') 44 if srpm == '': 45 self['source_rpm'] = None 46 47 group = self.get('package_group', '') 48 if group == '': 49 self['package_group'] = 'NoGroup' 50 51 return self
52
53 - def _populateFiles(self, header):
54 files = [] 55 for f in header.get('files', []): 56 fc = headerSource.rpmFile() 57 fc.populate(f) 58 files.append(fc) 59 self['files'] = files
60
61 - def _populateDependencyInformation(self, header):
62 mapping = { 63 'provides': headerSource.rpmProvides, 64 'requires': headerSource.rpmRequires, 65 'conflicts': headerSource.rpmConflicts, 66 'obsoletes': headerSource.rpmObsoletes, 67 'recommends': headerSource.rpmRecommends, 68 'supplements': headerSource.rpmSupplements, 69 'enhances': headerSource.rpmEnhances, 70 'suggests': headerSource.rpmSuggests, 71 } 72 73 for k, dclass in mapping.items(): 74 unique_deps = [] 75 l = [] 76 for dinfo in header.get(k, []): 77 hash = dinfo 78 if not len(hash['name']): 79 continue 80 dep_nv = (hash['name'], hash['version'], hash['flags']) 81 if dep_nv not in unique_deps: 82 unique_deps.append(dep_nv) 83 finst = dclass() 84 finst.populate(dinfo) 85 l.append(finst) 86 else: 87 continue 88 self[k] = l
89
90 - def _populateChangeLog(self, header):
91 l = [] 92 for cinfo in header.get('changelog', []): 93 cinst = headerSource.rpmChangeLog() 94 cinst.populate(cinfo) 95 l.append(cinst) 96 self['changelog'] = l
97 98 # top-level package object creation -------------------------------------- 99 100
101 -def create_package(header, size, checksum_type, checksum, relpath, org_id, header_start=None, 102 header_end=None, channels=[]):
103 if header.packaging == 'rpm': 104 return headerSource.createPackage(header, size=size, 105 checksum_type=checksum_type, checksum=checksum, 106 relpath=relpath, org_id=org_id, header_start=header_start, 107 header_end=header_end, channels=channels) 108 if header.packaging == 'deb': 109 return debPackage.debBinaryPackage(header, size=size, checksum_type=checksum_type, checksum=checksum, path=relpath, 110 org_id=org_id, channels=channels) 111 if header.is_source: 112 raise NotImplementedError() 113 p = mpmBinaryPackage() 114 p.populate(header, size=size, checksum_type=checksum_type, checksum=checksum, path=relpath, 115 org_id=org_id, channels=channels) 116 return p
117