aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2013-04-17 09:06:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2013-04-17 09:06:52 -0400
commita332d3db796261e5cc5dec457c8ae0997c7257b4 (patch)
tree44427c4643642ef3dbbeda4da2fc069f02a35c1b
parentedf6846069effba5b7c88bc96bd4cd852a4d7f2f (diff)
downloadipsutils-a332d3db796261e5cc5dec457c8ae0997c7257b4.tar.gz
IPC should be IPS. I was tired.
-rw-r--r--ipcbuild.py95
-rw-r--r--ipsbuild-setuptree.py (renamed from ipcbuild-setuptree.py)4
-rw-r--r--ipsbuild.py72
-rw-r--r--test.ips (renamed from test.ipc)0
4 files changed, 74 insertions, 97 deletions
diff --git a/ipcbuild.py b/ipcbuild.py
deleted file mode 100644
index ec082e0..0000000
--- a/ipcbuild.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# Solaris 11 IPC
-# Automate package creation
-
-from pprint import pprint
-import shlex
-import ConfigParser
-import argparse
-import string
-
-class FakeSecHead(object):
- """Found on stackoverflow, public domain code"""
- def __init__(self, fp):
- self.fp = fp
- self.sechead = '[IPC]\n'
- def readline(self):
- if self.sechead:
- try:
- return self.sechead
- finally:
- self.sechead = None
- else:
- return self.fp.readline()
-'''
-class IPC_Config(object):
- def __init__(self, ipcfile):
- self._header = 'IPC'
- self.config = ConfigParser.SafeConfigParser()
- self._config_read(ipcfile)
- print("{0:s} parsed".format(ipcfile))
-
- def __iter__(self):
- for i in self.config.items(self._header):
- yield i
-
- def __getitem__(self, option):
- return self.config.get(self._header, option)
-
- def _config_read(self, ipcfile):
- """Wrapper for FakeSecHead"""
- self.config.readfp(FakeSecHead(open(ipcfile)))
-'''
-
-class IPC_Config(object):
- def __init__(self, ipcfile):
-
- key_dict = {
- 'name': '',
- 'version': '',
- 'release': '',
- 'maintainer': '',
- 'upstream_url': '',
- 'description': '',
- 'arch': '',
- 'license': ''
- }
-
- script_dict = {
- 'build': [],
- 'prep': [],
- 'install': [],
- 'files': []
- }
-
- for key in key_dict:
- for line in file(ipcfile).readlines():
- parts = shlex.split(line)
- if key + ":" in parts:
- key_dict[key] = parts[1]
-
- found_data = False
- code_section = ['%build', '%prep', '%install', '%files']
- for section in code_section:
- for line in file(ipcfile).readlines():
- parts = shlex.split(line)
- if '%end' in parts:
- found_data = False
- if section in parts:
- found_data = True
- continue
- if found_data:
- script_dict[section.strip('%')].append(parts)
-
-
- self.key_dict = key_dict
- self.script_dict = script_dict
-
-class IPC_Build(IPC_Config):
- def __init__(self, ipcfile):
- super(IPC_Build, self).__init__(ipcfile)
- print(self.key_dict['name'])
-
-
-testfile = "test.ipc"
-build = IPC_Build(testfile)
-
diff --git a/ipcbuild-setuptree.py b/ipsbuild-setuptree.py
index f3e997a..135c4e9 100644
--- a/ipcbuild-setuptree.py
+++ b/ipsbuild-setuptree.py
@@ -9,7 +9,7 @@ try:
except:
Exception("Unsupported platform: {0:s}".format(sys.platform))
-head = os.path.join(home, 'ipcbuild')
+head = os.path.join(home, 'ipsbuild')
tree = ['BUILDROOT',
'BUILD',
'SPECS',
@@ -34,4 +34,4 @@ def main():
pass
if __name__ == '__main__':
- main() \ No newline at end of file
+ main()
diff --git a/ipsbuild.py b/ipsbuild.py
new file mode 100644
index 0000000..af53bdb
--- /dev/null
+++ b/ipsbuild.py
@@ -0,0 +1,72 @@
+# Solaris 11 IPS
+# Automate package creation
+
+from pprint import pprint
+from collections import deque
+import subprocess
+import shlex
+import ConfigParser
+import argparse
+import string
+
+class IPS_Config(object):
+ def __init__(self, ipsfile):
+
+ key_dict = {
+ 'name': '',
+ 'version': '',
+ 'release': '',
+ 'maintainer': '',
+ 'upstream_url': '',
+ 'description': '',
+ 'arch': '',
+ 'license': ''
+ }
+
+ script_dict = {
+ 'build': [],
+ 'prep': [],
+ 'install': [],
+ 'files': []
+ }
+
+ for key in key_dict:
+ for line in file(ipsfile).readlines():
+ parts = shlex.split(line)
+ if key + ":" in parts:
+ key_dict[key] = parts[1]
+
+ found_data = False
+ code_section = ['%build', '%prep', '%install', '%files']
+ for section in code_section:
+ for line in file(ipsfile).readlines():
+ parts = shlex.split(line)
+ if '%end' in parts:
+ found_data = False
+ if section in parts:
+ found_data = True
+ continue
+ if found_data:
+ script_dict[section.strip('%')].append(parts)
+
+ self.key_dict = key_dict
+ self.script_dict = script_dict
+
+class IPS_Task(object):
+ def __init__(self, task):
+ if type(task) is not type(list):
+ TypeError("task must be a list")
+
+class IPS_Build(IPS_Config):
+ def __init__(self, ipsfile):
+ super(IPS_Build, self).__init__(ipsfile)
+ self.task_queue = deque()
+ for key in self.script_dict:
+ for i in self.script_dict[key]:
+ self.task_queue.append(IPS_Task(i))
+
+
+
+testfile = "test.ips"
+build = IPS_Build(testfile)
+print build.task_queue
diff --git a/test.ipc b/test.ips
index b13446e..b13446e 100644
--- a/test.ipc
+++ b/test.ips