KPM docs misreport Partition::available to be in sectors, when it's
actually in bytes. Because of this, available space estimates were
completely off and resizing was allowed even when there's no room to
do it. This used to put the resize widget in all sorts of weird,
visually broken states.
CAL-188 #comment Does this still happen with current master?
URL is a variable set in branding.desc, distros cna link to a Known Issues page
text for the URL is also possible to set in branding, known issues is default
advantage is any text possible as distros see fit
disadvantage, not part of translated strings
if most agree, Known Issues can be set as hard coded text, not in branding.desc
This allows us to make GlobalStorage a QObject, with disabled copy
constructor. And thanks to this change, GlobalStorage now emits
changed() every time an insert or remove is performed.
- Note (Kevin Kofler): Grub will fall back to a LILO-style installation,
using blocklists to reference the blocks inside a larger partition,
with the same caveats LILO had (need to reinstall whenever you do
anything to the partition that will move those blocks around).
- Setting flags (EF00, EF02) or creating grub boot partition should be
handled within 'partition' module.
Copy the setting into the global storage. Make the EraseDiskPage in the
partition module and the grub and bootloader modules read it from there.
Do not hardcode /boot as the path anymore.
I set the default path to /boot/efi because I think that's the most
common setting. At least Fedora and Debian use that path. But we can
change the default setting if you think I'm wrong, as long as it remains
configurable.
There is no separate setting for efi_directory_firmware anymore. The EFI
firmwares expect that directory to always be in the "EFI" path in the
EFI System Partition. Distributions using /boot/efi actually have that
directory under /boot/efi/EFI.
- until we find a better solution
- efiDirectory should be managed by GlobalStorage
- efiDirectory is needed followed modules: bootloader, grub, partition
Unfortunately, dnf treats it as an error if we try to remove a package
that already did not exist. This means that, e.g., if we try to remove
calamares itself, but calamares was not installed on the base image,
only in the overlay, we will fail with an error. So, as long as we do
not have a better solution, we ignore the exit code of "dnf remove"
entirely.
(yum does not show this behavior, it returns success when the package to
remove is already not installed.)
When removing packages with yum or dnf, pass the --disablerepo=*
(disable all online repositories) and -C (run from cache) arguments.
Package removals do not normally require network access, and this
measure saves time and bandwidth and prevents possible unnecessary
errors (e.g., if we do not have active network access, or if there is
some problem with the mirrors).
Having swap set at "none" makes hibernating not possible.
AFAIK, no filesystem/partition sets mountpoint as "none" nor has any other besides swap an empty mountpoint at the stage where the fstab module is called.
Tests so far show this change creates a working fstab when using a swap partition.
From Arch wiki:
--target=i386-pc instructs grub-install to install for BIOS systems only. It is recommended
to always use this option to remove ambiguity in grub-install.
If the efiBootloaderId is set, it is used as the --bootloader-id when
installing grub-efi. The rationale is pretty much the same as for the
Gummiboot case.
If the setting is not used, the --bootloader-id is determined from the
branding's bootloaderEntryName (as before).
mount: Remember the extraMounts (and extraMountsEfi, if applicable) in
the global storage (as "extraMounts").
unpackfs: Read the extra mounts from the global storage to generate the
exclude list instead of trying to detect it from the "mount" command's
output, because the latter also includes normally-mounted destination
partitions.
This makes having separate partitions for non-/ mountpoints work again.
Don't run xdg-icon-resource and update-desktop-database in the basic
setup for KDM. These tools have absolutely nothing to do with KDM. KDM
does not ship any icons in the hicolor theme, nor a .desktop file (let
alone one that handles any MIME type, the only case in which
update-desktop-database is needed).
I know the original shell script from Manjaro called these when setting
up KDM, but this is really the wrong place. If you need to call these,
they need to go into another module, and you also have to call them
independently of the selected display manager.
The default session setting in GDM is per user. Therefore, it is not of
much use to set it for the gdm user. (Nobody will log in as "gdm".)
Unfortunately, there seems to be no systemwide setting for the default
session, the AccountsService provides no such setting, and GDM just
hardcodes the fallback to use if it is not set in the AccountsService.
(GDM first tries "gnome", and if that is not available, it picks the
first session in the alphabet.)
Therefore, the best we can do right now is to set the default session
for the autoLoginUser. This is the case where it matters the most
anyway. We would also need the username of a non-autologin user in the
global storage to do any better.
Remove the hack that symlinks /usr/lib/lightdm/lightdm/gdmflexiserver as
/usr/bin/gdmflexiserver.
Upstream LightDM removed their gdmflexiserver implementation in 1.9.4 in
2013:
http://bazaar.launchpad.net/~lightdm-team/lightdm/trunk/revision/1841
In addition, LightDM was already adding the path containing its
gdmflexiserver implementation to PATH, so there was no use symlinking it
into /usr/bin, potentially overwriting the original version from GDM.
This must have been a workaround for an ancient LightDM version that
didn't even do that.
And finally, the hardcoded /usr/lib/lightdm/lightdm/gdmflexiserver path
was wrong on Fedora to begin with (we had used
/usr/libexec/lightdm/gdmflexiserver, but now the file is completely gone
because upstream removed it).
If a display manager is in the list, but not installed, do not return an
error message, but only print a debugging message and proceed.
This allows distributions that support multiple display managers to list
them all, independently of what the concrete live image will be using.
It turns out that I had messed this up. Issue #173 was addressed anyway
by the followup fix to unpackfs to only exclude the directories that are
actually mounted (which does work), but with this fix, /run is now
handled as intended.
PS: Should the mount job not check the return value of
libcalamares.utils.mount instead of failing silently?
Do not use a YAML list when only a single entry actually works. (It was
just silently using the last one.)
Create the default_desktop_environment DesktopEnvironment tuple. Before,
the setting was silently ignored altogether.
This reverts commit 9c799b32e9.
This was already right before. default_desktop_environment.desktop_file is not a
variable, it's a field of a variable. This commit is not valid Python:
"SyntaxError: invalid syntax".
The module creates /etc/machine-id and/or /var/lib/dbus/machine-id. By
default, it is enabled and creates both files, making the latter a
symlink to the former.
Add the following flags to rsync:
* `-H, --hard-links preserve hard links`
* `-A, --acls preserve ACLs (implies --perms)`
* `-X, --xattrs preserve extended attributes`
(i.e., the preservation options not already implied by -a).
Also exclude the special paths that do not make sense to rsync, because
reading the extended attributes from those can cause errors, at least
with SELinux enabled.
This fixes installation of Fedora systems with SELinux enabled.
If /etc/locale.gen (or the configured localeGenPath) does not exist,
assume that all the supported languages are already built into the
locale archive, and retrieve the list from "locale -a".
The list will then contain lines with only the locale rather than
locale + space + encoding, but that should not affect any of the rest of
the code. UTF-8 locales will still contain the string "UTF-8" (as part
of the ".UTF-8" suffix), we will not write a locale.gen file if we don't
have locale-gen, and everything else just strips away the encoding.
Some languages have 3-letter codes. So instead of splitting the output
of QLocale::name, use QLocale::language and the static
QLocale::languageToString.