(self, dist_filename, egg_tmp)
Extract a bdist_wininst to the directories an egg would use
Extract a bdist_wininst to the directories an egg would use
Extract a bdist_wininst to the directories an egg would use
def exe_to_egg(self, dist_filename, egg_tmp):
        """Extract a bdist_wininst to the directories an egg would use"""
        # Check for .pth file and set up prefix translations
        prefixes = get_exe_prefixes(dist_filename)
        to_compile = []
        native_libs = []
        top_level = {}

        def process(src, dst):
            s = src.lower()
            for old, new in prefixes:
                if s.startswith(old):
                    src = new + src[len(old):]
                    parts = src.split('/')
                    dst = os.path.join(egg_tmp, *parts)
                    dl = dst.lower()
                    if dl.endswith('.pyd') or dl.endswith('.dll'):
                        parts[-1] = bdist_egg.strip_module(parts[-1])
                        top_level[os.path.splitext(parts[0])[0]] = 1
                        native_libs.append(src)
                    elif dl.endswith('.py') and old != 'SCRIPTS/':
                        top_level[os.path.splitext(parts[0])[0]] = 1
                        to_compile.append(dst)
                    return dst
            if not src.endswith('.pth'):
                log.warn("WARNING: can't process %s", src)
            return None

        # extract, tracking .pyd/.dll->native_libs and .py -> to_compile
        unpack_archive(dist_filename, egg_tmp, process)
        stubs = []
        for res in native_libs:
            if res.lower().endswith('.pyd'):  # create stubs for .pyd's
                parts = res.split('/')
                resource = parts[-1]
                parts[-1] = bdist_egg.strip_module(parts[-1]) + '.py'
                pyfile = os.path.join(egg_tmp, *parts)
                to_compile.append(pyfile)
                stubs.append(pyfile)
                bdist_egg.write_stub(resource, pyfile)
        self.byte_compile(to_compile)  # compile .py's
        bdist_egg.write_safety_flag(
            os.path.join(egg_tmp, 'EGG-INFO'),
            bdist_egg.analyze_egg(egg_tmp, stubs))  # write zip-safety flag

        for name in 'top_level', 'native_libs':
            if locals()[name]:
                txt = os.path.join(egg_tmp, 'EGG-INFO', name + '.txt')
                if not os.path.exists(txt):
                    f = open(txt, 'w')
                    f.write('\n'.join(locals()[name]) + '\n')
                    f.close()
def exe_to_egg ( self , dist_filename , egg_tmp ) : # Check for .pth file and set up prefix translations prefixes = get_exe_prefixes ( dist_filename ) to_compile = [ ] native_libs = [ ] top_level = { } def process ( src , dst ) : s = src . lower ( ) for old , new in prefixes : if s . startswith ( old ) : src = new + src [ len ( old ) : ] parts = src . split ( '/' ) dst = os . path . join ( egg_tmp , * parts ) dl = dst . lower ( ) if dl . endswith ( '.pyd' ) or dl . endswith ( '.dll' ) : parts [ - 1 ] = bdist_egg . strip_module ( parts [ - 1 ] ) top_level [ os . path . splitext ( parts [ 0 ] ) [ 0 ] ] = 1 native_libs . append ( src ) elif dl . endswith ( '.py' ) and old != 'SCRIPTS/' : top_level [ os . path . splitext ( parts [ 0 ] ) [ 0 ] ] = 1 to_compile . append ( dst ) return dst if not src . endswith ( '.pth' ) : log . warn ( "WARNING: can't process %s" , src ) return None # extract, tracking .pyd/.dll->native_libs and .py -> to_compile unpack_archive ( dist_filename , egg_tmp , process ) stubs = [ ] for res in native_libs : if res . lower ( ) . endswith ( '.pyd' ) : # create stubs for .pyd's parts = res . split ( '/' ) resource = parts [ - 1 ] parts [ - 1 ] = bdist_egg . strip_module ( parts [ - 1 ] ) + '.py' pyfile = os . path . join ( egg_tmp , * parts ) to_compile . append ( pyfile ) stubs . append ( pyfile ) bdist_egg . write_stub ( resource , pyfile ) self . byte_compile ( to_compile ) # compile .py's bdist_egg . write_safety_flag ( os . path . join ( egg_tmp , 'EGG-INFO' ) , bdist_egg . analyze_egg ( egg_tmp , stubs ) ) # write zip-safety flag for name in 'top_level' , 'native_libs' : if locals ( ) [ name ] : txt = os . path . join ( egg_tmp , 'EGG-INFO' , name + '.txt' ) if not os . path . exists ( txt ) : f = open ( txt , 'w' ) f . write ( '\n' . join ( locals ( ) [ name ] ) + '\n' ) f . close ( )