rpmlint icon indicating copy to clipboard operation
rpmlint copied to clipboard

what does E: no-library-dependency-on mean

Open kalebskeithley opened this issue 3 years ago • 4 comments

or more specifically, liborc-devel.x86_64: E: no-library-dependency-on liborc1 /usr/lib64/liborc.so.1

I can't make any sense of it, and none of the things I've tried make any difference.

$ rpm -qp --requires liborc-devel-1.6.6-1.fc36.x86_64.rpm cmake-filesystem(x86-64) liborc.so.1()(64bit) liborc1(x86-64) = 1.6.6-1.fc36 ...

$ rpm -qp --provides liborc1-1.6.6-1.fc36.x86_64.rpm liborc(x86-64) = 1.6.6-1.fc36 liborc.so.1()(64bit) liborc1 = 1.6.6-1.fc36 liborc1(x86-64) = 1.6.6-1.fc36

$ rpmlint liborc1-1.6.6-1.fc36.x86_64.rpm liborc-devel-1.6.6-1.fc36.x86_64.rpm liborc-1.6.6-1.fc36.src.rpm ============================ rpmlint session starts ============================ rpmlint: 2.2.0 configuration: /usr/lib/python3.10/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora.toml /etc/xdg/rpmlint/licenses.toml /etc/xdg/rpmlint/scoring.toml /etc/xdg/rpmlint/users-groups.toml /etc/xdg/rpmlint/warn-on-functions.toml checks: 32, packages: 3

liborc-devel.x86_64: E: no-library-dependency-on liborc1 /usr/lib64/liborc.so.1 3 packages and 0 specfiles checked; 1 errors, 0 warnings, 1 badness; has taken 1.5 s

kalebskeithley avatar Feb 02 '22 16:02 kalebskeithley

I think we're probably not handling (x86-64) properly in the dependency string. What do you think, @marxin?

Conan-Kudo avatar Feb 02 '22 16:02 Conan-Kudo

that was the hint I needed. I changed the Requires: liborc1%{?_isa} in liborc-devel (removed the %{?_isa} and now rpmlint is clean. Thanks

kalebskeithley avatar Feb 02 '22 16:02 kalebskeithley

@kalebskeithley The thing is, it's wrong to not have the %{?_isa} suffix, so it's a bug on rpmlint's side.

Conan-Kudo avatar Feb 02 '22 17:02 Conan-Kudo

@kalebskeithley The thing is, it's wrong to not have the %{?_isa} suffix, so it's a bug on rpmlint's side.

Do you mean the x86-64 in liborc1(x86-64) = 1.6.6-1.fc36? Do you really think it should be mandatory?

marxin avatar Feb 03 '22 08:02 marxin

@Conan-Kudo @marxin Allowing unarched dependencies here is definitely wrong! Consider the following scenario on x86-64:

  1. User has libfoo1-i586 installed as a dependency of some software, providing /usr/lib/libfoo.so.1, but does NOT have libfoo1-x86_64 installed.
  2. User installs foo-devel which contains a symlink /usr/lib64/libfoo.so -> libfoo.so.1
  3. The resolver sees that libfoo1 is already installed, leaving a broken symlink and a setup unusable for actually building software depending on foo.

brjsp avatar Sep 12 '22 17:09 brjsp

@kalebskeithley The thing is, it's wrong to not have the %{?_isa} suffix, so it's a bug on rpmlint's side.

Do you mean the x86-64 in liborc1(x86-64) = 1.6.6-1.fc36? Do you really think it should be mandatory?

Yes.

Conan-Kudo avatar Sep 12 '22 17:09 Conan-Kudo

Can you please attach here all the mentioned RPM files (use .tgz extension) and I will take a look.

marxin avatar Sep 12 '22 19:09 marxin

I'm not the OP, but you can see a minimal example here.

[Note that i did only %version instead of %version-%release because SUSE's reproducible builds infrastructure seems to have a problem with adding %release]

brjsp avatar Sep 12 '22 20:09 brjsp