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 18:09:57 +0200 Message-ID: <37f6b9b1-8bba-eef1-870d-69ce554ad16d@ipfire.org> In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8258141008296963524==" List-Id: --===============8258141008296963524== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi Michael, On 03/05/2023 17:57, Adolf Belka wrote: > Hi Michael, > > On 03/05/2023 17:39, Michael Tremer wrote: >> Hello Adolf, >> >>> 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. T= he 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 als= o 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 updat= e 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 o= ther packages that rng-tools looks for have their libs. (openssl, libxml2, cu= rl, jansson) >>>>>>> >>>>>>> The new version has a flag for the ./configure called libcap_LIBS whi= ch can be used to override pkg-config. >>>>>>> >>>>>>> I tried that in various ways such as libcap_LIBS=3D"/lib" or libcap_L= IBS=3D"/lib/libcap.so.2.67" and others, but none of them worked. The ./config= ure 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 oth= er 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 split /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) i= s 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 mak= e and make install lines and the lib files and the .pc files are now in /usr/= lib/ 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/ beca= use then the symlinking of the lib from /lib/ to /usr/lib/ won't be needed an= y more. >> >> No, pkg-config should never search in /lib. > Okay, that is good to know. >> >>> What is libcap used for so I can test out the built iso on a vm machine? >> >> 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. >> >> /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 place= d the capsh, getcap, getpcaps and setcap binaries from /sbin to /usr/sbin so = the 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 e= tc are defined. > Discovered that I also had to define exec_prefix as blank, then those executa= ble files were placed in /sbin again. Regards, Adolf. > Regards, > Adolf. >> >>> Regards, >>> >>> Adolf. >>> >>>>> libcap currently keeps the library files in /lib/ but makes a symlink t= o one of them in /usr/lib/. Libcap doesn't have a configure line. There is a = sed command on the Makefile to stop it building static libs and then it goes = straight to make and then make install >>>>>> >>>>>>> I then manually did a copy of libcap.pc to /usr/lib/pkgconfig/ and th= en re ran just the rng-tools build and it then successfully found libcap and = completed the build. So the problem is definitely to do withy the unusual loc= ation 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, libpro= c-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 fla= g 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.= pc file to /usr/lib/pkgconfig/ >>>> >>>> >>>> Regards, >>>> >>>> Adolf. >>>> >>>>>>> >>>>>>> Regards, >>>>>>> >>>>>>> Adolf. >>>>>>> >>>>>> >>>>>> -Michael >> >> --===============8258141008296963524==--