Opened 3 years ago

Last modified 22 months ago

#25202 new enhancement

Enable optional rollback functionality when upgrading packages

Reported by: embray Owned by:
Priority: major Milestone: sage-pending
Component: build Keywords:
Cc: Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: #25139 Stopgaps:

Description

With #25139 it becomes possible to fully uninstall all files associated with a package, which is done before upgrading that package to a new version.

This would just as easily allow creating a backup of the package by moving its files to a temporary location rather than deleting them. If the package upgrade fails, the old version could then be restored.

One could even imagine keeping backups that can be restored even after a seemingly successful upgrade (e.g. the upgrade succeeds building, but causes runtime regressions). One could easily get carried away with something like this though and end up re-implementing hashdist (which honestly wouldn't be such a bad thing to have built into Sage...).

But to keep things focused I think this ticket should just consider rollback on build failures to start with.

Change History (6)

comment:1 in reply to: ↑ description ; follow-up: Changed 3 years ago by jdemeyer

Replying to embray:

One could easily get carried away with something like this though and end up re-implementing hashdist (which honestly wouldn't be such a bad thing to have built into Sage...).

Just FYI in case you didn't know: our release manager is one of the main contributors to hashdist. The project looks pretty dead though: the last commit on github was 2 years ago.

comment:2 in reply to: ↑ 1 Changed 3 years ago by embray

Replying to jdemeyer:

Replying to embray:

One could easily get carried away with something like this though and end up re-implementing hashdist (which honestly wouldn't be such a bad thing to have built into Sage...).

Just FYI in case you didn't know: our release manager is one of the main contributors to hashdist. The project looks pretty dead though: the last commit on github was 2 years ago.

I know. I tried using it a while ago to build Sage on Cygwin and had some problems due to a lack of Cygwin-specific patches for a number of dependencies that needed to be ported over. Other than that, a few other details I had quibbles with, the way it works makes a lot of sense and I'm surprised Volker didn't push more to get Sage using it. I would have...

comment:3 Changed 3 years ago by embray

  • Milestone changed from sage-8.3 to sage-8.4

comment:4 Changed 2 years ago by embray

  • Milestone changed from sage-8.4 to sage-8.5

comment:5 Changed 2 years ago by embray

  • Milestone changed from sage-8.5 to sage-8.7

Retargeting some of my tickets (somewhat optimistically for now).

comment:6 Changed 22 months ago by embray

  • Milestone changed from sage-8.7 to sage-pending

Removing most of the rest of my open tickets out of the 8.7 milestone, which should be closed.

Note: See TracTickets for help on using tickets.