Compare commits

..

No commits in common. 'ubuntu/noble' and 'ubuntu/kinetic' have entirely different histories.

174
debian/changelog vendored

@ -1,177 +1,3 @@
calamares (3.3.5-0ubuntu4) noble; urgency=medium
* Populate grub-{efi,pc}/install_devices debconf config (LP: #2063354).
-- Simon Quigley <tsimonq2@ubuntu.com> Wed, 24 Apr 2024 15:28:29 -0500
calamares (3.3.5-0ubuntu3) noble; urgency=medium
* No-change rebuild for CVE-2024-3094
-- Steve Langasek <steve.langasek@ubuntu.com> Sun, 31 Mar 2024 08:44:36 +0000
calamares (3.3.5-0ubuntu2) noble; urgency=medium
* No-change rebuild against libqt5core5t64
-- Steve Langasek <steve.langasek@ubuntu.com> Fri, 15 Mar 2024 04:00:12 +0000
calamares (3.3.5-0ubuntu1) noble; urgency=medium
* New upstream release.
* Fully finish Active Directory prototype, leave the patch commented out for
now.
-- Simon Quigley <tsimonq2@ubuntu.com> Thu, 07 Mar 2024 15:32:51 -0600
calamares (3.3.4-0ubuntu2) noble; urgency=medium
* No-change rebuild for python3.12 t64.
-- Matthias Klose <doko@ubuntu.com> Sat, 02 Mar 2024 21:08:26 +0100
calamares (3.3.4-0ubuntu1) noble; urgency=medium
* New upstream release.
* Refresh patches.
-- Simon Quigley <tsimonq2@ubuntu.com> Mon, 26 Feb 2024 19:04:30 -0600
calamares (3.3.3-0ubuntu1) noble; urgency=medium
* New upstream release.
* Copyright update.
-- Simon Quigley <tsimonq2@ubuntu.com> Sun, 25 Feb 2024 16:13:53 -0600
calamares (3.3.2-0ubuntu1) noble; urgency=medium
* New upstream release.
* Drop unneeded patches.
- enable-optional-part-encryption.patch (merged upstream)
- fix-btrfs-luks.patch (merged upstream)
* Update copyright file.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Tue, 20 Feb 2024 13:37:43 -0600
calamares (3.3.1-0ubuntu4) noble; urgency=medium
* Fix BTRFS+LUKS installations with unencrypted /boot.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Mon, 12 Feb 2024 11:51:59 -0600
calamares (3.3.1-0ubuntu3) noble; urgency=medium
* Allow specifying partitions that must remain unencrypted when using FDE.
* Allow specifying partitions that are only created when FDE is enabled.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Mon, 05 Feb 2024 18:12:47 -0600
calamares (3.3.1-0ubuntu2) noble; urgency=medium
* No-change rebuild with Python 3.12 as default
-- Graham Inggs <ginggs@ubuntu.com> Sat, 20 Jan 2024 08:39:43 +0000
calamares (3.3.1-0ubuntu1) noble; urgency=medium
* New upstream release.
* Fixed debian/watch file.
* Updated copyright file.
* Enabled AppStream and AppData (it is no longer enabled by default upstream
but should be enabled by us).
* Dropped lp-2045741.patch, it's included in the latest upstream release.
* Dropped support-appstream-1.0.patch, upstream has overhauled AppStream
handling and this patch is no longer applicable.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Thu, 18 Jan 2024 20:29:45 +0000
calamares (3.3.0.0-0ubuntu5) noble; urgency=medium
* Fix two American English entries (LP: #2045741):
- https://github.com/calamares/calamares/issues/2257
-- Simon Quigley <tsimonq2@ubuntu.com> Mon, 01 Jan 2024 13:39:12 -0600
calamares (3.3.0.0-0ubuntu4) noble; urgency=medium
* Add d/p/support-appstream-1.0.patch
-- Rik Mills <rikmills@kde.org> Mon, 18 Dec 2023 20:15:16 +0000
calamares (3.3.0.0-0ubuntu3) noble; urgency=medium
* Change appstream build depend to libappstreamqt5-dev (>= 1.0.0~).
-- Rik Mills <rikmills@kde.org> Mon, 18 Dec 2023 16:24:24 +0000
calamares (3.3.0.0-0ubuntu2) noble; urgency=medium
* No-change rebuild against appstream 1.0.
-- Rik Mills <rikmills@kde.org> Mon, 18 Dec 2023 13:48:07 +0000
calamares (3.3.0.0-0ubuntu1) noble; urgency=medium
* New upstream version.
* Remove reverse-applicable patch.
-- Simon Quigley <tsimonq2@ubuntu.com> Tue, 12 Dec 2023 08:01:24 -0600
calamares (3.3.0-alpha6-0ubuntu1) noble; urgency=medium
* New upstream release.
* Add some missing build dependencies.
-- Simon Quigley <tsimonq2@ubuntu.com> Wed, 22 Nov 2023 16:40:53 -0600
calamares (3.3.0-alpha4-0ubuntu3) noble; urgency=medium
* Add util-linux-extra as a runtime dependency to allow hwclock to work.
-- Aaron Rainbolt <arraybolt3@gmail.com> Sun, 19 Nov 2023 22:12:06 -0600
calamares (3.3.0-alpha4-0ubuntu2) noble; urgency=medium
* Fixed encrypted installations. (LP: #2043301)
* Fixed watch file.
* Swapped out an obsolete build dependency (poilcykit-1).
* Created upstream/metadata file.
-- Aaron Rainbolt <arraybolt3@gmail.com> Tue, 14 Nov 2023 17:32:18 -0600
calamares (3.3.0-alpha4-0ubuntu1) noble; urgency=medium
* New upstream release.
* Bump Standards-version to 4.6.2, no changes needed.
* Update Vcs-*, since we no longer maintain this with Ubuntu Studio.
-- Simon Quigley <tsimonq2@ubuntu.com> Fri, 20 Oct 2023 12:33:39 -0500
calamares (3.3.0-alpha2-0ubuntu6) mantic; urgency=medium
* Add support for Netplan backends (LP: #2036999).
-- Simon Quigley <tsimonq2@ubuntu.com> Sun, 08 Oct 2023 11:41:22 -0500
calamares (3.3.0-alpha2-0ubuntu5) mantic; urgency=medium
* Rebuild against new libyaml-cpp0.8.
-- Gianfranco Costamagna <locutusofborg@debian.org> Sat, 02 Sep 2023 07:18:13 +0200
calamares (3.3.0-alpha2-0ubuntu4) lunar; urgency=medium
* Rebuild against latest icu
-- Jeremy Bicha <jbicha@ubuntu.com> Mon, 06 Feb 2023 07:31:56 -0500
calamares (3.3.0-alpha2-0ubuntu3) lunar; urgency=medium
* No-change rebuild with Python 3.11 as default
-- Graham Inggs <ginggs@ubuntu.com> Mon, 26 Dec 2022 09:48:29 +0000
calamares (3.3.0-alpha2-0ubuntu2) kinetic; urgency=medium
* No-change rebuild to pick up fixed libboost-python dependencies

15
debian/control vendored

@ -8,7 +8,8 @@ Build-Depends: cmake,
debhelper-compat (= 13),
extra-cmake-modules,
gettext,
libappstreamqt5-dev (>= 1.0.0~),
libappstreamqt-dev,
libboost-python-dev,
libkf5config-dev,
libkf5coreaddons-dev,
libkf5crash-dev,
@ -29,10 +30,8 @@ Build-Depends: cmake,
os-prober <!nocheck>,
pkg-config,
pkg-kde-tools,
polkitd,
policykit-1 <!nocheck>,
python3-dev,
python3-jsonschema,
python3-yaml,
qml-module-qtquick-layouts,
qml-module-qtquick-privatewidgets,
qml-module-qtquick-window2,
@ -42,17 +41,17 @@ Build-Depends: cmake,
qtlocation5-dev,
qttools5-dev,
qttools5-dev-tools
Standards-Version: 4.6.2
Standards-Version: 4.6.1
Rules-Requires-Root: no
Homepage: https://github.com/calamares/calamares
Vcs-Browser: https://git.lubuntu.me/Lubuntu/calamares-packaging/
Vcs-Git: https://git.lubuntu.me/Lubuntu/calamares-packaging.git
Vcs-Browser: https://git.launchpad.net/~ubuntu-qt-code/+git/calamares
Vcs-Git: https://git.launchpad.net/~ubuntu-qt-code/+git/calamares
XS-Debian-Vcs-Browser: https://salsa.debian.org/qt-kde-team/kde-extras/calamares
XS-Debian-Vcs-Git: https://salsa.debian.org/qt-kde-team/kde-extras/calamares.git
Package: calamares
Architecture: linux-any
Depends: os-prober, util-linux-extra, ${misc:Depends}, ${shlibs:Depends}
Depends: os-prober, ${misc:Depends}, ${shlibs:Depends}
Recommends: btrfs-progs, squashfs-tools
Description: distribution-independent installer framework
Calamares is a distribution-independent installer framework.

23
debian/copyright vendored

@ -3,11 +3,11 @@ Upstream-Name: calamares
Source: https://github.com/calamares/calamares
Files: *
Copyright: 2017-2024 Adriaan de Groot <groot@kde.org>
Copyright: 2017-2022 Adriaan de Groot <groot@kde.org>
2018 Matthias Klumpp <matthias@tenstral.net>
2013-2017 Teo Mrnjavac <teo@kde.org>
2020 Gaël PORTAY <gael.portay@gmail.com>
2014-2024 Anke Boersma <demm@kaosx.us>
2014-2022 Anke Boersma <demm@kaosx.us>
2018 Raul Rodrigo Segura <raurodse@gmail.com>
2018-2020 Collabora Ltd <arnaud.ferraris@collabora.com>
2020-2021 Anubhav Choudhary <ac.10edu@gmail.com>
@ -162,9 +162,8 @@ Files: AUTHORS
src/modules/welcome/tests/*
src/modules/welcomeq/welcomeq.conf
src/modules/zfs/zfs.conf
src/qml/calamares-qt5/slideshow/qmldir
src/qml/calamares-qt6/slideshow/qmldir
Copyright: Calamares team
src/qml/calamares/slideshow/qmldir
Copyright: None
License: CC0-1.0
Files: CalamaresConfig.cmake.in
@ -221,13 +220,13 @@ Files: CalamaresConfig.cmake.in
src/modules/welcome/CMakeLists.txt
src/modules/welcomeq/CMakeLists.txt
src/modules/zfs/CMakeLists.txt
src/qml/CMakeLists.txt
src/qml/calamares/CMakeLists.txt
Copyright: 2014-2016 Teo Mrnjavac <teo@kde.org>
2017-2022 Adriaan de Groot <groot@kde.org>
2014 Aurélien Gâteau <agateau@kde.org>
2014-2019 Kevin Kofler <kevin.kofler@chello.at>
2008-2011 Volker Lanz <vl@fidra.de>
2021 Anke Boersma <demm@kaosx.us>
2017-2023 Adriaan de Groot <groot@kde.org>
License: BSD-2-Clause
Files: 3rdparty/kdsingleapplicationguard/*
@ -271,10 +270,8 @@ Files: src/modules/finishedq/seedling.svg
Copyright: 2020-2021 FontAwesome <hello@fontawesome.com>
License: CC-BY-4.0
Files: src/qml/calamares-qt5/slideshow/Presentation.qml
src/qml/calamares-qt5/slideshow/Slide.qml
src/qml/calamares-qt6/slideshow/Presentation.qml
src/qml/calamares-qt6/slideshow/Slide.qml
Files: src/qml/calamares/slideshow/Presentation.qml
src/qml/calamares/slideshow/Slide.qml
Copyright: 2017 Adriaan de Groot <groot@kde.org>
2016 The Qt Company Ltd.
2012 Digia Plc and/or its subsidiary(-ies)
@ -282,8 +279,8 @@ License: LGPL-2.1
Files: debian/*
Copyright: 2016-2021 Jonathan Carter <jcc@debian.org>
2014 Rohan Garg <rohan@kde.org>
2022-2024 Aaron Rainbolt <arraybolt3@ubuntu.com>
2014 Rohan Garg <rohan@kde.org>
2022 Aaron Rainbolt <arraybolt3@gmail.com>
License: GPL-3+
License: GPL-3+

@ -8,17 +8,18 @@ Subject: replace pkexec by sudo
--- a/calamares.desktop
+++ b/calamares.desktop
@@ -5,12 +5,13 @@ Name=Install System
GenericName=System Installer
@@ -6,13 +6,14 @@ GenericName=System Installer
Comment=Calamares — System Installer
Keywords=calamares;system;installer;
TryExec=calamares
-Exec=sh -c "pkexec calamares"
+Exec=sh -c "sudo -E calamares -D6"
Comment=Calamares — System Installer
Categories=Qt;System;
Icon=calamares
Terminal=false
SingleMainWindow=true
StartupNotify=true
Categories=Qt;System;
+NotShowIn=LXQt;
X-AppStream-Ignore=true

@ -1,427 +0,0 @@
--- a/src/modules/users/Config.cpp
+++ b/src/modules/users/Config.cpp
@@ -9,6 +9,7 @@
#include "Config.h"
+#include "ActiveDirectoryJob.h"
#include "CreateUserJob.h"
#include "MiscJobs.h"
#include "SetHostNameJob.h"
@@ -656,6 +657,59 @@ Config::setRootPasswordSecondary( const
}
}
+void
+Config::setActiveDirectoryUsed( bool used )
+{
+ m_activeDirectoryUsed = used;
+}
+
+bool
+Config::getActiveDirectoryEnabled() const
+{
+ return m_activeDirectory;
+}
+
+bool
+Config::getActiveDirectoryUsed() const
+{
+ return m_activeDirectoryUsed && m_activeDirectory;
+}
+
+void
+Config::setActiveDirectoryAdminUsername( const QString & s )
+{
+ m_activeDirectoryUsername = s;
+}
+
+void
+Config::setActiveDirectoryAdminPassword( const QString & s )
+{
+ m_activeDirectoryPassword = s;
+}
+
+void
+Config::setActiveDirectoryDomain( const QString & s )
+{
+ m_activeDirectoryDomain = s;
+}
+
+void
+Config::setActiveDirectoryIP( const QString & s )
+{
+ m_activeDirectoryIP = s;
+}
+
+QStringList&
+Config::getActiveDirectory() const
+{
+ m_activeDirectorySettings.clear();
+ m_activeDirectorySettings << m_activeDirectoryUsername
+ << m_activeDirectoryPassword
+ << m_activeDirectoryDomain
+ << m_activeDirectoryIP;
+ return m_activeDirectorySettings;
+}
+
QString
Config::rootPassword() const
{
@@ -913,6 +967,9 @@ Config::setConfigurationMap( const QVari
m_sudoStyle = Calamares::getBool( configurationMap, "sudoersConfigureWithGroup", false ) ? SudoStyle::UserAndGroup
: SudoStyle::UserOnly;
+ // Handle Active Directory enablement
+ m_activeDirectory = Calamares::getBool( configurationMap, "allowActiveDirectory", false );
+
// Handle *hostname* key and subkeys and legacy settings
{
bool ok = false; // Ignored
@@ -990,6 +1047,9 @@ Config::createJobs() const
jobs.append( Calamares::job_ptr( j ) );
}
+ j = new ActiveDirectoryJob( getActiveDirectory() );
+ jobs.append( Calamares::job_ptr( j ) );
+
j = new SetupGroupsJob( this );
jobs.append( Calamares::job_ptr( j ) );
--- a/src/modules/users/Config.h
+++ b/src/modules/users/Config.h
@@ -226,6 +226,12 @@ public:
bool permitWeakPasswords() const { return m_permitWeakPasswords; }
/// Current setting for "require strong password"?
bool requireStrongPasswords() const { return m_requireStrongPasswords; }
+ /// Is Active Directory enabled?
+ bool getActiveDirectoryEnabled() const;
+ /// Is it both enabled and activated?
+ bool getActiveDirectoryUsed() const;
+ /// Config for Active Directory
+ QStringList& getActiveDirectory() const;
const QList< GroupDescription >& defaultGroups() const { return m_defaultGroups; }
/** @brief the names of all the groups for the current user
@@ -292,6 +298,12 @@ public Q_SLOTS:
void setRootPassword( const QString& );
void setRootPasswordSecondary( const QString& );
+ void setActiveDirectoryUsed( bool used );
+ void setActiveDirectoryAdminUsername( const QString& );
+ void setActiveDirectoryAdminPassword( const QString& );
+ void setActiveDirectoryDomain( const QString& );
+ void setActiveDirectoryIP( const QString& );
+
signals:
void userShellChanged( const QString& );
void autoLoginGroupChanged( const QString& );
@@ -343,6 +355,14 @@ private:
bool m_isReady = false; ///< Used to reduce readyChanged signals
+ mutable QStringList m_activeDirectorySettings;
+ bool m_activeDirectory = false;
+ bool m_activeDirectoryUsed = false;
+ QString m_activeDirectoryUsername;
+ QString m_activeDirectoryPassword;
+ QString m_activeDirectoryDomain;
+ QString m_activeDirectoryIP;
+
HostNameAction m_hostnameAction = HostNameAction::EtcHostname;
bool m_writeEtcHosts = false;
QString m_hostnameTemplate;
--- a/src/modules/users/page_usersetup.ui
+++ b/src/modules/users/page_usersetup.ui
@@ -604,6 +604,93 @@ SPDX-License-Identifier: GPL-3.0-or-late
</layout>
</item>
<item>
+ <spacer name="verticalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>6</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QCheckBox" name="useADCheckbox">
+ <property name="text">
+ <string>Use Active Directory</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QLabel" name="domainLabel">
+ <property name="text">
+ <string>Domain:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="domainField"/>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="domainAdminLabel">
+ <property name="text">
+ <string>Domain Administrator:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="domainAdminField"/>
+ </item>
+ <item>
+ <widget class="QLabel" name="domainPasswordLabel">
+ <property name="text">
+ <string>Password:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="domainPasswordField">
+ <property name="echoMode">
+ <enum>QLineEdit::Password</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <widget class="QLabel" name="ipAddressLabel">
+ <property name="text">
+ <string>IP Address (optional):</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="ipAddressField"/>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item>
<spacer name="verticalSpacer_7">
<property name="orientation">
<enum>Qt::Vertical</enum>
--- a/src/modules/users/users.conf
+++ b/src/modules/users/users.conf
@@ -265,6 +265,12 @@ hostname:
template: "derp-${cpu}"
forbidden_names: [ localhost ]
+# Enable Active Directory enrollment support (opt-in)
+#
+# This uses realmd to enroll the machine in an Active Directory server
+# It requires realmd as a runtime dependency of Calamares, if enabled
+allowActiveDirectory: false
+
presets:
fullName:
# value: "OEM User"
--- a/src/modules/users/users.schema.yaml
+++ b/src/modules/users/users.schema.yaml
@@ -52,6 +52,7 @@ properties:
writeHostsFile: { type: boolean, default: true }
template: { type: string, default: "${first}-${product}" }
forbidden_names: { type: array, items: { type: string } }
+ allowActiveDirectory: { type: boolean, default: false }
# Presets
#
--- a/src/modules/users/UsersPage.cpp
+++ b/src/modules/users/UsersPage.cpp
@@ -162,6 +162,34 @@ UsersPage::UsersPage( Config* config, QW
config, &Config::requireStrongPasswordsChanged, ui->checkBoxRequireStrongPassword, &QCheckBox::setChecked );
}
+ // Active Directory is not checked or enabled by default
+ ui->useADCheckbox->setVisible(m_config->getActiveDirectoryEnabled());
+ ui->domainLabel->setVisible(false);
+ ui->domainField->setVisible(false);
+ ui->domainAdminLabel->setVisible(false);
+ ui->domainAdminField->setVisible(false);
+ ui->domainPasswordField->setVisible(false);
+ ui->domainPasswordLabel->setVisible(false);
+ ui->ipAddressField->setVisible(false);
+ ui->ipAddressLabel->setVisible(false);
+
+ connect(ui->useADCheckbox, &QCheckBox::toggled, [=](bool checked){
+ ui->domainLabel->setVisible(checked);
+ ui->domainField->setVisible(checked);
+ ui->domainAdminLabel->setVisible(checked);
+ ui->domainAdminField->setVisible(checked);
+ ui->domainPasswordField->setVisible(checked);
+ ui->domainPasswordLabel->setVisible(checked);
+ ui->ipAddressField->setVisible(checked);
+ ui->ipAddressLabel->setVisible(checked);
+ });
+
+ connect( ui->domainField, &QLineEdit::textChanged, config, &Config::setActiveDirectoryDomain );
+ connect( ui->domainAdminField, &QLineEdit::textChanged, config, &Config::setActiveDirectoryAdminUsername );
+ connect( ui->domainPasswordField, &QLineEdit::textChanged, config, &Config::setActiveDirectoryAdminPassword );
+ connect( ui->ipAddressField, &QLineEdit::textChanged, config, &Config::setActiveDirectoryIP );
+ connect( ui->useADCheckbox, &QCheckBox::toggled, config, &Config::setActiveDirectoryUsed );
+
CALAMARES_RETRANSLATE_SLOT( &UsersPage::retranslate );
onReuseUserPasswordChanged( m_config->reuseUserPasswordForRoot() );
--- /dev/null
+++ b/src/modules/users/ActiveDirectoryJob.cpp
@@ -0,0 +1,91 @@
+/* === This file is part of Calamares - <https://calamares.io> ===
+ *
+ * SPDX-FileCopyrightText: 2024 Simon Quigley <tsimonq2@ubuntu.com>
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+#include "ActiveDirectoryJob.h"
+
+#include "Config.h"
+
+#include "GlobalStorage.h"
+#include "JobQueue.h"
+#include "utils/Logger.h"
+#include "utils/Permissions.h"
+#include "utils/System.h"
+
+#include <QDateTime>
+#include <QDir>
+#include <QFile>
+#include <QFileInfo>
+#include <QTextStream>
+#include <QProcess>
+
+ActiveDirectoryJob::ActiveDirectoryJob(QStringList& activeDirectoryInfo)
+ : Calamares::Job()
+ , m_activeDirectoryInfo(activeDirectoryInfo)
+{
+}
+
+QString
+ActiveDirectoryJob::prettyName() const
+{
+ return tr( "Enroll system in Active Directory" );
+}
+
+QString
+ActiveDirectoryJob::prettyDescription() const
+{
+ return tr( "Enroll system in Active Directory" );
+}
+
+QString
+ActiveDirectoryJob::prettyStatusMessage() const
+{
+ return tr( "Enrolling system in Active Directory" );
+}
+
+Calamares::JobResult
+ActiveDirectoryJob::exec()
+{
+ QString username = m_activeDirectoryInfo.value(0);
+ QString password = m_activeDirectoryInfo.value(1);
+ QString domain = m_activeDirectoryInfo.value(2);
+ QString ip = m_activeDirectoryInfo.value(3);
+
+ Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage();
+ QString rootMountPoint = gs ? gs->value("rootMountPoint").toString() : QString();
+
+ if (!ip.isEmpty()) {
+ QString hostsFilePath = !rootMountPoint.isEmpty() ? rootMountPoint + "/etc/hosts" : "/etc/hosts";
+ QFile hostsFile(hostsFilePath);
+ if (hostsFile.open(QIODevice::Append | QIODevice::Text)) {
+ QTextStream out(&hostsFile);
+ out << ip << " " << domain << "\n";
+ hostsFile.close();
+ } else {
+ return Calamares::JobResult::error("Failed to open /etc/hosts for writing.");
+ }
+ }
+
+ QString installPath = !rootMountPoint.isEmpty() ? rootMountPoint : "/";
+ QStringList args = {"join", domain, "-U", username, "--install=" + installPath, "--verbose"};
+
+ QProcess process;
+ process.start("realm", args);
+ process.waitForStarted();
+
+ if (!password.isEmpty()) {
+ process.write((password + "\n").toUtf8());
+ process.closeWriteChannel();
+ }
+
+ process.waitForFinished(-1);
+
+ if (process.exitCode() == 0) {
+ return Calamares::JobResult::ok();
+ } else {
+ QString errorOutput = process.readAllStandardError();
+ return Calamares::JobResult::error(QString("Failed to join realm: %1").arg(errorOutput));
+ }
+}
--- /dev/null
+++ b/src/modules/users/ActiveDirectoryJob.h
@@ -0,0 +1,29 @@
+/* === This file is part of Calamares - <https://calamares.io> ===
+ *
+ * SPDX-FileCopyrightText: 2014-2015 Teo Mrnjavac <teo@kde.org>
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ * Calamares is Free Software: see the License-Identifier above.
+ *
+ */
+
+#ifndef ACTIVEDIRECTORYJOB_H
+#define ACTIVEDIRECTORYJOB_H
+
+#include "Job.h"
+
+class ActiveDirectoryJob : public Calamares::Job
+{
+ Q_OBJECT
+public:
+ ActiveDirectoryJob( QStringList& activeDirectoryInfo );
+ QString prettyName() const override;
+ QString prettyDescription() const override;
+ QString prettyStatusMessage() const override;
+ Calamares::JobResult exec() override;
+
+private:
+ QStringList m_activeDirectoryInfo;
+};
+
+#endif /* ACTIVEDIRECTORYJOB_H */
--- a/src/modules/users/CMakeLists.txt
+++ b/src/modules/users/CMakeLists.txt
@@ -55,6 +55,7 @@ include_directories(${PROJECT_BINARY_DIR
set(_users_src
# Jobs
+ ActiveDirectoryJob.cpp
CreateUserJob.cpp
MiscJobs.cpp
SetPasswordJob.cpp

@ -1,120 +0,0 @@
Description: Allow specifying partitions that are only present when FDE is used.
Author: Aaron Rainbolt <arraybolt3@ubuntu.com>
Origin: ubuntu
Forwarded: not-needed
Last-Update: 2024-02-26
--- a/src/modules/partition/core/PartitionLayout.cpp
+++ b/src/modules/partition/core/PartitionLayout.cpp
@@ -62,6 +62,7 @@ PartitionLayout::PartitionEntry::Partiti
const QString& mountPoint,
const QString& fs,
const bool& noEncrypt,
+ const bool& onlyPresentWithEncryption,
const QVariantMap& features,
const QString& size,
const QString& minSize,
@@ -72,6 +73,7 @@ PartitionLayout::PartitionEntry::Partiti
, partAttributes( attributes )
, partMountPoint( mountPoint )
, partNoEncrypt( noEncrypt )
+ , partOnlyPresentWithEncryption ( onlyPresentWithEncryption )
, partFeatures( features )
, partSize( size )
, partMinSize( minSize )
@@ -119,6 +121,7 @@ PartitionLayout::init( FileSystem::Type
Calamares::getString( pentry, "mountPoint" ),
Calamares::getString( pentry, "filesystem", "unformatted" ),
Calamares::getBool( pentry, "noEncrypt", false ),
+ Calamares::getBool( pentry, "onlyPresentWithEncryption", false ),
Calamares::getSubMap( pentry, "features", ok ),
Calamares::getString( pentry, "size", QStringLiteral( "0" ) ),
Calamares::getString( pentry, "minSize", QStringLiteral( "0" ) ),
@@ -228,6 +231,10 @@ PartitionLayout::createPartitions( Devic
cWarning() << "Partition" << entry.partMountPoint << "size is invalid, skipping...";
continue;
}
+ if ( luksPassphrase.isEmpty() && entry.partOnlyPresentWithEncryption ) {
+ // this partition is being skipped entirely
+ continue;
+ }
// Calculate partition size: Rely on "possibly uninitialized use"
// warnings to ensure that all the cases are covered below.
@@ -252,6 +259,10 @@ PartitionLayout::createPartitions( Devic
availableSectors = totalSectors;
for ( const auto& entry : qAsConst( m_partLayout ) )
{
+ if ( luksPassphrase.isEmpty() && entry.partOnlyPresentWithEncryption ) {
+ // this partition is being skipped entirely
+ continue;
+ }
qint64 sectors = partSectorsMap.value( &entry );
if ( entry.partMinSize.isValid() )
{
@@ -265,6 +276,10 @@ PartitionLayout::createPartitions( Devic
// Assign sectors for percentage-defined partitions.
for ( const auto& entry : qAsConst( m_partLayout ) )
{
+ if ( luksPassphrase.isEmpty() && entry.partOnlyPresentWithEncryption ) {
+ // this partition is being skipped entirely
+ continue;
+ }
if ( entry.partSize.unit() == Calamares::Partition::SizeUnit::Percent )
{
qint64 sectors
@@ -288,6 +303,10 @@ PartitionLayout::createPartitions( Devic
availableSectors = totalSectors;
for ( const auto& entry : qAsConst( m_partLayout ) )
{
+ if ( luksPassphrase.isEmpty() && entry.partOnlyPresentWithEncryption ) {
+ // this partition is being skipped entirely
+ continue;
+ }
// Adjust partition size based on available space.
qint64 sectors = partSectorsMap.value( &entry );
sectors = std::min( sectors, availableSectors );
--- a/src/modules/partition/core/PartitionLayout.h
+++ b/src/modules/partition/core/PartitionLayout.h
@@ -38,6 +38,7 @@ public:
QString partMountPoint;
FileSystem::Type partFileSystem = FileSystem::Unknown;
bool partNoEncrypt = false;
+ bool partOnlyPresentWithEncryption;
QVariantMap partFeatures;
Calamares::Partition::PartitionSize partSize;
Calamares::Partition::PartitionSize partMinSize;
@@ -63,6 +64,7 @@ public:
const QString& mountPoint,
const QString& fs,
const bool& noEncrypt,
+ const bool& onlyPresentWithEncryption,
const QVariantMap& features,
const QString& size,
const QString& minSize = QString(),
--- a/src/modules/partition/partition.conf
+++ b/src/modules/partition/partition.conf
@@ -259,6 +259,7 @@ defaultFileSystemType: "ext4"
# type: "4f68bce3-e8cd-4db1-96e7-fbcaf984b709"
# filesystem: "ext4"
# noEncrypt: false
+# onlyPresentWithEncryption: false
# mountPoint: "/"
# size: 20%
# minSize: 500M
@@ -268,6 +269,7 @@ defaultFileSystemType: "ext4"
# type: "933ac7e1-2eb4-4f13-b844-0e14e2aef915"
# filesystem: "ext4"
# noEncrypt: false
+# onlyPresentWithEncryption: false
# mountPoint: "/home"
# size: 3G
# minSize: 1.5G
@@ -296,6 +298,7 @@ defaultFileSystemType: "ext4"
# default filesystem type, or the user's choice, will be applied instead
# of "unknown" (e.g. the user might pick ext4, or xfs).
# - noEncrypt: whether this partition is exempt from encryption if enabled (optional parameter; default is false)
+# - onlyPresentWithEncryption: whether this partition is only created when encryption is enabled (optional parameter; default is false; ONLY SUPPORTED IN UBUNTU)
# - mountPoint: partition mount point (optional parameter; not mounted if unset)
# - size: partition size in bytes (append 'K', 'M' or 'G' for KiB, MiB or GiB)
# or

@ -1,82 +0,0 @@
Description: Populate grub-{efi,pc}/install_devices debconf config
Author: Simon Quigley <tsimonq2@ubuntu.com>
Origin: vendor
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/calamares/+bug/2063354
Last-Update: 2024-04-24
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/src/modules/bootloader/main.py
+++ b/src/modules/bootloader/main.py
@@ -25,6 +25,7 @@ import os
import re
import shutil
import subprocess
+import tempfile
import libcalamares
@@ -581,6 +582,46 @@ def get_grub_efi_parameters():
return None
+def get_disk_id(device_name, efi):
+ by_id_path = "/dev/disk/by-id"
+
+ if efi:
+ partitions = libcalamares.globalstorage.value("partitions")
+ device_name = None
+
+ for partition in partitions:
+ if "/boot/efi" in partition["mountPoint"]:
+ device_name = partition["device"]
+ break
+
+ device_path = os.path.realpath(device_name)
+
+ for entry in os.listdir(by_id_path):
+ full_entry_path = os.path.join(by_id_path, entry)
+ if os.path.realpath(full_entry_path) == device_path:
+ return full_entry_path
+
+ return None
+
+
+def set_grub_debconf_config(device_name, efi=False):
+ dev_id_path = get_disk_id(device_name, efi=efi)
+
+ if not dev_id_path:
+ return None
+
+ temp_dir = libcalamares.globalstorage.value("rootMountPoint") + "/tmp/"
+ with tempfile.NamedTemporaryFile(mode="w", delete=False, dir=temp_dir) as tmpfile:
+ debconf_target = "grub-efi" if efi else "grub-pc"
+
+ tmpfile.write(f"grub-pc {debconf_target}/install_devices multiselect {dev_id_path}\n")
+ tmpfile_path = tmpfile.name
+
+ debconf_config = "/tmp/" + os.path.basename(tmpfile_path)
+ check_target_env_call(["/usr/bin/debconf-set-selections", debconf_config])
+ os.remove(tmpfile_path)
+
+
def run_grub_mkconfig(partitions, output_file):
"""
Runs grub-mkconfig in the target environment
@@ -631,6 +672,8 @@ def run_grub_install(fw_type, partitions
"--efi-directory=" + efi_directory,
"--bootloader-id=" + efi_bootloader_id,
"--force"])
+
+ set_grub_debconf_config(efi_target, efi=True)
else:
assert efi_directory is None
if libcalamares.globalstorage.value("bootLoader") is None:
@@ -652,6 +695,8 @@ def run_grub_install(fw_type, partitions
"--force",
boot_loader["installPath"]])
+ set_grub_debconf_config(boot_loader["installPath"])
+
def install_grub(efi_directory, fw_type):
"""

@ -1,5 +1,2 @@
0001-replace-pkexec-by-sudo.patch
apport-package-hook.patch
enable-only-present-with-encryption-partitions.patch
#active-directory.patch
grub-debconf-config.patch

2
debian/rules vendored

@ -10,7 +10,7 @@ export DEB_BUILD_MAINT_OPTIONS=buildinfo=+path
dh $@ --with kf5
override_dh_auto_configure:
dh_auto_configure -- -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON -DBUILD_APPDATA=ON -DBUILD_APPSTREAM=ON
dh_auto_configure -- -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON
# Some test don't work well, we don't need to run them at package build time.
override_dh_auto_test:

@ -1,6 +0,0 @@
Name: calamares
Bug-Database: https://github.com/calamares/calamares/issues
Bug-Submit: https://github.com/calamares/calamares/issues/new?assignees=&labels=&projects=&template=bug_report.md
Changelog: https://github.com/calamares/calamares/blob/calamares/CHANGES-3.3
Repository: https://github.com/calamares/calamares.git
Repository-Browse: https://github.com/calamares/calamares

6
debian/watch vendored

@ -1,5 +1,3 @@
version=4
opts="searchmode=plain, \
pgpsigurlmangle=s/$/.asc/, \
uversionmangle=s/(\d+\.\d+\.\d+).*/$1/" \
https://api.github.com/repos/calamares/@PACKAGE@/releases https:\/\/github.com\/calamares\/calamares\/releases\/download\/v(?:[-_]?(\d[\-+\.:\~\da-zA-Z]*))\/calamares-(?:[-_]?(\d[\-+\.:\~\da-zA-Z]*)).tar.gz
opts="pgpsigurlmangle=s/$/.asc/, uversionmangle=s/\..$/-alpha2/" \
https://github.com/calamares/calamares/releases .*/calamares-([\d\.]+)-alpha([\d]+).tar.gz

Loading…
Cancel
Save