Versions in ports

Artur Szostak aszostak at
Tue Sep 15 03:11:48 PDT 2015

>> And their newer versions are not backwards compatible with C 1.0, thus:
> what is the nature of this incompatibility?

Two examples that I can think of that affect the kind of software I work with are:
1) The internal algorithm of some API functions have changed, even though the API interface has not. This might lead to different results for certain invocations of these functions.
2) The command line interface for certain programs has changed, which are used under the hood by higher level tools.

> rev-upgrade (which runs automatically after upgrade) will catch and rebuild B for the cases of incompatibility
> that I’m aware of.

I do not see how any tool could handle the above two examples I gave in an automated manner. If that is the case, I want to know more, because that would be really impressive.

>> If you look at the sequence of commands run:
>>    sudo port install A
>>    sudo port install B
>>    sudo port sync
>>    sudo port upgrade A
>> one would not expect this to break some of the software, and yet it does.
> an example of actual breakage would be good.

If you are really interested then I can give a real example based on the software I am working with. Note that this software is from an external repository and requires around 4 GB of disk space. The sequence of commands would be:

# Setup the older version of the external repository:
curl -o Portfile
sudo port install
sudo sed -i '' 's|/macports/|/macports/archive/2015-07-03/|' /opt/local/etc/macports/sources.conf
sudo port sync

# Install the two top level packages:
sudo port install esopipe-vimos-all
sudo port install esopipe-fors-all

# Clean the working directory and process data using plugins pulled in by the esopipe-fors-all package.
# The esoreflex command should succeed at this point.
rm -rf ~/reflex_data/
esoreflex -n fors_pmos

# Update only the packages for VIMOS
sudo sed -i '' 's|/macports/archive/2015-07-03/|/macports/|' /opt/local/etc/macports/sources.conf
sudo port sync
sudo port upgrade esopipe-vimos-all

# Clean the working directory and run again with the esopipe-fors-all package.
# This time the esoreflex command will fail with a Java exception.
rm -rf ~/reflex_data/
esoreflex -n fors_pmos

More information about the macports-users mailing list