Building specific library version with Yggdrasil


I am in the process of shipping a new Pkg that depends on an external library. More precisely, we need to have a library called “HMMER” with its HMMMER_JLL on Yggdrasil. Unfortunately, due to compatibility issues with pre-existing datasets, we instead need the 3.1.b2 version of the package.

How could one build (through YGGDRASIL) a specific version of a package.

Sorry to be so sloppy, but I barely understand what I want.

Thanks in advance

If I understand correctly, you want to open a pull request which modifies the version number at

If I understand correctly, I’m also very worried about backward-incompatible changes between v3.1 and v3.3

Hi @giordano

No of course I don’t want to downgrade the currently available version just for my needs. Rather, I wonder if it is possible to opt-in on Yggdrasil a specific version of the HMMER package.

There is possibly a basic misunderstanding on my side on the whole jll machinery. Is it possible to associate to a jll library a specific version, and have more co-existing version to be downloaded using the pkg manager with something like

pkg> add HMMER_jll @v3.1.b2

That’s not a problem

That’s exactly what I suggested to do

We need to have that specific version in Yggdrasil in the first place. Note that 3.1.b2 isn’t an acceptable version number for Pkg, so we’ll have to use something else. For example, how about simply 3.1.0? Assuming b2 stands for something like “beta2” (and I’m more and more worried that you need a very specific beta version for your code to work…)

Thanks, @giordano for the clarification.

We need 3.1.b2 because the current release of Pfam uses that version for building the database. Unfortunately, by using the last version you get slightly different alignments compared with those produced by 3.1.b2. The fact that the whole Pfam database has been built using that release should reassure you (hopefully) that the release is stable enough.

Of course, the jll name would not be v3.1.b2.I guess that v3.1.0 would be ok.

In case you agree that building a jll out of 3.1.b2 version is ok, what should I do?

Thanks again.


What I said above: open a pull request to Yggdrasil :slightly_smiling_face: You have to change version number and the SHA256 hash of the tarball (read the documentation about this).

Since there will be a small mismatch with the version number I’d suggesting doing something like

version_string = "3.1b2"
version = let ver = VersionNumber(version_string)
    VersionNumber(ver.major, ver.minor, version.patch)

and then the source will become


Hopefully nothing else will need to change (apart from the already mentioned hash)

Ciao @giordano

I made PR #4922.

Thanks a lot for the support and, of course, for maintaining this wonderful infrastructure.


1 Like