Otázka na tvůj skript

Ivo Panacek ivop na regionet.cz
Pátek Září 13 10:36:35 CEST 2002


On Pá, 2002-09-13 at 04:49, n_petr na seznam.cz wrote:
> Ahoj,
> mohl bys mi prosímtě vysvětlit tuto část tvého skriptu ?
> 
> 1) na co se tam používají libgcc a co to má za výsledek
> 
> 2) co je zač to _udivdi3.o

No, to je jednoduche. Kdyz jsem to prvne cvicne
delal na SuSE (prosinec 2001), vse se rozjelo vicemene
dle jejich navodu. Kdyz jsem to opakoval na RedHatu, tak
mi tam chybel symbol _udivdi3. Pavel Kankovsky mi poradil,
(linux konference 13.12.2001)
ze to je v knihovnach a ze v nekterych pripadech 
je uz rovnou v kernelu.
No tak jsem to potreboval prikompilovat. Takze
z libgcc si vycucnu ten _udivdi3.o a slinkuji ho do fxusb.o

> 
> echo "-----------------------------------------------------"
> echo "priprava libgcc"
> 
> find /usr/lib -name 'libgcc.a' -print | while read file
> do
>     [ ! -f $file ] && continue
>     echo "Pouziji libgcc: $file"
>     mkdir libgcc
>     cd libgcc
>     ar -x $file
>     break
> done
> 
> [ ! -d libgcc ] && echo "$0: Chyba: je treba nainstalovat balik gcc" && exit
> 
> # fxusb.o module
> [ ! -f libgcc/_udivdi3.o ] && echo "$0: Chyba: chybi libgcc/_udivdi3.o" &&
> exit
> 
> echo "-----------------------------------------------------"
> echo "uprava zdrojaku a Makefile"
> 
> perl -pi -e 's/0x2000/0x2800/ if /^#define\s+PRODUCT_ID\s+/' src.drv/main.c
> perl -pi -e 's/$/ ..\/libgcc\/_udivdi3.o/ if /^LIBRARY\s+=\s+.*CARD/'
> src.drv/makefile
> perl -pi -e 's/^/CC = gcc\n/ if /^DEFINES\s+=\s+/' src.drv/makefile
> KERNELDIR="/usr/src/linux"
> 
> if [ -L /usr/src/linux-2.4 -a -d /usr/src/linux-2.4 ]; then
>     echo "Pouziji zdrojaky kernelu z /usr/src/linux-2.4"
>     perl -pi -e 's/$/ -DMODVERSIONS -include
> \/usr\/src\/linux-2.4\/include\/linux\/modversions.h/ if
> /^\s+-D__\$\(CARD\)/' src.drv/makefile
>     perl -pi -e 's/linux/linux-2.4/ if /^CCFLAGS\s+=\s+/' src.drv/makefile
> elif [ -L /usr/src/linux -a -d /usr/src/linux ]; then
>     echo "Pouziji zdrojaky kernelu z /usr/src/linux"
>     perl -pi -e 's/$/ -DMODVERSIONS -include
> \/usr\/src\/linux\/include\/linux\/modversions.h/ if /^\s+-D__\$\(CARD\)/'
> src.drv/makefile
> else
>     echo "$0: Chyba: chybi zdrojaky kernelu" && exit
> fi
> 
> 
> 3) A podrobně vysvětlit co provede toto a k čemu je to dobré:
> 
> perl -pi -e 's/$/ ..\/libgcc\/_udivdi3.o/ if /^LIBRARY\s+=\s+.*CARD/'
> src.drv/makefile
> perl -pi -e 's/^/CC = gcc\n/ if /^DEFINES\s+=\s+/' src.drv/makefile
> 
> Jaký má následek, pokud se vymění fxusb-lib.o za _udivdi3.o jestli to dobře

nene, ta lib s tim vubec nijak nesouvisi !!!

> chápu. Možná to řeší ty problémy:
> "will taint the kernel: non GPL license - Proprietary"
> 
> Chtělo by to těm zdrojákům podstrčit normální GPL licenci, aby to nehlásilo
> ty hlášky. Nedělá to právě tohle to ?

Urcite ne. Ja na tohle uz nekde narazil, ne presne takhle.
Bylo to tusim kdyz jsem se snazil patchovat kernel, aby fritze
umel (to jsem jeste o existenci driveru od avm nevedel).
Takze jsem ruzne stahoval isdn4linux, ... ze spousty zdroju.
A byly tam i patche na kernel. Tam se ukazalo, ze nektere
kousky tam jsou rovnou binarni a padaly z nich takovehle (ne presne)
hlasky a bylo potreba je rucne prekompilovat primo
v adresarovem strome kernelu. Mam pocit, ze si do sebe
zaklely nejaky checksum dalsich souboru a pak se zlobily,
kdyz nesedel. Urcite tam byla hlaska "will taint the kernel" !

Takze bych patral ve zdrojacich kernelu k tem modulum,
ktere jsou pro fritze jeste potreba (capi, ...).

Tam nekde to urcite je. A urcite to pujde upravit.
Ale domnivam se (!), ze ta hlaska nerusi funkcnost.

ivo




Další informace o konferenci Linux