Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Apr 2013 11:24:30 +0200
From:      Matthias Petermann <matthias@d2ux.net>
To:        freebsd-questions@freebsd.org
Subject:   Managing conflicts between ports (same package with multiple maintained versions)
Message-ID:  <5173B04E.3020406@d2ux.net>

next in thread | raw e-mail | index | archive | help
Hello,

I am the maintainer of most of the Tryton ports. Tryton is a python 
based application framework where you can easily build your own business 
modules on top. It also provides some default modules for common uses.

Currently Tryton 2.4 series is in the ports. From upstream the successor 
Tryton 2.6 is available.
At Tryton, also previous releases are supported for an extended time. 
This is required, because users who spent time to build their own 
modules on top of e.g. 2.4 should not be forced to migrate immediately 
to 2.6 (and likely use a different API) just for a security patch or a 
bug fix.

Thats why I want to bring in 2.6 to the ports while continuing 
maintaining 2.4.

During the planning, I ran into the following issue:

Tryton 2.4 and 2.6 install files to the same Python site-packages directory

/usr/local/lib/python2.7/site-packages/trytond-2.4.5-py2.7.egg
/usr/local/lib/python2.7/site-packages/trytond-2.6.3-py2.7.egg

Even there "egg" names are different, the contained package names are equal:

/usr/local/lib/python2.7/site-packages/trytond-2.4.5-py2.7.egg/trytond
/usr/local/lib/python2.7/site-packages/trytond-2.6.3-py2.7.egg/trytond

So for the python interpreter it would not be clear which one to import 
if you just "import trytond".

Renaming the package names doesn't look reasonable because it would 
require patching all Tryton modules (and will make it incompatible with 
custom built modules).

So I think it is required to define it as a conflict if two versions of 
Tryton will be installed at the same time.

My first approach was to define

     CONFLICTS=      trytond-*

in the Makefiles of trytond 2.4 and 2.6. This works and prevents 
installing two different versions. But portlint doesn't seem happy with it:

root@compaq:/usr/ports/finance/trytond # portlint -AC
[...]
FATAL: Package conflicts with itself. You should remove "trytond-*" from 
CONFLICTS.
1 fatal error and 4 warnings found.
root@compaq:/usr/ports/finance/trytond #

So it looks like I need to explicitly specify the conflicting versions, 
e.g. in Tryton 2.4 Makefile put:

     CONFLICTS=      trytond-2.6.*

But this will force me to update the 2.4 Ports everytime a new series of 
Tryton gets introduced.

Is there a better way to achieve this?

Thanks in advance & kind regards,
Matthias



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5173B04E.3020406>