Komplettierung und diverse Korrekturen
git-svn-id: svn://svn.compuextreme.de/Viitor/V962/ViitorMake@5897 504e572c-2e33-0410-9681-be2bf7408885
This commit is contained in:
parent
a3205eeaeb
commit
d2b4248c0b
@ -1,4 +1,4 @@
|
|||||||
ViitorLinux genpkg Module Programming Guide
|
ViitorLinux genpkg Module Programming Guide
|
||||||
|
|
||||||
Hier wird versucht einen Ueberblick ueber die Funktionalitaet von genpkg
|
Hier wird versucht einen Ueberblick ueber die Funktionalitaet von genpkg
|
||||||
zu geben, sowie die daraus resultierenden Richtlinien zur Module
|
zu geben, sowie die daraus resultierenden Richtlinien zur Module
|
||||||
@ -12,7 +12,8 @@ werden ueber Variablen die Pfade zu den Sourcen, zum "Make" Verzeichniss, in
|
|||||||
welchem die Sourcen entpackt, und die binarys erzeugt werden, usw eingestellt.
|
welchem die Sourcen entpackt, und die binarys erzeugt werden, usw eingestellt.
|
||||||
Ausserdem wird die System Optimierung fuer das Zielsystem ($TARGET, $CPU)
|
Ausserdem wird die System Optimierung fuer das Zielsystem ($TARGET, $CPU)
|
||||||
eingestellt.
|
eingestellt.
|
||||||
Dabei ist $TARGET von $CPU abhaengig. Aktuell werden folgende TARGET unterstuetzt:
|
Dabei ist $TARGET von $CPU abhaengig. Aktuell werden folgende
|
||||||
|
TARGET definitionen unterstuetzt:
|
||||||
|
|
||||||
i586-Viitor$VERSION-linux-gnu = Pentium,
|
i586-Viitor$VERSION-linux-gnu = Pentium,
|
||||||
K6 prozessoren
|
K6 prozessoren
|
||||||
@ -25,8 +26,8 @@ athlon-Viitor$VERSION-linux-gnu = AMD Athlon K7,
|
|||||||
x86_64-Viitor$VERSION-linux-gnu = AMD K8 (opteron),
|
x86_64-Viitor$VERSION-linux-gnu = AMD K8 (opteron),
|
||||||
amd64
|
amd64
|
||||||
turion als multilib (32/64 BIT)
|
turion als multilib (32/64 BIT)
|
||||||
ungetestet mangels system: Intel CPU mit EMT64
|
Intel CPU mit EMT64
|
||||||
sparc64-Viitor$VERSION-linux-gnu = Ultrasparc2 CPU im Multilib Modus
|
sparc64-Viitor$VERSION-linux-gnu = Ultrasparc2 (In Entwicklung)
|
||||||
|
|
||||||
Die Funktion der Pfad Variablen ist im File defsys hinreichend
|
Die Funktion der Pfad Variablen ist im File defsys hinreichend
|
||||||
dokumentiert. Daher wird hier nicht naeher darauf eingegangen.
|
dokumentiert. Daher wird hier nicht naeher darauf eingegangen.
|
||||||
@ -37,11 +38,11 @@ eine entsprechendes Verhalten festgelegt.
|
|||||||
|
|
||||||
BIT1 (1):Wenn binaerpacket schon existiert, entsprechenden Warnhinweis
|
BIT1 (1):Wenn binaerpacket schon existiert, entsprechenden Warnhinweis
|
||||||
Unterdruecken
|
Unterdruecken
|
||||||
BIT2 (2):Package mit "forece" (-f bei installpkg) installieren.
|
BIT2 (2):Package mit "forec" (-f bei installpkg) installieren.
|
||||||
d.H. das package wird ohne rueckfrage, auch wenn es bereits
|
d.H. das package wird ohne rueckfrage, auch wenn es bereits
|
||||||
installiert ist eingespielt
|
installiert ist eingespielt
|
||||||
BIT3 (4):Sources nicht entpacken. Modul kuemmert sich selber darum
|
BIT3 (4):Sources nicht entpacken. Modul kuemmert sich selber darum
|
||||||
Dies ist vor allem bei inconsistenten srcarchive- srcdir- und
|
Dies ist vor allem bei inkonsistenten srcarchive- srcdir- und
|
||||||
Modulenamen notwendig
|
Modulenamen notwendig
|
||||||
BIT5 (8):pkg erzeugung wird unterbunden. Nach dem build muss
|
BIT5 (8):pkg erzeugung wird unterbunden. Nach dem build muss
|
||||||
Sich das Modul selber darum kuemmern. Ist dann notwendig,
|
Sich das Modul selber darum kuemmern. Ist dann notwendig,
|
||||||
@ -55,6 +56,7 @@ BIT7 (32):dependics als "forced" ein *.dep eintragen. Damit wird eine
|
|||||||
Installation ohne vorhandene dependics unterbunden.
|
Installation ohne vorhandene dependics unterbunden.
|
||||||
BIT8 (64):Aufraeumen des source verzeichnisses nach dem Build unterlassen
|
BIT8 (64):Aufraeumen des source verzeichnisses nach dem Build unterlassen
|
||||||
BIT9 (128):Vorhandene Patches NICHT automatisch anwenden
|
BIT9 (128):Vorhandene Patches NICHT automatisch anwenden
|
||||||
|
BIT10 (256):installpkg mit -o (overwrite existing files) ausführen
|
||||||
|
|
||||||
Bits in einer Variablen koennen mit
|
Bits in einer Variablen koennen mit
|
||||||
|
|
||||||
@ -92,10 +94,9 @@ Der Ablauf von genpkg;
|
|||||||
|
|
||||||
genpkg bekommt als Argument den Namen des zu verwendenden Modules uebergeben.
|
genpkg bekommt als Argument den Namen des zu verwendenden Modules uebergeben.
|
||||||
Ueber die Funktion (in functions/functions definiert) UnPack werden in
|
Ueber die Funktion (in functions/functions definiert) UnPack werden in
|
||||||
$LFSSOURCE/$SRCPATH gefundene source archive (tar.gz, tar.bz2) nach $MKPKG (aus
|
$LFSSOURCE/$SRCPATH gefundene source archive (tar.gz, tar.bz2) nach
|
||||||
defsys) entpackt.
|
$MKPKG (aus defsys) entpackt. Weiterhin wird geprueft ob gleichnamige files
|
||||||
Weiterhin wird geprueft ob gleichnamige files mit <ARCHPATTERN>.patch.*
|
mit <ARCHPATTERN>.patch.* existieren.
|
||||||
existieren.
|
|
||||||
Sofern diese vorhanden sind, und BIT9 (128) in $MKPKG NICHT gesetzt ist,
|
Sofern diese vorhanden sind, und BIT9 (128) in $MKPKG NICHT gesetzt ist,
|
||||||
werden die patches mit "patch -p1" im gerade entpackten sourcetree eingespielt.
|
werden die patches mit "patch -p1" im gerade entpackten sourcetree eingespielt.
|
||||||
Weiterhin wird $TMPROOT um <PKGNAME> erweitert; TMPROOT=$TMPROOT/<pkgname>$$ und
|
Weiterhin wird $TMPROOT um <PKGNAME> erweitert; TMPROOT=$TMPROOT/<pkgname>$$ und
|
||||||
@ -171,6 +172,7 @@ dev.tar
|
|||||||
man.drg
|
man.drg
|
||||||
man.cont
|
man.cont
|
||||||
man.tar
|
man.tar
|
||||||
|
preinstall
|
||||||
|
|
||||||
Dieses File wird nach $DISTTARGET/$SRCPATH geschrieben.
|
Dieses File wird nach $DISTTARGET/$SRCPATH geschrieben.
|
||||||
|
|
||||||
@ -204,6 +206,7 @@ init/ Ein hier vorgefundenes genpkg wird gesourced,
|
|||||||
nach beendigung von init/genpkg geloescht!
|
nach beendigung von init/genpkg geloescht!
|
||||||
CVS alle vorhandenen CVS Verzeichnisse werden
|
CVS alle vorhandenen CVS Verzeichnisse werden
|
||||||
geloescht
|
geloescht
|
||||||
|
.svn Subversion status files werden ebenfalls aufgeraeumt
|
||||||
|
|
||||||
Nach dieser Aufbereitung werden alle vorhandenen Verzeichnisse und files
|
Nach dieser Aufbereitung werden alle vorhandenen Verzeichnisse und files
|
||||||
1:1 nach $TMPROOT kopiert.
|
1:1 nach $TMPROOT kopiert.
|
||||||
@ -250,9 +253,9 @@ ArchiveName() Wandelt den Namen eines beliebigen Source Archives in
|
|||||||
ERGEBNISS=`ArchivName()`
|
ERGEBNISS=`ArchivName()`
|
||||||
ARGUMENTE: ArchiveName <src filename>
|
ARGUMENTE: ArchiveName <src filename>
|
||||||
|
|
||||||
GetCVS() Dient dem Checkout von Addon File fuer pkgs. Ist weiter
|
GetSVN() Dient dem Checkout von Addon File fuer pkgs. Ist weiter
|
||||||
oben genauer beschrieben!
|
oben genauer beschrieben!
|
||||||
ARGUMENTE: GetCVS <CVS Projetct Name> <$TMPROOT>
|
ARGUMENTE: GetSVN <Subversion Projetct Name> <$TMPROOT>
|
||||||
|
|
||||||
GenDependics() Gibt eine Liste aller Librarys der im Uebergebenen Pfad
|
GenDependics() Gibt eine Liste aller Librarys der im Uebergebenen Pfad
|
||||||
befindlichen binary Files zurueck
|
befindlichen binary Files zurueck
|
||||||
@ -262,6 +265,12 @@ StripPkg() Durchsucht den angegebenen Pfad nach binary files, und
|
|||||||
entfernt unnoetige debugging informationen aus diesen.
|
entfernt unnoetige debugging informationen aus diesen.
|
||||||
ARGUMENTE StripPkg <Verzeichniss in welchem gesucht werden soll>
|
ARGUMENTE StripPkg <Verzeichniss in welchem gesucht werden soll>
|
||||||
|
|
||||||
|
ClearHostSysNameing32()
|
||||||
|
Siehe ClearHostSysNameing. Hier geht es um TARGET32, wie
|
||||||
|
von mk32() verwendet. und ist beim Multilib Build fuer
|
||||||
|
die 32 Bit Version der Binarys
|
||||||
|
ARGUMENTE: ClearHostSysNameing <Zu untersuchendes Verzeichniss>
|
||||||
|
|
||||||
ClearHostSysNameing()
|
ClearHostSysNameing()
|
||||||
Wird beim ./configure aufruf eine --target oder --host
|
Wird beim ./configure aufruf eine --target oder --host
|
||||||
angegeben, nehmen manche makes dies zum anlass die erzeugten
|
angegeben, nehmen manche makes dies zum anlass die erzeugten
|
||||||
@ -271,17 +280,6 @@ ClearHostSysNameing()
|
|||||||
benennt diese nach <binname> um.
|
benennt diese nach <binname> um.
|
||||||
ARGUMENTE: ClearHostSysNameing <Zu untersuchendes Verzeichniss>
|
ARGUMENTE: ClearHostSysNameing <Zu untersuchendes Verzeichniss>
|
||||||
|
|
||||||
ClearHostSysNameing32()
|
|
||||||
Siehe ClearHostSysNameing. Hier geht es um TARGET32, wie
|
|
||||||
von mk32() verwendet. und ist beim Multilib Build fuer
|
|
||||||
die 32 Bit Version der Binarys
|
|
||||||
ARGUMENTE: ClearHostSysNameing <Zu untersuchendes Verzeichniss>
|
|
||||||
|
|
||||||
ClearTargetNameing()
|
|
||||||
Siehe ClearHostSysNameing. Jedoch wird hier nicht
|
|
||||||
Umbenannt, sondern ein link mit <binname> angelegt.
|
|
||||||
ARGUMENTE: ClearTargetNameing <zu untersuchendes Verzeichniss>
|
|
||||||
|
|
||||||
MakeCheck() Wrapper fuer "make check". Prueft ein FLAG, das z.B. bei
|
MakeCheck() Wrapper fuer "make check". Prueft ein FLAG, das z.B. bei
|
||||||
makeViitor mit der Option -c gesetzt wird, und fuehrt
|
makeViitor mit der Option -c gesetzt wird, und fuehrt
|
||||||
nur wenn das FLAG gesetzt ist ein
|
nur wenn das FLAG gesetzt ist ein
|
||||||
@ -289,50 +287,7 @@ MakeCheck() Wrapper fuer "make check". Prueft ein FLAG, das z.B. bei
|
|||||||
aus.
|
aus.
|
||||||
ARGUMENTE: MakeCheck <Optionen fuer make>
|
ARGUMENTE: MakeCheck <Optionen fuer make>
|
||||||
|
|
||||||
NoOpt() Schaltet die Optimierung (durch $CFLAGS und $CXXFLAGS)
|
CleanTextFiles entfernt aus allen files in $TMPROOT den string aus $TMPROOT
|
||||||
fuer den aktuellen build in 2 stufen aus.
|
|
||||||
Hinfaellig ab der Viitor Version 961, da hier keine
|
|
||||||
CFLAGS mehr gesetzt werden, und die Optimierung im
|
|
||||||
Module explizit durch Verwendung von $BUILDOPTIONS und
|
|
||||||
$BUILDOPTIONS32 selektiert werden muss.
|
|
||||||
ARGUMENTE: NoOpt [0|1|2]
|
|
||||||
0 Optimierung off
|
|
||||||
2 Optimierung off
|
|
||||||
* Optimierung O3 entfernen alles andere
|
|
||||||
beibehalten
|
|
||||||
|
|
||||||
RestoreOpt() Schaltet die mit NoOpt ausgeschaltene Optimierung wieder
|
|
||||||
ein wird durch CleanUp() aufgerufen!
|
|
||||||
|
|
||||||
InstallOldKernelh()
|
|
||||||
Tauscht /usr/src/linux durch die Kernelheader eines
|
|
||||||
2.4.x kernels aus. Hilft oft bei kompile Problemen die
|
|
||||||
aus api aenderungen am aktuellen Kernel resultieren.
|
|
||||||
Muss fuer die V961 neu geschrieben werden, sofern sie
|
|
||||||
noch benoetigt wird.
|
|
||||||
ARGUMENTE: InstallOldKernelh [1]
|
|
||||||
1 Installieren
|
|
||||||
* Orginal Kernel wieder herstellen
|
|
||||||
Wird so von CleanUp aufgerufen.
|
|
||||||
|
|
||||||
UseOldGcc() Leider hat sich im laufe der gcc Entwicklung auch das
|
|
||||||
Verstaendniss der C Syntax im gcc angepasst.
|
|
||||||
Daraus resultiert, das der aktuelle gcc (V961 verwendet
|
|
||||||
den gcc 4.1.1) oft aeltere sourcen (ANSI C, oder gar
|
|
||||||
Kerningham Richi C) als fehler anmeckert.
|
|
||||||
Daher werden in Viitor verschiedene gcc Versionen
|
|
||||||
verwendet. die Aelteste Version stellt der gcc/2.95.x
|
|
||||||
dar, mit Viitor V961 nicht mehr erstellt wird, da diesem
|
|
||||||
eine Unterstuetzung fuer 64 Bit vollstaendig fehlt.
|
|
||||||
Ansonsten wird noch eine 3.3.x mitgeliefert, welche sich
|
|
||||||
als sehr zuverlaessig erwiesen hat.
|
|
||||||
Mittels dieser Funktion kann die zu verwendende gcc
|
|
||||||
version umgeschalten werden.
|
|
||||||
ARGUMENTE; UseOldGcc [1|2]
|
|
||||||
1 gcc-2.95-3 Verwenden
|
|
||||||
2 gcc-3 Verwenden
|
|
||||||
* System default gcc verwenden
|
|
||||||
Wird so von CleanUp verwendet.
|
|
||||||
|
|
||||||
GetFlags() Rechnet Rechte strings wie sie von ls -l ausgegeben
|
GetFlags() Rechnet Rechte strings wie sie von ls -l ausgegeben
|
||||||
werden in Ihre Oktalen Entsprechungen um und gibt den
|
werden in Ihre Oktalen Entsprechungen um und gibt den
|
||||||
@ -353,20 +308,21 @@ MakeMgtFiles() Erstellt aus einem vorgegebenen Tree die <prefix>.cont
|
|||||||
|
|
||||||
SetConfig() $PKG_CONFIG_PATH steuert pkg-config. und gibt diesem an,
|
SetConfig() $PKG_CONFIG_PATH steuert pkg-config. und gibt diesem an,
|
||||||
wo die files zur Linker Configuration von libraries zu
|
wo die files zur Linker Configuration von libraries zu
|
||||||
finden sind. Die Entsprechenden Konfigurationen werden von
|
finden sind. Die Entsprechenden Konfigurationen werden
|
||||||
den entsprechenden Libraries mitgebracht, und beim "make install"
|
von den entsprechenden Libraries mitgebracht, und beim
|
||||||
eingespielt.
|
"make install" eingespielt.
|
||||||
Mit Viitor64 liegen diese sowohl unter */lib/pkgconfig als auch
|
Mit Viitor64 liegen diese sowohl unter */lib/pkgconfig
|
||||||
unter */lib64/pkgconfig. Je nachdem ob fuer 32 BIT oder fuer 64
|
als auch unter */lib64/pkgconfig. Je nachdem ob fuer
|
||||||
BIT gebaut wird, muss nun das richtige configfile gewaehlt werden.
|
32 BIT oder fuer 64 BIT gebaut wird, muss nun das
|
||||||
Welche verwendet werden bestimmen die pfade in $PKG_CONFIG_PATH.
|
richtige configfile gewaehlt werden. Welche verwendet
|
||||||
SetConfig sorgt jetzt mittels sed dafuer, das entweder nur
|
werden bestimmen die pfade in $PKG_CONFIG_PATH.
|
||||||
die lib64 ("s/lib/lib64/") oder nur die lib ("s/lib64/lib")
|
SetConfig sorgt jetzt mittels sed dafuer, das entweder
|
||||||
verzeichnisse durchsucht werden.
|
nur die lib64 ("s/lib/lib64/") oder nur die lib
|
||||||
|
("s/lib64/lib") verzeichnisse durchsucht werden.
|
||||||
ARGUMENTE: SetConfig [32|64|0]
|
ARGUMENTE: SetConfig [32|64|0]
|
||||||
32 PKG_CONFIG_PATH auf lib umstellen
|
32 PKG_CONFIG_PATH auf lib umstellen
|
||||||
64 PKG_CONFIG_PATH auf lib64 umstellen
|
64 PKG_CONFIG_PATH auf lib64 umstellen
|
||||||
0 Orginal PKG_CONFIG_PATH wieder herstellen
|
0 Orginal PKG_CONFIG_PATH wieder herstellen
|
||||||
|
|
||||||
X11R7_Fix() Mit der Umstellung der X11 Version auf 7.x.x wird in
|
X11R7_Fix() Mit der Umstellung der X11 Version auf 7.x.x wird in
|
||||||
Viitor auch aus /usr/X11R6 ein /usr/X11R7. Einige
|
Viitor auch aus /usr/X11R6 ein /usr/X11R7. Einige
|
||||||
@ -376,26 +332,37 @@ X11R7_Fix() Mit der Umstellung der X11 Version auf 7.x.x wird in
|
|||||||
koennen. Dies wird nach Erstellung des Packages von
|
koennen. Dies wird nach Erstellung des Packages von
|
||||||
CleanUp wieder entfernt
|
CleanUp wieder entfernt
|
||||||
|
|
||||||
Fix_Input_h() Einige Programme, die Joysticks, maus oder tastatur
|
MakeFifo() Legt einen Fifo an und gibt den Filenamen zurück.
|
||||||
verwenden sind von den deklarationen in
|
wird von ExecCommand benötigt (paralles abarbeiten
|
||||||
/usr/src/linux/include/linux/input.s bzw.
|
von Shell Commands)
|
||||||
/usr/include/linux/input.h abhaengig. Da in Kernel 2.6.x
|
|
||||||
permanent aenderungen der api stattfinden, macht dieses
|
|
||||||
file in aktuellen versionen haeufig probleme.
|
|
||||||
Mit dieser Routine wird eine "saubere" input.h aus dem
|
|
||||||
Kernel 2.4.x tree temporaer eingespielt, die nachher
|
|
||||||
durch CleanUp wieder aufgeraeumt wird.
|
|
||||||
|
|
||||||
UseKernelh() Die mit V961 eingefuehrten gepatchten kernel Header files
|
ExecCommand() Führt commandos nach einem InitDirspatch parallelisiert
|
||||||
von linuxfromscratch sind leider nicht komplett. Werden kernel
|
aus.
|
||||||
Includes benoetigt, die in den linuxfromscratch packeten nicht
|
|
||||||
enthalten sind, kann mit UserKenrelh 1 auf die unter
|
InitDispatch() Initialisiere Pralell Shell Execution Environment
|
||||||
/usr/src/linux/include/linux installierten header umgeswitcht
|
|
||||||
werden. Cleanup, oder ein UserKernelh 0 switcht wieder auf
|
DispatchCmd() Auführungsroutine für Prallel Execution Environment
|
||||||
die gepatchten includes zurueck.
|
|
||||||
ARGUMENTE: UseKernelh [1|0]
|
EndDispatch() Wartet daruaf das Alle Commands im Parallel Excution
|
||||||
1 = auf /usr/src/linux/include/linux switchen
|
Environment sich beenden, und beendet dann das PEE.
|
||||||
0 = /usr/include/linux.orig wieder herstellen
|
|
||||||
|
GenDynLib32() Baut aus einer statischen Library entsprechende
|
||||||
|
Dynamische Pendantes. Hierzu ist es notwendig das die
|
||||||
|
Objectfiles der statischen Library mit -fPIC übersetzt
|
||||||
|
wurden. Als Argumente muss der Absolute (!) Pfad zur
|
||||||
|
Statischen Library, sowie die Version der zu
|
||||||
|
erzeugenden Dynamischen Library angegeben werden.
|
||||||
|
Diese Funktion muss speziell bei einem Multilib (64Bit)
|
||||||
|
build verwendet werden, wenn eine 32 Bit Library
|
||||||
|
gebaut werden soll (aus eine 32 Bit Statischen Lib)
|
||||||
|
|
||||||
|
GenDynLib() Siehe GenDynLib32(). Baut 64 Bit Libs bei einem
|
||||||
|
Multilib Build, und 32 Bit libs bei einerm 32 Bit Build
|
||||||
|
|
||||||
|
extractfile() Extrahiert Files aus einem Viitor Archive.
|
||||||
|
Aufruf mit: extractfile <ArchiveName> <FileName>
|
||||||
|
wobei Filename der name eines Archive Bestandteils sein
|
||||||
|
muss (wie weiter oben beschrieben)
|
||||||
|
|
||||||
Wird bei der Modulerstellung bemerkt, das weitere Routinen sinnvoll
|
Wird bei der Modulerstellung bemerkt, das weitere Routinen sinnvoll
|
||||||
sind, so koennen diese in functions/functions erstellt werden, und
|
sind, so koennen diese in functions/functions erstellt werden, und
|
||||||
|
Loading…
Reference in New Issue
Block a user