diff -r 7685cec9fd3c -r f2ddfa555b0f doc/api/python/imaker.api-pysrc.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/api/python/imaker.api-pysrc.html Fri Sep 11 11:54:49 2009 +0100 @@ -0,0 +1,243 @@ + + + + + imaker.api + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Package imaker :: + Module api + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module imaker.api

+
+ 1  #============================================================================  
+ 2  #Name        : api.py  
+ 3  #Part of     : Helium  
+ 4   
+ 5  #Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+ 6  #All rights reserved. 
+ 7  #This component and the accompanying materials are made available 
+ 8  #under the terms of the License "Eclipse Public License v1.0" 
+ 9  #which accompanies this distribution, and is available 
+10  #at the URL "http://www.eclipse.org/legal/epl-v10.html". 
+11  # 
+12  #Initial Contributors: 
+13  #Nokia Corporation - initial contribution. 
+14  # 
+15  #Contributors: 
+16  # 
+17  #Description: 
+18  #=============================================================================== 
+19   
+20  """ This module is an helper to interface iMaker. """ 
+21  import os 
+22  import re 
+23  import pathaddition.match 
+24  import fileutils 
+25  import tempfile 
+26  import subprocess 
+27   
+
28 -class IMakerConfigScanner(fileutils.AbstractScanner): +
29 """ Specialize the abstract filescanner to support detection of the configuration. """ +
30 - def scan(self): +
31 """ Implement scanning of relevant configuration. """ +32 handle = subprocess.Popen("imaker help-config", shell=True, stdout=subprocess.PIPE).stdout +33 for line in handle.read().splitlines(): +34 line = line.strip() +35 if line.startswith('/') and self.is_included(line) \ +36 and not self.is_excluded(line): +37 yield line +38 handle.close() +
39 +
40 -def scan_configs(includes, excludes): +
41 """ Use iMaker to scan the available buildable configurations. """ +42 scanner = IMakerConfigScanner() +43 for inc in includes: +44 scanner.add_include(inc) +45 for exc in excludes: +46 scanner.add_exclude(exc) +47 return [r for r in scanner.scan()] +
48 +
49 -def targets_for_config(config): +
50 """ Return the list of target supported by the provided configuration of iMaker. """ +51 cmd = "imaker -f %s help-target-*-list" % config +52 (_, handle, child_stderr) = os.popen3(cmd) +53 result = [] +54 print child_stderr.read() +55 for line in handle.read().splitlines(): +56 line = line.strip() +57 if line == "" or line.startswith("Total duration"): +58 continue +59 result.append(line) +60 handle.close() +61 return result +
62 +63 +
64 -def get_product_dir(product): +
65 """ Return the PRODUCT_DIR variable from iMaker. """ +66 return get_variable("PRODUCT_DIR", product=product) +
67 +68 +
69 -def get_variable(variable, target=None, product=None, config=None, default=None): +
70 """ Get variable value from iMaker. """ +71 cmdline = "" +72 if product != None: +73 cmdline = "-p%s" % product +74 if config != None: +75 cmdline += " -f %s" % config +76 if target != None: +77 cmdline += " %s" % target +78 +79 logdir = tempfile.mkdtemp() +80 print "imaker %s print-%s WORKDIR=%s" % (cmdline, variable, logdir) +81 (_, handle, child_stderr) = os.popen3("imaker %s print-%s WORKDIR=%s" % (cmdline, variable, logdir)) +82 print child_stderr.read() +83 result = [] +84 for line in handle.read().splitlines(): +85 line = line.strip() +86 if line == "" or line.startswith("Total duration"): +87 continue +88 if variable in line: +89 result.append(line) +90 handle.close() +91 result = re.match("%s\s*=\s*`(.*)'" % variable, "\n".join(result), re.DOTALL) +92 if result != None: +93 return result.group(1) +94 assert (result != None) +95 return default +
96 +
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + +