summaryrefslogtreecommitdiff
path: root/old/extensions/jffs2.write
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2017-07-07 10:01:07 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2017-07-07 10:01:07 +0000
commitf6046f9b54c1f14d12a67fa66ca0c881b49e8ceb (patch)
tree7c4d5b1aa87b991fecb0b2c585514069947c3f0a /old/extensions/jffs2.write
parentdeba555368fd21316025c5ee0eaaf517b938775e (diff)
downloaddefinitions-f6046f9b54c1f14d12a67fa66ca0c881b49e8ceb.tar.gz
Move old Baserock format definitions into old/ directory
Diffstat (limited to 'old/extensions/jffs2.write')
-rw-r--r--old/extensions/jffs2.write64
1 files changed, 64 insertions, 0 deletions
diff --git a/old/extensions/jffs2.write b/old/extensions/jffs2.write
new file mode 100644
index 00000000..8ff918df
--- /dev/null
+++ b/old/extensions/jffs2.write
@@ -0,0 +1,64 @@
+#!/usr/bin/python2
+#-*- coding: utf-8 -*-
+# Copyright © 2015 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, see <http://www.gnu.org/licenses/>.
+
+
+'''A Morph deployment write extension for creating images with jffs2
+ as the root filesystem.'''
+
+
+import os
+import subprocess
+
+import writeexts
+
+
+class Jffs2WriteExtension(writeexts.WriteExtension):
+
+ '''See jffs2.write.help for documentation.'''
+
+ def process_args(self, args):
+ if len(args) != 2:
+ raise writeexts.ExtensionError('Wrong number of command line args')
+
+ temp_root, location = args
+
+ try:
+ self.create_jffs2_system(temp_root, location)
+ self.status(msg='Disk image has been created at %(location)s',
+ location=location)
+ except Exception:
+ self.status(msg='Failure to deploy system to %(location)s',
+ location=location)
+ raise
+
+ def create_jffs2_system(self, temp_root, location):
+ erase_block = self.get_erase_block_size()
+ subprocess.check_call(
+ ['mkfs.jffs2', '--pad', '--no-cleanmarkers',
+ '--eraseblock='+erase_block, '-d', temp_root, '-o', location])
+
+ def get_erase_block_size(self):
+ erase_block = os.environ.get('ERASE_BLOCK', '')
+
+ if erase_block == '':
+ raise writeexts.ExtensionError('ERASE_BLOCK was not given')
+
+ if not erase_block.isdigit():
+ raise writeexts.ExtensionError('ERASE_BLOCK must be a whole number')
+
+ return erase_block
+
+Jffs2WriteExtension().run()