Unresolvable older version for a package in an OBS DoD repository

I have configured a DoD repository that points to an external repository with multiple versions of the same package.

In my spec file to use packages from this repository if I use “BuildRequires: blah = ” it works, but if I use “BuildRequires: blah = ”, OBS reports it as unresolvable, nothing provides the older version and it only has the latest version.

Is there any way to build against older versions? I realise that explicitly specifying an exact version is not good, but due to incompatibilities between versions of this package and needing to continue to support the older version, it’s currently unavoidable.

Thanks!

Oops, just saw that my issue isn’t clear due to using some formatting code by mistake. It should say, if I specify the “BuildRequires: blah = latest version” it works and “BuildRequires: blah = older version” it is unresolvable.

What is “DoD repository”?

I do not see any difference between the two.

When you provide computer text, always copy and paste it, never describe or type manually. Besides, if you ask question about OBS, the most efficient is posting URL to your project/package.

Yes, you specify the requirement for older version.

Specifying the exact package version is never good and should be avoided as much as possible. You should depend on capabilities provided by packages, like pkgconfig(z3) = 4.12.2.0. If two package versions are incompatible they are expected to provide different capabilities (at least, different versions of these capabilities).

A Download on Demand repository:

Yes, sorry, I did a follow-up post when I noticed that. I had angled brackets in it. The repository has multiple versions of the same package and I’d like to be able to specify an older one. When I do, it says it’s unresolvable and only the latest is available.

It’s a private OBS instance, so I can’t link to it.

Unfortunately the packages are built by a 3rd party and I can’t change it. They provide the same capabilities, just have a different package version. I’m not sure that would even work though, seeing as DoD only seems to be showing the latest version.

I could work around it by making multiple local repositories each with 1 version of the package, seeing each up as a DoD repository and then using a different one for each of my projects (each of my projects needs a different version), but that’s a lot of maintenance that I’d rather avoid if possible.

Now I remember, someone hit the same issue recently. While such dependency works on RPM level, OBS seems to only look for the latest package version when resolving build prerequisites.

Thanks, I’ll work around it by creating separate repositories for each version then.

I don’t suppose you know whether it might be possible to use a project config setting (or something similar) on a DoD repository to specify which version it will download? At least that way I wouldn’t need to create multiple dnf/yum repositories, just multiple OBS projects pointing at the same repository but downloading a different version.

Did you check whether repository metadata actually contains all versions of your packages? It could be that only the latest package version is visible.

Yes, the repository definitely has the metadata. I can install any version of the package manually with dnf / yum.