Compare commits
33 Commits
ubuntu/25.
...
ubuntu/plu
Author | SHA1 | Date | |
---|---|---|---|
|
ac31dfe838 | ||
68b4f76a29 | |||
694b57d395 | |||
3288d57e56 | |||
6cb7d4dc52 | |||
f26f191a17 | |||
c93e956a5e | |||
3282b74627 | |||
6b2555c998 | |||
52472914bb | |||
782b5feeee | |||
133641b96c | |||
de24f68f2b | |||
5a1835af47 | |||
197d24e295 | |||
dc3e8a738f | |||
abe9758e56 | |||
d6ff965abb | |||
71f067fbba | |||
7ba422ace8 | |||
68b993050c | |||
0c540f933a | |||
39ab8da0c8 | |||
|
af59433966 | ||
|
6c4331aa1b | ||
|
d3b7c6dbce | ||
|
571c964174 | ||
6633422407 | |||
9cca776896 | |||
ede40ead21 | |||
7080285492 | |||
d5ec2191d4 | |||
70fb145bf7 |
@ -1,10 +0,0 @@
|
||||
---
|
||||
dontChroot: true
|
||||
timeout: 10
|
||||
firmwareType:
|
||||
efi:
|
||||
- -cp /cdrom/casper/vmlinuz ${ROOT}/boot/vmlinuz-$(uname -r)
|
||||
- -mkdir -pv ${ROOT}/media/cdrom
|
||||
- -mount --bind /cdrom ${ROOT}/media/cdrom
|
||||
bios:
|
||||
- -cp /cdrom/casper/vmlinuz ${ROOT}/boot/vmlinuz-$(uname -r)
|
5
common/modules/copy_vmlinuz_shellprocess.conf
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
dontChroot: true
|
||||
timeout: 60
|
||||
script:
|
||||
- command: "cp /cdrom/casper/vmlinuz ${ROOT}/boot/vmlinuz-$(uname -r)"
|
@ -21,6 +21,9 @@ extraMounts:
|
||||
- device: /run/systemd/resolve
|
||||
mountPoint: /run/systemd/resolve
|
||||
options: [ bind ]
|
||||
- device: /cdrom
|
||||
mountPoint: /media/cdrom
|
||||
options: [ bind ]
|
||||
|
||||
mountOptions:
|
||||
- filesystem: default
|
||||
|
@ -100,7 +100,8 @@ void PackageSelectViewStep::onActivate()
|
||||
bool hasInternet = network.hasInternet();
|
||||
|
||||
// Handle network unavailability
|
||||
if (!hasInternet) {
|
||||
//if (!hasInternet) {
|
||||
// Disable almost all fancy features to avoid bugs, revert in 25.10 cycle
|
||||
ui->full_button->setVisible(false);
|
||||
ui->full_text->setVisible(false);
|
||||
|
||||
@ -114,7 +115,7 @@ void PackageSelectViewStep::onActivate()
|
||||
ui->extraparty_scroll->setVisible(false);
|
||||
ui->extraparty_text->setVisible(false);
|
||||
ui->mandatory_warning_label->setVisible(false);
|
||||
}
|
||||
//}
|
||||
|
||||
// Dynamically create package checkboxes only once
|
||||
if (m_packageCheckBoxes.isEmpty()) {
|
||||
@ -324,6 +325,23 @@ void PackageSelectViewStep::onLeave()
|
||||
presentSnapList.append(snapId);
|
||||
}
|
||||
|
||||
// As a temporary measure until OEM is refactored in the 25.10 cycle,
|
||||
// we need to ensure that Calamares and its necessary dependencies are
|
||||
// installed on the target, iff this is a stacked squashfs.
|
||||
// FIXME: remove in favor of more nuanced stacked squashfs
|
||||
// functionality in 25.10
|
||||
// Ref: https://discourse.ubuntu.com/t/implementation-of-ship-live-within-a-squashfs/57510
|
||||
// LP: #2104343
|
||||
if (isStackedSquashfs) {
|
||||
QVector<QString> stage_two_packages = {"calamares", "kdialog"};
|
||||
for (QString& package_name : stage_two_packages) {
|
||||
QVariantMap package_details;
|
||||
package_details.insert("id", package_name);
|
||||
package_details.insert("snap", false);
|
||||
selectedPackagesList.append(package_details);
|
||||
}
|
||||
}
|
||||
|
||||
globalData.insert("packages_to_install", selectedPackagesList);
|
||||
if (!isStackedSquashfs) {
|
||||
QVariantList installerPackages = m_configurationMap.value("packages").toMap().value("installer_remove_packages").toList();
|
||||
|
@ -9,10 +9,6 @@ packages:
|
||||
name: "Thunderbird"
|
||||
description: "Email, newsfeed, chat, and calendaring client."
|
||||
snap: true
|
||||
- id: "virt-manager"
|
||||
name: "Virtual Machine Manager"
|
||||
description: "Desktop user interface for managing virtual machines through libvirt."
|
||||
snap: false
|
||||
- id: "krita"
|
||||
name: "Krita"
|
||||
description: "Graphics editor designed primarily for digital art and 2D animation."
|
||||
|
@ -6,6 +6,7 @@
|
||||
#include <QDir>
|
||||
#include <QCoreApplication>
|
||||
#include <QRegularExpression>
|
||||
#include <QFile>
|
||||
|
||||
CALAMARES_PLUGIN_FACTORY_DEFINITION(PackageSelectProcessFactory, registerPlugin<PackageSelectProcess>();)
|
||||
|
||||
@ -36,6 +37,7 @@ Calamares::JobResult PackageSelectProcess::runAptCommand(const QString& command,
|
||||
double endProgress,
|
||||
bool verboseProgress)
|
||||
{
|
||||
qDebug() << "Running apt command:" << command;
|
||||
QProcess aptProcess(this);
|
||||
aptProcess.setProgram("/usr/sbin/chroot");
|
||||
aptProcess.setArguments({ rootMountPoint, "/bin/bash", "-c", command });
|
||||
@ -53,14 +55,19 @@ Calamares::JobResult PackageSelectProcess::runAptCommand(const QString& command,
|
||||
commandHRPrefix = tr("Upgrading installed system: ");
|
||||
} else if (command.contains("remove")) {
|
||||
commandHRPrefix = tr("Cleaning up packages: ");
|
||||
} else if (command.contains("cdrom")) {
|
||||
commandHRPrefix = tr("cdrom: ");
|
||||
}
|
||||
|
||||
QRegularExpression getRegex(R"(Get:\d+\s+[^ ]+\s+[^ ]+\s+(.+?)\s+\S+\s+(\S+)\s+\[(.*?)\])");
|
||||
|
||||
connect(&aptProcess, &QProcess::readyReadStandardOutput, this,
|
||||
[this, &aptProcess, &lineCount, progressPerLine, startProgress, endProgress, verboseProgress, commandHRPrefix, getRegex]() mutable {
|
||||
while (aptProcess.canReadLine()) {
|
||||
QString line = QString::fromUtf8(aptProcess.readLine()).trimmed();
|
||||
[this, &lineCount, progressPerLine, startProgress, endProgress, verboseProgress, commandHRPrefix, getRegex]() {
|
||||
QProcess *aptProcess = (QProcess *)(QObject::sender());
|
||||
if (aptProcess == NULL) return;
|
||||
while (aptProcess->canReadLine()) {
|
||||
QString line = QString::fromUtf8(aptProcess->readLine()).trimmed();
|
||||
qDebug() << "Apt log line: " << line;
|
||||
if (line.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
@ -141,7 +148,7 @@ Calamares::JobResult PackageSelectProcess::runSnapCommand(const QStringList& sna
|
||||
|
||||
QString currentDescription;
|
||||
|
||||
connect(&snapProcess, &QProcess::readyReadStandardOutput, this,
|
||||
connect(&snapProcess, &QProcess::readyReadStandardOutput, this,
|
||||
[&snapProcess, this, ¤tDescription, startProgress, endProgress]( ) {
|
||||
while (snapProcess.canReadLine()) {
|
||||
QString line = QString::fromUtf8(snapProcess.readLine()).trimmed();
|
||||
@ -277,7 +284,8 @@ Calamares::JobResult PackageSelectProcess::exec()
|
||||
|
||||
const QVariantMap installationData = gs->value("installation_data").toMap();
|
||||
const QString installationMode = installationData.value("installation_mode").toString();
|
||||
const bool downloadUpdates = installationData.value("download_updates").toBool();
|
||||
const bool hasInternet = gs->value("hasInternet").toBool();
|
||||
const bool downloadUpdates = (installationData.value("download_updates").toBool() && hasInternet);
|
||||
const QVariantList packagesToInstall = installationData.value("packages_to_install").toList();
|
||||
const QVariantList packagesToRemove = installationData.value("packages_to_remove").toList();
|
||||
const QVariantList presentSnaps = installationData.value("present_snaps").toList();
|
||||
@ -288,6 +296,10 @@ Calamares::JobResult PackageSelectProcess::exec()
|
||||
rootMountPoint = gs->value("rootMountPoint").toString();
|
||||
}
|
||||
|
||||
const QString checkpackage_path = "/usr/libexec/checkpackage-backend";
|
||||
const QString chroot_checkpackage_path = rootMountPoint + checkpackage_path;
|
||||
QFile* cpbe = new QFile(chroot_checkpackage_path);
|
||||
|
||||
static const QMap<QString, QVector<ProgressAllocation>> allocationMap = {
|
||||
{ "minimal", { {0.0, 1.0} } },
|
||||
{ "normal", { {0.0, 0.4}, {0.4, 1.0} } },
|
||||
@ -295,12 +307,35 @@ Calamares::JobResult PackageSelectProcess::exec()
|
||||
};
|
||||
|
||||
const QVector<ProgressAllocation> allocations = allocationMap.value(installationMode, { {0.0, 1.0} });
|
||||
|
||||
// Run apt update
|
||||
const double aptRange = allocations[0].end - allocations[0].start;
|
||||
const double updateStart = allocations[0].start;
|
||||
const double updateEnd = updateStart + 0.1 * aptRange;
|
||||
|
||||
// Temporarily copy ubuntu.sources elsewhere, if we do not have network
|
||||
// This is so we can update the apt cache safely
|
||||
// FIXME: there has to be a better, more native way to do this. It works
|
||||
// for now, but in the 25.10 cycle, we're probably going to move some of
|
||||
// these command-line apt calls to the libapt C library. LP: #2107287
|
||||
if (!hasInternet) {
|
||||
const QString ubuntu_sources_path = rootMountPoint + "/etc/apt/sources.list.d/ubuntu.sources";
|
||||
QFile* ubuntu_sources = new QFile(ubuntu_sources_path);
|
||||
// Just in case this module is used in a non-Ubuntu environment, make sure ubuntu.sources exists
|
||||
// TODO: make this configurable in the 25.10 cycle
|
||||
if (ubuntu_sources->exists()) {
|
||||
const QString backup_name = ubuntu_sources_path + ".bak";
|
||||
if (!ubuntu_sources->rename(ubuntu_sources_path + ".bak")) {
|
||||
return Calamares::JobResult::error(tr("Internal Error"),
|
||||
tr("Permission denied when moving ubuntu.sources to prepare for offline install"));
|
||||
}
|
||||
Calamares::JobResult addCdromResult = runAptCommand("apt-cdrom add -m -d=/media/cdrom/", rootMountPoint, updateStart, updateEnd, true);
|
||||
if (!addCdromResult) return std::move(addCdromResult);
|
||||
} else {
|
||||
return Calamares::JobResult::error(tr("Internal Error"),
|
||||
tr("/etc/apt/sources.list.d/ubuntu.sources not found in the target, are you a downstream?"));
|
||||
}
|
||||
}
|
||||
|
||||
// Run apt update
|
||||
m_prettyStatus = tr("Updating apt cache");
|
||||
emit prettyStatusMessageChanged(m_prettyStatus);
|
||||
emit progress(updateStart);
|
||||
@ -323,12 +358,14 @@ Calamares::JobResult PackageSelectProcess::exec()
|
||||
}
|
||||
|
||||
// Add diversions for dracut, update-initramfs, and locale-gen
|
||||
/*
|
||||
dpkgDiversions = {
|
||||
{"dracut", "/usr/bin/dracut"},
|
||||
{"update-initramfs", "/usr/sbin/update-initramfs"},
|
||||
{"locale-gen", "/usr/sbin/locale-gen"}
|
||||
};
|
||||
divert(true);
|
||||
*/
|
||||
|
||||
double installStart;
|
||||
double installEnd;
|
||||
@ -359,15 +396,46 @@ Calamares::JobResult PackageSelectProcess::exec()
|
||||
qDebug() << "Progress range: installStart:" << installStart << "installEnd:" << installEnd;
|
||||
|
||||
if (!debPackages.isEmpty()) {
|
||||
// Corresponding to the temporary hack in pkgselect adding calamares
|
||||
// and kdialog to the list, we only want those two included in the
|
||||
// final installation if we're actually in OEM mode. Otherwise, they
|
||||
// can be ignored, and are just clutter.
|
||||
// FIXME: When the OEM stack is rewritten in 25.10, this needs to be
|
||||
// removed.
|
||||
if (!QFile::exists("/etc/calamares/OEM_MODE_ACTIVATED")) {
|
||||
QStringList wip_list;
|
||||
for (auto debPackage : debPackages) {
|
||||
if (!debPackage.contains(QString("calamares")) &&
|
||||
!debPackage.contains(QString("kdialog"))) {
|
||||
wip_list << debPackage;
|
||||
}
|
||||
}
|
||||
debPackages = wip_list;
|
||||
}
|
||||
|
||||
// checkpackage-backend needs to be explicitly copied to the chroot
|
||||
// and removed later for systems with stacked squashfses, or the
|
||||
// install command will fail. LP: #2104243
|
||||
if (!cpbe->exists()) {
|
||||
QFile* parent_cpbe = new QFile(checkpackage_path);
|
||||
if (!parent_cpbe->copy(chroot_checkpackage_path)) {
|
||||
return Calamares::JobResult::error(tr("Internal Error"),
|
||||
tr("Permission denied when copying checkpackage-backend, are you running Calamares correctly?"));
|
||||
}
|
||||
}
|
||||
|
||||
const QString packageList = debPackages.join(" ");
|
||||
const QString installCommand = QString("DEBIAN_FRONTEND=noninteractive apt-get -y install $(/usr/libexec/checkpackage-backend %1);").arg(packageList);
|
||||
|
||||
Calamares::JobResult installResult = runAptCommand(installCommand,
|
||||
rootMountPoint,
|
||||
installStart,
|
||||
installEnd,
|
||||
true);
|
||||
if (!installResult) return std::move(installResult);
|
||||
rootMountPoint,
|
||||
installStart,
|
||||
installEnd,
|
||||
true);
|
||||
if (!installResult) {
|
||||
if (!cpbe->remove()) qDebug() << "Warning: failed to clean up /usr/libexec/checkpackage-backend";
|
||||
return std::move(installResult);
|
||||
}
|
||||
}
|
||||
else qDebug() << "No packages to install.";
|
||||
|
||||
@ -376,20 +444,31 @@ Calamares::JobResult PackageSelectProcess::exec()
|
||||
removeDebPackages << var.toString();
|
||||
}
|
||||
|
||||
// As part of the fix for LP: #2104343, we need to ensure that, if
|
||||
// we are currently in OEM mode, Calamares and friends remain
|
||||
// installed. During stage two, we clean it up.
|
||||
// FIXME: When the OEM stack is rewritten in 25.10, this needs to be
|
||||
// rewritten.
|
||||
if (QFile::exists("/etc/calamares/OEM_MODE_ACTIVATED")) {
|
||||
QStringList wip_list;
|
||||
for (auto removeDebPackage : removeDebPackages) {
|
||||
if (!removeDebPackage.contains(QString("calamares"))) wip_list << removeDebPackage;
|
||||
}
|
||||
removeDebPackages = wip_list;
|
||||
}
|
||||
|
||||
const double removeStart = installEnd;
|
||||
const double removeEnd = removeStart + 0.2 * aptRange;
|
||||
|
||||
if (!removeDebPackages.isEmpty()) {
|
||||
const QString removeCommand = QString("DEBIAN_FRONTEND=noninteractive apt-get -y --purge remove %1")
|
||||
const QString removeCommand = QString("DEBIAN_FRONTEND=noninteractive apt-get -y --purge remove $(/usr/libexec/checkpackage-backend %1);")
|
||||
.arg(removeDebPackages.join(" "));
|
||||
Calamares::JobResult removeResult = runAptCommand(removeCommand,
|
||||
rootMountPoint,
|
||||
removeStart,
|
||||
removeEnd,
|
||||
true);
|
||||
if (!removeResult) { // Using operator bool() to check for errors
|
||||
return std::move(removeResult); // Move to avoid copy
|
||||
}
|
||||
if (!removeResult) return std::move(removeResult);
|
||||
}
|
||||
|
||||
const double autoremoveStart = removeEnd;
|
||||
@ -402,7 +481,45 @@ Calamares::JobResult PackageSelectProcess::exec()
|
||||
true);
|
||||
|
||||
// Disable diversions
|
||||
divert(false);
|
||||
//divert(false);
|
||||
|
||||
// Move ubuntu.sources back, and clean up the cdrom file
|
||||
// FIXME: there has to be a better, more native way to do this. It works
|
||||
// for now, but in the 25.10 cycle, we're probably going to move some of
|
||||
// these command-line apt calls to the libapt C library. LP: #2107287
|
||||
try {
|
||||
if (!hasInternet) {
|
||||
const QString ubuntu_sources_path = rootMountPoint + "/etc/apt/sources.list.d/ubuntu.sources";
|
||||
const QString backup_name = ubuntu_sources_path + ".bak";
|
||||
QFile* ubuntu_sources = new QFile(ubuntu_sources_path);
|
||||
QFile* ubuntu_sources_bak = new QFile(backup_name);
|
||||
// Just in case this module is used in a non-Ubuntu environment, make sure ubuntu.sources exists
|
||||
// TODO: make this configurable in the 25.10 cycle
|
||||
if (ubuntu_sources->exists()) {
|
||||
if (!ubuntu_sources->remove()) {
|
||||
return Calamares::JobResult::error(tr("Internal Error"),
|
||||
tr("/etc/apt/sources.list.d/ubuntu.sources already exists and it won't budge - this is a rare edge case, please report!"));
|
||||
}
|
||||
}
|
||||
if (!ubuntu_sources_bak->rename(ubuntu_sources_path)) {
|
||||
return Calamares::JobResult::error(tr("Internal Error"),
|
||||
tr("Permission denied when moving ubuntu.sources back after offline install"));
|
||||
}
|
||||
|
||||
// Remove the apt-cdrom entry we added earlier
|
||||
// This may seem drastic, but we already expect that the automirror
|
||||
// module, ran before this, creates a deb822-style ubuntu.sources
|
||||
QFile* cdrom_sources_list = new QFile(rootMountPoint + "/etc/apt/sources.list");
|
||||
if (!cdrom_sources_list->remove()) {
|
||||
return Calamares::JobResult::error(tr("Internal Error"),
|
||||
tr("Failed to remove classic sources.list file"));
|
||||
}
|
||||
}
|
||||
} catch (const std::exception &exc) {
|
||||
qDebug() << exc.what();
|
||||
} catch (...) {
|
||||
qDebug() << "Caught unknown error";
|
||||
}
|
||||
|
||||
// Handle snap packages
|
||||
if (installationMode != "minimal") {
|
||||
@ -450,5 +567,7 @@ Calamares::JobResult PackageSelectProcess::exec()
|
||||
m_prettyStatus = tr("All selected packages installed successfully.");
|
||||
emit prettyStatusMessageChanged(m_prettyStatus);
|
||||
|
||||
if (!cpbe->remove()) qDebug() << "Warning: failed to clean up /usr/libexec/checkpackage-backend";
|
||||
|
||||
return Calamares::JobResult::ok();
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <unordered_set>
|
||||
#include <apt-pkg/algorithms.h>
|
||||
#include <apt-pkg/cacheiterators.h>
|
||||
#include <apt-pkg/init.h>
|
||||
@ -28,9 +29,23 @@ int main(int argc, char* argv[]) {
|
||||
std::vector<std::string> package_names(argv + 1, argv + argc);
|
||||
if (package_names.empty()) return 0;
|
||||
|
||||
std::unordered_set<std::string> seen_packages;
|
||||
for (std::string package_name : package_names) {
|
||||
pkgCache::PkgIterator it = cache->GetPkgCache()->FindPkg(package_name);
|
||||
if (!it.end()) std::cout << package_name << " ";
|
||||
if (seen_packages.contains(package_name)) continue;
|
||||
seen_packages.insert(package_name);
|
||||
|
||||
// Tasks and wildcards should just be passed through as-is, for now
|
||||
if (package_name.starts_with('^') || package_name.contains('*')) {
|
||||
std::cout << package_name << " ";
|
||||
continue;
|
||||
}
|
||||
pkgCache::GrpIterator grp = cache->GetPkgCache()->FindGrp(package_name);
|
||||
if (!grp.end()) {
|
||||
pkgCache::PkgIterator it = grp.FindPreferredPkg(true);
|
||||
if (!it.end() && !it.VersionList().end()) {
|
||||
std::cout << package_name << " ";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << "\n";
|
||||
|
132
debian/changelog
vendored
@ -1,6 +1,136 @@
|
||||
calamares-settings-ubuntu (1:25.04.27) plucky; urgency=medium
|
||||
|
||||
* Disable virt-manager installation in third-party software options, as the
|
||||
package is broken when installed by pkgselect.
|
||||
* Remove full installation and third-party software options from all
|
||||
flavors.
|
||||
* Fix segfaults during installation. (LP: #2107486)
|
||||
|
||||
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Wed, 16 Apr 2025 18:23:56 -0500
|
||||
|
||||
calamares-settings-ubuntu (1:25.04.26) plucky; urgency=medium
|
||||
|
||||
* [bootloader] Instead of utilizing a contextualprocess to only bind-mount
|
||||
/cdrom to /media/cdrom when it's a specific type of system, simply add it
|
||||
to the mounts for all flavors, and move the specific copy of the vmlinuz
|
||||
file to a dedicated shellprocess module. This will be re-factored next
|
||||
cycle, ideally being worked directly into a dedicated C++ module instead
|
||||
of several, miscellaneous shell scripts wrapped in YAML.
|
||||
* [pkgselectprocess] Explicitly log all apt commands in the debug logs.
|
||||
* [pkgselectprocess] Ensure apt-cdrom command outputs have their own prefix.
|
||||
* [checkpackage-backend] Simply pass through packages starting with "^" or
|
||||
containing "*". For this cycle we can trust our distributors won't do
|
||||
anything unusual, but next cycle, we need to perform explicit validation
|
||||
on these items. If you are a downstream, please be careful.
|
||||
* [pkgselectprocess] Ensure hasInternet is available as a local variable, so
|
||||
we can use it.
|
||||
* [pkgselectprocess] When running apt remove, use CPBE just in case.
|
||||
* [pkgselectprocess] When doing installations without network, we need to
|
||||
ensure that we don't try to perform apt operations that require internet.
|
||||
To do this in Plucky, we need to temporarily copy the ubuntu.sources file
|
||||
to an ubuntu.sources.bak file. To bring all of the previous commits in
|
||||
this upload together, we use the bind-mounted /media/cdrom not only to
|
||||
install the correct GRUB packages, but to ensure that we can still install
|
||||
them and any other packages on ship-live. There has to be a better, more
|
||||
native way to do this. It works for now, but in the Questing cycle, we're
|
||||
probably going to move some of these command-line apt calls to be a
|
||||
consumer of the libapt C library (LP: #2107287).
|
||||
|
||||
-- Simon Quigley <tsimonq2@ubuntu.com> Tue, 15 Apr 2025 22:36:52 -0500
|
||||
|
||||
calamares-settings-ubuntu (1:25.04.25) plucky; urgency=medium
|
||||
|
||||
* [pkgselectprocess] When we are creating the final list of packages to feed
|
||||
to "apt install," virtual packages which do not have a valid candidate are
|
||||
included in this list, causing the installation to fail. When creating
|
||||
this list, use FindGrp instead of FindPkg, and only add it to the list if
|
||||
there is a valid candidate. Additionally, add these items to an unordered
|
||||
set, to eliminate deduplication (LP: #2106773).
|
||||
* [pkgselect] As a temporary measure until OEM is refactored in the 25.10
|
||||
cycle, we need to ensure that Calamares and its necessary dependencies are
|
||||
installed on the target, iff this is a stacked squashfs. We're doing this
|
||||
in pkgselect instead of pkgselectprocess because pkgselect already knows
|
||||
about stacked squashfses, it's what provides the final "additional install
|
||||
list" to be considered by checkpackage-backend, and this is a temporary
|
||||
fix anyway (LP: #2104343).
|
||||
* [pkgselectprocess] To complement the last fix, ensure that Calamares ends
|
||||
up on the removal list for non-stacked squashfses if and only if OEM is
|
||||
disabled, and Calamares shows up on the install list only for stacked
|
||||
squashfses which have OEM enabled. This nuanced approach ensures all
|
||||
potential combinations have the intended functionality.
|
||||
* [OEM] Ensure the final desktop file completing OEM is marked as executable.
|
||||
|
||||
-- Simon Quigley <tsimonq2@ubuntu.com> Sun, 13 Apr 2025 03:17:13 -0500
|
||||
|
||||
calamares-settings-ubuntu (1:25.04.24) plucky; urgency=medium
|
||||
|
||||
* Bump Standards-Version to 4.7.2, no changes needed.
|
||||
* [pkgselectprocess] If checkpackage-backend does not exist in the target
|
||||
system, likely due to the use of stacked squashfses, ensure it temporarily
|
||||
exists so it can be used in the install process. This fixes installation
|
||||
of the Virtual Machine Manager when selected on the Customize menu
|
||||
(LP: #2104243).
|
||||
* [OEM] As a temporary stop-gap until this can be completely re-written next
|
||||
cycle, ensure the sed call in the Calamares OEM setup refers to
|
||||
pkgselectprocess, not packages. This was preventing the OEM processing
|
||||
step (as opposed to just the GUI configuration) to be missing
|
||||
(LP: #2104343).
|
||||
* [OEM] [Kubuntu] In stage two, ensure we use Wayland, consistent with the
|
||||
rest of the session scripts.
|
||||
* [pkgselectprocess] Disable the dpkg trigger inhibition logic this cycle.
|
||||
The original goal here was to de-duplicate some of the trigger processing
|
||||
work, but it's obvious this needs more work. It's too premature to ship
|
||||
right now, unfortunately.
|
||||
* [Lubuntu] Remove the Dracut configuration so we fall back to the defaults
|
||||
provided by the package. This is a no-op.
|
||||
|
||||
-- Simon Quigley <tsimonq2@ubuntu.com> Wed, 09 Apr 2025 07:02:36 -0500
|
||||
|
||||
calamares-settings-ubuntu (1:25.04.23) plucky; urgency=medium
|
||||
|
||||
* [Kubuntu] Update welcome images for 25.04 (LP: #2104062)
|
||||
* [Kubuntu] Update 07_Free_and_Open_Source installer slide for plucky
|
||||
puffin mascot image.
|
||||
* [Kubuntu] Update 10_Kubuntu_Focus installer slide.
|
||||
|
||||
-- Rik Mills <rikmills@kde.org> Mon, 07 Apr 2025 11:38:23 +0100
|
||||
|
||||
calamares-settings-ubuntu (1:25.04.22) plucky; urgency=medium
|
||||
|
||||
* [Unity] Update welcome slide for Plucky.
|
||||
* [Unity] Set Kvantum theme to KvGnomeDark for Calamares.
|
||||
|
||||
-- Walter Lapchynski <wxl@ubuntu.com> Wed, 26 Mar 2025 00:05:56 +0000
|
||||
|
||||
calamares-settings-ubuntu (1:25.04.21) plucky; urgency=medium
|
||||
|
||||
* Update partition names to match current version.
|
||||
|
||||
-- Walter Lapchynski <wxl@ubuntu.com> Mon, 24 Mar 2025 22:46:46 +0000
|
||||
|
||||
calamares-settings-ubuntu (1:25.04.20) plucky; urgency=medium
|
||||
|
||||
* Update OEM batch identifier to match current version.
|
||||
|
||||
-- Walter Lapchynski <wxl@ubuntu.com> Mon, 24 Mar 2025 07:01:24 +0000
|
||||
|
||||
calamares-settings-ubuntu (1:25.04.19) plucky; urgency=medium
|
||||
|
||||
* [Lubuntu] Update slides for current applications:
|
||||
* Support: IRC -> Matrix, Lubuntu -> Ubuntu Discourse
|
||||
* Lightweight: KCalc -> Qalc
|
||||
|
||||
-- Walter Lapchynski <wxl@ubuntu.com> Fri, 07 Mar 2025 03:21:03 +0000
|
||||
|
||||
calamares-settings-ubuntu (1:25.04.18) plucky; urgency=medium
|
||||
|
||||
* Add python3 as build-dep.
|
||||
|
||||
-- Walter Lapchynski <wxl@ubuntu.com> Fri, 07 Mar 2025 01:11:36 +0000
|
||||
|
||||
calamares-settings-ubuntu (1:25.04.17) plucky; urgency=medium
|
||||
|
||||
* [Lubuntu] Update welcome slides for Plucky.
|
||||
* [Lubuntu] Update welcome slides for Plucky.
|
||||
|
||||
-- Walter Lapchynski <wxl@ubuntu.com> Thu, 06 Mar 2025 10:23:08 +0000
|
||||
|
||||
|
5
debian/control
vendored
@ -7,18 +7,20 @@ Build-Depends: debhelper-compat (= 13),
|
||||
dh-sequence-qmldeps,
|
||||
cmake,
|
||||
extra-cmake-modules,
|
||||
fakeroot,
|
||||
intltool,
|
||||
libapt-pkg-dev,
|
||||
libcalamares-dev (>= 3.3.13-0ubuntu4),
|
||||
libkf6coreaddons-dev,
|
||||
libqt6svg6-dev,
|
||||
libyaml-cpp-dev,
|
||||
python3,
|
||||
qt6-base-dev,
|
||||
qt6-declarative-dev,
|
||||
qt6-l10n-tools,
|
||||
qt6-tools-dev,
|
||||
qt6-tools-dev-tools
|
||||
Standards-Version: 4.7.0
|
||||
Standards-Version: 4.7.2
|
||||
Homepage: https://code.launchpad.net/~ubuntu-qt-code/+git/calamares-settings-ubuntu
|
||||
Vcs-Browser: https://git.launchpad.net/~ubuntu-qt-code/+git/calamares-settings-ubuntu
|
||||
Vcs-Git: https://git.launchpad.net/~ubuntu-qt-code/+git/calamares-settings-ubuntu
|
||||
@ -74,6 +76,7 @@ Depends: calamares (>= 3.3.13-0ubuntu4),
|
||||
dracut-core,
|
||||
kdialog,
|
||||
keyutils,
|
||||
libglib2.0-bin,
|
||||
snapd-seed-glue,
|
||||
squashfs-tools,
|
||||
sudo,
|
||||
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.6 MiB |
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 72 KiB |
@ -1,2 +1,2 @@
|
||||
---
|
||||
batch-identifier: kubuntu-2404-${DATE}
|
||||
batch-identifier: kubuntu-2504-${DATE}
|
||||
|
@ -15,7 +15,7 @@ partitionLayout:
|
||||
onlyPresentWithEncryption: true
|
||||
mountPoint: "/boot"
|
||||
size: 4G
|
||||
- name: "kubuntu_2410"
|
||||
- name: "kubuntu_2504"
|
||||
filesystem: unknown
|
||||
mountPoint: "/"
|
||||
size: 100%
|
||||
|
@ -5,10 +5,6 @@ packages:
|
||||
name: "Element"
|
||||
description: "Matrix-based end-to-end encrypted messenger and secure collaboration app."
|
||||
snap: true
|
||||
- id: "virt-manager"
|
||||
name: "Virtual Machine Manager"
|
||||
description: "Desktop user interface for managing virtual machines through libvirt."
|
||||
snap: false
|
||||
- id: "krita"
|
||||
name: "Krita"
|
||||
description: "Graphics editor designed primarily for digital art and 2D animation."
|
||||
|
@ -29,7 +29,7 @@ if kdialog --warningyesno "${msg}"; then
|
||||
sed -i "/- welcome$/a \ \ - oemid" /etc/calamares/settings.conf;
|
||||
|
||||
# Enable OEM prep module
|
||||
sed -i "/- packages$/a \ \ - shellprocess@oemprep" /etc/calamares/settings.conf;
|
||||
sed -i "/- pkgselectprocess$/a \ \ - shellprocess@oemprep" /etc/calamares/settings.conf;
|
||||
|
||||
# Fix OEM UID
|
||||
sed -i "/- shellprocess@oemprep$/a \ \ - shellprocess@fix-oem-uid" /etc/calamares/settings.conf;
|
||||
|
@ -7,6 +7,10 @@
|
||||
tar xvzf /etc/calamares/oemconfig.tar.gz -C "$1" --strip-components=2;
|
||||
chown -R 1000:1000 "$1"/home/oem
|
||||
|
||||
# Ensure the desktop file is marked as trusted
|
||||
# See line 96 of scripts/casper-bottom/25adduser in src:casper as shipped in Plucky
|
||||
gio set /home/oem/Desktop/calamares-finish-oem.desktop metadata::trusted true
|
||||
|
||||
# Enable passwordless sudo for the OEM user, making sure this can be undone later
|
||||
mv "$1"/etc/sudoers "$1"/etc/sudoers.orig
|
||||
mv "$1"/etc/sudoers.oem "$1"/etc/sudoers
|
||||
|
@ -1,11 +1,15 @@
|
||||
#!/bin/bash
|
||||
# Starts the Kubuntu OEM Environment.
|
||||
export XDG_SESSION_CLASS="user"
|
||||
export XDG_SESSION_DESKTOP="KDE"
|
||||
export DESKTOP_SESSION="plasma"
|
||||
export QT_QPA_PLATFORMTHEME="kde"
|
||||
export BROWSER='sudo -H -u kubuntu firefox'
|
||||
|
||||
/usr/bin/kwin_x11 &
|
||||
/usr/bin/kwin_wayland --no-lockscreen &
|
||||
while [ ! -e "/run/user/$(id -u)/wayland-0" ]; do sleep 1; done
|
||||
/usr/bin/basicwallpaper /usr/share/wallpapers/Next/contents/3840x2160.png &
|
||||
sudo -E /usr/bin/calamares -D8 # This is intentionally *not* backgrounded.
|
||||
WAYLAND_DISPLAY="wayland-0" sudo -E /usr/bin/calamares -D8 # This is intentionally *not* backgrounded.
|
||||
# If it exits...
|
||||
killall basicwallpaper
|
||||
killall kwin_x11
|
||||
killall kwin_wayland
|
||||
|
@ -2,12 +2,12 @@
|
||||
modules-search: [ local ]
|
||||
|
||||
instances:
|
||||
- id: before_bootloader_mkdirs
|
||||
module: contextualprocess
|
||||
config: before_bootloader_mkdirs_context.conf
|
||||
- id: before_bootloader
|
||||
module: contextualprocess
|
||||
config: before_bootloader_context.conf
|
||||
- id: copy_vmlinuz_shellprocess
|
||||
module: shellprocess
|
||||
config: copy_vmlinuz_shellprocess.conf
|
||||
- id: logs
|
||||
module: shellprocess
|
||||
config: shellprocess_logs.conf
|
||||
@ -53,7 +53,7 @@ sequence:
|
||||
- displaymanager
|
||||
- networkcfg
|
||||
- hwclock
|
||||
- contextualprocess@before_bootloader_mkdirs
|
||||
- shellprocess@copy_vmlinuz_shellprocess
|
||||
- shellprocess@bug-LP#1829805
|
||||
- shellprocess@fixconkeys_part1
|
||||
- shellprocess@fixconkeys_part2
|
||||
|
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 144 KiB |
@ -1,2 +0,0 @@
|
||||
---
|
||||
options: [ "-f", "-H", "--hostonly-mode=sloppy" ]
|
@ -1,2 +1,2 @@
|
||||
---
|
||||
batch-identifier: lubuntu-2404-${DATE}
|
||||
batch-identifier: lubuntu-2504-${DATE}
|
||||
|
@ -15,7 +15,7 @@ partitionLayout:
|
||||
onlyPresentWithEncryption: true
|
||||
mountPoint: "/boot"
|
||||
size: 4G
|
||||
- name: "lubuntu_2410"
|
||||
- name: "lubuntu_2504"
|
||||
filesystem: unknown
|
||||
mountPoint: "/"
|
||||
size: 100%
|
||||
|
@ -10,10 +10,6 @@ packages:
|
||||
name: "Thunderbird"
|
||||
description: "Email, newsfeed, chat, and calendaring client."
|
||||
snap: true
|
||||
- id: "virt-manager"
|
||||
name: "Virtual Machine Manager"
|
||||
description: "Desktop user interface for managing virtual machines through libvirt."
|
||||
snap: false
|
||||
- id: "krita"
|
||||
name: "Krita"
|
||||
description: "Graphics editor designed primarily for digital art and 2D animation."
|
||||
|
@ -29,7 +29,7 @@ if kdialog --warningyesno "${msg}"; then
|
||||
sed -i "/- welcome$/a \ \ - oemid" /etc/calamares/settings.conf;
|
||||
|
||||
# Enable OEM prep module
|
||||
sed -i "/- packages$/a \ \ - shellprocess@oemprep" /etc/calamares/settings.conf;
|
||||
sed -i "/- pkgselectprocess$/a \ \ - shellprocess@oemprep" /etc/calamares/settings.conf;
|
||||
|
||||
# Fix OEM UID
|
||||
sed -i "/- shellprocess@oemprep$/a \ \ - shellprocess@fix-oem-uid" /etc/calamares/settings.conf;
|
||||
|
@ -7,6 +7,10 @@
|
||||
tar xvzf /etc/calamares/oemconfig.tar.gz -C "$1" --strip-components=2;
|
||||
chown -R 1000:1000 "$1"/home/oem
|
||||
|
||||
# Ensure the desktop file is marked as trusted
|
||||
# See line 96 of scripts/casper-bottom/25adduser in src:casper as shipped in Plucky
|
||||
gio set /home/oem/Desktop/calamares-finish-oem.desktop metadata::trusted true
|
||||
|
||||
# Enable passwordless sudo for the OEM user, making sure this can be undone later
|
||||
mv "$1"/etc/sudoers "$1"/etc/sudoers.orig
|
||||
mv "$1"/etc/sudoers.oem "$1"/etc/sudoers
|
||||
|
@ -2,12 +2,12 @@
|
||||
modules-search: [ local ]
|
||||
|
||||
instances:
|
||||
- id: before_bootloader_mkdirs
|
||||
module: contextualprocess
|
||||
config: before_bootloader_mkdirs_context.conf
|
||||
- id: before_bootloader
|
||||
module: contextualprocess
|
||||
config: before_bootloader_context.conf
|
||||
- id: copy_vmlinuz_shellprocess
|
||||
module: shellprocess
|
||||
config: copy_vmlinuz_shellprocess.conf
|
||||
- id: logs
|
||||
module: shellprocess
|
||||
config: shellprocess_logs.conf
|
||||
@ -57,7 +57,7 @@ sequence:
|
||||
- pkgselectprocess
|
||||
- dracutlukscfg
|
||||
- dracut
|
||||
- contextualprocess@before_bootloader_mkdirs
|
||||
- shellprocess@copy_vmlinuz_shellprocess
|
||||
- shellprocess@bug-LP#1829805
|
||||
- shellprocess@fixconkeys_part1
|
||||
- shellprocess@fixconkeys_part2
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 19 KiB |
@ -1,2 +1,5 @@
|
||||
[General]
|
||||
theme=KvGnome
|
||||
|
||||
[Applications]
|
||||
KvGnomeDark=calamares
|
||||
|
@ -1,2 +1,2 @@
|
||||
---
|
||||
batch-identifier: ubuntuunity-2404-${DATE}
|
||||
batch-identifier: ubuntuunity-2504-${DATE}
|
||||
|
@ -15,7 +15,7 @@ partitionLayout:
|
||||
onlyPresentWithEncryption: true
|
||||
mountPoint: "/boot"
|
||||
size: 4G
|
||||
- name: "ubuntu_unity_2410"
|
||||
- name: "ubuntu_unity_2504"
|
||||
filesystem: unknown
|
||||
mountPoint: "/"
|
||||
size: 100%
|
||||
|
@ -9,10 +9,6 @@ packages:
|
||||
name: "Thunderbird"
|
||||
description: "Email, newsfeed, chat, and calendaring client."
|
||||
snap: true
|
||||
- id: "virt-manager"
|
||||
name: "Virtual Machine Manager"
|
||||
description: "Desktop user interface for managing virtual machines through libvirt."
|
||||
snap: false
|
||||
- id: "krita"
|
||||
name: "Krita"
|
||||
description: "Graphics editor designed primarily for digital art and 2D animation."
|
||||
|
@ -26,7 +26,7 @@ if zenity --question --text="${msg}"; then
|
||||
sed -i "/- welcome$/a \ \ - oemid" /etc/calamares/settings.conf;
|
||||
|
||||
# Enable OEM prep module
|
||||
sed -i "/- packages$/a \ \ - shellprocess@oemprep" /etc/calamares/settings.conf;
|
||||
sed -i "/- pkgselectprocess$/a \ \ - shellprocess@oemprep" /etc/calamares/settings.conf;
|
||||
|
||||
# Fix OEM UID
|
||||
sed -i "/- shellprocess@oemprep$/a \ \ - shellprocess@fix-oem-uid" /etc/calamares/settings.conf;
|
||||
|
@ -7,6 +7,10 @@
|
||||
tar xvzf /etc/calamares/oemconfig.tar.gz -C "$1" --strip-components=2;
|
||||
chown -R 1000:1000 "$1"/home/oem
|
||||
|
||||
# Ensure the desktop file is marked as trusted
|
||||
# See line 96 of scripts/casper-bottom/25adduser in src:casper as shipped in Plucky
|
||||
gio set /home/oem/Desktop/calamares-finish-oem.desktop metadata::trusted true
|
||||
|
||||
# Enable passwordless sudo for the OEM user, making sure this can be undone later
|
||||
mv "$1"/etc/sudoers "$1"/etc/sudoers.orig
|
||||
mv "$1"/etc/sudoers.oem "$1"/etc/sudoers
|
||||
|
@ -2,12 +2,12 @@
|
||||
modules-search: [ local ]
|
||||
|
||||
instances:
|
||||
- id: before_bootloader_mkdirs
|
||||
module: contextualprocess
|
||||
config: before_bootloader_mkdirs_context.conf
|
||||
- id: before_bootloader
|
||||
module: contextualprocess
|
||||
config: before_bootloader_context.conf
|
||||
- id: copy_vmlinuz_shellprocess
|
||||
module: shellprocess
|
||||
config: copy_vmlinuz_shellprocess.conf
|
||||
- id: logs
|
||||
module: shellprocess
|
||||
config: shellprocess_logs.conf
|
||||
@ -53,7 +53,7 @@ sequence:
|
||||
- displaymanager
|
||||
- networkcfg
|
||||
- hwclock
|
||||
- contextualprocess@before_bootloader_mkdirs
|
||||
- shellprocess@copy_vmlinuz_shellprocess
|
||||
- shellprocess@bug-LP#1829805
|
||||
- shellprocess@fixconkeys_part1
|
||||
- shellprocess@fixconkeys_part2
|
||||
|