Example #1
0
class DistScrambleCrate( ScrambleCrate ):
    """
    Holds eggs with info on how to build them for distribution.
    """
    dist_config_file = os.path.join( galaxy_dir, 'dist-eggs.ini' )

    def __init__( self, galaxy_config_file, build_on='all' ):
        self.dist_config = CaseSensitiveConfigParser()
        self.build_on = build_on
        ScrambleCrate.__init__( self, galaxy_config_file )

    def parse( self ):
        self.dist_config.read( DistScrambleCrate.dist_config_file )
        self.hosts = dict( self.dist_config.items( 'hosts' ) )
        self.groups = dict( self.dist_config.items( 'groups' ) )
        self.ignore = dict( self.dist_config.items( 'ignore' ) )
        self.platforms = self.get_platforms( self.build_on )
        self.noplatforms = self.get_platforms( 'noplatform' )
        Crate.parse( self )

    def get_platforms( self, wanted ):
        # find all the members of a group and process them
        if wanted in self.groups:
            platforms = []
            for name in self.groups[wanted].split():
                for platform in self.get_platforms( name ):
                    if platform not in platforms:
                        platforms.append( platform )
            return platforms
        elif wanted in self.hosts:
            return [ wanted ]
        else:
            raise Exception( "unknown platform: %s" % wanted )

    def parse_egg_section( self, eggs, tags, full_platform=False ):
        for name, version in eggs:
            self.eggs[name] = []
            tag = dict( tags ).get( name, '' )
            url = '/'.join( ( self.repo, name ) )
            try:
                sources = self.config.get( 'source', name ).split()
            except:
                sources = []
            try:
                dependencies = self.config.get( 'dependencies', name ).split()
            except:
                dependencies = []
            if full_platform:
                platforms = self.platforms
            else:
                platforms = self.noplatforms
            for platform in platforms:
                if name in self.ignore and platform in self.ignore[name].split():
                    continue
                egg = DistScrambleEgg( name, version, tag, url, platform, self )
                host_info = self.hosts[platform].split()
                egg.build_host, egg.python = host_info[:2]
                egg.sources = sources
                egg.dependencies = dependencies
                self.eggs[name].append( egg )
Example #2
0
 def __init__(self, galaxy_config_file, build_on='all'):
     self.dist_config = CaseSensitiveConfigParser()
     self.build_on = build_on
     ScrambleCrate.__init__(self, galaxy_config_file)
Example #3
0
class DistScrambleCrate(ScrambleCrate):
    """
    Holds eggs with info on how to build them for distribution.
    """
    dist_config_file = os.path.join(galaxy_dir, 'dist-eggs.ini')

    def __init__(self, galaxy_config_file, build_on='all'):
        self.dist_config = CaseSensitiveConfigParser()
        self.build_on = build_on
        ScrambleCrate.__init__(self, galaxy_config_file)

    def parse(self):
        self.dist_config.read(DistScrambleCrate.dist_config_file)
        self.hosts = dict(self.dist_config.items('hosts'))
        self.groups = dict(self.dist_config.items('groups'))
        self.ignore = dict(self.dist_config.items('ignore'))
        self.platforms = self.get_platforms(self.build_on)
        self.noplatforms = self.get_platforms('noplatform')
        Crate.parse(self)

    def get_platforms(self, wanted):
        # find all the members of a group and process them
        if self.groups.has_key(wanted):
            platforms = []
            for name in self.groups[wanted].split():
                for platform in self.get_platforms(name):
                    if platform not in platforms:
                        platforms.append(platform)
            return platforms
        elif self.hosts.has_key(wanted):
            return [wanted]
        else:
            raise Exception("unknown platform: %s" % wanted)

    def parse_egg_section(self, eggs, tags, full_platform=False):
        for name, version in eggs:
            self.eggs[name] = []
            tag = dict(tags).get(name, '')
            url = '/'.join((self.repo, name))
            try:
                sources = self.config.get('source', name).split()
            except:
                sources = []
            try:
                dependencies = self.config.get('dependencies', name).split()
            except:
                dependencies = []
            if full_platform:
                platforms = self.platforms
            else:
                platforms = self.noplatforms
            for platform in platforms:
                if name in self.ignore and platform in self.ignore[name].split(
                ):
                    continue
                egg = DistScrambleEgg(name, version, tag, url, platform, self)
                host_info = self.hosts[platform].split()
                egg.build_host, egg.python = host_info[:2]
                egg.sources = sources
                egg.dependencies = dependencies
                self.eggs[name].append(egg)
Example #4
0
 def __init__( self, galaxy_config_file, build_on='all' ):
     self.dist_config = CaseSensitiveConfigParser()
     self.build_on = build_on
     ScrambleCrate.__init__( self, galaxy_config_file )