[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.
|