From c6c5c6ebdea2aed81e0501f34267feaadc7b1a32 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Mon, 11 Aug 2014 15:13:28 +0200 Subject: [PATCH] New services module, inspired by Thus. --- src/modules/services/main.py | 60 ++++++++++++++++++++++++++++++ src/modules/services/module.desc | 6 +++ src/modules/services/services.conf | 13 +++++++ 3 files changed, 79 insertions(+) create mode 100644 src/modules/services/main.py create mode 100644 src/modules/services/module.desc create mode 100644 src/modules/services/services.conf diff --git a/src/modules/services/main.py b/src/modules/services/main.py new file mode 100644 index 000000000..55d5339e3 --- /dev/null +++ b/src/modules/services/main.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 +# encoding: utf-8 +# === This file is part of Calamares - === +# +# Copyright 2014, Philip Müller +# Copyright 2014, Teo Mrnjavac +# +# Calamares 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. +# +# Calamares 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 Calamares. If not, see . + +import libcalamares + + +def run(): + """ Setup systemd services """ + + services = libcalamares.job.configuration['services'] + targets = libcalamares.job.configuration['targets'] + + # enable services + for svc in services: + ec = libcalamares.utils.chroot_call(['systemctl', + 'enable', + '{}.service'.format(svc['name'])]) + if ec != 0: + if svc['mandatory']: + return "Cannot enable systemd service {}".format(svc['name']),\ + "systemctl enable call in chroot returned error code {}".format(ec) + else: + libcalamares.utils.debug( + "Cannot enable systemd service {}".format(svc['name'])) + libcalamares.utils.debug( + "systemctl enable call in chroot returned error code {}".format(ec)) + + # enable targets + for tgt in targets: + ec = libcalamares.utils.chroot_call(['systemctl', + 'enable', + '{}.target'.format(tgt['name'])]) + if ec != 0: + if tgt['mandatory']: + return "Cannot enable systemd target {}".format(tgt['name']), \ + "systemctl enable call in chroot returned error code {}".format(ec) + else: + libcalamares.utils.debug( + "Cannot enable systemd target {}".format(tgt['name'])) + libcalamares.utils.debug( + "systemctl enable call in chroot returned error code {}".format(ec)) + + return None diff --git a/src/modules/services/module.desc b/src/modules/services/module.desc new file mode 100644 index 000000000..eff1dcc63 --- /dev/null +++ b/src/modules/services/module.desc @@ -0,0 +1,6 @@ +--- +type: "job" +name: "services" +interface: "python" +requires: [] +script: "main.py" diff --git a/src/modules/services/services.conf b/src/modules/services/services.conf new file mode 100644 index 000000000..0e5c623d2 --- /dev/null +++ b/src/modules/services/services.conf @@ -0,0 +1,13 @@ +--- +#systemd services and targets are enabled in this precise order + +services: + - name: "NetworkManager" #name of the service file + mandatory: true #true=> if enabling fails the installer errors out and quits + #false=>if enabling fails print warning to console and continue + - name: "cups" + mandatory: false + +targets: + - name: "graphical" + mandatory: true