From mboxrd@z Thu Jan 1 00:00:00 1970 From: Adolf Belka To: development@lists.ipfire.org Subject: Re: Problem building a version update of rng-tools Date: Wed, 03 May 2023 17:57:22 +0200 Message-ID: In-Reply-To: <5D27C6F6-2B45-4C26-98DC-3210B0B1BFCA@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2354791992421226391==" List-Id: --===============2354791992421226391== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi Michael, On 03/05/2023 17:39, Michael Tremer wrote: > Hello Adolf, >=20 >> On 3 May 2023, at 14:23, Adolf Belka wrote: >> >> Hi Michael, >> >> On 03/05/2023 14:58, Adolf Belka wrote: >>> >>> On 03/05/2023 14:35, Adolf Belka wrote: >>>> Hi Michael, >>>> >>>> On 03/05/2023 14:07, Michael Tremer wrote: >>>>> Hello Adolf, >>>>> >>>>> Normally you should not need to add anything extra for this to work. Th= e compiler should know where to search for libraries. >>>>> >>>>> If pkg-config is being used, this might be a little bit different. >>>> Just before the various packages are checked to exist the configure also= checks that pkg-config is existing. >>>>> >>>>>> On 3 May 2023, at 13:02, Adolf Belka wrote: >>>>>> >>>>>> Hi All, >>>>>> >>>>>> >>>>>> There is a new version for rng-tools so I thought I would do an update= but it kept stopping saying that it required libcap and could not find it. >>>>>> >>>>>> I noted that the libcap libs are in /lib and not in /usr/lib as the ot= her packages that rng-tools looks for have their libs. (openssl, libxml2, cur= l, jansson) >>>>>> >>>>>> The new version has a flag for the ./configure called libcap_LIBS whic= h can be used to override pkg-config. >>>>>> >>>>>> I tried that in various ways such as libcap_LIBS=3D"/lib" or libcap_LI= BS=3D"/lib/libcap.so.2.67" and others, but none of them worked. The ./configu= re still ended up with the message >>>>>> >>>>>> checking for libcap... no >>>>>> configure: error: libcap is required >>>>>> >>>>>> I then noticed that libcap.pc is in /lib/pkgconfig/ while all the othe= r packages being searched for are in /usr/lib/pkgconfig/ >>>>> >>>>> This should indeed be installed to /usr/lib/pkgconfig. >>>>> >>>>> I don=E2=80=99t have a problem with simply changing =E2=80=94-prefix=3D= / to =E2=80=94-prefix=3D/usr for libcap, because we don=E2=80=99t support a s= plit /usr directory anyways. That should make it easier. >>> Looking through the libcap README and Makefile then the .pc files should = be getting placed in /usr/lib/pkgconfig but they aren't. Also as $(prefix) is= not defined then the prefix should be /usr but again it is not. >> >> I think I must have misread what the Makefile etc were intending to do. >> >> I just tried a quick build of libcap with adding prefix=3D/usr to the make= and make install lines and the lib files and the .pc files are now in /usr/l= ib/ and /usr/lib/pkgconfig/ >> >> The only remaining question I have is if anything else in IPFire would be = expecting to see the lib files for libcap in /lib/ instead of /usr/lib/ becau= se then the symlinking of the lib from /lib/ to /usr/lib/ won't be needed any= more. >=20 > No, pkg-config should never search in /lib. Okay, that is good to know. >=20 >> What is libcap used for so I can test out the built iso on a vm machine? >=20 > It is quite widely used to manage capabilities of a running program. I can = give some privileges away and limit itself so that any remote code executing = could not cause too much damage for example. >=20 > /usr/bin/ping is for example linked against libcap. If you can execute it, = everything is fine. That is a nice easy test then. The build of libcap with prefix=3D/usr successfully built but it also placed = the capsh, getcap, getpcaps and setcap binaries from /sbin to /usr/sbin so th= e change was not as easy as I thought. Maybe I should only have the prefix=3D= /usr in the make line and not in the make install line. Will have another look in the makefile and see how the location for capsh etc= are defined. Regards, Adolf. >=20 >> Regards, >> >> Adolf. >> >>>> libcap currently keeps the library files in /lib/ but makes a symlink to= one of them in /usr/lib/. Libcap doesn't have a configure line. There is a s= ed command on the Makefile to stop it building static libs and then it goes s= traight to make and then make install >>>>> >>>>>> I then manually did a copy of libcap.pc to /usr/lib/pkgconfig/ and the= n re ran just the rng-tools build and it then successfully found libcap and c= ompleted the build. So the problem is definitely to do withy the unusual loca= tion for the library files of libcap. >>>>> >>>>> Do we have any other packages that install .pc files into funny places? >>>> The other .pc files that are in /lib/pkgconfig/ are libkeyutils, libproc= -2, libpsx and libsysfs >>>>> >>> The libpsx.pc file is also from libcap. >>>>>> So the question I have is what is the best way to deal with this. >>>>>> >>>>>> Should I add into the libcap lfs a line that copies the libcap.pc to /= usr/lib/pkgconfig/ or >>>>>> >>>>>> is can someone tell me what I am doing wrong with the libcap_LIBS flag= for ./configure >>>>>> >>> I think that rather than trying to adjust libcap to work the way it says = it should be anyway, I will add a copy line into the lfs to move the libcap.p= c file to /usr/lib/pkgconfig/ >>> >>> >>> Regards, >>> >>> Adolf. >>> >>>>>> >>>>>> Regards, >>>>>> >>>>>> Adolf. >>>>>> >>>>> >>>>> -Michael >=20 >=20 --===============2354791992421226391==--