summaryrefslogtreecommitdiff
path: root/app-admin/calamares/files/calamares-openrc-dmcrypt-cfg-r1.patch
diff options
context:
space:
mode:
Diffstat (limited to 'app-admin/calamares/files/calamares-openrc-dmcrypt-cfg-r1.patch')
-rw-r--r--app-admin/calamares/files/calamares-openrc-dmcrypt-cfg-r1.patch84
1 files changed, 84 insertions, 0 deletions
diff --git a/app-admin/calamares/files/calamares-openrc-dmcrypt-cfg-r1.patch b/app-admin/calamares/files/calamares-openrc-dmcrypt-cfg-r1.patch
new file mode 100644
index 00000000..67279b7c
--- /dev/null
+++ b/app-admin/calamares/files/calamares-openrc-dmcrypt-cfg-r1.patch
@@ -0,0 +1,84 @@
+diff -Nur a/src/modules/openrcdmcryptcfg/main.py b/src/modules/openrcdmcryptcfg/main.py
+--- a/src/modules/openrcdmcryptcfg/main.py 1970-01-01 01:00:00.000000000 +0100
++++ b/src/modules/openrcdmcryptcfg/main.py 2017-12-02 19:40:18.212303089 +0000
+@@ -0,0 +1,65 @@
++#!/usr/bin/env python3
++# -*- coding: utf-8 -*-
++#
++# === This file is part of Calamares - <http://github.com/calamares> ===
++#
++# Copyright 2017, Ghiunhan Mamut <venerix@redcorelinux.org>
++#
++# 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 <http://www.gnu.org/licenses/>.
++
++import libcalamares
++import os.path
++
++def write_dmcrypt_conf(partitions, root_mount_point, dmcrypt_conf_path):
++ crypto_target = ""
++ crypto_source = ""
++
++ for partition in partitions:
++ has_luks = "luksMapperName" in partition
++ skip_partitions = partition["mountPoint"] == "/" or partition["fs"] == "linuxswap"
++
++ if not has_luks and not skip_partitions:
++ libcalamares.utils.debug(
++ "Skip writing OpenRC LUKS configuration for partition {!s}".format(partition["mountPoint"]))
++
++ if has_luks and not skip_partitions:
++ crypto_target = partition["luksMapperName"]
++ crypto_source = "/dev/disk/by-uuid/{!s}".format(partition["uuid"])
++ libcalamares.utils.debug(
++ "Writing OpenRC LUKS configuration for partition {!s}".format(partition["mountPoint"]))
++
++ with open(os.path.join(root_mount_point, dmcrypt_conf_path), 'a+') as dmcrypt_file:
++ dmcrypt_file.write("\ntarget=" + crypto_target)
++ dmcrypt_file.write("\nsource=" + crypto_source)
++ dmcrypt_file.write("\nkey=/crypto_keyfile.bin")
++ dmcrypt_file.write("\n")
++
++ if has_luks and skip_partitions:
++ pass # root and swap partitions should be handled by initramfs generators
++
++ return None
++
++def run():
++ """
++ This module configures OpenRC dmcrypt service for LUKS encrypted partitions.
++ :return:
++ """
++
++ root_mount_point = libcalamares.globalstorage.value("rootMountPoint")
++ dmcrypt_conf_path = libcalamares.job.configuration["configFilePath"]
++ partitions = libcalamares.globalstorage.value("partitions")
++
++ dmcrypt_conf_path = dmcrypt_conf_path.lstrip('/')
++
++ return write_dmcrypt_conf(partitions, root_mount_point, dmcrypt_conf_path)
+diff -Nur a/src/modules/openrcdmcryptcfg/module.desc b/src/modules/openrcdmcryptcfg/module.desc
+--- a/src/modules/openrcdmcryptcfg/module.desc 1970-01-01 01:00:00.000000000 +0100
++++ b/src/modules/openrcdmcryptcfg/module.desc 2017-12-02 16:48:49.663145918 +0000
+@@ -0,0 +1,5 @@
++---
++type: "job"
++name: "openrcdmcryptcfg"
++interface: "python"
++script: "main.py"
+diff -Nur a/src/modules/openrcdmcryptcfg/openrcdmcryptcfg.conf b/src/modules/openrcdmcryptcfg/openrcdmcryptcfg.conf
+--- a/src/modules/openrcdmcryptcfg/openrcdmcryptcfg.conf 1970-01-01 01:00:00.000000000 +0100
++++ b/src/modules/openrcdmcryptcfg/openrcdmcryptcfg.conf 2017-12-02 16:48:49.663145918 +0000
+@@ -0,0 +1,2 @@
++---
++configFilePath: /etc/conf.d/dmcrypt