- Implement various ways of getting the LNF; the process-based one
uses a recent CLI-tool from the Plasma developers.
- Fill the UI with (meaningless) LNF package IDs.
Do a better job determining what the arguments could mean; this supports
lazy devlopers who don't want to pass in full paths to all kinds of things.
Simple invocation can now be:
testmodule.py <modulename> - +
to read <modulename>.conf from src/modules/<modulename>/
This, kids, is why you don't switch writing C++ and Python too often.
The C++ code isn't a syntax error in Python, although this would fail
at runtime.
Update documentation, add a new key *skip_if_no_internet* to support
systems that **recommend** having an internet connection (but don't
require it), and which also use the packages module. This prevents
a long delay while the package manager tries to access the internet
and times out (repeatedly).
Existing configurations are unchanged.
Root is always selected, can't be unselected, and has its own explicit
constructor and name. This resolves issue reported where unchecking
all *visible* groups caused the root to be unchecked, after which
hidden-but-still-selected subgroups were not installed.
Reported by crazy@
Following KDE Pholio M116, switch to using a radio button; instead
of 4 individually toggle-able settings, use a "level" indicator
to select none, install, machine, user .. each of which implies
the previous levels. Each level is individually enable-able from
the distro side.
If a subgroup is hidden, then it should be considered
selected if its parent is selected or partially-selected.
If the parent group is totally unselected, then the hidden
subgroup shouldn't be installed either. This allows putting
required-packages into a group, without cluttering the
interface.
FIXES#864
While walking up the tree, only switch the selectedness states
of parents with children. This avoids the case where a parent
has a first subgroup that is hidden -- in which case the
parent ends up with no children, and is unselected even though
it is marked as selected in the config file.
FIXES#864
Each kind of tracking has an associated webpage / URL describing
the policy for that tracking. The Calamares User Guide has some
generic information. When the user clicks on the Help (?) button
in a tracking-option block, go to that URL.
- Enable translations, substitute ShortProductName into string,
- Simplify code for enabling tracking option blocks,
- Set checkboxes based on configuration,
- Read checkboxes when leaving page,
- Don't stretch the tracking option blocks.
- add icons for graphical display of actions
- extend description of tracking options
- add debug logging
- enable next button
- show/hide tracking options based on configuration
- m_groups is only set to a non-nullptr value when data is received
and fully processed,
- avoid nullptr dereference when paging *back* from a netinstall
page that hasn't loaded groups data.
FIXES#859
- Document netinstall.conf a little,
- Add setting *required* which influences whether next is enabled or not
in case of missing or corrupt data,
- Enable *next* button only once some (any!) data is received.
This can be used to disallow stepping past the netinstall step when
there is no data (e.g. internet has failed between the welcome page
and the netinstall page).
- Warn here since it may not be what the Distributor want.
Having wrong groups may result in broken permissions for
created user.
- explain what defaultGroups is for in users.conf
Welcome is only interested in checking partitions, not
in resizing them, so stick to one library. This will
become moot when the checks move to partitionmanager
and KPMCore can do the things.
- If there's no scripts involved in a package for netinstall, just
name it without the scripts; this lets the packages module
optimize to fewer package manager calls.
- Each element of the (list) packageOperations needs to be a
package operation, which is a dictionary with keys (identifying actions)
and lists of packages (which may be strings or script-info dictionaries).
- this applies to new partitions; existing documentation erroneously
said this happens with Replace as well,
- follow up on Andrius manual-partition PR with documentation that
manual mode doesn't switch to this FS when editing existing partitions.
In the timezone widget, locations in the far north -- Inuvik,
Thule, Longyearbyen -- were displayed too far south, because the
map location calculation assumes a linear gradient, which places
90 degrees north at about 70 degrees. Change calculation to
pretend the world is flat south of 62 degrees north, and then
'bend' the remaining 28 degrees of latitude to the top of the
image. This puts most places in the right spot, although Yellowknife
is now on the south shore of Great Slave.
Fort Nelson should be north of Dawson Creek, too -- the math still
needs a little work.
While here, put Antarctica in the south, otherwise Rothera keeps
showing up in Greenland.
- it doesn't make any sense to have restartNowCommand and fallback
set to the same command.
- also fallback should be something generic every init supports
- Introduce a map 'passwordRequirements' in users.conf,
which is a list of named requirements. There are only
two settings right now, min and max length, but
additional checks can easily be added in UsersPage.cpp
by defining additional lambda's to check the given
password string.
- Add PasswordCheck instances as needed, with functions
to check acceptability and to produce messages on rejection.
- Documentation in the users.conf file itself.
- In passing, refactor setting of pixmaps on labels.
FIXES#790
Resolves issue where 'linuxswap' is translated to 'Linux-Swap',
for instance. FileSystem::name() provides a translated name,
not an untranslated one.
This should move to KPMCore.
FIXES#797
There is no need to force folks haing a random group
bc that is a Distro think. SDDM/GDM works just fine without
having a group for the user to autologin.
Just setup a group in users.conf .. is why we have a configuration
option for that.
- deleteLater() doesn't like nullptr (produces a warning, but is harmless)
- reparenting across threads doesn't work, comment on that but leave
it in, since this may be relevant for memory management.
- both NetInstall (group data) and Locale (GeoIP) use network
data returned as a source of YAML data. Try to explain
parsing errors for both.
FIXES#786
When NetInstall receives YAML data, handle parser errors more gracefully:
show line and column, but because it's network data (not in a local file),
do some work to print out the actual data received.
FIXES#786
If the summary widget is large, it gets a scrollbar. This looks really
weird, so prefer to grow the installer window instead. Discussed with
@sitter and settled on this solution.
ViewSteps can signal the ViewManager that they need more space (in pixels),
which may or may not be honored.
FIXES#778
This was WIP, working on the fstab / UUID problem, but stands on its
own; since others are zooming in on the fstab / UUID problem, close
down the branch.
This is experimental, off-by-default, code for developing a telemetry /
tracking configuration module. It is preliminary work for issue #628,
but also for KDE Neon configuration. Any telemetry should conform to
the KDE Telemetry Policy [1] or similar Free Software telemetry policy
(e.g. the Mozilla one).
[1] https://community.kde.org/Policies/Telemetry_Policy
Initial idea is to distinguish three kinds of tracking:
- installs. This tracks that OS <foo> has been installed somewhere.
It might send some machine information to a remote server.
- machines. This enables some kind of machine tracking in the
installed system, for instance it could enable popcon on
Debian, or periodic phone-home-pings.
- users. This enables some kind of telemetry / tracking on the
installed user in the system.
A simple and transparent setting is to enable install-tracking and set
it to opt-in, and disable machine and user tracking. Explain to the
user that <foo> would like to know when <foo> is installed, and that
the following information <d1>, <d2> will be sent to <url> in accordance
to the <foo> telemetry policy at <url2>.
Work in this branch is subject to VDG review for the visuals, and
privacy oversight by whatever group is responsible for <foo> privacy.
Note that this module makes it *possible* for telemetry configuration
to be visible inside the installer; what distro's do with telemetry
already is entirely outside the scope of this configuration module.
- Check for 'list' when it's actually a 'dict' is strange.
Reverse logic to consider 'str' a package name and everything
else is special.
- Refactor to handle the difference between package names and
packages-with-script-data in one place.
- Add code and config documentation.
- Switch sample configurations to dummy-backend.
When testing Python modules, passing option --lang should also
set the global 'locale' (to a BCP47 string, but hey) like it
already sets localeConf.LANG.
- For Boot and Device info widgets, add a retranslateUi() method,
since the labels change not only in response to translation
events but also UI events.
FIXES#779
- remove Job.gettextPath
- add libcalamares.utils.gettext_path()
- add libcalamares.utils.gettext_lang()
- modify examples in main.py
- add some gettext debug-output from dummypython
- correct namespace mis-labeling
- provide two forms of GlobalStorage
- regular use, has a JobQueue with storage
- testing use, creates GlobalStorage separately, provide
independent access to that for Python.
- Didn't run at all (at least since v3.1) because of mismatch between
GlobalStorage constructor arguments and use; special-case None
in the C++ code to allocate a new GlobalStorage object.
Add description of language and number formats to pretty status.
This is shown in the summary page. Refactor a little to produce
the strings only in one place. Constify methods.
FIXES: #564