aboutsummaryrefslogtreecommitdiff
path: root/ipsutils
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2013-08-01 15:16:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2013-08-01 15:16:52 -0400
commit99dd411cb051db8ba4913f0df02cac300c635433 (patch)
tree435c6b9c8e773e20dc51d3a11faab0c9f2ac7fe2 /ipsutils
parent6e6fcb8788f10d81b214be1ed79f48f9387c74be (diff)
downloadipsutils-99dd411cb051db8ba4913f0df02cac300c635433.tar.gz
Feature: %globals script section added. Anything in this section will be prepended to the resulting script. Easier than coding a macro subsystem.
Diffstat (limited to 'ipsutils')
-rw-r--r--ipsutils/config.py3
-rw-r--r--ipsutils/tasks.py15
2 files changed, 17 insertions, 1 deletions
diff --git a/ipsutils/config.py b/ipsutils/config.py
index eed142c..b2ad4a8 100644
--- a/ipsutils/config.py
+++ b/ipsutils/config.py
@@ -42,6 +42,7 @@ class Config(object):
#Define valid build script sections in SPEC file
script_dict = collections.OrderedDict()
+ script_dict['globals'] = []
script_dict['prep'] = []
script_dict['build'] = []
script_dict['install'] = []
@@ -81,7 +82,7 @@ class Config(object):
#Parse user defined scripts by section and store them in script_dict
found_data = False
- code_section = ['%build', '%prep', '%install', '%transforms']
+ code_section = ['%globals', '%prep', '%build', '%install', '%transforms']
for section in code_section:
for line in ipsfile_output:
diff --git a/ipsutils/tasks.py b/ipsutils/tasks.py
index c7c0fc6..ec69814 100644
--- a/ipsutils/tasks.py
+++ b/ipsutils/tasks.py
@@ -340,6 +340,21 @@ class Script(task.Task):
fp_tempfile = tempfile.NamedTemporaryFile('w+', prefix='ipsutils_', suffix='.sh', delete=True)
os.chdir(self.cls.env_pkg['BUILD'])
fp_tempfile.write(shebang)
+
+ if(self.cls.script_dict['globals']):
+ for line in self.cls.script_dict['globals']:
+ if not line:
+ continue
+ # Variable expansion occurs here. Unfortunately, env_pkg is NOT available
+ # from within the configuration class
+ t = string.Template(string.join(line))
+ line = t.safe_substitute(self.cls.env_pkg)
+ fp_tempfile.writelines(line)
+ fp_tempfile.writelines('\n')
+ if self.cls.options.verbose:
+ print(">>> {0:s}".format(line))
+ fp_tempfile.flush()
+
for line in self.script:
if not line:
continue