updater issueshttps://gitlab.nic.cz/turris/updater/updater/-/issues2019-05-06T17:47:31+02:00https://gitlab.nic.cz/turris/updater/updater/-/issues/30Support for linking statically2019-05-06T17:47:31+02:00Ghost UserSupport for linking staticallyMake sure we can link the updater statically. This mostly means making sure `make STATIC=1` works and integrating it into the OpenWRT build root.
- [x] Depends on turris/openwrt#10 (Packages for statically linked libraries)Make sure we can link the updater statically. This mostly means making sure `make STATIC=1` works and integrating it into the OpenWRT build root.
- [x] Depends on turris/openwrt#10 (Packages for statically linked libraries)https://gitlab.nic.cz/turris/updater/updater/-/issues/237Implement some cleanup process2019-05-06T17:47:31+02:00Karel KociImplement some cleanup processCurrently in lua we have some sort of exceptions implementation but we have nothing hooked up to it do do real cleanup in most of the cases. And in C we in most cases just call die, specially in cases when we receive error from Lua. This...Currently in lua we have some sort of exceptions implementation but we have nothing hooked up to it do do real cleanup in most of the cases. And in C we in most cases just call die, specially in cases when we receive error from Lua. This is just bad, with any error small or big we do no cleanups and if we expect some sort of cleanup (like I don't know running postupdate hooks or closing status files and more) it is not executed and in most unexpected ways skipped.
So solution should be some global cleanup stack in utilities. Idea probably should be something where you can register (and unregister) functions that would be called when updater is going to exit. This should simplify for example main functions a lot (because right now it's just a pile of error handling shit) and should ensure that even if we trigger exit from some function that is no way relevant but should result to propper exit that we do propper cleanup and then exit.https://gitlab.nic.cz/turris/updater/updater/-/issues/104Postponed updates2019-05-06T17:47:30+02:00Ghost UserPostponed updatesSupport a mode where the updater runs, emails what it wants to do and then it either waits for certain amount of time or waits for a user to confirm the actions.Support a mode where the updater runs, emails what it wants to do and then it either waits for certain amount of time or waits for a user to confirm the actions.https://gitlab.nic.cz/turris/updater/updater/-/issues/257localrepo: architecture of package should be checked and support for non-nati...2019-05-06T17:47:29+02:00Karel Kocilocalrepo: architecture of package should be checked and support for non-native ones should be addedCurrently we do not check if added package is of native architecture. We should do that.
That also introduced new problem and that is what if we want to use localrepo to maintain repository for non-native packages. This should be used f...Currently we do not check if added package is of native architecture. We should do that.
That also introduced new problem and that is what if we want to use localrepo to maintain repository for non-native packages. This should be used for rootfs preparation on Omnia for Mox. We need some approach on how to maintain non-native architecture local repositories because of that.https://gitlab.nic.cz/turris/updater/updater/-/issues/94Handle data.tar.xz2019-05-06T17:47:27+02:00Ghost UserHandle data.tar.xzHandle the possibility of the package content to be inside data.tar.xz instead of data.tar.gz. This is what debian now does and there's a slight chance someone might want to do so in openwrt. On the other hand, consider the xz dependency.Handle the possibility of the package content to be inside data.tar.xz instead of data.tar.gz. This is what debian now does and there's a slight chance someone might want to do so in openwrt. On the other hand, consider the xz dependency.https://gitlab.nic.cz/turris/updater/updater/-/issues/17Full support of the requirements and language2019-05-06T17:47:26+02:00Ghost UserFull support of the requirements and languageAll the rest of language not covered under #16 comes here. It includes all that conflict resolution, alternative dependencies, etc.
- [x] Subtask #151 (Repository integrity error handling)
- [ ] Subtask #137 (In plan ordering support op...All the rest of language not covered under #16 comes here. It includes all that conflict resolution, alternative dependencies, etc.
- [x] Subtask #151 (Repository integrity error handling)
- [ ] Subtask #137 (In plan ordering support options order_after and order_before)
- [x] Subtask #150 (Package ignore installation errors)
- [x] Subtask #199 (Add support for hooks as described in Language design)
TODO this is not full list.
https://gitlab.nic.cz/turris/updater/updater/-/issues/31uclibc → musl migration2019-05-06T17:47:26+02:00Ghost Useruclibc → musl migrationTest what is needed and if it works (possibly even in the case of power failure) for the upgrade from uclibc to musl.
- [x] Depends on #15 (LibC replacement support)
- [x] Depends on #29 (Reinstall everything flag)
- [x] Depends on t...Test what is needed and if it works (possibly even in the case of power failure) for the upgrade from uclibc to musl.
- [x] Depends on #15 (LibC replacement support)
- [x] Depends on #29 (Reinstall everything flag)
- [x] Depends on turris/openwrt#9 (Turris packages with musl)https://gitlab.nic.cz/turris/updater/updater/-/issues/15LibC replacement support2019-05-06T17:47:25+02:00Ghost UserLibC replacement supportWe'll need to replace libc. Doing so is little bit complex, so we need some support to do that (static linking, special handling, journal, etc).
As it is currently unclear, what is enough to switch libc, here's what we may need to try:
...We'll need to replace libc. Doing so is little bit complex, so we need some support to do that (static linking, special handling, journal, etc).
As it is currently unclear, what is enough to switch libc, here's what we may need to try:
- „Just“ reinstall all the packages in the system. We probably need to push new-enough updater into the 2.* generation and then start separate generation 3. The generation 3 would be linked with musl, while 2 would be with uclibc. The new version would know how to do „whole system reinstall“ when seen on libc package.
- Statically link the updater so it can start in an intermediate state. This might be needed when switching the updater. Or, it may be needed during a recovery, but as the init scripts wouldn't run at that time, it is unlikely that would help.
- Embed statically-linked busybox inside the opkg-trans binary and use that one to run commands, as an extension of the above.
- Thorough testing.
These are the tasks that would be needed to accomplish it:
- [x] Depends on #14 (opkg-trans backend)
- [x] Subtask turris/openwrt#9 (Turris packages with musl)
- [x] Subtask #29 (Reinstall everything flag)
- [x] Subtask #31 (Testing the migration)
- [x] Subtask turris/openwrt#10 (static libraries for dependencies, maybe not needed
- [x] Subtask #30 (static linking), maybe not needed
- [x] Depends on #148 (Replace curl command with libcurl)
- [x] Depends on #149 ( Integrate busybox to updater)
https://gitlab.nic.cz/turris/updater/updater/-/issues/144Support package pre_* and post_* hook2019-05-06T17:47:25+02:00Karel KociSupport package pre_* and post_* hookThese will be Lua function hooks from configuration files. For exact
specification see updater language documentation.
These will be Lua function hooks from configuration files. For exact
specification see updater language documentation.
https://gitlab.nic.cz/turris/updater/updater/-/issues/143Support abi_change package option2019-05-06T17:47:20+02:00Karel KociSupport abi_change package optionIf this option is specified for some package, we should reinstall all packages
depending on that one or alternativelly list from table.If this option is specified for some package, we should reinstall all packages
depending on that one or alternativelly list from table.https://gitlab.nic.cz/turris/updater/updater/-/issues/125Eliminate unneeded packages2019-05-06T17:47:18+02:00Ghost UserEliminate unneeded packagesImplement the „Package selection“ section of `design/deps.txt`, to ensure all the packages that are not needed are set to false. Produce list of desired packages.
- [ ] Depends on #124 (Select satisfiable requests)Implement the „Package selection“ section of `design/deps.txt`, to ensure all the packages that are not needed are set to false. Produce list of desired packages.
- [ ] Depends on #124 (Select satisfiable requests)https://gitlab.nic.cz/turris/updater/updater/-/issues/124Compute satisfiable Install and Uninstall requests2019-05-06T17:47:18+02:00Ghost UserCompute satisfiable Install and Uninstall requestsPartition the requests by priority and try to assume them group-wise, fixing all that can be satisfied. Proceed through all the groups, as described in `design/deps.txt`.
- [ ] Depends on #122 (SAT structure, stage 1)Partition the requests by priority and try to assume them group-wise, fixing all that can be satisfied. Proceed through all the groups, as described in `design/deps.txt`.
- [ ] Depends on #122 (SAT structure, stage 1)https://gitlab.nic.cz/turris/updater/updater/-/issues/123SAT structure creation, stage 22019-05-06T17:47:18+02:00Ghost UserSAT structure creation, stage 2Install all the additional variables for penalties and complex dependencies, as described in `design/deps.txt`. Add the relevant clauses. This is continuation of #122.Install all the additional variables for penalties and complex dependencies, as described in `design/deps.txt`. Add the relevant clauses. This is continuation of #122.https://gitlab.nic.cz/turris/updater/updater/-/issues/122SAT structure creation, stage 12019-05-06T17:47:18+02:00Ghost UserSAT structure creation, stage 1Populate a SAT instance with variables and clauses, describing the relations between packages, requests, etc. The details are described in `design/deps.{txt,html}`.
It is possible to ignore complex dependencies and multiple package vers...Populate a SAT instance with variables and clauses, describing the relations between packages, requests, etc. The details are described in `design/deps.{txt,html}`.
It is possible to ignore complex dependencies and multiple package versions. This way we would get the equivalent of the current functionality sooner while preparing the ground for the full feature set.https://gitlab.nic.cz/turris/updater/updater/-/issues/115Make output to stderr more readable outside of debugging2019-05-06T17:47:17+02:00Karel KociMake output to stderr more readable outside of debuggingPrinted messages contains source file, line and function as origin. This is probably mostly useless outside of debugging. For normal execution we can hide this and output it to log only. It seems to be enough. Print it only if level on s...Printed messages contains source file, line and function as origin. This is probably mostly useless outside of debugging. For normal execution we can hide this and output it to log only. It seems to be enough. Print it only if level on stderr is set to DBG.https://gitlab.nic.cz/turris/updater/updater/-/issues/114Don't run another set of preupdate hooks when we replan2019-05-06T17:47:17+02:00Ghost UserDon't run another set of preupdate hooks when we replanWhen the updater restarts, because there's a replan package, don't run another set of the pre-update hooks. One should be enough.When the updater restarts, because there's a replan package, don't run another set of the pre-update hooks. One should be enough.https://gitlab.nic.cz/turris/updater/updater/-/issues/109The „provides“ header2019-05-06T17:47:16+02:00Ghost UserThe „provides“ headerSome packages have a „provides“ header. That means they can be used to satisfy a dependency. Support this somehow (maybe by creating a virtual package).Some packages have a „provides“ header. That means they can be used to satisfy a dependency. Support this somehow (maybe by creating a virtual package).https://gitlab.nic.cz/turris/updater/updater/-/issues/105Convert UPDATER_ENABLE_STATE_LOG to a command line option2019-05-06T17:47:16+02:00Ghost UserConvert UPDATER_ENABLE_STATE_LOG to a command line optionThe `UPDATER_ENABLE_STATE_LOG` environment variable was a temporary solution. Now we have a proper command line argument parsing in the pkgupdate, and we should eventually switch this configuration into it as well.The `UPDATER_ENABLE_STATE_LOG` environment variable was a temporary solution. Now we have a proper command line argument parsing in the pkgupdate, and we should eventually switch this configuration into it as well.https://gitlab.nic.cz/turris/updater/updater/-/issues/88Auto-generator of the configurations2019-05-06T17:47:13+02:00Ghost UserAuto-generator of the configurationsThere are certains parts of the updater-ng configurations that should be auto-generated (for example a list of core packages is better taken from a compiled root). Also, signing the configurations is needed.
- [x] Generate all the userl...There are certains parts of the updater-ng configurations that should be auto-generated (for example a list of core packages is better taken from a compiled root). Also, signing the configurations is needed.
- [x] Generate all the userlists
- [x] What about the `compile_turris_fix` script?
- [ ] Specification of packages through a regular expression/wildcard (eg. `luci-app-*` or `kmod-*`).
- [x] Enable it for the good old blue turris.
- [x] Get rid of strange extra packages, like `openssh_server_nuci_support`.Michal HruseckyMichal Hruseckyhttps://gitlab.nic.cz/turris/updater/updater/-/issues/79Steal config files of uninstalled packages2019-05-06T17:47:12+02:00Ghost UserSteal config files of uninstalled packagesWhen a package is installed that claims a config file owned (and left behind) by an `not-installed` package, remove the config file from the status of the `not-installed` package. And if there are no more configs in there, wipe it.When a package is installed that claims a config file owned (and left behind) by an `not-installed` package, remove the config file from the status of the `not-installed` package. And if there are no more configs in there, wipe it.