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

📄 make_snapshot.py

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 PY
字号:
# Copyright (c) MetaCommunications, Inc. 2003-2007## Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt)import tarfileimport shutilimport timeimport os.pathimport stringimport sysimport tracebackdef retry( f, args, max_attempts=5, sleep_secs=10 ):    for attempts in range( max_attempts, -1, -1 ):        try:            return f( *args )        except Exception, msg:            utils.log( '%s failed with message "%s"' % ( f.__name__, msg ) )            if attempts == 0:                 utils.log( 'Giving up.' )                raise            utils.log( 'Retrying (%d more attempts).' % attempts )            time.sleep( sleep_secs )def rmtree( path ):    if os.path.exists( path ):        if sys.platform == 'win32':            os.system( 'del /f /s /q "%s" >nul 2>&1' % path )            shutil.rmtree( path )        else:            os.system( 'rm -f -r "%s"' % path )def svn_command( command ):    utils.log( 'Executing SVN command "%s"' % command )    rc = os.system( command )    if rc != 0:        raise Exception( 'SVN command "%s" failed with code %d' % ( command, rc ) )def svn_export( sources_dir, user, tag ):    if user is None or user == 'anonymous':        command = 'svn export --force http://svn.boost.org/svn/boost/%s %s' % ( tag, sources_dir )    else:        command = 'svn export --force --non-interactive --username=%s https://svn.boost.org/svn/boost/%s %s' \                  % ( user, tag, sources_dir )    os.chdir( os.path.basename( sources_dir ) )    retry(         svn_command       , ( command, )       )def make_tarball(          working_dir        , tag        , user        , site_dir        ):    timestamp = time.time()    timestamp_suffix = time.strftime( '%y-%m-%d-%H%M', time.gmtime( timestamp ) )    tag_suffix = tag.split( '/' )[-1]    sources_dir = os.path.join(          working_dir        , 'boost-%s-%s' % ( tag_suffix, timestamp_suffix )        )    if os.path.exists( sources_dir ):        utils.log( 'Directory "%s" already exists, cleaning it up...' % sources_dir )        rmtree( sources_dir )    try:        os.mkdir( sources_dir )        utils.log( 'Exporting files from SVN...' )        svn_export( sources_dir, user, tag )    except:        utils.log( 'Cleaning up...' )        rmtree( sources_dir )        raise    tarball_name = 'boost-%s.tar.bz2' % tag_suffix    tarball_path = os.path.join( working_dir, tarball_name )    utils.log( 'Archiving "%s" to "%s"...' % ( sources_dir, tarball_path ) )    tar = tarfile.open( tarball_path, 'w|bz2' )    tar.posix = False # see http://tinyurl.com/4ebd8    tar.add( sources_dir, os.path.basename( sources_dir ) )    tar.close()    tarball_timestamp_path = os.path.join( working_dir, 'boost-%s.timestamp' % tag_suffix )    utils.log( 'Writing timestamp into "%s"...' % tarball_timestamp_path )    timestamp_file = open( tarball_timestamp_path, 'w' )    timestamp_file.write( '%f' % timestamp )    timestamp_file.close()    md5sum_path = os.path.join( working_dir, 'boost-%s.md5' % tag_suffix )    utils.log( 'Writing md5 checksum into "%s"...' % md5sum_path )    old_dir = os.getcwd()    os.chdir( os.path.dirname( tarball_path ) )    os.system( 'md5sum -b "%s" >"%s"' % ( os.path.basename( tarball_path ), md5sum_path ) )    os.chdir( old_dir )        if site_dir is not None:        utils.log( 'Moving "%s" to the site location "%s"...' % ( tarball_name, site_dir ) )        temp_site_dir = os.path.join( site_dir, 'temp' )        if not os.path.exists( temp_site_dir ):            os.mkdir( temp_site_dir )                        shutil.move( tarball_path, temp_site_dir )        shutil.move( os.path.join( temp_site_dir, tarball_name ), site_dir )        shutil.move( tarball_timestamp_path, site_dir )        shutil.move( md5sum_path, site_dir )        utils.log( 'Removing "%s"...' % sources_dir )        rmtree( sources_dir )def accept_args( args ):    args_spec = [           'working-dir='        , 'tag='        , 'user='        , 'site-dir='        , 'mail='        , 'help'        ]            options = {           '--tag': 'trunk'        , '--user': None        , '--site-dir': None        }        utils.accept_args( args_spec, args, options, usage )            return (           options[ '--working-dir' ]        , options[ '--tag' ]        , options[ '--user' ]        , options[ '--site-dir' ]        )def usage():    print 'Usage: %s [options]' % os.path.basename( sys.argv[0] )    print    '''\t--working-dir   working directory\t--tag           snapshot tag (i.e. 'trunk')\t--user          Boost SVN user ID (optional)\t--site-dir      site directory to copy the snapshot to (optional)'''def main():    make_tarball( *accept_args( sys.argv[ 1: ] ) )if __name__ != '__main__':  import utilselse:    # in absense of relative import...    xsl_path = os.path.abspath( os.path.dirname( sys.argv[ 0 ] ) )    while os.path.basename( xsl_path ) != 'xsl_reports': xsl_path = os.path.dirname( xsl_path )    sys.path.append( xsl_path )    import utils    main()

⌨️ 快捷键说明

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