[pygccxml-commit] SF.net SVN: pygccxml: [830] graphical_installer
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2007-01-02 20:17:54
|
Revision: 830 http://svn.sourceforge.net/pygccxml/?rev=830&view=rev Author: roman_yakovenko Date: 2007-01-02 12:17:54 -0800 (Tue, 02 Jan 2007) Log Message: ----------- backporting to python 2.4 Modified Paths: -------------- graphical_installer/config.py graphical_installer/setup.py graphical_installer/utils.py Modified: graphical_installer/config.py =================================================================== --- graphical_installer/config.py 2007-01-02 08:18:14 UTC (rev 829) +++ graphical_installer/config.py 2007-01-02 20:17:54 UTC (rev 830) @@ -1,10 +1,7 @@ import sys -import tempfile #directory GCC-XML will be installed in gccxml_install_dir = None -#temporal directory to extract archives and create executables -working_dir = tempfile.gettempdir() class archives: cmake = 'cmake-%s.tar' % sys.platform Modified: graphical_installer/setup.py =================================================================== --- graphical_installer/setup.py 2007-01-02 08:18:14 UTC (rev 829) +++ graphical_installer/setup.py 2007-01-02 20:17:54 UTC (rev 830) @@ -5,35 +5,11 @@ import utils import config import shutil -import tarfile -import tkFileDialog +import tempfile -def execute( command, *args, **keywd): - cmd_line = [ command ] - for key, value in keywd.items(): - cmd_line.append( '--%s=%s' % ( key, value ) ) - cmd_line.extend( args ) - cmd = ' '.join( cmd_line ) - utils.logger.info( 'executing command: %s' % cmd ) - input, output = os.popen4( cmd ) - input.close() - reports = [] - while True: - data = output.readline() - utils.logger.info( data ) - if not data: - break - exit_status = output.close() - if None is exit_status: - exit_status = 0 - else: - utils.logger.info( 'executing command: %s - done(%d)' %( cmd, exit_status ) ) - return exit_status - -def build_gccxml(): +def build_gccxml(working_dir): utils.logger.info( 'create environment for building GCC_XML' ) - gccxml_src_dir = os.path.join( config.working_dir - , os.path.splitext( config.archives.gccxml )[0] ) + gccxml_src_dir = os.path.join( working_dir, os.path.splitext( config.archives.gccxml )[0] ) build_dir = gccxml_src_dir + '-build' if not os.path.exists( build_dir ): @@ -52,19 +28,18 @@ os.chdir( build_dir ) - cmake = os.path.join( - config.working_dir - , os.path.splitext( config.archives.cmake )[0] - , 'bin' - , 'cmake' ) + cmake = os.path.join( working_dir + , os.path.splitext( config.archives.cmake )[0] + , 'bin' + , 'cmake' ) - execute( cmake - , '-DCMAKE_INSTALL_PREFIX:PATH=' + config.gccxml_install_dir - , '-DCMAKE_BUILD_TYPE=release' - , '-G "%s"' % config.cmake.generator - , gccxml_src_dir ) + utils.execute( cmake + , '-DCMAKE_INSTALL_PREFIX:PATH=' + config.gccxml_install_dir + , '-DCMAKE_BUILD_TYPE=release' + , '-G "%s"' % config.cmake.generator + , gccxml_src_dir ) - execute( config.cmake.native_build ) + utils.execute( config.cmake.native_build ) if 'win32' == sys.platform: #On windows GCC_XML does not support installation, so this setup will #do it. @@ -85,30 +60,36 @@ shutil.copytree( os.path.join( build_dir, 'bin' ), config.gccxml_install_dir ) utils.logger.info( 'copying GCC_XML files to the install directory - done' ) else: - execute( config.cmake.native_build, 'install' ) + utils.execute( config.cmake.native_build, 'install' ) utils.logger.info( 'removing GCC_XML build directory' ) shutil.rmtree( build_dir, True ) utils.logger.info( 'removing GCC_XML build directory - done' ) if __name__ == "__main__": + config.gccxml_install_dir = utils.ask_directory( "Select directory GCC_XML will be installed in" ) if not config.gccxml_install_dir: utils.logger.info( 'If you want to install GCC_XML you have to provide a directory it will be installed in.' ) sys.exit(1) else: utils.logger.info( 'GCC_XML will be installed in "%s" directory.' % config.gccxml_install_dir) - #decompressing all archives - for arch in config.archives.all: - utils.logger.info( 'extracting "%s"' % arch ) - tarfile.TarFile( arch, "r" ).extractall( config.working_dir ) - utils.logger.info( 'extracting "%s" - done' % arch ) - build_gccxml() + + utils.logger.info( 'creating temporal directory ...') + working_dir = tempfile.mkdtemp( dir=tempfile.gettempdir() ) + utils.logger.info( 'creating temporal directory - done( "%s" )' % working_dir) - for arch in config.archives.all: - x_dir = os.path.join( config.working_dir, os.path.splitext( arch )[0] ) - utils.logger.info( 'removing "%s" directory' % x_dir ) - shutil.rmtree( x_dir ) - utils.logger.info( 'removing "%s" directory - done' % x_dir ) + try: + #decompressing all archives + for arch in config.archives.all: + utils.logger.info( 'extracting "%s"' % arch ) + utils.tar_extract_all( arch, working_dir ) + utils.logger.info( 'extracting "%s" - done' % arch ) + build_gccxml(working_dir) + + finally: + utils.logger.info( 'removing temporal directory "%s"' % working_dir ) + shutil.rmtree( working_dir ) + utils.logger.info( 'removing temporal directory "%s" - done' % working_dir ) utils.logger.info( 'GCC_XML was successfully installed in "%s" directory' % config.gccxml_install_dir ) utils.logger.info( 'Uninstall instruction - delete GCC_XML install directory.' ) Modified: graphical_installer/utils.py =================================================================== --- graphical_installer/utils.py 2007-01-02 08:18:14 UTC (rev 829) +++ graphical_installer/utils.py 2007-01-02 20:17:54 UTC (rev 830) @@ -1,9 +1,22 @@ import os import sys +import tarfile import logging import Tkinter import tkFileDialog + +def __create_logger(): + logger = logging.getLogger('install') + handler = logging.StreamHandler(sys.stdout) + handler.setFormatter( logging.Formatter( os.linesep + '%(message)s' ) ) + logger.addHandler(handler) + logger.setLevel(logging.INFO) + return logger + +logger = __create_logger() + + def ask_directory(title, root=None): created = False if not root: @@ -15,13 +28,33 @@ root.destroy() return dir_ +def tar_extract_all( archive, destination_dir ): + tar = tarfile.TarFile( archive, "r" ) + for tarinfo in tar.getmembers(): + if tarinfo.isdir(): + os.makedirs(os.path.join(destination_dir, tarinfo.name), 0777) + else: + tar.extract(tarinfo, destination_dir) -def __create_logger(): - logger = logging.getLogger('install') - handler = logging.StreamHandler(sys.stdout) - handler.setFormatter( logging.Formatter( os.linesep + '%(message)s' ) ) - logger.addHandler(handler) - logger.setLevel(logging.INFO) - return logger - -logger = __create_logger() +def execute( command, *args, **keywd): + global logger + cmd_line = [ command ] + for key, value in keywd.items(): + cmd_line.append( '--%s=%s' % ( key, value ) ) + cmd_line.extend( args ) + cmd = ' '.join( cmd_line ) + logger.info( 'executing command: %s' % cmd ) + input, output = os.popen4( cmd ) + input.close() + reports = [] + while True: + data = output.readline() + logger.info( data ) + if not data: + break + exit_status = output.close() + if None is exit_status: + exit_status = 0 + else: + logger.info( 'executing command: %s - done(%d)' %( cmd, exit_status ) ) + return exit_status This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |