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.
Fixes#110.
This is based on Daniel Hillenbrand's submissions, but it makes the same
adjustments already done in the bootloader module that's already merged:
* Put detect_firmware_type into the grub module itself until a better
place is found.
* Get the distribution name from the branding configuration and use the
file_name_sanitizer on it.
* Get the grub-install executable name from the module configuration.
It also fixes a Python syntax error in the original submission.
Convert Python bool type from/to C++/QVariant bool (QVariant::Bool) in
PythonHelper::variantToPyObject and PythonHelper::variantFromPyObject.
This fixes the "override" option and any booleans in the "defaults" list
in grubcfg.conf.
Also adds a grubcfg.conf with the following settings:
* overwrite: If set to true, always creates /etc/default/grub from
scratch even if the file already existed. If set to false, edits the
existing file instead. The default is "false".
* defaults: Default entries to write to /etc/default/grub if it does not
exist yet or if we are overwriting it. Note that in addition,
GRUB_CMDLINE_LINUX_DEFAULT and GRUB_DISTRIBUTOR will always be
written, with automatically detected values. The default in the code
is empty. The shipped grubcfg.conf currently reproduces the default
settings from the Fedora installer Anaconda.
Fixes#128.
Don't talk about "Windows 7 programs, documents, photos, music, and
other files" when we actually have no idea what the other operating
system is or when there are multiple ones.
The method creates a map called "branding" in the global storage, and
inserts an entry for each of the branding strings. This makes the
branding information accessible to the Python modules.
The method is called by CalamaresApplication::initJobQueue.
This is necessary because the Branding class is in libcalamaresui, so
Python modules cannot access it directly.
Point the lib/calamares/libcalamares.so symlink for the Python modules
directly to the versioned lib/libcalamares.so.VERSION library rather
than to the lib/libcalamares.so symlink. This allows distributions to
install the lib/libcalamares.so symlink to a development package and
only ship lib/libcalamares.so.VERSION and lib/calamares/libcalamares.so
in the runtime package. It is also marginally faster (because only one
level of symlinks has to be resolved instead of two).
(I know this works because I have been manually fixing up this symlink
in the Fedora specfile so far.)
locale hardcoded to en_US until local globalstorage is available
run pep8 on bootloader main.py, plain switch from subprocess to chroot_call fails for gummiboot call
add hibernate option to .conf
create a fallback entry in gummiboot menu
re-add firmware to globalstorage, simplifies this module, will be needed to add more OS to gummi
This is implemented as a new SetKeyboardLayout job that does the work.
Portions of the code are adapted from systemd-localed's source code,
which is under a compatible license (LGPLv2.1+, can be converted to our
GPLv3+ license). I ported it from C to to C++/Qt and made some minor
tweaks to the mapping logic (from X11 to vconsole layouts) though.
Fixes#31.
Tested on a Fedora Remix (Kannolo 21) with the default module settings
(finds the converted X11 keymaps for the virtual console) and with
convertedKeymapPath: "" (does the legacy keymap conversion as expected).
This also fixes some issues with the previous code:
* The code for LightDM only supported Xfce.
* The case where multiple desktop environments are installed was not
handled in a good way.
* We now also check that the xsession definition actually exists. This
allows handling the case where upstream changed the xsession
definition's name without renaming the invoked binary.