Managing conflicts between ports (same package with multiple maintained versions)

Matthias Petermann matthias at d2ux.net
Sun Apr 21 09:23:45 UTC 2013


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 at 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 at 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


More information about the freebsd-questions mailing list