Is you NPTL or is you ain't?

I'm confused. This post ( http://www.linode.com/forums/viewtopic.php?t=2193 ) says NPTL support is enabled in the kernel and this post ( http://www.linode.com/forums/viewtopic.php?t=2314 ) says it's not and I have to use the no-nptl profile (for gentoo).

Can anyone tell me definitively what's up?

When I try to update glibc with the 2006.1 profile (I'm using Gentoo, btw) I get errors about how glibc needs NPTL. If I use the no-nptl profile glibc seems to compile all right, but I'm pretty sure I'm limited in what I can install, and what flags I am able to use.

7 Replies

All of our 2.6 kernels that have a build number of -linode18 or later have a working NPTL/TLS/[get|set]threadarea implementation.

What kernel are you running?

-Chris

localhost ~ # uname -a

Linux localhost 2.6.19-linode26 #1 Thu Dec 7 17:38:04 EST 2006 i686 UML User Mode Linux GNU/Linux

When I use the 2006.1 profile I get the following:

  • glibc-2.4 is nptl-only!

  • NPTL requires a CHOST of i486 or better

Which, once I actually took the time to read explains the problem a little better.

You have as a default

CHOST="i386-pc-linux-gnu"

This is a BIG no-no, but I changed the CHOST line to i686 and tried to compile glibc. It seems to be going ok. I'll let you know.

However, it's looking for i686 libraries and not finding them, so it's falling back to i386, which means the code will be unnecessarily "dumbed down", so to speak.

At a guess it looks like you took the lowest common denominator instead of compiling (or otherwise setting up) for the hardware you are using.

I'm not faulting or criticizing you. I really appreciate you even providing Gentoo as an option. I also am guessing that Gentoo is not your usual platform.

I'm also unfamiliar with the details of a UML driven setup so I have no idea if you can even use a 686 setup. I hope this gives you some more info you can use to continue improving the Gentoo image.

Dog me all you want - I'm a Gentoo newb.

Where is that setting? /etc/make.conf, I presume? I'll see what I can do about getting that fixed.

Thanks for letting me know!

-Chris

I'll try not to be too dogged. :>

The CHOST setting is in /etc/make.conf, but that's not the only thing that needs to be changed. As a matter of fact, if I'm right then it really should be left as is, at least until the stage used is the correct one.

If you installed the stage3-x86-2006.1 tarball then CHOST was set correctly and shouldn't be modified (like I did).

Assuming from the fact that the mtune option in CFLAGS is set to i686 that you can use a 686 architecture then the stage that should be installed is stage3-i686-2006.1.

Err … that's assuming you installed from a stage3 (if not, the equivalent exists for stage2 and I'm guessing if you did things from stage1 things would be slightly different).

If you did install the stage?-i686 then the CHOST value just needs to be changed. Otherwise, until you can take the time to redo the Gentoo image you'll need to point the /etc/make.profile to /usr/portage/profiles/default-linux/x86/no-nptl

I've just rebooted after changing the CHOST to i686 and compiling glibc to the latest, it seems to be ok.

Ok. I freely admit it. I'm an idiot. The uname -a result says that the kernel was compiled as a 686 platform … and I don't know what I was thinking about ix86 specific libraries. Too little sleep I guess.

So, unless I hear otherwise, it appears that just changing the CHOST line in /etc/make.conf should fix the problem.

…not to throw a wrench at the monkey…

Changing the CHOST isn't as simple as changing /etc/make.conf. If you do that, part of your system has been built for i386 and then part will be for i686. I'm not an expert so I don't know how bad this is, but it's bad, so don't do it :)

I've just purchased my first Linode (which rocks!) and am currently upgrading it to the i686 CHOST. It's not hard, but takes a few steps and some compilation time.

You can read the full blown instructions at:

http://www.gentoo.org/doc/en/change-chost.xml

From a fresh 2006.1 Gentoo/Linode image…

  • Don't emerge --sync yet!

  • Mask off newer versions of glibc and gcc using /etc/portage/package.mask to ensure that no upgrades to the system are available

  • Follow the Gentoo guide above (upgrade binutils/gcc/glibc, clean out the system, remerge libtool & fix that, remerge world)

  • Then emerge --sync, wipe out the entries in /etc/portage/package.mask, and then you can go ahead and drop in the new glibc 2.4, and whatever else you like :)

Since Gentoo 2007.0 is out now, I bet the Linode folks will work up a new image soon and it'll require CHOST to be i686 anyway. If you Linode folks are looking for someone to test/help with a 2007.0 image, find me :)

Thank you for this … it explains some wierd errors I've been getting. I was getting tired of reinstalling everything.

If you haven't already seen my GentooSetup article on the wiki, would you be willing to make some editorial comments in the discussion page?

And I'd like to offer my linode as a test bed for the 2007.0 profile as well, Caker.

Reply

Please enter an answer
Tips:

You can mention users to notify them: @username

You can use Markdown to format your question. For more examples see the Markdown Cheatsheet.

> I’m a blockquote.

I’m a blockquote.

[I'm a link] (https://www.google.com)

I'm a link

**I am bold** I am bold

*I am italicized* I am italicized

Community Code of Conduct