From 93d8c5c6ba3eec3fdc777b7fee97ae92b24cdd54 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Fri, 2 Jun 2017 19:21:26 +0100 Subject: app-admin/calamares : fix broken luks fstab writes --- app-admin/calamares/calamares-3.1.0-r1.ebuild | 75 ------------------- app-admin/calamares/calamares-3.1.0-r2.ebuild | 77 +++++++++++++++++++ ...alamares-3.1.0-luks-fstab-write-devmapper.patch | 30 ++++++++ .../calamares/files/calamares-3.1.0-luksfix.patch | 87 ---------------------- 4 files changed, 107 insertions(+), 162 deletions(-) delete mode 100644 app-admin/calamares/calamares-3.1.0-r1.ebuild create mode 100644 app-admin/calamares/calamares-3.1.0-r2.ebuild create mode 100644 app-admin/calamares/files/calamares-3.1.0-luks-fstab-write-devmapper.patch delete mode 100644 app-admin/calamares/files/calamares-3.1.0-luksfix.patch (limited to 'app-admin') diff --git a/app-admin/calamares/calamares-3.1.0-r1.ebuild b/app-admin/calamares/calamares-3.1.0-r1.ebuild deleted file mode 100644 index 44bd5a50..00000000 --- a/app-admin/calamares/calamares-3.1.0-r1.ebuild +++ /dev/null @@ -1,75 +0,0 @@ -# Copyright 1999-2015 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: $ - -EAPI=5 -PYTHON_COMPAT=( python3_4 ) - -inherit eutils cmake-utils python-r1 - -SRC_URI="https://github.com/calamares/calamares/releases/download/v${PV}/${P}.tar.gz" - -DESCRIPTION="Distribution-independent installer framework" -HOMEPAGE="http://calamares.io" - -LICENSE="GPL-3" -SLOT="0" -KEYWORDS="amd64" -IUSE="+python" - -S="${WORKDIR}/${P}" - -DEPEND=" - python? ( - >=dev-libs/boost-1.55.0-r2[python_targets_python3_4] - ) - >=dev-qt/designer-5.6.0:5 - >=dev-qt/linguist-tools-5.6.0:5 - >=dev-qt/qtconcurrent-5.6.0:5 - >=dev-qt/qtcore-5.6.0:5 - >=dev-qt/qtdbus-5.6.0:5 - >=dev-qt/qtdeclarative-5.6.0:5 - >=dev-qt/qtgui-5.6.0:5 - >=dev-qt/qtnetwork-5.6.0:5 - >=dev-qt/qtopengl-5.6.0:5 - >=dev-qt/qtprintsupport-5.6.0:5 - >=dev-qt/qtscript-5.6.0:5 - >=dev-qt/qtsvg-5.6.0:5 - >=dev-qt/qttest-5.6.0:5 - >=dev-qt/qtwebengine-5.6.0:5 - >=dev-qt/qtwebchannel-5.6.0:5 - >=dev-qt/qtwidgets-5.6.0:5 - >=dev-qt/qtxml-5.6.0:5 - >=dev-qt/qtxmlpatterns-5.6.0:5 - >=dev-cpp/yaml-cpp-0.5.1 - >=kde-frameworks/extra-cmake-modules-5.18.0 - >=sys-libs/kpmcore-3.0.2" - -RDEPEND=">=app-misc/calamares-runtime-1.0[branding]" - -src_prepare() { - # luksfix (master) by frugalware, backported to stable - # epatch "${FILESDIR}"/${P}-luksfix.patch - # replace calamares installer desktop icon - sed -i "s/Icon=calamares/Icon=redcore-logo/g" "${S}/calamares.desktop" - # fix installer doesn't start from desktop launcher (IMPROVE THIS UGLY THINGY) - sed -i "s/pkexec //g" "${S}/calamares.desktop" - sed -i "s/calamares/calamares-pkexec/g" "${S}/calamares.desktop" - # If qtchooser is installed, it may break the build, because moc,rcc and uic binaries for wrong qt version may be used. - # Setting QT_SELECT environment variable will enforce correct binaries (fix taken from vlc ebuild) - export QT_SELECT=qt5 -} - -src_configure() { - local mycmakeargs=( - -DWITH_PARTITIONMANAGER=1 - ) - cmake-utils_src_configure -} - -src_install() { - cmake-utils_src_install - insinto /usr/bin - insopts -m 755 - doins ${FILESDIR}/calamares-pkexec -} diff --git a/app-admin/calamares/calamares-3.1.0-r2.ebuild b/app-admin/calamares/calamares-3.1.0-r2.ebuild new file mode 100644 index 00000000..d954e877 --- /dev/null +++ b/app-admin/calamares/calamares-3.1.0-r2.ebuild @@ -0,0 +1,77 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=5 +PYTHON_COMPAT=( python3_4 ) + +inherit eutils cmake-utils python-r1 + +SRC_URI="https://github.com/calamares/calamares/releases/download/v${PV}/${P}.tar.gz" + +DESCRIPTION="Distribution-independent installer framework" +HOMEPAGE="http://calamares.io" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="amd64" +IUSE="+python" + +S="${WORKDIR}/${P}" + +DEPEND=" + python? ( + >=dev-libs/boost-1.55.0-r2[python_targets_python3_4] + ) + >=dev-qt/designer-5.6.0:5 + >=dev-qt/linguist-tools-5.6.0:5 + >=dev-qt/qtconcurrent-5.6.0:5 + >=dev-qt/qtcore-5.6.0:5 + >=dev-qt/qtdbus-5.6.0:5 + >=dev-qt/qtdeclarative-5.6.0:5 + >=dev-qt/qtgui-5.6.0:5 + >=dev-qt/qtnetwork-5.6.0:5 + >=dev-qt/qtopengl-5.6.0:5 + >=dev-qt/qtprintsupport-5.6.0:5 + >=dev-qt/qtscript-5.6.0:5 + >=dev-qt/qtsvg-5.6.0:5 + >=dev-qt/qttest-5.6.0:5 + >=dev-qt/qtwebengine-5.6.0:5 + >=dev-qt/qtwebchannel-5.6.0:5 + >=dev-qt/qtwidgets-5.6.0:5 + >=dev-qt/qtxml-5.6.0:5 + >=dev-qt/qtxmlpatterns-5.6.0:5 + >=dev-cpp/yaml-cpp-0.5.1 + >=kde-frameworks/extra-cmake-modules-5.18.0 + >=sys-libs/kpmcore-3.0.2" + +RDEPEND=">=app-misc/calamares-runtime-1.0[branding]" + +src_prepare() { + # by default, calamares writes UUID=partition-uuid in fstab, regardless + # is luks or not. This is utterly broken for many reasons. The patch + # below will make calamares to write proper /dev/mapper entries. + epatch "${FILESDIR}"/${P}-luks-fstab-write-devmapper.patch + # replace calamares installer desktop icon + sed -i "s/Icon=calamares/Icon=redcore-logo/g" "${S}/calamares.desktop" + # fix installer doesn't start from desktop launcher (IMPROVE THIS UGLY THINGY) + sed -i "s/pkexec //g" "${S}/calamares.desktop" + sed -i "s/calamares/calamares-pkexec/g" "${S}/calamares.desktop" + # If qtchooser is installed, it may break the build, because moc,rcc and uic binaries for wrong qt version may be used. + # Setting QT_SELECT environment variable will enforce correct binaries (fix taken from vlc ebuild) + export QT_SELECT=qt5 +} + +src_configure() { + local mycmakeargs=( + -DWITH_PARTITIONMANAGER=1 + ) + cmake-utils_src_configure +} + +src_install() { + cmake-utils_src_install + insinto /usr/bin + insopts -m 755 + doins ${FILESDIR}/calamares-pkexec +} diff --git a/app-admin/calamares/files/calamares-3.1.0-luks-fstab-write-devmapper.patch b/app-admin/calamares/files/calamares-3.1.0-luks-fstab-write-devmapper.patch new file mode 100644 index 00000000..6b6845d8 --- /dev/null +++ b/app-admin/calamares/files/calamares-3.1.0-luks-fstab-write-devmapper.patch @@ -0,0 +1,30 @@ +diff -Nur a/src/modules/fstab/main.py b/src/modules/fstab/main.py +--- a/src/modules/fstab/main.py 2016-11-25 17:38:49.000000000 +0000 ++++ b/src/modules/fstab/main.py 2017-06-02 15:46:38.124863165 +0100 +@@ -257,12 +257,20 @@ + check=check, + ) + +- return dict(device="UUID=" + partition["uuid"], +- mount_point=mount_point or "swap", +- fs=filesystem, +- options=options, +- check=check, +- ) ++ if "luksMapperName" in partition: ++ return dict(device="/dev/mapper/" + partition["luksMapperName"], ++ mount_point=mount_point or "swap", ++ fs=filesystem, ++ options=options, ++ check=check, ++ ) ++ else: ++ return dict(device="UUID=" + partition["uuid"], ++ mount_point=mount_point or "swap", ++ fs=filesystem, ++ options=options, ++ check=check, ++ ) + + def print_fstab_line(self, dct, file=None): + """ Prints line to '/etc/fstab' file. """ diff --git a/app-admin/calamares/files/calamares-3.1.0-luksfix.patch b/app-admin/calamares/files/calamares-3.1.0-luksfix.patch deleted file mode 100644 index af9a79bf..00000000 --- a/app-admin/calamares/files/calamares-3.1.0-luksfix.patch +++ /dev/null @@ -1,87 +0,0 @@ -diff -Nur a/src/modules/bootloader/main.py b/src/modules/bootloader/main.py ---- a/src/modules/bootloader/main.py 2017-02-17 15:21:02.000000000 +0000 -+++ b/src/modules/bootloader/main.py 2017-06-02 13:38:49.275348324 +0100 -@@ -98,14 +98,15 @@ - cryptdevice_params = [] - - for partition in partitions: -- if partition["fs"] == "linuxswap": -+ if partition["fs"] == "linuxswap" and not "luksMapperName" in partition: - swap_uuid = partition["uuid"] - - if partition["mountPoint"] == "/" and "luksMapperName" in partition: - cryptdevice_params = [ - "cryptdevice=UUID={!s}:{!s}".format(partition["luksUuid"], - partition["luksMapperName"]), -- "root=/dev/mapper/{!s}".format(partition["luksMapperName"]) -+ "root=/dev/mapper/{!s}".format(partition["luksMapperName"]), -+ "resume=/dev/mapper/{!s}".format(partition["luksMapperName"]) - ] - - if cryptdevice_params: -diff -Nur a/src/modules/fstab/main.py b/src/modules/fstab/main.py ---- a/src/modules/fstab/main.py 2016-11-25 17:38:49.000000000 +0000 -+++ b/src/modules/fstab/main.py 2017-06-02 13:28:53.792308347 +0100 -@@ -257,8 +257,23 @@ - check=check, - ) - -+ if filesystem == "swap" and "luksMapperName" in partition: -+ return dict(device="/dev/mapper/" + partition["luksMapperName"], -+ mount_point=mount_point or "swap", -+ fs=filesystem, -+ options=options, -+ check=check, -+ ) -+ else: -+ return dict(device="UUID=" + partition["uuid"], -+ mount_point=mount_point or "swap", -+ fs=filesystem, -+ options=options, -+ check=check, -+ ) -+ - return dict(device="UUID=" + partition["uuid"], -- mount_point=mount_point or "swap", -+ mount_point=mount_point, - fs=filesystem, - options=options, - check=check, -diff -Nur a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py ---- a/src/modules/grubcfg/main.py 2017-02-17 15:21:02.000000000 +0000 -+++ b/src/modules/grubcfg/main.py 2017-06-02 13:36:55.032340654 +0100 -@@ -48,7 +48,7 @@ - - if dracut_bin == 0: - for partition in partitions: -- if partition["fs"] == "linuxswap": -+ if partition["fs"] == "linuxswap" and not "luksMapperName" in partition: - swap_uuid = partition["uuid"] - - if partition["fs"] == "linuxswap" and "luksMapperName" in partition: -@@ -58,14 +58,15 @@ - cryptdevice_params = ["rd.luks.uuid={!s}".format(partition["luksUuid"])] - else: - for partition in partitions: -- if partition["fs"] == "linuxswap": -+ if partition["fs"] == "linuxswap" and not "luksMapperName" in partition: - swap_uuid = partition["uuid"] - - if partition["mountPoint"] == "/" and "luksMapperName" in partition: - cryptdevice_params = [ - "cryptdevice=UUID={!s}:{!s}".format(partition["luksUuid"], - partition["luksMapperName"]), -- "root=/dev/mapper/{!s}".format(partition["luksMapperName"]) -+ "root=/dev/mapper/{!s}".format(partition["luksMapperName"]), -+ "resume=/dev/mapper/{!s}".format(partition["luksMapperName"]) - ] - - kernel_params = ["quiet"] -@@ -80,6 +81,7 @@ - kernel_params.append("resume=UUID={!s}".format(swap_uuid)) - - if dracut_bin == 0 and swap_outer_uuid: -+ kernel_params.append("resume=/dev/mapper/{!s}".format(partition["luksMapperName"])) - kernel_params.append("rd.luks.uuid={!s}".format(swap_outer_uuid)) - - distributor_line = "GRUB_DISTRIBUTOR='{!s}'".format(distributor_replace) -- cgit v1.2.3