Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Explain compatiblity libraries #24

Open
probonopd opened this issue Mar 14, 2021 · 7 comments
Open

Explain compatiblity libraries #24

probonopd opened this issue Mar 14, 2021 · 7 comments

Comments

@probonopd
Copy link
Member

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:
helloSystem/launch#1 (comment)

@crees
Copy link

crees commented Mar 14, 2021

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.

@probonopd
Copy link
Member Author

probonopd commented Mar 14, 2021

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.

@probonopd
Copy link
Member Author

I suspect that http://pkg.freebsd.org/FreeBSD:12:amd64/release_0/All/ might have the needed libraries but it gives me 403 Forbidden.

@probonopd
Copy link
Member Author

probonopd commented Mar 14, 2021

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?

@probonopd
Copy link
Member Author

probonopd commented Mar 14, 2021

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

@probonopd
Copy link
Member Author

probonopd commented Mar 14, 2021

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

@probonopd
Copy link
Member Author

probonopd commented Mar 14, 2021

With a lot_ of manual work, this is the result:

image

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".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants