Hi Hartmut,

On Tue, 06 May 2025 at 22:33, Hartmut Goebel <h.goe...@crazy-compilers.com> 
wrote:

>  A common use-case for developers is to have several
>  profiles/virtual-environments with different version. 

Somehow, it depends on how the different Tryton ecosystem is between
the versions and how the users would use it.

• Using one branch for each version:

    guix time-machine -C channels-6.0.scm -- shell -m manifest.scm
    guix time-machine -C channels-7.0.scm -- shell -m manifest.scm

where manifest.scm is the same file and channels-X.0.scm switches from
one branch to another.

Maybe the branches are easier to maintain but you will have more
duplicates here or there between them.


• Using only one branch containing all the versions:

    guix pull -C channel.scm
    guix shell -m manifest-6.0.scm
        or
    guix shell -m manifest-&.0.scm

where manifest-X.0.scm contains different package names.

Here, the key is to rely on package transformation to avoid duplicate
code.  For example, somehow Python 2 and 3 was (is still!) managed this
way.  Or OCaml.

Somehow, you define a procedure ’package-with-explicit-tryton’ and used
it to generate Tryton 7.0 or 6.0 or else.  Well, if the same tryton
package definition, say ’trytond-bank’, does not work out of the box for
different Tryton versions, then you can tweak it.

Easy case:

        (define-public tryton-bank
          (package
            (name "trytond-bank")
            (version "6.2.0")
            (source …)))

        (define-public tryton-bank
          (package-with-tryton-7 tryton-bank))

More complex case:

        (define-public tryton-bank
          (package
            (name "trytond-bank")
            (version "6.2.0")
            (source …)))

        (define-public tryton-bank
          (package
            (inherit
              (package-with-tryton-7 tryton-bank))
              (arguments …)))

And obviously, you can put each version in its own module to keep the
things clear.


Both – branches or package transformation – have their advantages and
drawbacks. :-)

Cheers,
simon



Reply via email to