diff -r be27ed110b50 -r e1eecf4d390d sbsv2/raptor/python/sbs_dist.py --- a/sbsv2/raptor/python/sbs_dist.py Wed Oct 28 14:39:48 2009 +0000 +++ b/sbsv2/raptor/python/sbs_dist.py Mon Nov 16 09:46:46 2009 +0000 @@ -1,139 +1,139 @@ -# -# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of the License "Eclipse Public License v1.0" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# raptor linux distribution creation module -# This module allow to crate raptor linux distribution archive (tar.gz) e.g. sbs_linux_dist.tar.gz -# Script extect the following command-line parameters: -# 1. Archive name -# 2. List of files/directories to include -# By default windows specific and source files are excluded. -# example including bin and python subdir: -# sbs_dist.py sbs_linux_dist.tar.gz bin python -# - -import os -import re -import tarfile -import sys -import dos2unix - -#------------------------------------------------------------------------------ -# Create tar.gz archive including given files (fileName list and tarinfo list) -#------------------------------------------------------------------------------ -def createTarGZ(tarName, fileList): - tar = tarfile.open(tarName, "w|gz") - for name in fileList: - tar.add(name) - return tar - -#------------------------------------------------------------------------------ -# Lists files in each of given directories -#------------------------------------------------------------------------------ -def listFilesInDirs(paths): - fileList = [] - for path in paths: - fileList.extend(listFiles(path)) - return fileList - -#------------------------------------------------------------------------------ -# Lists files in given directory -#------------------------------------------------------------------------------ -def listFiles(path): - fileList = [] - for root, dirs, files in os.walk(path): - for index in range(len(files)): - fileList.append(root + "/" + files[index]) - return fileList - -#------------------------------------------------------------------------------ -# Excludes files matching "pattern" from given files list -#------------------------------------------------------------------------------ -def excludeFiles(fileList, pattern): - filteredFileList = [] - regExp = re.compile(pattern) - for fileName in fileList: - if not(regExp.match(fileName)): - filteredFileList.append(fileName) - return filteredFileList - - -#------------------------------------------------------------------------------ -# Groups given paths as files or directories -#------------------------------------------------------------------------------ -def groupFilesAndDirs(filesAndDirs): - files = [] - dirs = [] - for name in filesAndDirs: - if os.path.isdir(name): - dirs.append(name) - else: - if os.path.isfile(name): - files.append(name) - else: - print "Warning: Neither a file nor a directory! Ignoring parameter - " + name - return (files,dirs) - -#------------------------------------------------------------------------------ -# Prepares regular expression to exclude unnecessary files -#------------------------------------------------------------------------------ -def prepareExcludedFilesRegExp(): - pathPrefixRegExp = ".*[\\\/]" - filesRegExp = "((sbs)|(.*\.bat)|(.*\.pyc)|(.*\.cmd)|(.*\.exe)|(.*\.dll)|(sbs_dist.py)" - filesRegExp = filesRegExp + "|(dos2unix.py)|(raptor_py2exe_setup.py)|(make)|(bash)|(bashbug))+" - return "^" + pathPrefixRegExp + filesRegExp + "$" - -#------------------------------------------------------------------------------ -# Includes all files in fileList in given tar with altered executable permision (+X) for all -#------------------------------------------------------------------------------ -def includeAsExecutable(tar, fileList): - for f in fileList: - tarinfo = tar.gettarinfo(f) - # OR with 73 (001 001 001) - +X for all - tarinfo.mode = tarinfo.mode | 73 - tar.addfile(tarinfo,file(f, "rb")) - - -#------------------------------------------------------------------------------ -# Validate script parameters -#------------------------------------------------------------------------------ -def validateParameters(tarFileName, filesToInclude): - if not(len(tarFileName) > 0): - print "Error: No archive name given." - sys.exit() - if not(len(filesToInclude) > 0): - print "Error: No files/directories names to include in archive given." - sys.exit() - - -tarFileName = sys.argv[1] -# files and directories -filesAndDirsToInclude = sys.argv[2:] - -validateParameters(tarFileName, filesAndDirsToInclude) - -(filesToInclude,dirsToInclude) = groupFilesAndDirs(filesAndDirsToInclude) - -fileList = listFilesInDirs(dirsToInclude) -fileList.extend(filesToInclude) - -filteredFileList = excludeFiles(fileList, prepareExcludedFilesRegExp()) - -dos2unix.dos2unix("bin/sbs") - -tar = createTarGZ(tarFileName, filteredFileList) -fileToBeExecutableList = ["bin/sbs", "linux-i386/bin/make", "linux-i386/bin/bash", "linux-i386/bin/bashbug", - "bin/sbs_descramble"] -includeAsExecutable(tar, fileToBeExecutableList) -tar.close() - +# +# Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of the License "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# raptor linux distribution creation module +# This module allow to crate raptor linux distribution archive (tar.gz) e.g. sbs_linux_dist.tar.gz +# Script extect the following command-line parameters: +# 1. Archive name +# 2. List of files/directories to include +# By default windows specific and source files are excluded. +# example including bin and python subdir: +# sbs_dist.py sbs_linux_dist.tar.gz bin python +# + +import os +import re +import tarfile +import sys +import dos2unix + +#------------------------------------------------------------------------------ +# Create tar.gz archive including given files (fileName list and tarinfo list) +#------------------------------------------------------------------------------ +def createTarGZ(tarName, fileList): + tar = tarfile.open(tarName, "w|gz") + for name in fileList: + tar.add(name) + return tar + +#------------------------------------------------------------------------------ +# Lists files in each of given directories +#------------------------------------------------------------------------------ +def listFilesInDirs(paths): + fileList = [] + for path in paths: + fileList.extend(listFiles(path)) + return fileList + +#------------------------------------------------------------------------------ +# Lists files in given directory +#------------------------------------------------------------------------------ +def listFiles(path): + fileList = [] + for root, dirs, files in os.walk(path): + for index in range(len(files)): + fileList.append(root + "/" + files[index]) + return fileList + +#------------------------------------------------------------------------------ +# Excludes files matching "pattern" from given files list +#------------------------------------------------------------------------------ +def excludeFiles(fileList, pattern): + filteredFileList = [] + regExp = re.compile(pattern) + for fileName in fileList: + if not(regExp.match(fileName)): + filteredFileList.append(fileName) + return filteredFileList + + +#------------------------------------------------------------------------------ +# Groups given paths as files or directories +#------------------------------------------------------------------------------ +def groupFilesAndDirs(filesAndDirs): + files = [] + dirs = [] + for name in filesAndDirs: + if os.path.isdir(name): + dirs.append(name) + else: + if os.path.isfile(name): + files.append(name) + else: + print "Warning: Neither a file nor a directory! Ignoring parameter - " + name + return (files,dirs) + +#------------------------------------------------------------------------------ +# Prepares regular expression to exclude unnecessary files +#------------------------------------------------------------------------------ +def prepareExcludedFilesRegExp(): + pathPrefixRegExp = ".*[\\\/]" + filesRegExp = "((sbs)|(.*\.bat)|(.*\.pyc)|(.*\.cmd)|(.*\.exe)|(.*\.dll)|(sbs_dist.py)" + filesRegExp = filesRegExp + "|(dos2unix.py)|(raptor_py2exe_setup.py)|(make)|(bash)|(bashbug))+" + return "^" + pathPrefixRegExp + filesRegExp + "$" + +#------------------------------------------------------------------------------ +# Includes all files in fileList in given tar with altered executable permision (+X) for all +#------------------------------------------------------------------------------ +def includeAsExecutable(tar, fileList): + for f in fileList: + tarinfo = tar.gettarinfo(f) + # OR with 73 (001 001 001) - +X for all + tarinfo.mode = tarinfo.mode | 73 + tar.addfile(tarinfo,file(f, "rb")) + + +#------------------------------------------------------------------------------ +# Validate script parameters +#------------------------------------------------------------------------------ +def validateParameters(tarFileName, filesToInclude): + if not(len(tarFileName) > 0): + print "Error: No archive name given." + sys.exit() + if not(len(filesToInclude) > 0): + print "Error: No files/directories names to include in archive given." + sys.exit() + + +tarFileName = sys.argv[1] +# files and directories +filesAndDirsToInclude = sys.argv[2:] + +validateParameters(tarFileName, filesAndDirsToInclude) + +(filesToInclude,dirsToInclude) = groupFilesAndDirs(filesAndDirsToInclude) + +fileList = listFilesInDirs(dirsToInclude) +fileList.extend(filesToInclude) + +filteredFileList = excludeFiles(fileList, prepareExcludedFilesRegExp()) + +dos2unix.dos2unix("bin/sbs") + +tar = createTarGZ(tarFileName, filteredFileList) +fileToBeExecutableList = ["bin/sbs", "linux-i386/bin/make", "linux-i386/bin/bash", "linux-i386/bin/bashbug", + "bin/sbs_descramble"] +includeAsExecutable(tar, fileToBeExecutableList) +tar.close() +