WriteOkay(Okay, output, "Immediate-Configuration: yes\n");
else if ((flags & Request::NO_IMMEDIATE_CONFIGURATION) != 0)
WriteOkay(Okay, output, "Immediate-Configuration: no\n");
+ else if ((flags & Request::ALLOW_TEMPORARY_REMOVE_OF_ESSENTIALS) != 0)
+ WriteOkay(Okay, output, "Allow-Temporary-Remove-of-Essentials: yes\n");
return WriteOkay(Okay, output, "\n");
}
/*}}}*/
else
flags |= Request::NO_IMMEDIATE_CONFIGURATION;
}
+ else if (ReadFlag(flags, line, "Allow-Temporary-Remove-of-Essentials:", Request::ALLOW_TEMPORARY_REMOVE_OF_ESSENTIALS))
+ ;
else
_error->Warning("Unknown line in EIPP Request stanza: %s", line.c_str());
{
IMMEDIATE_CONFIGURATION_ALL = (1 << 0), /*!< try to keep the least amount of packages unconfigured as possible at all times */
NO_IMMEDIATE_CONFIGURATION = (1 << 1), /*!< do not perform immediate configuration at all */
+ ALLOW_TEMPORARY_REMOVE_OF_ESSENTIALS = (1 << 2), /*!< just as the name suggests, very special case and dangerous! */
};
}
flags |= EIPP::Request::NO_IMMEDIATE_CONFIGURATION;
else if (_config->FindB("APT::Immediate-Configure-All", false))
flags |= EIPP::Request::IMMEDIATE_CONFIGURATION_ALL;
+ else if (_config->FindB("APT::Force-LoopBreak", false))
+ flags |= EIPP::Request::ALLOW_TEMPORARY_REMOVE_OF_ESSENTIALS;
if (EIPP::OrderInstall(planer.c_str(), this, flags, nullptr))
return Completed;
DIE("Parsing the request failed!");
_config->Set("APT::Immediate-Configure", (flags & EIPP::Request::NO_IMMEDIATE_CONFIGURATION) == 0);
_config->Set("APT::Immediate-Configure-All", (flags & EIPP::Request::IMMEDIATE_CONFIGURATION_ALL) != 0);
+ _config->Set("APT::Force-LoopBreak", (flags & EIPP::Request::ALLOW_TEMPORARY_REMOVE_OF_ESSENTIALS) != 0);
EDSP::WriteProgress(5, "Read scenario…", output);
informational string specifying to which planer this request was send
initially.
-- *Immediate-Configuration:** (option, unset by default) A boolean value
- defining if the planer should try to configure all packages as quickly
- as possible (true) or shouldn't perform any kind of immediate
+- **Immediate-Configuration:** (option, unset by default) A boolean
+ value defining if the planer should try to configure all packages as
+ quickly as possible (true) or shouldn't perform any kind of immediate
configuration at all (false). If not explicitly set with this field
the planer is free to pick either mode or implementing e.g. a mode
which configures only packages immediately if they are flagged as
`Essential` (or are dependencies of packages marked as `Essential`).
+- **Allow-Temporary-Remove-of-Essentials** (optional, defaults to `no`).
+ A boolean value allowing the planer (if set to yes) to temporarily
+ remove an essential package. Associated with the APT::Force-LoopBreak
+ configuration option its main use is highlighting that planers who do
+ temporary removes must take special care in terms of essentials. Legit
+ uses of this option by users is very uncommon, traditionally
+ a situation in which it is needed indicates a packaging error.
+
#### Package universe