HaikuPorts
  • Login
  • Preferences
  • Help/Guide
  • Wiki
  • Timeline
  • Roadmap
  • View Tickets
  • Search
  • Port Log
  • Blog

Context Navigation

  • Back to Ticket #482

Ticket #482: haikuporter_multiple_ports.patch

File haikuporter_multiple_ports.patch, 5.2 KB (added by yeputons, 5 years ago)
  • haikuporter

     
    66# copyright 2009 Alexander Deynichenko 
    77# copyright 2009 HaikuBot (aka RISC) 
    88# copyright 2010-2011 Jack Laxson (Jrabbit) 
     9# copyright 2011 Egor Suvorov (aka yeputons) 
    910 
    1011info = {} 
    1112info['version'] = 'r' + '$Rev$'[6:-2] 
    … …  
    211212            print "Invoke '" + sys.argv[0]\ 
    212213                 + " -h' for usage information." 
    213214            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): 
    217238        # split the argument into a port name and a version 
    218239 
    219240        reWithVersion = re.compile(regExp['portfullname']) 
    … …  
    233254 
    234255                                             # invalid argument 
    235256 
    236             sys.exit('Error: Invalid port name ' + port) 
     257            return('Error: Invalid port name ' + port) 
    237258 
    238259        # find the port in the HaikuPorts tree 
    239260 
    240261        self.portCategory = self.getCategory(self.portName) 
    241262        if self.portCategory == None: 
    242             sys.exit('Error: Port ' + self.portName + ' not found.') 
     263            return('Error: Port ' + self.portName + ' not found.') 
    243264 
    244265        # create full paths for the directories 
    245266 
    … …  
    248269        self.downloadDir = self.portDir + '/' + paths['download'] 
    249270        self.workDir = self.portDir + '/' + paths['work'] 
    250271        self.patchesDir = self.portDir + '/' + paths['patches'] 
     272 
    251273        self.distroDir = self.portDir + '/' + paths['distro'] 
    252274 
    253275        # if the port version was not specified, list available versions 
    … …  
    265287                     % self.portName 
    266288                for version in versions: 
    267289                    print '  ' + version[0] 
    268                 sys.exit('Run haikuporter again, specifiying a port version' 
     290                return('Run haikuporter again, specifiying a port version' 
    269291                         ) 
    270292            elif len(versions) == 1: 
    271293                self.portVersion = versions[0][0] 
    272294            else: 
    273                 sys.exit('Error: .bep files for ' + self.portName 
     295                return('Error: .bep files for ' + self.portName 
    274296                          + ' not found.') 
    275297 
    276298        # show port description, if requested 
    277299 
    278300        if options.about: 
    279             self.printDescription() 
    280             sys.exit() 
     301            return(self.printDescription()) 
    281302 
    282303        # read data from the bep file 
    283304 
    … …  
    287308 
    288309        self.platform = self.detectOS() 
    289310        if self.platform == None: 
    290             sys.exit('Error: Unknown OS platform!') 
     311            return('Error: Unknown OS platform!') 
    291312        else: 
    292313            if self.bepKeys['STATUS_' + self.platform] != 'stable': 
    293314                print 'Warning: This port is ' + self.bepKeys['STATUS_' 
    294315                         + self.platform] + ' on this platform.' 
    295316                if not self.options.yes: 
    296317                    answer = raw_input('Continue (y/n + enter)? ') 
    297                     if answer == '': 
    298                         sys.exit(1) 
    299318                    if answer[0].lower() == 'y': 
    300319                        print ' ok' 
    301320                    else: 
    302                         sys.exit(1) 
     321                        return(False) 
    303322 
    304323        if self.bepKeys['MESSAGE']: 
    305324            print self.bepKeys['MESSAGE'] 
    306325            if not self.options.yes: 
    307326                answer = raw_input('Continue (y/n + enter)? ') 
    308                 if answer == '': 
    309                     sys.exit(1) 
    310327                if answer[0].lower() == 'y': 
    311328                    print ' ok' 
    312329                else: 
    313                     sys.exit(1) 
     330                    return(False) 
    314331 
    315332        # clean the work dir and don't build when making a source archive 
    316333 
    … …  
    328345 
    329346        if not options.patch: 
    330347            options.build = False 
     348        return self 
    331349 
     350    def installPort(self): 
    332351        self.checkDependencies()  # check dependencies 
    333352        self.downloadSource()  # fetch sources 
    334353        self.checksumSource()  # calculate checksum 
    … …  
    359378        reEmptyLine = re.compile('^\s*$') 
    360379 
    361380        if not os.path.exists(bepFilename): 
    362             sys.exit('Error: ' + self.portName + ' version ' 
     381            return('Error: ' + self.portName + ' version ' 
    363382                      + self.portVersion + ' not found.') 
    364383 
    365384        fp = open(bepFilename) 
    … …  
    395414        print '*' * 80 
    396415 
    397416        fp.close() 
     417        return True 
    398418 
    399419    def setFlag(self, name): 
    400420        open('%s/%s-%s.%s' % (self.workDir, self.portName, 

Download in other formats:

  • Original Format

Trac Powered

Powered by Trac 0.13dev-r10686
By Edgewall Software.

Visit the Trac open source project at
http://trac.edgewall.org/