- For both shellprocess and contextualprocess, add a top-level key
"timeout" that defaults to 10 seconds (which it already did).
- Allows setting "global" timeout for command-lists, while still
allowing individual timeouts per-command.
- Setting timeout per global variable in contextualprocess is not
supported; that would restrict the possible space of comparisions,
while not supporting a global setting timeout seems reasonable enough.
Use instances if you need wildly variable timeouts and don't want to
set them individually.
- Replace plain StringList with a list of <String, timeout> pairs,
and run that instead. All code paths still use the default 10sec
timeout and there's no way to change that.
- Copy stdout from timed-out process into the output variable,
instead of just dumping it into the log file. This will
improve the user experience, too, because they will get some
feedback / explanation of what the process has done.
- add license file from libpwquality for provenance
- translate pwquality_strerror() into the PWSettingsHolder convenience class
- use Qt translations, since we'd otherwise also have to wire up, and
wire in, libpwquality gettext translations.
- Use shared_ptr and a helper class to hide away raw pointer use
from libpwquality. Provide a convenience C++ API.
- Simplify configuration through helper class.
Use the samegame example from the Qt Quick demos as a branding "slideshow".
Instead of watching slides go by, you can play samegame! Click on
"new game" to start, and then click on groups of same-colored balls to make
them go away -- at least two same-colored balls must be touching.
Once the exec step is done, the game vanishes automatically.
This is an additional example for #841
- Remove some superfluous intermediate defines
- baseFactory was not used (always Calamares::PluginFactory)
- Move DECLARATION and DEFINITIONS apart
- CALAMARES_PLUGIN_FACTORY_DEFINITION was redefined (identically)
- CALAMARES_PLUGIN_FACTORY_DECLARATION was redefined (identically)
- __VA_ARGS__ was constant
- Issue asks to make the setting more visible, which seems sensible to
me. It **is** kind of hidden away for those distro's that make
the setting visible (not everyone does).
- While here, add a tooltip explaining what it does.
FIXES#893
Allow running one or more commands based on the value of
a global configuration variable. This could, of course,
be done in a Python module with some custom code,
but for simple cases this is more straightforward
to configure through module instances.
Uses the CommandList developed for the ShellProcess
module to do the actual work.
FIXES#874
- Move CommandList so it can be used from more modules than
just ShellProcess
- Allow a CommandList to run itself. This centralizes
code for executing one or more commands and simplifies
the ShellProcess module.
Various small cleanups:
- mention instance id in log message
- code formatting / style
- This turns off the space-available check in the welcome module;
without libparted, always fail that check.
- Allows running the welcome module on OS without libparted.
- Also allow a single string instead of a list
- Add count() method to CommandList
- Drop over-engineering, add more logging
- Expand tests with some more examples
This is basically dummyprocess, except with an expanded configuration
interface so you can run 1 or more shell commands in the live
or target system with a suitable configuration file and instance
of shellprocess in settings.conf.
It can replace downstream modules that implement their own
process modules with a command, by an instance of shellprocess.
Back targetEnvCommand() with a more general runCommand()
that takes an argument selecting the location to run
the command in. This allows us also to use the same
API for running processes in the host during install,
as we do for running them in the target system.
One reason for this change is wanting to run (user-specified)
commands and independently from the global dontChroot setting,
run those commands in the live system or the target.
This changes the ABI of the DLL, since targetEnvCommand()
is no longer exported. Plugins will need to be recompiled.
- refactor targetEnvCommand() into more general runCommand().
- While here, allow host system commands to run even if
there is no global storage.
- provide convenience accessors for ProcessResult members
- Move explanation of process errors out of ProcessJob
- Move from ProcessJob to ProcessResult, so it can be
reused outside of ProcessJob (e.g. from ShellProcessJob).
- Add some convenience functions, too.
Make a function out of explaining-skipped-modules, and call it
not only after collecting all the modules, but also after
the feature summary, so that it's quite clear which modules
are skipped.
Scenario is this: you have no suitable installation devices on
your system (everything is mounted, or HDD has died), click through
to partition page, where you have all the buttons available, but no
devices in the list. The following actions then cause a crash:
- clicking "back"
- clicking any button
Prevent that:
- you can click "back", but if there is no device selected
nothing happens to the device state (no nullptr deref,
and no crash)
- button code is now more resilient to this scenario
- buttons are hidden until a device is available, so you
can't even click on them to trigger the code.
- remove hide-close-button hack
- refactor code in viewmanager for confirming quit
- hook up confirm-and-quit to WM close button
- also works for alt-F4 and other quit methods
- while here, update copyright year
FIXES#870
Modules may be skipped for different reasons: SKIP_MODULES
is the traditional approach to suppress some, but other modules
may have unmet build requirements (e.g. Plasma Look-and-Feel,
or the Partitioning module) and should be able to opt-out
of being built. For all those skipped, log it explicitly after
all the modules have been examined.
Only CMake-based (e.g. C++) modules support opting-out in this way.
This is meant to run one or more jobs based on specific global
configuration values; if could also be done by a Python
module with just some if's, but this one can be used with
just the config file and covers a bunch of use-cases.
- calculate a hash of the filename, and use that
- makes it possible to distinguish different screenshots
even when the image file is missing / badly configured
- most colors will be dreadful
Patch by Gabriel C. (@abucodonosor).
- use libcalamares functions
- no need to copy /etc/adjtime over we can run hwclock in chroot
since we have /proc , /sys , /dev , /run/* already bind mounted.
- added RTC and ISA probing methode ( see issue #873)
- we probe default from /dev/rtc* ,
- fall back to ISA
- still doesn't work we just print a BIOS/Kernel BUG message and continue
- NOTE: issue #873 is about broken ArchLinux kernel config but there
are HP boxes with real RTC problems no matter what kernel config
is used so let us be nice and don't error out..
FIXES#873
- 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.
Use dict methods, in particular d.get(k, v), to retrieve
the pretty_name() function (or None if it isn't there).
Using getattr() on a dict will not return values in the
dict.