summaryrefslogtreecommitdiff
path: root/morphlib
diff options
context:
space:
mode:
authorLars Wirzenius <lars.wirzenius@codethink.co.uk>2013-08-15 16:51:54 +0000
committerLars Wirzenius <lars.wirzenius@codethink.co.uk>2013-08-15 17:04:02 +0000
commit583a840ff77a327089c45c45a9eb912df3165100 (patch)
tree1f8539c73056fe381d7feb3278589e06619094e0 /morphlib
parentd976da7db86519a4c926e89a61bf129777751861 (diff)
downloadmorph-583a840ff77a327089c45c45a9eb912df3165100.tar.gz
Add "morph print-architecture" subcommand
Diffstat (limited to 'morphlib')
-rw-r--r--morphlib/plugins/print_architecture_plugin.py35
-rw-r--r--morphlib/util.py22
2 files changed, 57 insertions, 0 deletions
diff --git a/morphlib/plugins/print_architecture_plugin.py b/morphlib/plugins/print_architecture_plugin.py
new file mode 100644
index 00000000..08f500d0
--- /dev/null
+++ b/morphlib/plugins/print_architecture_plugin.py
@@ -0,0 +1,35 @@
+# Copyright (C) 2013 Codethink Limited
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+import cliapp
+import os
+
+import morphlib
+
+
+class PrintArchitecturePlugin(cliapp.Plugin):
+
+ def enable(self):
+ self.app.add_subcommand(
+ 'print-architecture', self.print_architecture, arg_synopsis='')
+
+ def disable(self):
+ pass
+
+ def print_architecture(self, args):
+ '''Print the name of the architecture of the host.'''
+
+ self.app.output.write('%s\n' % morphlib.util.get_host_architecture())
diff --git a/morphlib/util.py b/morphlib/util.py
index b83211e3..7526c93c 100644
--- a/morphlib/util.py
+++ b/morphlib/util.py
@@ -359,3 +359,25 @@ def parse_environment_pairs(env, pairs):
# 3 unnecessary lists, but I felt this was the most
# easy to read. Using itertools.chain may be more efficicent
return dict(env.items() + extra_env.items())
+
+
+
+def get_host_architecture(): # pragma: no cover
+ '''Get the canonical Morph name for the host's architecture.'''
+
+ machine = os.uname()[-1]
+
+ table = {
+ 'x86_64': 'x86_64',
+ 'i386': 'x86_32',
+ 'i486': 'x86_32',
+ 'i586': 'x86_32',
+ 'i686': 'x86_32',
+ 'armv7l': 'armv7l',
+ 'armv7b': 'armv7b',
+ }
+
+ if machine not in table:
+ raise morphlib.Error('Unknown host architecture %s' % machine)
+
+ return table[machine]