That environment.bz relates to the installed package? And "downgrading" means I'm installing a lesser version instead of the current, and not necessarily the prev. one in-line. I might be downgrading to a *very* old version.

I can see how a/m archive can aid in removing the current version. However, the replacing package also relies on eclass code, and it might rely on code which was already gone when I initially created the ebuild of the current version.

Here's an example timeline:
1. Creating myapp-1.0, inheriting myeclass.eclass "version a".
2. Modifying myeclass.eclass to "version b". myapp-2.0 is created. eclass is not backward-compatible.
3. ...
3. Creating myapp-20.0.

On a system with myapp-20.0 (and eclass of at-least "version b"), I don't see how I would be able to downgrade to myapp-1.0, as "version a" of the eclass is nowhere to be found.

Thanks,
Amit

Zac Medico wrote:
Amit Dor-Shifer wrote:
> I've been through the list, and also read GLEP #33, in search for
> recommended practices regarding eclasses.
> the way I understand it, when an eclass is modified to accomodate a new
> ebuild, old ebuilds are broken. Specifically, downgrading with those
> broken ebuilds is no longer possible, as the eclass code they used to
> execute is no longer available.

> So, basically, downgrade is possible only while dependent eclasses
> haven't changed. And AFAIK, portage doesn't test whether inherited
> eclasses were modified since the ebuild was signed. This means that
> there's also no traceability: old ebuilds cannot say "When I was in
> business, my inherited eclass was THIS".

> I'm wondering how do others address the downgrade issue.

Since portage-2.1.4, it's not a problem because we reuse
/var/db/pkg/*/*/environment.bz2 which contains code from the
original version of the eclass.


Reply via email to