# [HOW-TO]Glibc + NPTL

## Woocash

Witam!

Dzisiaj zajmiemy sie przekompilowaniem glibc'a z obsługą NPTL (Native POSIX Threading Library)

WAŻNE !! : ZANIM ZACZNIESZ MUSISZ MIEĆ KERNELA 2.6.x!!

Wiec zaczynamy  :Smile: 

Najpierw zobaczymy czy mamy nagłówki 2.6.x wpisująć w konsoli :

```
emerge -s linux-headers
```

Kiedy wynik bedzie inny niż linux-headers-2.6.x, to trzeba ściągnąć nagłówki 2.6.x (https://forums.gentoo.org/viewtopic.php?t=178896)(Kiedy mamy nagłówki-2.4.x mogą wystąpić problemy z /lib/libc.so.6)

Kiedy mamy nagłówki-2.6.x możemy przystąpić do cześci właściwej  :Smile: 

W pliku /etc/make.conf do flagi USE="" trzeba dodać nptl, ma to wygladac mniej wiecej tak :

```
USE="nptl"
```

Lub jak ktoś tego nie chce to możemy tylko podczas kompilowania glibc'a + NPTL wpisac w konsoli :

```
USE="nptl" emerge glibc
```

No i zaczyna sie kompilacja  :Smile: 

W tym czasie możemy iść po ogladać telewizje, wybić kawę lub co kolwiek innego robić  :Wink: 

Po przekompilowaniu glibc'a sprawdźmy czy skompilowal sie NPTL, wpisujac w konsoli

```
/lib/libc.so.6
```

Jezeli nam wyskoczy takie cos :

```
GNU C Library stable release version 2.3.3, by Roland McGrath et al.

Copyright (C) 2004 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.

There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A

PARTICULAR PURPOSE.

Compiled by GNU CC version 3.3.3 20040412 (Gentoo Linux 3.3.3-r3, ssp-3.3-7, pie-8.5.3).

Compiled on a Linux 2.6.5 system on 2004-05-16.

Available extensions:

        GNU libio by Per Bothner

        crypt add-on version 2.1 by Michael Glad and others

        NPTL 0.61 by Ulrich Drepper

        BIND-8.2.3-T5B

        NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk

Thread-local storage support included.

Report bugs using the `glibcbug' script to <bugs@gnu.org>.
```

To znaczy ze dobrze przekompilowalismy  :Smile: 

Link : Za czy przeciw NPTL

https://forums.gentoo.org/viewtopic.php?t=161060

Wszelkie uwagi mile widziane  :Smile: 

STAWIANIE GENTOO OD RAZU Z NPTL I NAGŁÓWKAMI 2.6.x

make.conf

Do pliku /etc/make.conf dodajecie do flagi USE, nptl (USE="nptl")

Linux-headers

Edytujemy plik 

```
nano /usr/portage/sys-kernel/linux-headers/linux-headers-2.6.5.ebuild
```

Szukamy linijki KEYWORDS="-* arm" i zmieniamy ją na

```
KEYWORDS="-* x86"
```

bootstrap

Następna czynność to bootstrap :

```
/usr/portage/scripts/bootstrap-2.6.sh
```

emerge system

W pliku /etc/make.conf dopisz na samym końcu 

```
ACCEPT_KEYWORDS="~x86"
```

Wtedy skompiluje kilka programów z nagłówkami 2.6

Z "ACCEPT_KEYWORDS="~86", system może być nie stabilny

NIE ZAPOMNIJ O JAJKU 2.6

Pierwsze uruchamianie

Pierwszą rzeczą jaką powinieneś zrobić to sprawdzić czy aby napewno masz obsługe NPTL.

Wpisz w konsoli 

```
/lib/libc.so.6
```

A wynik powinien być następujący :

```
GNU C Library stable release version 2.3.3, by Roland McGrath et al.Copyright (C) 2004 Free Software Foundation, Inc. 

This is free software; see the source for copying conditions. 

There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR 

A PARTICULAR PURPOSE. 

Compiled by GNU CC version 3.3.2 20040119 (Gentoo Linux 3.3.2-r7, propolice-3.3-7). 

Compiled on a Linux 2.6.1 system on 2004-02-13. 

Available extensions: 

     GNU libio by Per Bothner        

     crypt add-on version 2.1 by Michael Glad and others        

     NPTL 0.61 by Ulrich Drepper        

     BIND-8.2.3-T5B        

     NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk 

     Thread-local storage support included. 

Report bugs using the `glibcbug' script to <bugs@gnu.org>.
```

Miłej zabawy

Pozdrawiam  :Smile: Last edited by Woocash on Thu Jun 03, 2004 5:50 pm; edited 1 time in total

----------

## mkay

hmm - cos prawdziwy wysyp tych how-to ostatnio. powiedzialbym, ze az nadmiarowo;/ powyzsze how-to raczej nie zasluguje na taka nazwe. dlaczego? bo nic w nim nie ma! po prostu wsadzenie nptl do USE i przekompilowanie glibca i tyle;/

z dodatkowych uwag:

1. do sprawdzania zainstalowanych pakietow lepiej uzyc qpkg -I

2. jezeli chcemy instalowac system od 0 z kernelem 2.6, jest do tego stworzony osobny bootstrap

----------

## _troll_

 *aye wrote:*   

> hmm - cos prawdziwy wysyp tych how-to ostatnio. powiedzialbym, ze az nadmiarowo;/ powyzsze how-to raczej nie zasluguje na taka nazwe. dlaczego? bo nic w nim nie ma! po prostu wsadzenie nptl do USE i przekompilowanie glibca i tyle;/

 

Sorry - nie zgodze sie (to moje prawo  :Smile:  ). Gdy sam postanowilem przebudowac system na nptl'u musialem poszukac jak to zrobic. Milo bylo przeczytac, ze tak niewiele do szczescia potrzeba. Ale - gdzies ta informacje musialem znalezc.

A co do tego, ze wysyp - hihihi. Masz racje. Jakby sie wszyscy ukrywali do tej pory, nie??  :Wink: 

 *aye wrote:*   

> z dodatkowych uwag:
> 
> <ciach>
> 
> 2. jezeli chcemy instalowac system od 0 z kernelem 2.6, jest do tego stworzony osobny bootstrap

 

..:: UPDATE ::..

Przeciez dal te informacje...? O ssssso chodzi, bo nie kumam???? 

.. kuniec apdejta ..

Pozdrawiam,

Przemek

----------

## Woocash

 *Quote:*   

> 2. jezeli chcemy instalowac system od 0 z kernelem 2.6, jest do tego stworzony osobny bootstrap

 

Przecież wyraźnie napisałem   :Evil or Very Mad:  Czytaj dokładniej

 *Quote:*   

> Następna czynność to bootstrap : 
> 
> ```
> /usr/portage/scripts/bootstrap-2.6.sh
> ```
> ...

 

A co do 1) to tego jeszcze nie testowałem, ale spróbuje  :Smile: 

Ps. To nie jest finalna wersja tego HOW-TO, zawartość sie może zmienić

----------

## mkay

 *aye wrote:*   

> 
> 
> 2. jezeli chcemy instalowac system od 0 z kernelem 2.6, jest do tego stworzony osobny bootstrap

 

argh - sorry - zle to przeczytalem;/

ale to dodam za to nastepne (;P)

3. odmaskowanie pakietow przez edycje ebuildow - nie ma sensu, bo po sync znowu beda zamaskowane. man portage i popatrz na katalog /etc/portage (do tego go stworzyli)

4. na koncu sugerujesz, aby przestawic ACCEPT_KEYWORDS na ~x86, nie piszac jakie to ma konsekwencje. nie wiem, czy jest to w NPTL'u potrzebne (sam i tak z ~x86 korzystam), ale ty doradzasz  zrobienie  tego potencjalnym newbie (dla takich chyba glownie jest to how-to) nie ostrzegajac nawet co tak naprawde robia

----------

## Woocash

Napisałem, że jak sie ma ~86 to wtedy kompiluje kilka programów z nagłówkami 2.6, a na konsekwencje są takie że ma sie nie zbyt stabilny system (ja też sam korzystam z ~86).

A co do portage to jest to też opisane w "Jak przejść z nagłówków 2.4 na 2.6" Podałem link w nawiasach.

----------

## cpu

 *Woocash wrote:*   

> Napisałem, że jak sie ma ~86 to wtedy kompiluje kilka programów z nagłówkami 2.6, a na konsekwencje są takie że ma sie nie zbyt stabilny system (ja też sam korzystam z ~86).
> 
> A co do portage to jest to też opisane w "Jak przejść z nagłówków 2.4 na 2.6" Podałem link w nawiasach.

 

Hehe wychodzi na to ze niepotrzebnie pisales bo cie aye pojechal... w kazdym razie IMHO to jest howto i jest poprawne.

----------

## mkay

 *Woocash wrote:*   

> Napisałem, że jak sie ma ~86 to wtedy kompiluje kilka programów z nagłówkami 2.6, a na konsekwencje są takie że ma sie nie zbyt stabilny system 

 

gdzie to napisales? ja widze 

```

W pliku /etc/make.conf dopisz na samym końcu 

Code:   

ACCEPT_KEYWORDS="~x86"   

Wtedy skompiluje kilka programów z nagłówkami 2.6

```

.. i nic wiecej

----------

## fallow

no racja ,tez nie widze poki co  :Smile: 

----------

## Woocash

Sorry, że tak długo czekaliście na poprawe, ale nuak daje sie mocno we znaki  :Sad: 

----------

## adam1957

Cześć !!

Przepraszam za niezdrową ciekawość, ale co konkretni zyskuje OS po wkompilowaniu w glibc obsługi NPTL ?

Pozdrowienia

                     Adam F.

----------

## fallow

 *adam1957 wrote:*   

> Cześć !!
> 
> Przepraszam za niezdrową ciekawość, ale co konkretni zyskuje OS po wkompilowaniu w glibc obsługi NPTL ?
> 
> Pozdrowienia
> ...

 

https://forums.gentoo.org/viewtopic.php?t=170852&highlight=nptl

https://forums.gentoo.org/viewtopic.php?t=227081&highlight=nptl

https://forums.gentoo.org/viewtopic.php?t=223670&highlight=nptl

 :Smile: 

pozdro

----------

## arsen

oraz...

http://kerneltrap.org/node/view/422

 :Smile: 

----------

## adam1957

Dzięki !

Z tego co poczytałem wynika, że do zwykłej, lekkiej i codziennej pracy "nptl" nie jest szczególnie przydatny. Czyż nie ?

Pozdrawiam Adam

----------

## nelchael

Ja mam i nie narzekam  :Wink: 

----------

## fallow

ja tez jednak " wole miec "  :Smile: 

pozdro  :Smile: 

----------

## nelchael

 *fallow wrote:*   

> ja tez jednak " wole miec " 

 

Pisze duzo softu, ktory bardzo czesto i gesto korzysta z watkow, wiec mi to na reke, ze sa szybsze  :Smile:  Na kernel trap jest spory artykul o NPTL, gdzie jest to przedstawione dobrze, sa rowniez wyniki testow wydajnosciowych.

----------

## fallow

ano fajnie jest na kerneltrapie i duzo  :Wink: 

to tez jest fajne http://people.redhat.com/drepper/nptl-design.pdf

pozdro  :Smile: 

----------

## Prompty

z tego co wiem mozna uzywc  flagi USE "nptlonly"  bo w przeciwnym razie glibc kompiluje sie dwa razy ( ojjj bolesne ) 

tyle tylko czy nptlonly cos zmiania na nasz niekorzysc ?

----------

## OBenY

Nie, o jest rozwiazanie dla zachowania kompatybilnosci z Linuxthreads. ormalnie, gdy masz tylko nptl, to buduje Ci system na linuxthreads oraz nptl, ale domyslnie uzywa nptl, jesli jakis progs sobie zazyczy linuxthreads, to sobie z nich skorzysta. W przypadku nptl only, uzywany jest tylko Nptl, wiec nie jest prawdopodobne, ze program kompilowany na linuxthreads sie nie uruchomi na ntpl, badz bezie sie dziwnie zachowywal... thats all  :Smile: 

----------

## nelchael

Mam tylko NPTL i wszystko dziala ok  :Smile: 

----------

## fallow

i ja  :Smile: 

 slyszalem tylko od trolla ze matlab nie chce z tym dzialac, ale ja tego nie uzywam, z ostatnim glibc 

```
  sys-libs/glibc-2.3.4.20041006 
```

 kiedy skompilowalem je z USE="nptl" w wyniku /lib/libc.so.6 nie widzialem supportu dla nptl , a przeciez mial byc .CPU zauwarzyl to pierwszy . Dopiero jak skompilowalem z "nptlonly" w wyniku /lib/libc.so.6 widac support nptl.

pozdro  :Smile: 

----------

## nelchael

 *fallow wrote:*   

> slyszalem tylko od trolla ze matlab nie chce z tym dzialac, ale ja tego nie uzywam

 

Wazne, ze gnuplot i gcc dzialaja - nic wiecej nie potrzeba  :Wink:  (no i Vim jeszcze)

----------

## arach`666

a mi beep-media-player sie nie chce uruchomic po skompilowaniu glibc z USE="nptl nptlonly"

```
arachnist@nest: beep-media-player                                                              pts/0

Inconsistency detected by ld.so: ../sysdeps/generic/dl-tls.c: 72: _dl_next_tls_modid: Assertion `result <= _rtld_local._dl_tls_max_dtv_idx' failed!

arachnist@nest: 
```

----------

## C1REX

 *fallow wrote:*   

>  kiedy skompilowalem je z USE="nptl" w wyniku /lib/libc.so.6 nie widzialem supportu dla nptl , a przeciez mial byc .CPU zauwarzyl to pierwszy . Dopiero jak skompilowalem z "nptlonly" w wyniku /lib/libc.so.6 widac support nptl.
> 
> 

 

Właśnie miałem to samo. Szkoda, że nie przeczytałem tego postu przed kompilacją.

----------

## nelchael

 *arach`666 wrote:*   

> a mi beep-media-player sie nie chce uruchomic po skompilowaniu glibc z USE="nptl nptlonly"
> 
> ```
> arachnist@nest: beep-media-player                                                              pts/0
> 
> ...

 

`strace` go. PS. mi dziala idealnie, wiec to jest niezalezne od BMP.

----------

## fallow

 *arach`666 wrote:*   

> a mi beep-media-player sie nie chce uruchomic po skompilowaniu glibc z USE="nptl nptlonly"
> 
> ```
> arachnist@nest: beep-media-player                                                              pts/0
> 
> ...

 

hmm.u mnie dziala

moje glibc : 

```

[ebuild   R   ] sys-libs/glibc-2.3.4.20041006  -build -debug -erandom -hardened -multilib +nls +nptl -nptlonly* -pic* -userlocales 0 kB 

```

czyli i nptl i nptlonly bylo wybrane

----------

## -reverend

instaluje gentoo 2004.3:

emerge sync

Potem powinienem bootstrap-2.6.sh odpalic ale takiego nie moge znalezc. Czy w 2004.3 cos sie zmienilo w porownaniu do poprzedniej wersji odnosnie nptl? W takim razie jak zainstalowac nptl w gentoo 2004.3?

----------

## Woocash

w nowszych gentoo, jest tylko bootstrap.sh i bootstrap-macos.sh

btw. tu masz fajny link, jak zainstalowac gentoo ze stage1 z nptl, metoda developerska

https://forums.gentoo.org/viewtopic.php?t=189250

----------

## -reverend

robie wszystko po kolei tak jak to napisano w tym HOWTO. Podczas emergowania glibc w bootstrap mam taki blad:

```
>>> md5 src_uri ;-) glibc-2.3.3.tar.bz2

>>> md5 src_uri ;-) glibc-manpages-2.3.4.tar.bz2

>>> md5 src_uri ;-) glibc-infopages-2.3.4.tar.bz2

>>> md5 src_uri ;-) glibc-2.3.4-branch-update-20041102.patch.bz2

nptl

x86

!nptlonly

 * Warning! Gentoo's GLIBC with NPTL enabled now behaves like the

 * glibc from almost every other distribution out there. This means

 * that glibc is compiled -twice-, once with linuxthreads and once

 * with nptl. The NPTL version is installed to lib/tls and is still

 * used by default. If you do not need nor want the linuxthreads

 * fallback, you can disable this behavior by adding nptlonly to

 * USE to save yourself some compile time.

>>> Unpacking source...

nptl

x86

 * Checking gcc for __thread support ... no

 * Could not find a gcc that supports the __thread directive!

 * please update to gcc-3.2.2-r1 or later, and try again.

!!! ERROR: sys-libs/glibc-2.3.4.20041102 failed.

!!! Function check_nptl_support, Line 158, Exitcode 0

!!! No __thread support in gcc!

!!! If you need support, post the topmost build error, NOT this status message.
```

Mój make.conf:

```
CHOST="i686-pc-linux-gnu"

CFLAGS="-march=athlon-xp -O2 -fomit-frame-pointer -pipe"

CXXFLAGS="-march=athlon-xp -O2 -s -pipe"

LDFLAGS="-s -z combreloc"

ACCEPT_KEYWORDS="~x86"

ALSA_DRIVERS="via82xx"

PORTAGE_TMPDIR=/var/tmp

PORTDIR=/usr/portage

DISTDIR=/portage/distfiles

PKGDIR=/portage/packages

RPMDIR=/portage/rpms

PORT_LOGDIR=/var/log/portage

FETCHCOMMAND="/usr/bin/wget -t 5 --passive-ftp \${URI} -P \${DISTDIR}"

RESUMECOMMAND="/usr/bin/wget -c -t 5 --passive-ftp \${URI} -P \${DISTDIR}"

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

GENTOO_MIRRORS="http://gentoo.prz.rzeszow.pl http://gentoo.zie.pg.gda.pl http://src.gentoo.pl http://gentoo.oregonstate.edu"

MAKEOPTS="-j2"

AUTOCLEAN="yes"

FEATURES="sandbox ccache"

CCACHE_SIZE="2G"

USE="nptl nptlonly 3dnow alsa acpi amd avu bmp bzlib cdr cdrom cups curl divx4linux evo flash foomaticdb freetype ftp gd gimp gimpprint gpm irda javascript jpeg jpeg2k kadu-modules kadu-voice lesstif libwww mmx mmx2 morif moilla mp3 mpeg mpeg4 mplayer music net nvidia oav oggvorbis opengl oss pcre pdf png pnp print qt svga sox usb tga tiff videos wmf wxwin wxwindows xine xmms xosd xscreensaver xvid xprint X zlib"

```

tresc dotychczasowego emerge info:

```
Portage 2.0.51-r3 (default-linux/x86/2004.3, gcc-3.4.3, glibc-2.3.4.20041102-r0, 2.6.7 i686)

=================================================================

System uname: 2.6.7 i686

Gentoo Base System version 1.4.16

Autoconf:

Automake:

Binutils: sys-devel/binutils-2.15.92.0.2-r1

Headers:  sys-kernel/linux26-headers-2.6.8.1-r1

Libtools:

ACCEPT_KEYWORDS="x86 ~x86"

AUTOCLEAN="yes"

CFLAGS="-march=athlon-xp -O2 -fomit-frame-pointer -pipe"

CHOST="i686-pc-linux-gnu"

COMPILER=""

CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3/share/config /usr/share/config /var/qmail/control"

CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d"

CXXFLAGS="-march=athlon-xp -O2 -s -pipe"

DISTDIR="/portage/distfiles"

FEATURES="autoaddcvs autoconfig ccache distlocks sandbox sfperms"

GENTOO_MIRRORS="http://gentoo.prz.rzeszow.pl http://gentoo.zie.pg.gda.pl http://src.gentoo.pl http://gentoo.oregonstate.edu"

MAKEOPTS="-j2"

PKGDIR="/portage/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY=""

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

USE="3dnow X acpi alsa amd apm arts avi avu berkdb bitmap-fonts bmp bzlib cdr cdrom crypt cups curl divx4linux encode evo f77 flash foomaticdb fortran freetype ftp gd gdbm gif gimp gimpprint gnome gpm gtk gtk2 imlib irda javascript jpeg jpeg2k kadu-modules kadu-voice kde lesstif libg++ libwww mad mikmod mmx mmx2 moilla morif motif mp3 mpeg mpeg4 mplayer music ncurses net nls nptl nptlonly nvidia oav oggvorbis opengl oss pam pcre pdf pdflib png pnp print python qt quicktime readline sdl sox spell ssl svga tcpd tga tiff truetype usb videos wmf wxwin wxwindows x86 xine xml2 xmms xosd xprint xscreensaver xv xvid zlib"

```

----------

## Woocash

Nie przejrzałęm jeszcze tego wątka do końca, ale mam jedną uwagę (nie ja tylko glibc  :Wink: )

 *Quote:*   

> 
> 
> ```
>  * Warning! Gentoo's GLIBC with NPTL enabled now behaves like the
> 
> ...

 

dodaj sobie nptlonly do USE, bo będzie Ci dwa razy kompilował glibc'a, raz z linux-headers, a drugi raz z nptl'em.

Hmm, przeglądałęś cały ten wątek ten co podałem ?

----------

## -reverend

Ja tam  troche kulawo z angielskim. Przejrzalem tylko kilka postow i przetlumczylem sobie te HOWTO. W HOWTO nie było nigdzie napisalne o nptlonly, przyznam ze wpadlem an to czytajac inne teksty ale chyba troche za poznow bo dopiero po tym jak wylecial mi blad...

----------

## -reverend

zaczalem wszystko od pczatku z nptlonly no i teraz jest to samo tylko bez tego komunatu co zaznaczyles. bootstrap staje dokladnie w tym samym miejscu. Dlaczego?

----------

## Woocash

Hmm, jak widać how-to nie było dawno akualizowane, jedyne co przychodzi mi do głowy to ściągnięcie jeszcze raz tarballa, albo spróbowanie z 2004.2.

----------

## -reverend

czyli jak? sciagnac live cd 2004.2 i

emerge sync

/usr/portage/scripts/bootstrap.sh???

Moim zdaniem emerge sync  i tak pobierze mi najnowszego bootstrapa. Moze sie myle nie wiem. Jeżeli 200.4.2 to iinaczej bedzie rpzebiegac porces instalacji. Jak poźniej zupgreadowac system do wersji 2004.3?

----------

## Woocash

No tak, ale w tym wypadku nie chodzi o bootstrapa, tylko o gcc, próbowałeś wypakować jeszcze raz tarball'a ?

----------

## -reverend

Chodzi Tobie o stagq1? Za każdym razem próbuję od nowa i nic z tego instalacja caly czas sie zacina.

----------

## Woocash

A takie głupie pytanie, (strzał na ślepo): próbowałęś kompilacji glibc'a brz nptl ?

EDIT: A probowales przekompilowac gcc ? Lub ew. zmienic poprzez gcc-config ?

----------

## -reverend

tak wtedy idzie ale jakis blad wyskakuje w momencie instalacji gcc, przy emergowaniu czegos tam przyed gcc. Teraz nie pamietam, to dawno bylo wiec moge sie mylic. Mecze sie juz dobrych pare dni z ta instalacja...

----------

## -reverend

w trakcie bootstrapa gcc-config u mnie nie dziala. A właśnie emergoeanie gcc wywala blad o ktorym wyzej...

----------

## C1REX

Ja jednak polecam puścić na początek z x86, a dopiero później ewentualnie przekompilować z ~x86. 

Czasami na ~x86 wychodzą dziwne problemy. Ebuildy z serii niestabilnych nie są tak dokładnie testowane. 

Może jednak łatwiej ominąć problem niż szukać rozwiązania.

----------

## sebas86

Czy konieczność włączenia ~x86 była związana z zamaskowaniem kernel-headers w czasie tworzenia tego dokumentu i czy nadal są jakieś wskazania aby z tego korzystać? Nie używam ale wolę wiedzieć.  :Wink: 

----------

## Ratman

raczej tak, poza tym w USE starczy chyba tylko nptlonly, wszelakie kompilacje jakie teraz robiłem a używały ntpl zawsze dostawałem komunikat, że nptl jest natywne i starczy "nptlonly"

----------

