On Apr 14, 2009, at 19:27, Darren Weber wrote:

The conclusion to be drawn from this part of our discussion is that any ports that depend on a specific version of VTK can specify that version dependency only if there is a version specific port available (ie, vtkXY). It is not possible for a port to specify a dependency using the @X.Y.Z syntax.

That's right. You can only declare a dependency on a port, not on a specific version of a port or on a specific variant of a port. If you need a specific version or variant of a port you have to add code to the port to do that. See e.g. the pango port which checks for both a specific version and a specific variant of the cairo port.


The next question is, why would any port require a dependency on a specific version of VTK? Furthermore, if it does, to what extent is that port compatible with future releases of VTK? So, moving on to the next question below.

You'll have to ask someone who knows about vtk specifically. :) The developers of vtk could probably give recommendations for packaging it. They might have experience with how other distributions have packaged their software.


The only reason python and postgresql have separate ports for separate major versions is because the major versions are incompatible with one another. If you have a database that was created with postgresql 8.2, you cannot suddenly switch to 8.3; you must perform some database conversion which it is not MacPorts' place to do for you. Therefore we must let you switch at a time of your choosing and offer both versions. If you compile a module for python 2.5, you cannot use that module with python 2.6; it must be recompiled. Therefore we offer separate ports for each python port for use with each python version.

Is this the case with vtk? If so, multiple ports are best. If not, a single port is best, for simplicity.

I've taken some pain to read through the Apple doc on dynamic libs, see: http://developer.apple.com/documentation/DeveloperTools/Conceptual/ DynamicLibraries/index.html

It provides some useful tips on how to specify compatibility flags for dynamic library builds. That issue is something to take up at the level of VTK development, rather than porting VTK (although clearly there is a signficant relationship between the two). I have to do some more homework to be clear about this issue and how the VTK build specifies compatibility (if it does so for OSX).

I don't think this is an issue you have to solve in the vtk port(s). As an example, we have only one port called gettext. When gettext was updated to a new version that was incompatible with the previous version, any port that used gettext had to be rebuilt. No, there is no mechanism in MacPorts for indicating that users would have to do this, nor a facility to help users do this. We just wrote it up in the hotlist with a script to fix it:

http://trac.macports.org/wiki/ ProblemHotlist#Aportfailedtobuildupgradeorrunwithamessagereferringtolibi ntl.3.dylib

It is one of this year's proposed Google Summer of Code projects to provide a mechanism for rebuilding any ports affected by such an upgrade:

http://trac.macports.org/wiki/SummerOfCode#rev-upgrade


I have not had enough experience with VTK to know how compatible it is across minor version releases. To provide flexibility, I've assumed that vtkXY should be sufficient to provide the major.minor (X.Y) version specificity for any port that depends on VTK (ie, I've not considered vtkXYZ to be necessary). Certainly vtkX at a minimum to provide the major release compatibility.

At this point, do we have a consensus that port names should have a version string in the name? (We may not agree on the specificity of that version string - vtkX, vtkXY, vtkXYZ - but it appears the @ syntax is not an option.)

A number should only be used in the port name if you need to have multiple ports that install multiple different versions of the software. For most ports, this should not be necessary; just provide a single port with the latest version of the software.

To know how this should be handled for vtk, you need to answer the question: why would a user install the old version if a new version is available? Why would a user install vtk 4.4.2 if 5.2.1 is available? Why would a user install vtk 5.2.1 if 5.4 is available? If there is no reason why a user would do this, then multiple ports are not needed.


Any thoughts about additional naming conventions, as used in Debian and FreeBSD? That is, should we stick with variants (with some of the issues that have come up recently in vtk5, see ticket http:// trac.macports.org/ticket/19111). Bear in mind that variants cannot be specified as dependencies (correct me if that is wrong OR if that will change in a new release of port).

At 6 and a half years old, it is one of the oldest tickets we have:

http://trac.macports.org/ticket/126

I do not expect it to be resolved soon. I'm not even convinced it should be resolved. Then again, it is on this year's list of potential Google Summer of Code projects to rewrite the dependency engine which could resolve this issue:

http://trac.macports.org/wiki/SummerOfCode#dependencies

What about:

libvtk[XYZ] ?  (where [XYZ] is some variant specificity to be decided)

You mean some version specificity?

vtk[XYZ]-data ?
vtk[XYZ]-pythonX.Y ?
vtk[XYZ]-qtX ?

etc?

I would prefer no dot in the python version number, so e.g. vtk- python26 not vtk-python2.6. This would be consistent with the existing names of the python ports (python26) and their modules (py26- foo). I'm not certain why perl5.8 got a dot in its port name. I'd rather it didn't, but since we don't have a facility to rename ports cleanly, we'll just leave it as is.

The determination of whether you can make separate ports for these options is somewhat dependent on the build process employed by the software in question. If (pulling numbers entirely out of the air) it takes 4 hours to build vtk without python support and 5 hours to build it with python support, you would want a hypothetical vtk- python26 port to be able to build in 1 hour, not 5 hours. Then again, if the build times are 4 and 5 minutes, then it doesn't matter so much. Maybe build time also isn't the biggest priority.

For reference, again, see the Debian distribution, eg:
http://packages.debian.org/search? keywords=vtk&searchon=names&suite=stable&section=all
A similar story with FreeBSD, see:
http://www.freebsd.org/cgi/ports.cgi?query=vtk&stype=all



_______________________________________________
macports-users mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo.cgi/macports-users

Reply via email to