⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 umaker.py

📁 linux下的一款播放器
💻 PY
字号:
#!/usr/bin/env python# # ***** BEGIN LICENSE BLOCK *****# Source last modified: $Id: umaker.py,v 1.3 2004/07/07 22:00:03 hubbe Exp $# # Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.# # The contents of this file, and the files included with this file,# are subject to the current version of the RealNetworks Public# Source License (the "RPSL") available at# http://www.helixcommunity.org/content/rpsl unless you have licensed# the file under the current version of the RealNetworks Community# Source License (the "RCSL") available at# http://www.helixcommunity.org/content/rcsl, in which case the RCSL# will apply. You may also obtain the license terms directly from# RealNetworks.  You may not use this file except in compliance with# the RPSL or, if you have a valid RCSL with RealNetworks applicable# to this file, the RCSL.  Please see the applicable RPSL or RCSL for# the rights, obligations and limitations governing use of the# contents of the file.# # Alternatively, the contents of this file may be used under the# terms of the GNU General Public License Version 2 or later (the# "GPL") in which case the provisions of the GPL are applicable# instead of those above. If you wish to allow use of your version of# this file only under the terms of the GPL, and not to allow others# to use your version of this file under the terms of either the RPSL# or RCSL, indicate your decision by deleting the provisions above# and replace them with the notice and other provisions required by# the GPL. If you do not delete the provisions above, a recipient may# use your version of this file under the terms of any one of the# RPSL, the RCSL or the GPL.# # This file is part of the Helix DNA Technology. RealNetworks is the# developer of the Original Code and owns the copyrights in the# portions it created.# # This file, and the files included with this file, is distributed# and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY# KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS# ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET# ENJOYMENT OR NON-INFRINGEMENT.# # Technology Compatibility Kit Test Suite(s) Location:#    http://www.helixcommunity.org/content/tck# # Contributor(s):# # ***** END LICENSE BLOCK *****# ## $Id: umaker.py,v 1.3 2004/07/07 22:00:03 hubbe Exp $## UMAKER -- Find all Umakefil(s) recursivly, run umake on them, and ##           form a list of modified makefiles for inspection before##           committing.import os, sys, string, getopt, stat, re# really commit?REALLY_COMMIT = 0# modify this list to add/remove platformsPLATFORMS = [    'linux-2.0-libc6-i386-gcc2.95',    'linux-2.0-libc6-i386',    'freebsd-2.2-i386',    'freebsd-3.0-i386',    'sunos-5.6-sparc',    'sunos-5.7-sparc',]# output fileCOMMIT_FILENAME = 'commit.txt'# commit messageCOMMIT_MESSAGE = 'committing umake-generated makefiles for SDK samples'def get_target_list(path_list):    origional_directory_list = []    directory_list = []    file_list = []    # get all directories in the path list    for path in path_list:        if os.path.isdir(path):            origional_directory_list.append(path)            directory_list = directory_list + get_directories(path)        else:            if os.path.isfile(path):                file_list.append(path)    # get all files in given paths     for directory in directory_list:        try:            path_list = os.listdir(directory)        except:            continue                for path in path_list:            path = os.path.join(directory, path)            if os.path.isfile(path):                file_list.append(path)    # decompose origional paths so the archive system    # can make directory records for them that will set the    # correct access/modification dates and permissions    for directory in origional_directory_list:        while 1:            base, junk = os.path.split(directory)            if base == '' or \               base == os.curdir or \               base == os.pardir or \               base == os.sep:                break            directory_list.append(base)            directory = base    return file_list, directory_listdef get_directories(directory):    directory_list = [directory]    try:        path_list = os.listdir(directory)    except:        return directory_list    for path in path_list:        path = os.path.join(directory, path)                if os.path.isdir(path) and not os.path.islink(path):            directory_list = directory_list + get_directories(path)    return directory_listdef run_umake(umake_path, platform_list):    old_dir = os.getcwd()    (path, umakefil) = os.path.split(umake_path)    if path != '':        os.chdir(path)    makefile_list = []    for platform in platform_list:        makefile = '%s.mak' % (platform)        os.environ['SYSTEM_ID'] = platform                cmd = 'umake -t release -m %s' % (makefile)        status = os.system(cmd)                if not os.path.isfile(makefile):            print 'ERROR: %s not generated in subdir %s' % (makefile, path)                    makefile = os.path.join(path, makefile)        print 'generated %s' % (makefile)        makefile_list.append(makefile)                os.chdir(old_dir)    return makefile_listdef generate_makefiles(platforms):     file_list, directory_list = get_target_list(os.listdir(os.curdir))     # form a list of all umakefil(s)     umake_file_list = []     for file in file_list:         if string.lower(os.path.basename(file)) == 'umakefil':             umake_file_list.append(file)     # generate Makefiles     commit_list = []     for umake_file in umake_file_list:         commit_list = commit_list + run_umake(umake_file, platforms)     # write a file with the filenames of all generated     # makefiles for inspection     print 'writing %s' % (COMMIT_FILENAME)     fil = open(COMMIT_FILENAME, 'w')     for commit_file in commit_list:         fil.write('%s\n' % (commit_file))def commit():    commit_file_list = []        # retrieve files out of commit file list    for commit_file in open(COMMIT_FILENAME, 'r').readlines():        commit_file_list.append(string.strip(commit_file))    # form a list subset of commit_file_list which    # we need to do a 'cvs add' on    add_file_list = []    for commit_file in commit_file_list:        print 'checking %s' % (commit_file)                cmd = '{ cvs status %s; } 2>&1' % (commit_file)                # get ouput text and status from the cvs status        # command to decide if we need to preform a cvs add        cmd_fil = os.popen(cmd, 'r')        text = cmd_fil.read()        status = cmd_fil.close()        # use the output to detect if we need to run        # cvs add on this file before committing        pattern = '.*File:\s+%s\s+Status:\s+Unknown.*' % (            re.escape(os.path.basename(commit_file)))        if re.match(pattern, text, re.M|re.S):            print 'adding %s to cvs add list' % (commit_file)            add_file_list.append(commit_file)    # run cvs add & commit    for commit_file in commit_file_list:        # cvs add ...        if add_file_list.count(commit_file):            print 'adding %s' % (commit_file)                        cmd = 'cvs add %s' % (commit_file)            if REALLY_COMMIT:                cmd_fil = os.popen(cmd, 'r')                text = cmd_fil.read()                status = cmd_fil.close()                if status:                    print 'ERROR: command %s' % (cmd)                    print text                    sys.exit(1)            else:                print 'CMD: %s' % (cmd)        # cvs commit ...        print 'committing %s' % (commit_file)        cmd = 'cvs commit -m \'%s\' %s' % (COMMIT_MESSAGE, commit_file)        if REALLY_COMMIT:            cmd_fil = os.popen(cmd, 'r')            text = cmd_fil.read()            status = cmd_fil.close()            if status:                print 'ERROR: command %s' % (cmd)                print text                sys.exit(1)        else:            print 'CMD: %s' % (cmd)def usage():    print 'USAGE: %s OPTION [PLATFORM list]' % (os.path.basename(sys.argv[0]))    print '^^^^^^'    print '   Recursivly generate makefiles (<platform-name>.mak) for '    print '   each Umakefil found. Generate a %s file containing' % (COMMIT_FILENAME)    print '   the relative path of each makefile generated so it can be'    print '   inspected and modified before committing.'    print 'OPTION'    print '^^^^^^'    print '   generate\tgenerate makefiles and %s commit file' % (COMMIT_FILENAME)    print '   commit\tadd/commit files in %s' % (COMMIT_FILENAME)    print 'PLATFORM list'    print '^^^^^^^^^^^^^'    print '   It consists of a list of platform names seperated by SPACES'    for platform in PLATFORMS:        print '\t%s' % (platform)    print 'Example usage'    print '^^^^^^^^^^^^^'    print '   %s generate -- generate makefiles for all supported platforms' % (os.path.basename(sys.argv[0]))    print '   %s generate linux2 freebsd3 -- generate for linux2 and freebsd3' % (os.path.basename(sys.argv[0]))    print ''# MAINif __name__ == '__main__':    option_list = ['generate', 'commit']        if len(sys.argv) < 2 or not option_list.count(sys.argv[1]):        usage()        sys.exit(1)    elif len(sys.argv) > 2:        all_platforms = 0        platforms = []        for platform in sys.argv[2:]:            platforms.append(platform)    else:         all_platforms = 1    if sys.argv[1] == 'generate':        if all_platforms == 1:            generate_makefiles(PLATFORMS)        else:            generate_makefiles(platforms)    elif sys.argv[1] == 'commit':        commit()    sys.exit(0)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -