[pygccxml-commit] SF.net SVN: pygccxml: [1023] installers
Brought to you by:
mbaas,
roman_yakovenko
|
From: <rom...@us...> - 2007-04-29 06:38:03
|
Revision: 1023
http://svn.sourceforge.net/pygccxml/?rev=1023&view=rev
Author: roman_yakovenko
Date: 2007-04-28 23:37:59 -0700 (Sat, 28 Apr 2007)
Log Message:
-----------
few changes to create installer automatically
Modified Paths:
--------------
installers/config.py
installers/install_gccxml.py
installers/utils.py
Modified: installers/config.py
===================================================================
--- installers/config.py 2007-04-25 17:14:13 UTC (rev 1022)
+++ installers/config.py 2007-04-29 06:37:59 UTC (rev 1023)
@@ -1,3 +1,4 @@
+import os
import sys
import tempfile
@@ -6,6 +7,18 @@
#temporal directory to extract archives and create executables
working_dir = tempfile.gettempdir()
+class setup_builder:
+ #final\destination directory for ditributable package
+ dist_dir = os.path.split( sys.argv[0] )[0]
+ unzip = None
+
+ gccxml_cvs_dir = None
+ cmake_windows = 'cmake-2.4.6-win32-x86.zip'
+ cmake_linux = 'cmake-2.4.6-Linux-i386.tar.gz'
+ if 'win32' == sys.platform:
+ gccxml_cvs_dir = r'D:\dev\gccxml_cvs\gccxml'
+ unzip = 'unzip -d $target_dir $archive' #command line to run in order to unzip the file
+
class archives:
cmake = 'cmake-%s.tar' % sys.platform
gccxml = 'gccxml-cvs.tar'
@@ -32,4 +45,3 @@
compiler="gcc"
generator = 'Unix Makefiles'
native_build = 'make'
-
Modified: installers/install_gccxml.py
===================================================================
--- installers/install_gccxml.py 2007-04-25 17:14:13 UTC (rev 1022)
+++ installers/install_gccxml.py 2007-04-29 06:37:59 UTC (rev 1023)
@@ -5,8 +5,12 @@
import utils
import config
import shutil
+import urllib
+import string
+import tarfile
import tempfile
+
def build_gccxml(working_dir):
utils.logger.info( 'create environment for building GCC_XML' )
gccxml_src_dir = os.path.join( working_dir, os.path.splitext( config.archives.gccxml )[0] )
@@ -75,7 +79,7 @@
shutil.rmtree( build_dir, True )
utils.logger.info( 'removing GCC_XML build directory - done' )
-if __name__ == "__main__":
+def install():
if 2 == len(sys.argv):
config.gccxml_install_dir = sys.argv[1]
else:
@@ -107,3 +111,68 @@
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.' )
+def create_dist_package():
+ working_dir = os.path.abspath( os.path.dirname(sys.modules[__name__].__file__) )
+ try:
+ gccxml_cvs_dir_name = os.path.splitext( config.archives.gccxml )[0]
+ gccxml_cvs_dir_path = os.path.join( working_dir, gccxml_cvs_dir_name )
+ utils.logger.info( 'coping gccxml directory ' )
+ shutil.copytree( config.setup_builder.gccxml_cvs_dir, gccxml_cvs_dir_path )
+ utils.logger.info( 'coping gccxml directory - done' )
+ #TODO: remove cvs files from the directory
+ utils.logger.info( 'archiving gccxml "%s" directory ' % gccxml_cvs_dir_path )
+ tar = tarfile.open( os.path.join( working_dir, config.archives.gccxml ), "w" )
+ tar.add( gccxml_cvs_dir_path, gccxml_cvs_dir_name )
+ tar.close()
+ utils.logger.info( 'archiving gccxml "%s" directory - done' % gccxml_cvs_dir_path )
+
+ if 'win32' == sys.platform:
+ cmake_zip_file = os.path.join( working_dir, config.setup_builder.cmake_windows )
+
+ utils.logger.info( 'downloading "%s"' % config.setup_builder.cmake_windows )
+ urllib.urlretrieve( 'http://www.cmake.org/files/v2.4/' + config.setup_builder.cmake_windows
+ , cmake_zip_file )
+ utils.logger.info( 'downloading "%s" - done' % config.setup_builder.cmake_windows )
+
+ cmake_dir = os.path.splitext( cmake_zip_file )[0]
+
+ utils.logger.info( 'unzipping "%s" file' % config.setup_builder.cmake_windows )
+ unzip_cmd = string.Template( config.setup_builder.unzip )
+ utils.execute( unzip_cmd.substitute( archive='"%s"' % cmake_zip_file
+ , target_dir='"%s"' % working_dir ) )
+ utils.logger.info( 'unzipping "%s" file - done' % config.setup_builder.cmake_windows )
+
+ cmake_archive_dir = os.path.join( working_dir, os.path.splitext( config.archives.cmake )[0] )
+
+ shutil.move( cmake_dir, cmake_archive_dir )
+ utils.logger.info( 'archiving cmake "%s" directory ' % cmake_archive_dir )
+ tar = tarfile.open( os.path.join( working_dir, config.archives.cmake ), "w" )
+ tar.add( cmake_archive_dir, config.archives.cmake )
+ tar.close()
+ utils.logger.info( 'archiving cmake "%s" directory - done' % cmake_archive_dir )
+
+ #clean after yourself
+ os.remove( cmake_zip_file )
+ utils.rmtree_safe( cmake_dir )
+ utils.rmtree_safe( cmake_archive_dir )
+ utils.rmtree_safe( gccxml_cvs_dir_path )
+
+ else: #linux
+ cmake_linux = os.path.join( working_dir, config.setup_builder.cmake_linux )
+ if not os.path.exists( cmake_linux ):
+ utils.logger.info( 'downloading "%s"' % config.setup_builder.cmake_linux )
+ urllib.urlretrieve( 'http://www.cmake.org/files/v2.4/' + config.setup_builder.cmake_linux
+ , cmake_linux )
+ utils.logger.info( 'downloading "%s" - done' % config.setup_builder.cmake_linux )
+ utils.logger.info( 'unzipping "%s" file' % config.setup_builder.cmake_linux )
+ unzip_cmd = string.Template( config.setup_builder.unzip )
+ utils.execute( unzip_cmd.substitute( archive='"%s"' % cmake_linux
+ , target_dir='"%s"' % working_dir ) )
+ utils.logger.info( 'unzipping "%s" file - done' % config.setup_builder.cmake_linux )
+ finally:
+ pass
+ #shutil.rmtree( working_dir )
+
+if __name__ == "__main__":
+ #install()
+ create_dist_package()
Modified: installers/utils.py
===================================================================
--- installers/utils.py 2007-04-25 17:14:13 UTC (rev 1022)
+++ installers/utils.py 2007-04-29 06:37:59 UTC (rev 1023)
@@ -1,6 +1,8 @@
import os
import sys
+import shutil
import tarfile
+import zipfile
import logging
import Tkinter
import tkFileDialog
@@ -9,7 +11,7 @@
def __create_logger():
logger = logging.getLogger('install')
handler = logging.StreamHandler(sys.stdout)
- handler.setFormatter( logging.Formatter( os.linesep + '%(message)s' ) )
+ handler.setFormatter( logging.Formatter( '%(message)s' ) )
logger.addHandler(handler)
logger.setLevel(logging.INFO)
return logger
@@ -59,4 +61,12 @@
logger.info( 'executing command: %s - done(%d)' %( cmd, exit_status ) )
return exit_status
+
+def rmtree_safe( dir_ ):
+ if not os.path.exists( dir_ ):
+ return
+ logger.info( 'removing "%s" directory ' % dir_ )
+ shutil.rmtree( dir_ )
+ logger.info( 'removing "%s" directory - done' % dir_ )
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|