예제 #1
0
    def create_bundle(self, target_dir=None):
        '''
        Creates the bundle structure

        Commands -> Versions/Current/Commands
        Headers -> Versions/Current/Headers
        Libraries -> Versions/Current/Libraries
        Home -> Versions/Current
        Resources -> Versions/Current/Resources
        Versions/Current -> Version/$VERSION/$ARCH
        Framework -> Versions/Current/Famework
        '''
        if target_dir:
            tmp = target_dir
        else:
            tmp = tempfile.mkdtemp()

        if self.config.target_arch == Architecture.UNIVERSAL:
            arch_dir = ''
        else:
            arch_dir = self.config.target_arch

        vdir = os.path.join('Versions', self.package.sdk_version, arch_dir)
        rdir = '%s/Resources/' % vdir
        shell.call ('mkdir -p %s' % rdir, tmp)

        links = {'Versions/Current': '../%s' % vdir,
                 'Resources': 'Versions/Current/Resources',
                 'Commands': 'Versions/Current/Commands',
                 'Headers': 'Versions/Current/Headers',
                 'Libraries': 'Versions/Current/Libraries'}
        inner_links = {'Commands': 'bin',
                       'Libraries': 'lib'}

        # Create the frameworks Info.plist file
        framework_plist = FrameworkPlist(self.package.name,
            self.package.org, self.package.version, self.package.shortdesc,
            self.package.config.min_osx_sdk_version)
        framework_plist.save(os.path.join(tmp, rdir, 'Info.plist'))

        # Add a link from Framework to Versions/Current/Framework
        if self.package.osx_framework_library is not None:
            name, link = self.package.osx_framework_library
            # Framework -> Versions/Current/Famework
            links[name] = 'Versions/Current/%s' % name

        # Create all links
        for dest, src in links.iteritems():
            shell.call ('ln -s %s %s' % (src, dest), tmp)
        inner_tmp = os.path.join(tmp, vdir)
        for dest, src in inner_links.iteritems():
            shell.call ('ln -s %s %s' % (src, dest), inner_tmp)

        # Copy the framework library to Versions/$VERSION/$ARCH/Framework
        if self.package.osx_framework_library is not None \
                and os.path.exists(os.path.join(self.config.prefix, link)):
            shell.call ('mkdir -p %s' % vdir, tmp)
            shutil.copy(os.path.join(self.config.prefix, link),
                        os.path.join(tmp, vdir, name))
        return tmp
예제 #2
0
    def create_bundle(self, target_dir=None):
        '''
        Creates the bundle structure

        Commands -> Versions/Current/Commands
        Headers -> Versions/Current/Headers
        Libraries -> Versions/Current/Libraries
        Home -> Versions/Current
        Resources -> Versions/Current/Resources
        Versions/Current -> Version/$VERSION/$ARCH
        Framework -> Versions/Current/Famework
        '''
        if target_dir:
            tmp = target_dir
        else:
            tmp = tempfile.mkdtemp()

        #if self.config.target_arch == Architecture.UNIVERSAL:
        #    arch_dir = ''
        #else:
        #    arch_dir = self.config.target_arch

        vdir = os.path.join('Versions', self.package.sdk_version)  #, arch_dir)
        rdir = '%s/Resources/' % vdir
        shell.call('mkdir -p %s' % rdir, tmp)

        links = {
            'Versions/Current': '%s' % self.package.sdk_version,
            'Resources': 'Versions/Current/Resources',
            'Commands': 'Versions/Current/Commands',
            'Headers': 'Versions/Current/Headers',
            'Libraries': 'Versions/Current/Libraries'
        }
        inner_links = {'Commands': 'bin', 'Libraries': 'lib'}

        # Create the frameworks Info.plist file
        framework_plist = FrameworkPlist(
            self.package.name, self.package.org, self.package.version,
            self.package.shortdesc, self.package.config.min_osx_sdk_version)
        framework_plist.save(os.path.join(tmp, rdir, 'Info.plist'))

        # Add a link from Framework to Versions/Current/Framework
        if self.package.osx_framework_library is not None:
            name, link = self.package.osx_framework_library
            # Framework -> Versions/Current/Famework
            links[name] = 'Versions/Current/%s' % name

        # Create all links
        for dest, src in links.iteritems():
            shell.call('ln -s %s %s' % (src, dest), tmp)
        inner_tmp = os.path.join(tmp, vdir)
        for dest, src in inner_links.iteritems():
            shell.call('ln -s %s %s' % (src, dest), inner_tmp)

        # Copy the framework library to Versions/$VERSION/$ARCH/Framework
        if self.package.osx_framework_library is not None \
                and os.path.exists(os.path.join(self.config.prefix, link)):
            shell.call('mkdir -p %s' % vdir, tmp)
            shutil.copy(os.path.join(self.config.prefix, link),
                        os.path.join(tmp, vdir, name))
        return tmp