GLEP: XXX Title: Ebuild migration path Version: $Revision: $ Last-Modified: $Date: $ Author: Luca Barbato , Markus Ullmann Status: Draft Type: Standards Track Content-Type: text/x-rst Created: 11 Jun 2008 Post-History: Credits ======= Ferdy, for pushing me to write it Abstract ======== The ebuild format changes to adapt to specific needs when they appear, older package managers may not be able to cope with those changes cleanly. This document provides a path to maintain backward compatibility and make sure that an upgrade path will be safely available. Motivation ========== The current set of changes to the ebuild format (named EAPI1) do not cause mayor incompatibilities with older package managers [fixme - which versions?], further changes slated for the next set (named EAPI2) may require additional care to grant a clean upgrade path. Rationale ========= TbF Backwards Compatibility ======================= This is a generalized alternative to glep-55 Specification ============= The featureset an ebuild uses is currently summarized as a variable put inside the ebuild in the form "EAPI=X" it is read while the package manage sources the file. This could have unfortunate results if the feature change makes sourcing unpredictable. Manifest file contain data to validate ebuilds before sourcing, it is generated by repoman that is also checking the ebuild for validity before generating it. Having repoman adding to the Manifest the featureset information, thus giving the package manager a simple way to spot which ebuild are supported and which aren't because they require features not available. This simple improvement addresses well most of the forseeable changes. More radical changes could be addressed by changing the syncpoint the package manage fetches the repository. The former default syncpoint will just contain the minimum necessary to get an updated portage emerged, the newer one will provide the whole tree, since portage has to be backwards compatible just a single syncpoint change has to be. References ========== TbF Copyright ========= This document has been placed in the public domain. .. vim: set tw=80 fileencoding=utf-8 spell spelllang=en et :