backports: add Python based backports-update-manager
This replaces the old shell scripts:
* get-compat-kernels
* get-compat-trees
with a shiny central Python based backpor update manager:
* backports-update-manager
The new version provides a few features which were
simply a difficult to implement and quite frankly
pointless to try to implement in shell. Things worth
mentioning:
* This will now monitor your old directories
and packages and remove any stale old directory
or packages. You should feel comfortable with
now just getting the latest code from the repo
and always just running the script, it will do
everything you wished it did for you.
* This will always check the URLs and ensure your
file size matches the target upstream size, we
used to only check if you had the file or not
* The compat-ksrc directory was renamed to
ksrc-backports which goes inline with our
rebranding crusade. The tool is smart enough
to figure out if you had the old name and
rename it for you. Its also smart enough to
figure out if you had your old compat-ksrc
as a symlink and preserve things just as you
intended following the old real path.
* The debs/ directory is now moved into
ksrc-backports, making it easier to manage
and detect what is or not part of backports.
* I found no way to deal with objects to extract
GNU archive items with Python, so we're stuck with
requiring GNU ar, this provides a simple wrapper
for our usage.
* For the tree updater we instead or relying on
Linus' tree to be a remote we leave it separately
but always use --reference and allow users to provide
their own --reference override for new clones.
It should be easy to extend this should others have
other custom work spaces through a config file or
the like.
* To keep backports up to date on a system after
an initial run one should only need to run through
a cronjob:
backports-update-manager --force
To only update the git trees:
backports-update-manager --force --git-trees-only
Relying on an continued update list is dumb though,
in the future we should look into putting out new
builds through without requiring GNU ar and also
updating the list through a json file just as the
kernel has its own now:
https://www.kernel.org/releases.json
Signed-off-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>