linux_base-f8 giving me guff

Alexander Leidinger Alexander at Leidinger.net
Tue Apr 29 14:46:50 UTC 2008


Quoting Kostik Belousov <kostikbel at gmail.com> (from Tue, 29 Apr 2008  
16:13:42 +0300):

> On Tue, Apr 29, 2008 at 04:51:28PM +0400, Boris Samorodov wrote:
>> On Tue, 29 Apr 2008 13:14:59 +0300 Kostik Belousov wrote:
>> > On Tue, Apr 29, 2008 at 10:46:10AM +0400, Boris Samorodov wrote:
>> > > (drop freebsd-ports@ from cross posting)
>> > >
>> > > On Tue, 29 Apr 2008 07:50:01 +0300 Kostik Belousov wrote:
>> > > > On Mon, Apr 28, 2008 at 05:37:18PM -0500, Scot Hetzel wrote:
>> > > > > On Mon, Apr 28, 2008 at 5:16 PM, Walter Venable  
>> <weaseal at gmail.com> wrote:
>> > > > > > /usr/ports/emulators/linux_base-f8 $ sudo make
>> > > > > > ===>  linux_base-f8-8_3 compat.linux.osrelease: 2.4.2 is  
>> not supported.
>> > > > > > *** Error code 1
>> > > > > >
>> > > > > > Stop in /usr/ports/emulators/linux_base-f8.
>> > > > > >
>> > > > > > Ok -- I get it, linux kernel 2.4.2 isn't supported.  How  
>> do I get around
>> > > > > > this issue?  I'm running 6.3-RELEASE-p2...
>> > > > >
>> > > > > sysctl compat.linux.osrelease=2.6.16
>> > >
>> > > > The question that seems to be relevant there is why the port  
>> refuses to
>> > > > install with some compat.linux.osrelease value ? Does port run some
>> > > > linux binary during install time (unlikely) ?
>> > >
>> > > Any linux port that installs a shared library (including linux_base
>> > > ports) runs linux ldconfig while (at the very end of) installing.
>> > > Since that ldconfig cannot run with such an old kernel it stops with
>> > > the error.
>>
>> > Thank you for the explanation. I propose the error condition to be
>> > ignored, or warning to be printed etc. The ability to install linux-base
>> > and app ports without even loading linux.ko seems to be too useful.
>>
>> Can you please give (an) example(s) when it is necessary to install
>> files with stale /usr/compat/linux/etc/ld.so.cache?
>>
>> I'm not sure if it make more good than harm... So far we rely on
>> linuxulator being run and check for compat.linux.osrelease value
>> while installing. If that check is removed then we have only FreeBSD
>> OSVERSION which is very unreliable at compat.linux.osrelease quessing.
>
> Assume "I think" or "I propose" at the start of the each sentence below.
> This is only a gentle request for possible enhancement.
>
> It is wrong^H^H^H erm inconvenient to have ld.so.cache to be formed
> at the port installation time. The /usr/local/etc/rc.d/linux_ldconfig
> script that may be run at arbitrary time by the user is much more useful.
>
> I want to have the ability to install linux ports and make the packages
> from them in the chroots without disrupting the host or enabling the
> less tested linux kernel ABI support on the host. I do know about the
> per-jail ABI support, but it is not as convenient as chroot nor it
> solves the issue of the less tested kernel code.
>
> The linux_ldconfig rc script would also ease the local installations
> of the programs that are not present in the ports. Overall, this would
> bring the linux dso handling close to the handling of the freebsd dso,
> that I consider good enough.

We have different DTRT behaviors competing for a solution here.

One is that people want to install it without having the need of a  
loaded linux kld (let's call this "expert way"). Another one is that  
people want to use an installed port immediately (let's call it the  
"user friendly way"). The FreeBSD linux ports are organized in the  
user friendly way. In this second category we have two cases, one that  
people don't have the linux stuff in the kernel, the other that the  
linux bits are available in the kernel. The ports handle both cases by  
telling the user what he has to do. As users don't read the install  
messages (yes, overly simplified view of the world, I know), the linux  
ports abort if the prerequisites are not met.

So far not much people have complained that the linux stuff is  
organized like it is. In fact this is the first case I remember of  
seeing such a request.

For the linux_base port we may already have the necessary stuff to  
handle it after a reboot, but the linux kld can be loaded at any time,  
and there's no way we can specify a dependency from loading the kld to  
running the linux ldconfig in some way. Additionally, linux_base is  
not the only port where we need to run linux programs. For example for  
linux-gtk2 we have to run some programs which register some gtk plugins.

Getting this all right while keeping the current user friendlyness is  
not done in few minutes.

I don't object to add some I_AM_AN_EXPERT__I_KNOW_WHAT_I_DO-knob which  
disables the run of linux programs and removes the linux ABI checks,  
but I don't think it is a good idea to rework the linux ports in a way  
suggested in this thread. If you read the messages on the mailinglists  
regarding the problems people have installing the linux stuff, you  
will see that this outnumbers the number of people which want this  
"expert functionality" by a large amount. The current way of the linux  
ports is a refinement of several years of step by step improvements.

Making an export-knob is also not done in 2 minutes. An ifdef around  
the linux kld check, and a ifdef around the run of ldconfig is _not_  
enough. We have several places where the linux ldconfig is run (e.g.  
in the USE_LDCONFIG know of bsd.port.mk). Patches for this are welcome  
on emulation@, but don't expect to get everything right the first time.

Note: there are not much domain specific experts. Some people may  
think it is easy to do, but the evil part is in the details.

Hint for people which don't believe me and would like to produce  
patches which changes the ports to not require the linux kld by  
default: As long as you haven't looked into each emulation@ maintained  
linux port line by line, and as long as you haven't considered the  
needs of the novice users, don't even try to do some patches which  
make the ports install without the linux kld by default, you will  
waste a lot of your time if you don't make yourself familiar with all  
the ports first.

Bye,
Alexander.

-- 
In which level of metalanguage are you now speaking?

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137


More information about the freebsd-emulation mailing list