Ticket #482: haikuporter_multiple_ports.patch
| File haikuporter_multiple_ports.patch, 5.2 KB (added by yeputons, 5 years ago) |
|---|
-
haikuporter
6 6 # copyright 2009 Alexander Deynichenko 7 7 # copyright 2009 HaikuBot (aka RISC) 8 8 # copyright 2010-2011 Jack Laxson (Jrabbit) 9 # copyright 2011 Egor Suvorov (aka yeputons) 9 10 10 11 info = {} 11 12 info['version'] = 'r' + '$Rev$'[6:-2] … … 211 212 print "Invoke '" + sys.argv[0]\ 212 213 + " -h' for usage information." 213 214 sys.exit(1) 214 else: 215 port = args[0] 216 215 216 ports = {} 217 installports = 0 218 for port in args: 219 print "Messages for port " + port + ":" 220 res = self.preparePort(port) 221 if isinstance(res, str): 222 print res 223 elif not isinstance(res, bool): 224 ports[port] = res 225 installports = installports + 1 226 print "" 227 if not self.options.yes and len(ports) <> installports: 228 answer = raw_input('Installing %d/%d ports. Continue (y/n + enter)? ' % (len(ports), installports)) 229 if answer[0].lower() == 'y': 230 print ' ok' 231 else: 232 sys.exit(1) 233 for portname, port in ports.iteritems(): 234 print "Installing " + portname + ":" 235 port.installPort() 236 237 def preparePort(self, port): 217 238 # split the argument into a port name and a version 218 239 219 240 reWithVersion = re.compile(regExp['portfullname']) … … 233 254 234 255 # invalid argument 235 256 236 sys.exit('Error: Invalid port name ' + port)257 return('Error: Invalid port name ' + port) 237 258 238 259 # find the port in the HaikuPorts tree 239 260 240 261 self.portCategory = self.getCategory(self.portName) 241 262 if self.portCategory == None: 242 sys.exit('Error: Port ' + self.portName + ' not found.')263 return('Error: Port ' + self.portName + ' not found.') 243 264 244 265 # create full paths for the directories 245 266 … … 248 269 self.downloadDir = self.portDir + '/' + paths['download'] 249 270 self.workDir = self.portDir + '/' + paths['work'] 250 271 self.patchesDir = self.portDir + '/' + paths['patches'] 272 251 273 self.distroDir = self.portDir + '/' + paths['distro'] 252 274 253 275 # if the port version was not specified, list available versions … … 265 287 % self.portName 266 288 for version in versions: 267 289 print ' ' + version[0] 268 sys.exit('Run haikuporter again, specifiying a port version'290 return('Run haikuporter again, specifiying a port version' 269 291 ) 270 292 elif len(versions) == 1: 271 293 self.portVersion = versions[0][0] 272 294 else: 273 sys.exit('Error: .bep files for ' + self.portName295 return('Error: .bep files for ' + self.portName 274 296 + ' not found.') 275 297 276 298 # show port description, if requested 277 299 278 300 if options.about: 279 self.printDescription() 280 sys.exit() 301 return(self.printDescription()) 281 302 282 303 # read data from the bep file 283 304 … … 287 308 288 309 self.platform = self.detectOS() 289 310 if self.platform == None: 290 sys.exit('Error: Unknown OS platform!')311 return('Error: Unknown OS platform!') 291 312 else: 292 313 if self.bepKeys['STATUS_' + self.platform] != 'stable': 293 314 print 'Warning: This port is ' + self.bepKeys['STATUS_' 294 315 + self.platform] + ' on this platform.' 295 316 if not self.options.yes: 296 317 answer = raw_input('Continue (y/n + enter)? ') 297 if answer == '':298 sys.exit(1)299 318 if answer[0].lower() == 'y': 300 319 print ' ok' 301 320 else: 302 sys.exit(1)321 return(False) 303 322 304 323 if self.bepKeys['MESSAGE']: 305 324 print self.bepKeys['MESSAGE'] 306 325 if not self.options.yes: 307 326 answer = raw_input('Continue (y/n + enter)? ') 308 if answer == '':309 sys.exit(1)310 327 if answer[0].lower() == 'y': 311 328 print ' ok' 312 329 else: 313 sys.exit(1)330 return(False) 314 331 315 332 # clean the work dir and don't build when making a source archive 316 333 … … 328 345 329 346 if not options.patch: 330 347 options.build = False 348 return self 331 349 350 def installPort(self): 332 351 self.checkDependencies() # check dependencies 333 352 self.downloadSource() # fetch sources 334 353 self.checksumSource() # calculate checksum … … 359 378 reEmptyLine = re.compile('^\s*$') 360 379 361 380 if not os.path.exists(bepFilename): 362 sys.exit('Error: ' + self.portName + ' version '381 return('Error: ' + self.portName + ' version ' 363 382 + self.portVersion + ' not found.') 364 383 365 384 fp = open(bepFilename) … … 395 414 print '*' * 80 396 415 397 416 fp.close() 417 return True 398 418 399 419 def setFlag(self, name): 400 420 open('%s/%s-%s.%s' % (self.workDir, self.portName,
