Skip to content
Snippets Groups Projects
Verified Commit 9b6f3aea authored by Karel Koci's avatar Karel Koci :metal:
Browse files

lists/migrate3x: Add provides and virtuals to pass migration

We have problem of chicken and egg. To know if we can update we need to
update updater but doing so we have to start updating system. The
problem is that reverting to 3.x with new updater would be pretty hacky
and is also not something we want. The common problem is that users
install some packages with opkg and those are added to updater's
/etc/updater/conf.d/opkg-auto.lua file. Updater is stuck when such
package is no longer provided. Modifying given file is not ideal because
user can have other files that are not automatically managed and running
replacement scripts on them is not good idea. Instead it is better to
ensure that update proceeds even if there is a request for package that
is no longer in repository.

This commit adds two types of rules for packages that are not in Turris
OS 4.0 compared to Turris OS 3.x.
Fist rule is to convince updater that package exists but is effectively
empty. That is done by marking package as virtual:
    Package("NAME", { virtual = true })
Other rule is that package is somewhat replaced by some other package
and we add temporally provide for missing package in to it:
    Package("EXISTING", { provides = {"NAME"} })

This should push problems with requests for non-existing packages to
last step of migration, that is after removal of tos3to4 package.

The list I worked on here was generated only for Omnia. Turris 1.x
should be almost same and mostly just subset so this should be enough.
First I downloaded all repositories indexes from 3.11.9 and from 4.0.1.

    cd 3x
    for repo in base hardware lucics management node openwisp packages php printing routing sidn telephony turrispackages; do curl https://repo.turris.cz/omnia/packages/$repo/Packages > $repo; done
    cd ../4x
    for repo in base core luci openwisp packages routing sidn telephony turrispackages; do curl https://repo.turris.cz/hbs/omnia/packages/$repo/Packages > $repo; done

Next step was to collect all package names.

    cd ../3x
    for repo in $(ls); do sed -n 's/Package: \(.*\)/\1/p' $repo; done | sort > ../3s
    cd ../4x
    for repo in $(ls); do sed -n 's/Package: \(.*\)/\1/p' $repo; done | sort > ../4s

And lastly diff was made for packages missing in 4s but present in 3s:

    cd ..
    diff --new-line-format="" --unchanged-line-format="" 3s 4s
parent 54826d33
Branches
Tags
No related merge requests found
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment