diff --git a/image_creator/os_type/archlinux.py b/image_creator/os_type/archlinux.py new file mode 100644 index 0000000000000000000000000000000000000000..aac47a2d6dd894da9a3e3b7deff52666f5752480 --- /dev/null +++ b/image_creator/os_type/archlinux.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2014 GRNET S.A. +# +# 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, either version 3 of the License, or +# (at your option) any later version. +# +# 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/>. + +"""This module hosts OS-specific code for Arch Linux.""" + +from image_creator.os_type.linux import Linux + +import re + + +class Archlinux(Linux): + """OS class for Arch Linux""" + + def _do_collect_metadata(self): + """Collect metadata about the OS""" + super(Archlinux, self)._do_collect_metadata() + + local_be = '/var/lib/pacman/local' + + if not self.image.g.is_dir(local_be): + self.out.warn("Directory: `%s' does not exist!" % local_be) + return + + kernel_regexp = re.compile(r'linux-(lts-)?(\d+[\.\d+]*-\d+)') + for f in self.image.g.readdir(local_be): + match = kernel_regexp.match(f['name']) + if match: + lts = match.group(1) is not None + version = match.group(2) + self.meta['KERNEL'] = "%s%s" % (version, " LTS" if lts else "") + +# vim: set sta sts=4 shiftwidth=4 sw=4 et ai :