Explain compatiblity libraries
Documentation currently says
Applications compiled on one major version of FreeBSD are expected to run on subsequent major versions of FreeBSD if compatiblity libraries are installed. Example: An application compiled on FreeBSD 3.2 is expected to run on FreeBSD 14 if compatiblity libraries are installed.
We should explain this using a practical example. https://www.cinelerra-gg.org/freebsd-package/ seems to require siome libraries in versions older than what currently ships with helloSystem.
What are the exact steps to make it run?
Related: https://github.com/helloSystem/launch/issues/1#issuecomment-798869996
Unfortunately, you can't without dragging archived packages out. You could use (shameless plug) ports-mgmt/portdowngrade to get them, but actually cinelerra should be in ports. I'll get in touch with them to find out their scripts.
Well. Actually I am just using Cinelerra as an example here for the many (not super-fat) .app bundles that may see the light of day.
I suspect that http://pkg.freebsd.org/FreeBSD:12:amd64/release_0/All/ might have the needed libraries but it gives me 403 Forbidden.
On IRC this explanation was given to me by Zirias:
the only way to get them is compile yourself from an older ports tree.
but... why? someone must already have compiled the older versions? and i suspect them to be in release_0 yep, and they're deleted from the repo as soon as a new version is there ports are "rolling release". you have latest and one quarterly snapshot. that's it. what happens with the older quarterly snapshots? /dev/null they stay in subversion of course. you can always build yourself.
So, what is release_0 then?
I suspect that http://pkg.freebsd.org/FreeBSD:12:amd64/release_0/All/ might have the needed libraries but it gives me 403 Forbidden.
Is there a safe way to use the pkg command to find this out, without any risk to my existing system?
mkdir -p /usr/local/etc/pkg/repos
Then write to /usr/local/etc/pkg/repos/release_0.conf:
release_0: {
url: "pkg+http://pkg.FreeBSD.org/${ABI}/release_0",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
Then pkg -vv should show:
Repositories:
FreeBSD: {
url : "pkg+http://pkg.FreeBSD.org/FreeBSD:12:amd64/quarterly",
enabled : yes,
priority : 0,
mirror_type : "SRV",
signature_type : "FINGERPRINTS",
fingerprints : "/usr/share/keys/pkg"
}
release_0: {
url : "pkg+http://pkg.FreeBSD.org/FreeBSD:12:amd64/release_0",
enabled : yes,
priority : 0,
mirror_type : "SRV",
signature_type : "FINGERPRINTS",
fingerprints : "/usr/share/keys/pkg"
}
Then do sudo pkg update.
Then do
% pkg search openexr
gstreamer1-plugins-openexr-1.16.2_5 GStreamer OpenExr codec plugin
openexr-2.5.5 High dynamic-range (HDR) image file format
gstreamer1-plugins-openexr-1.12.3_2 GStreamer OpenExr codec plugin
openexr-2.3.0 High dynamic-range (HDR) image file format
py27-openexr-1.2.0_8 Python module for ILM's OpenEXR image format and library
Then download the tgz with
sudo pkg fetch --repository release_0 -o . openexr
Then we have /var/cache/pkg/openexr-2.3.0.txz.
Which indeed contains
libIlmImf-2_3.so.24 libIlmImf.so libIlmImfUtil.a
libIlmImf-2_3.so.24.0.0 libIlmImfUtil-2_3.so.24 libIlmImfUtil.so
libIlmImf.a libIlmImfUtil-2_3.so.24.0.0
With a lot_ of manual work, this is the result:

So it can be done but it is way too cumbersome at the moment.
We need an automated way to "download the required compatibility libraries".