16:23:24 [2]: WARNING (Qt): QThread::setPriority: Cannot set priority, thread is not running
Start the log widget's thread with a specific priority. This is
ignored on Linux anyway, but we'll avoid the setPriority() warning.
If the update-fs-label checkbox and drop-down depend on the
state of the format button, then set that up only once we're
done deciding on the format button.
When Netplan is installed in the target system:
In case NM is not yet set to be the default Netplan renderer (e.g. through a
/usr/lib/netplan/00-network-manager-all.yaml file shipped by an installed
package), create the /etc/netplan/01-network-manager-all.yaml configuration
and copy over all other Netplan configuration from the installer system.
When using BTRFS multiple subvolumes exist and whilst iterating them the
partition["mountPoint"] is inadvertently changed due to taking a
reference rather than a copy.
Closes: issue #2281
When running a command in the chroot, don't set TMP (and similar)
variables because those directories might nog make sense in the
target (yet).
FIXES#2269
Use case would be customization of default modules, eg packagechooser requires compat/Variant.h and packages/Globals.h to compile in the calamares-extension repo
Signed-off-by: artoo <artoo@artixlinux.org>
- the prettyName() function returns names, labels. Use @title context.
- the prettyDescription() is for the summary page. Use @info context.
- the prettyStatus() is for status during installation. Use @status context.
While here, tighten up the wording some.
Otherwise starting in one language will never change the
formatting of percentages when the language changes
later (example: Turkish writes %30, while Dutch writes 30%).
FIXES#2258
The comment and examples above the mountOptions already indicate
zstd:1 for compression. Empirically, this has proven out to be a
reasonable default choice and should be actually used in the default
configuration.
The usage of noatime has subtle negative impacts on the system,
including breaking various utilities that rely on that information.
If a user or distribution explicitly chooses this, then they
acknowledge this problem and account for it, but it should not be
an uninformed default.
It's left in place for swap because it does not matter there and
likely reduces thrashing for swap files.
This adds support for Clear Boot Manager to handle the bootloader installation and configuration.
When this option is selected in the bootloader.conf, clr-boot-manager will be used to install the bootloader (systemd-boot on EFI systems). If the system is non-EFI, Grub must be installed first, because clr-boot-manager doesn't do that, despite it running grub_mkconfig after.
Signed-off-by: Evan Maddock <maddock.evan@vivaldi.net>
This attempts to locate the presense of the crypt_gensalt function in the crypto library in use. Many distributions have switched to libxcrypt, which provides this function. This means that Calamares can use the native library implementation instead of generating password salts itself, which, depending on the distro's configuration, may be more secure.
If the function can not be found, fallback to the current method of generating password salts.
Signed-off-by: Evan Maddock <maddock.evan@vivaldi.net>
with 2588d1e796
KPMCore is Qt6 only, so any version from 24.01.75 on is Qt6, no need to check for Qt version this way
add missing NO_CONFIG to summaryq
All unknown-variants return None, but this only
happens in practice with an empty variant (e.g.
a configuration key that is empty in the YAML).
FIXES#2237
While this isn't useful in production, it makes tests a lot
simpler to write since you don't have to wrestle with
creating new GS objects in order to start fresh.
From inside Calamares, register libcalamares to the
interpreter by hand; from external Python processes
the regular extension library hooks are called.
Tested by running ./build/localmodule dummypython
(which means that the shared library is not present
in the current directory, so then `import libcalamares`
fails if the module is not already registered --
a test scenario that previous attempt at module
import missed).
bqi is one possible name of Luri / Lhur language,
as far as I can tell -- there is also Northern Luri,
which is supported by Qt and has code lrc.
ie is Interlingue, which Qt maps to C locale.
Work around that by mapping it to interlingua.
When setting up the application, output goes to stdout,
so do it again once the logfile is configured, so that
these specific settings are in the log file as well.
The filesystems may contains huge sparse files (for example the docker
data file at path /var/lib/docker/devicemapper/devicemapper/data that is
100G big).
These files causes rsync to fail if the target file-system is too small
to copy them.
The option --sparse tells rsync to turn sequences of nulls into sparse
blocks.
--sparse, -S
Try to handle sparse files efficiently so they take up less
space on the destination. If combined with --inplace the file
created might not end up with sparse blocks with some
combinations of kernel version and/or filesystem type. If
--whole-file is in effect (e.g. for a local copy) then it will
always work because rsync truncates the file prior to writing
out the updated version.
Note that versions of rsync older than 3.1.3 will reject the
combination of --sparse and --inplace.
This adds the rsync short option -S to let rsync handle sparse files.
Fixes:
18:03:36 [6]: static CalamaresUtils::ProcessResult CalamaresUtils::System::runCommand(CalamaresUtils::System::RunLocation, const QStringList&, const QString&, const QString&, std::chrono::seconds)
Running "env" ("sync")
.. Finished. Exit code: 0
.. Target cmd: ("sync") output:
rsync: [receiver] write failed on "/tmp/calamares-root-81qie5d1/var/lib/docker/devicemapper/devicemapper/data": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(378) [receiver=v3.2.3]
Signed-off-by: Jeremy Whiting <jpwhiting@kde.org>
When testing with a / mountPoint set to subvolume: "" it tried and
failed to mount the subvolume:
.. Running ("mount", "-t", "btrfs", "-o", "subvol=,", "/dev/sda3", "/tmp/calamares-root-ylvhpxys/")
.. Target cmd: ("mount", "-t", "btrfs", "-o", "subvol=,", "/dev/sda3", "/tmp/calamares-root-ylvhpxys/") Exit code: 32 output:
mount: /tmp/calamares-root-ylvhpxys: wrong fs type, bad option, bad superblock on /dev/sda3, missing codepage or helper program, or other error.
This fix makes the following config in mount.conf let us drop out of any
subvolume handling:
btrfsSubvolumes:
- mountPoint: /
subvolume: ""
The Calamares Manager should not be a singleton; it is needed
in multiple threads (e.g. from QML). It can have a singleton
Private manager that caches and shares things, though.
- (syntax) errors in the pre-script or the module's script
should not trigger a fatal error in Calamares (i.e. terminate
called because of uncaught Python exception).
- Log more clearly where the error is being caught.
Add a target that resembles what you would get from "normal"
use of pybind11 when following the examples. Link with it.
Drop Boost:Python sources from libcalamares.
use alias for all -qt6.qrc QML files, so no change is needed for Qml.cpp searchQML files
most QMl does not need QtGraphicalEffects
keyboardq duplicate all .xml files too
The described behavior of the "Replace" option was incorrect, it does not keep the same filesystem type that the partition already had, rather it uses the `defaultFileSystemType` value. See:
https://github.com/calamares/calamares/issues/1970
Build failure looks like
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld:
src/modules/users/CMakeFiles/users_internal.dir/users_internal_autogen/mocs_compilation.cpp.o:
relocation R_X86_64_32 against symbol `_ZN6Config16staticMetaObjectE' can not be used when making a shared object; recompile with -fPIC
/usr/lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/bin/ld: failed to set dynamic section sizes: bad value
This was the original reason for starting to change the library type.
The build failure on openSUSE is real, but the "fix" switched
the internal library accidentally to SHARED, without installing it.
It shouldn't be a library at all, really (if STATIC won't do).
FIXES#2203
1- Need to be careful switching dependencies from REQUIRED to OPTIONAL
2- Don't do ECM REQUIRED all over the place
3- Workaround neon CI not having KCrash (which translated to KF5 not
found, which translated to a missing REQUIRED dependency, see 1).
x86_64-suse-linux/bin/ld: libusers_internal.a(mocs_compilation.cpp.o):
relocation R_X86_64_32 against symbol `_ZN6Config16staticMetaObjectE'
can not be used when making a shared object; recompile with -fPIC
x86_64-suse-linux/bin/ld: failed to set dynamic section sizes: bad value
collect2: error: ld returned 1 exit status
make kpmcorehelper usable for both kf5 & 6, though no section added yet dealing with set to NOT for Qt6
adjust CalamaresConfig to not be hardcoded to kf5
one more var needed in Variant.h, used in PartitionInfo.cpp
adjust QVariant & QtConcurrent use
- On FreeBSD, no KF6 was available
- On KDE Neon Unstable, there are somewhat wonky KF6 packages available
- Adjust CMake to find the KDE Neon versions, then fix the C++ code
Since we now rely on the layout1 mode being set from the config, we need
to defer the initial keymap detection until after that's initialized.
Signed-off-by: Hector Martin <marcan@marcan.st>
Branding SVGs were rendering at 1x on Wayland and then scaling up to the
display DPI, which looks ugly. To get this to work properly we need to
explicitly multiply the devicePixelRatio into the dimensions that
QPixmaps render at, since QPixmap is DPI-unaware.
This probably only takes care of a subset of the problem codepaths, but
at least it makes the sidebar logo and welcome screen work properly.
Signed-off-by: Hector Martin <marcan@marcan.st>
Empty example config files break tests; there should be at
least a single key in there (for instance, *bogus*, but
setting a flag to the default value is also acceptable)
On Fedora 38 (and probably others), this step fails with:
passwd -dl root
passwd: Only one of -l, -u, -d, -S may be specified.
Use usermod to wipe and disable the root password instead, which should
work properly. We use '!' (opinions seem to differ on how to mark
disabled/unused accounts, but all of '*' '!' '!!' should have the same
effect in practice).
Signed-off-by: Hector Martin <marcan@marcan.st>
Copy&paste error caused setting the layout to fail for non-ASCII layouts
with an alternate layout/variant.
Fixes: 812d86130 (\"[keyboard] Add support for setting the layout via locale1\")
Signed-off-by: Hector Martin <marcan@marcan.st>
Remove anything in parentheses, and also drop the "Apple" prefix for
Apple machines. This converts:
"Apple MacBook Air (13-inch, M2, 2022)"
into:
"MacBookAir"
which is a lot more reasonable.
Other vendors could be added as needed (it's inconsistent whether DT
platforms prefix the model with the vendor or not).
Signed-off-by: Hector Martin <marcan@marcan.st>
Non-DMI platforms may have a device tree instead (e.g. many embedded
devices, Apple Silicon Macs). If we find a model string in the DT, use
that as a fallback when DMI is not available.
Signed-off-by: Hector Martin <marcan@marcan.st>
If there is a valid keyboard model set in the system already, keep it.
This allows distributors to preconfigure the correct model if known.
Signed-off-by: Hector Martin <marcan@marcan.st>
If the system has already pre-configured a sensible keyboard layout, we
do not need to guess based on the locale. Add a config option to keep
the existing keyboard layout as the default. This should work on both
XKB/X11 and locale1 modes.
Signed-off-by: Hector Martin <marcan@marcan.st>
If Calamares is running with no root path and we are using locale1 to
manage the keyboard configs, then the service has already updated the
X11 and VConsole keymap configs for us. In that case, we should not
touch the config files ourselves.
Signed-off-by: Hector Martin <marcan@marcan.st>
Getter counterpart to the previous commit, to support using locale1 to
fetch the current keyboard config.
Signed-off-by: Hector Martin <marcan@marcan.st>
setxkbmap only works on X11/XWayland, and even on XWayland does not
correctly change the Wayland keyboard layout.
The "modern" way to control the system keyboard layout is via the
locale1 DBus interface (or the localectl frontend). On compositors like
KWin, this will update the keyboard layout on the fly, which is what we
want.
Implement support for setting the layout/model configs using locale1.
This is enabled by default when Calamares runs under Wayland, and can be
controlled via a config setting.
Signed-off-by: Hector Martin <marcan@marcan.st>