Superuser

Autor Thema: GCC 2.95.3 für Solaris 2.5.1  (Gelesen 34445 mal)

Offline escimo

  • Sobl Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1674
  • SPARCstation 2
    • Youtube-Kanal opensparcbox.org
Re: GCC 2.95.3 für Solaris 2.5.1
« Antwort #15 am: 11. Februar 2007, 21:26:13 »
Jetzt hab ich es fast:

Das Programm hinter dem Menü-Eintrag "Terminal" und "Console" ist identisch. Lediglich die Aufrufoptionen des dahinter-liegenden Programms dtterm (als Terminal-Emulator) ist unterschiedlich:

Im CDE: Workspace Menü :: Programs :: Terminal ...
startet in etwa...
Code: (bash) [Auswählen]
dtterm -title "Terminal" +lsDie Option +ls legt fest, dass eine Standard-Shell gestartet werden soll, keine Login-Shell. D.h., diese Option verhindert letztlich das Einlesen der systemweiten...
  • /etc/profile (sh, ksh)
  • /etc/.login (csh)
sowie der lokalen...
  • $HOME/.profile (sh, ksh)
  • $HOME/.login sowie $HOME/.cshrc (csh)
-Konfigurationsdateien. Dies ist die Standard-Einstellung (Default). Die CDE-Action ist unter /usr/dt/config/$LANG/sys.dtwmrc eingetragen und unter /usr/dt/appconfig/appmanager/$LANG/Desktop_Tools/ als Eintrag Dtterm hinterlegt.

Im CDE: Workspace Menü :: Programs :: Console ...
startet in etwa...
Code: (bash) [Auswählen]
dtterm -title "Console" -lsDie Option -ls legt fest, dass die zu startende Shell eine Login-Shell ist.  Die CDE-Action ist ebenfalls unter /usr/dt/config/$LANG/sys.dtwmrc eingetragen und unter /usr/dt/appconfig/appmanager/$LANG/Desktop_Tools/ als Eintrag DttermConsole hinterlegt.

Mit dem Kommando dtsearchpath lassen sich alle von CDE konfigurierten Umgebungsvariablen anzeigen. Leider nicht die $PATH-Variable für die Action Dtterm.  ???

Gruß
escimo
« Letzte Änderung: 11. Februar 2007, 23:05:33 von escimo »

sonnenblen.de - Das unabhängige Sun User Forum

Re: GCC 2.95.3 für Solaris 2.5.1
« Antwort #15 am: 11. Februar 2007, 21:26:13 »

Offline escimo

  • Sobl Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1674
  • SPARCstation 2
    • Youtube-Kanal opensparcbox.org
Re: GCC 2.95.3 für Solaris 2.5.1
« Antwort #16 am: 11. Februar 2007, 23:13:27 »
Der Pfad wird in der /usr/dt/bin/Xsession gesetzt. Leider nicht so was "echo $PATH" mit der Anwendung dtterm (Terminal) zurückgibt

Ich habe dann versucht nach einem Suchpfad rekursiv mit folgendem Befehl zu "greppen":

Code: (bash) [Auswählen]
find /usr -type f -print | xargs fgrep -n "/usr/contrib/bin"Als Ergebnis gibt die Befehlsfolge die Datei /usr/dt/bin/dtlogin, Zeile 505 an.

...mmh...Das bringt mich nicht wirklich weiter.
« Letzte Änderung: 08. Juli 2007, 19:52:55 von escimo »

Offline escimo

  • Sobl Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1674
  • SPARCstation 2
    • Youtube-Kanal opensparcbox.org
Re: GCC 2.95.3 für Solaris 2.5.1
« Antwort #17 am: 15. März 2007, 18:39:44 »
Demnächst geht es hier weiter, da ich demnächst wieder etwas mehr Zeit habe.

Dann wird dieser Text hier aktualisiert.

Aktualisierung: Da geänderte Beiträge nicht zu "Ungelesenen Beiträgen" zählen habe ich bezüglich einer Zwischenfrage ein neuen Beitrag an dieses Thema angehängt. - Entschuldigung.  :-[

Gruß
escimo
« Letzte Änderung: 26. März 2007, 00:29:06 von escimo »

Offline escimo

  • Sobl Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1674
  • SPARCstation 2
    • Youtube-Kanal opensparcbox.org
Re: GCC 2.95.3 für Solaris 2.5.1
« Antwort #18 am: 26. März 2007, 00:27:08 »
So es geht weiter...

Allerdings zunächst mit einer Frage, für die ich kein neues Thema aufgrund der Häufigkeit erstellen möchte:

Ist es möglich, mit einem TurboGXplus-Framebuffer im Zusammenhang mit einem Sync-fähigen TFT LCD-Display (z.B. Samsung SyncMaster 214T = 21" TFT) Aulösungen und Bildwiederholfrequenzen einzustellen, die außerhalb der Sun-Standards liegen (z.B. VESA-Einstellung 1280x1024@60Hz bei 63,981 kHz)?

Ich habe die Beiträge aus älteren Themen bereits durchgelesen. Dennoch lässt sich aus keinem der Kommentare, Ratschläge und Hinweise eine eindeutige Aussage ableiten.

Ich würde mich wie immer auf etwas Hilfe sehr freuen.

Gruß
escimo

Anmerkung: Ich plane in naher Zukunft einen TFT LCD (wahrscheinlich angegebenen Samsung SyncMaster 214T) zu kaufen. Nur sollte meine SS20 davon auch profitieren können, wenn ich den CRT ausrangiere (Sony Multiscan E400 wäre kostenlos abzugeben). ;)
« Letzte Änderung: 26. März 2007, 00:37:39 von escimo »

claus

  • Gast
Re: GCC 2.95.3 für Solaris 2.5.1
« Antwort #19 am: 26. März 2007, 07:35:23 »
Soweit ich das verstanden habe, sind die angegebenen Auflösungen die einzigen, die auch wirklich funktionieren, habs aber mangels Monitor(*) nie verifizieren können.

Claus

(*) = nach diversen vielen Monaten Arbeit auf Suns, über SSH, ist im Augenblick das Einrichten von CDE  ein interessantes Problem.

Offline escimo

  • Sobl Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1674
  • SPARCstation 2
    • Youtube-Kanal opensparcbox.org
Re: GCC 2.95.3 für Solaris 2.5.1
« Antwort #20 am: 27. März 2007, 23:39:39 »
Danke für deine Antwort Claus.

Echt mal Mist mit dem Unwissen. Ich könnte mir in den Arsch beißen. Das kann ich dann wohl wirklich nur probieren. Ähhh... :-\

Offline escimo

  • Sobl Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1674
  • SPARCstation 2
    • Youtube-Kanal opensparcbox.org
Re: GCC 2.95.3 für Solaris 2.5.1
« Antwort #21 am: 18. April 2007, 10:37:25 »
So...ich habe die Schnauze schon wieder richtig voll.  :-\

# uname -a
SunOS sypho 5.5.1 Generic_103640-42 sun4m sparc SUNW,SPARCstation-20

Hier mal mein generelles Vorgehen zum Übersetzen des GNU C-Compilers:

Wir nehmen an die Quellen liegen im Verzeichnis /opt/temp/gcc-2.95.3/ , der Compiler zum Übersetzen ist unter /usr/local/ installiert.
Hier noch weiterführende Informationen zu den installierten und genutzten Tools für das Kompilier-Vorhaben:
# pkginfo | grep SMC
application SMCgcc342      gcc
application SMCliconv      libiconv
application SMClintl       libintl
application SMCmake        make
Auch hier habe ich es mir vorerst ersparrt, die binutils, automake, autoconf und andere GNU-Tools zu installieren. Ich möchte einen Großteil der Tools von Solaris einsetzen lassen, wie z.B. m4, lex, as oder ar, die sich im Verzeichnis /usr/ccs/bin/ befinden.

# make --version
GNU Make 3.81
Copyright (C) 2006  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.

# gcc --version
This program built for sparc-sun-solaris2.5.1
gcc (GCC) 3.4.2
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.
Wie ihr sicher bemerkt habt, bin ich doch dazu übergegangen einen neuere Compiler-Suite (3.4.2 anstatt 2.95.3 oder 2.7.2) zu nutzen, da ich die libgcc_s.o benötige, die bei 2.95.3 und 2.7.2 nicht enthalten ist, aber zum Beipsiel von GNU make benötigt wird.

Her mal ein Paar Ausgaben, wenn was nicht vorhanden ist:
...
ld.so.1: make: fatal: libiconv.so.2: open failed: No such file or directory
Killed
# pkgadd -d /home/bli/sun551/*/libiconv-...
...
ld.so.1: make: fatal: libintl.so.3: open failed: No such file or directory
Killed
#  pkgadd -d /home/bla/sun551/*/libintl-...
ld.so.1: make: fatal: libgcc_s.so.1: open failed: No such file or directory
Killed
#  pkgadd -d /home/blo/sun551/*/libgcc-...

Umgebungsvariablen habe ich wie folgt unter CDE in einem dtterm-Fenster als root (su) gesetzt:
# PATH=/usr/local/bin:/usr/ccs/bin:$PATH; export PATH
# LD_LIBRARY_PATH=/usr/local/lib:/usr/ccs/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
# MANPATH=/usr/local/man:$MANPATH; export MANPATH
# CXX=`which gcc`; export CXX
# CC=`which gcc`; export CC

So jetzt geht es los:
# mkdir /opt/temp/gcc-sun4
# cd /opt/temp/gcc-sun4
# ../gcc-2.95.3/configure --help
...bla...
# more ../gcc-2.95.3/gcc/INSTALL
...
We _highly_ recommend that GCC be built using GNU make;
...interessant...
Den Inhalt zur Datei ../gcc-2.95.3/gcc/INSTALL findet hier auch online hier.

Schritt 1: das configure-Script
# ../gcc-2.95.3/configure --prefix=/opt/gnu --with-local-prefix=/opt/gnu

Created "Makefile" in /opt/temp/gcc-sun4 using "mh-frag"
Configuring libiberty...
creating cache ../config.cache
checking host system type... sparc-sun-solaris2.5.1
checking build system type... sparc-sun-solaris2.5.1
checking for ar... ar
checking for ranlib... ranlib
checking for gcc... /usr/local/bin/gcc
checking whether we are using GNU C... yes
checking whether /usr/local/bin/gcc accepts -g... yes
checking for POSIXized ISC... no
checking for a BSD compatible install... ../../gcc-2.95.3/libiberty/../install-sh -c
checking how to run the C preprocessor... /usr/local/bin/gcc -E
checking for sys/file.h... yes
checking for sys/param.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for unistd.h... yes
checking for strings.h... yes
checking for sys/time.h... yes
checking for sys/resource.h... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking whether the C compiler (/usr/local/bin/gcc -g -O2 ) works... yes
checking whether the C compiler (/usr/local/bin/gcc -g -O2 ) is a cross-compiler... no
checking for asprintf... no
checking for atexit... yes
checking for basename... no
checking for bcmp... yes
checking for bcopy... yes
checking for bzero... yes
checking for calloc... yes
checking for clock... yes
checking for getcwd... yes
checking for getpagesize... yes
checking for index... yes
checking for insque... yes
checking for memchr... yes
checking for memcmp... yes
checking for memcpy... yes
checking for memmove... yes
checking for memset... yes
checking for mkstemps... no
checking for putenv... yes
checking for random... yes
checking for rename... yes
checking for rindex... yes
checking for setenv... no
checking for sigsetmask... no
checking for strcasecmp... yes
checking for strchr... yes
checking for strdup... yes
checking for strncasecmp... yes
checking for strrchr... yes
checking for strstr... yes
checking for strtod... yes
checking for strtol... yes
checking for strtoul... yes
checking for tmpnam... yes
checking for vasprintf... no
checking for vfprintf... yes
checking for vprintf... yes
checking for vsprintf... yes
checking for waitpid... yes
checking for working alloca.h... yes
checking for alloca... yes
checking for ANSI C header files... yes
checking for pid_t... yes
checking for vfork.h... no
checking for working vfork... yes
checking for sys_errlist... yes
checking for sys_nerr... yes
checking for sys_siglist... no
checking for getrusage... yes
checking for on_exit... no
checking for psignal... yes
checking for strerror... yes
checking for strsignal... yes
checking for sysconf... yes
checking for times... yes
checking for sbrk... yes
checking for gettimeofday... yes
updating cache ../config.cache
creating ./config.status
creating Makefile
creating testsuite/Makefile
creating config.h
Configuring texinfo...
loading cache ../config.cache
checking for a BSD compatible install... ../../gcc-2.95.3/texinfo/../install-sh -c
checking whether build environment is sane... yes
checking whether make sets ${MAKE}... yes
checking for working aclocal... missing
checking for working autoconf... missing
checking for working automake... missing
checking for working autoheader... missing
checking for working makeinfo... missing
checking for gcc... (cached) /usr/local/bin/gcc
checking whether the C compiler (/usr/local/bin/gcc -g -O2 ) works... yes
checking whether the C compiler (/usr/local/bin/gcc -g -O2 ) is a cross-compiler... no
checking whether we are using GNU C... (cached) yes
checking whether /usr/local/bin/gcc accepts -g... (cached) yes
checking how to run the C preprocessor... (cached) /usr/local/bin/gcc -E
checking whether /usr/local/bin/gcc needs -traditional... no
checking for a BSD compatible install... ../../gcc-2.95.3/texinfo/../install-sh -c
checking for ranlib... (cached) ranlib
checking for texconfig... false
checking for POSIXized ISC... no
checking for minix/config.h... no
checking whether to enable maintainer-specific portions of Makefiles... no
checking for Cygwin32 environment... no
checking for Mingw32 environment... no
checking for executable suffix... no
checking for sigblock... no
checking for sigblock in -lbsd... no
checking for tputs in -lncurses... no
checking for tputs in -lcurses... yes
checking for ANSI C header files... (cached) yes
checking for fcntl.h... yes
checking for pwd.h... yes
checking for string.h... (cached) yes
checking for strings.h... (cached) yes
checking for termcap.h... no
checking for termio.h... yes
checking for termios.h... yes
checking for unistd.h... (cached) yes
checking for sys/fcntl.h... yes
checking for sys/file.h... (cached) yes
checking for sys/ptem.h... yes
checking for sys/time.h... (cached) yes
checking for sys/ttold.h... yes
checking for sys/wait.h... (cached) yes
checking for off_t... yes
checking return type of signal handlers... void
checking for working const... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for working alloca.h... (cached) yes
checking for alloca... (cached) yes
checking for vprintf... (cached) yes
checking for setvbuf... yes
checking for getcwd... (cached) yes
checking for memset... (cached) yes
checking for bzero... (cached) yes
checking for strchr... (cached) yes
checking for strcasecmp... (cached) yes
checking for sigprocmask... yes
checking for sigsetmask... (cached) no
checking for memcpy... (cached) yes
checking for memmove... (cached) yes
checking for strdup... (cached) yes
checking for strerror... (cached) yes
checking for inline... inline
checking for size_t... yes
checking for unistd.h... (cached) yes
checking for getpagesize... (cached) yes
checking for working mmap... yes
checking for argz.h... no
checking for limits.h... yes
checking for locale.h... yes
checking for nl_types.h... yes
checking for malloc.h... yes
checking for string.h... (cached) yes
checking for unistd.h... (cached) yes
checking for values.h... yes
checking for sys/param.h... (cached) yes
checking for getcwd... (cached) yes
checking for munmap... yes
checking for putenv... (cached) yes
checking for setenv... (cached) no
checking for setlocale... yes
checking for strchr... (cached) yes
checking for strcasecmp... (cached) yes
checking for __argz_count... no
checking for __argz_stringify... no
checking for __argz_next... no
checking for stpcpy... no
checking for LC_MESSAGES... yes
checking whether NLS is requested... yes
checking whether included gettext is requested... no
checking for libintl.h... yes
checking for gettext in libc... no
checking for bindtextdomain in -lintl... yes
checking for gettext in libintl... no
checking whether catgets can be used... no
checking for msgfmt... /usr/bin/msgfmt
checking for gmsgfmt... /usr/bin/msgfmt
checking for xgettext... /usr/bin/xgettext
found xgettext programs is not GNU xgettext; ignore it
checking for catalogs to be installed...  de fr
updating cache ../config.cache
creating ./config.status
creating Makefile
creating doc/Makefile
creating info/Makefile
creating intl/Makefile
creating lib/Makefile
creating makeinfo/Makefile
creating po/Makefile.in
creating util/Makefile
creating config.h
linking ../../gcc-2.95.3/texinfo/intl/libgettext.h to intl/libintl.h
Configuring gcc...
loading cache ../config.cache
checking LIBRARY_PATH variable... ok
checking GCC_EXEC_PREFIX variable... ok
checking host system type... sparc-sun-solaris2.5.1
checking target system type... sparc-sun-solaris2.5.1
checking build system type... sparc-sun-solaris2.5.1
checking for gcc... (cached) /usr/local/bin/gcc
checking whether the C compiler (/usr/local/bin/gcc -g -O2 ) works... yes
checking whether the C compiler (/usr/local/bin/gcc -g -O2 ) is a cross-compiler... no
checking whether we are using GNU C... (cached) yes
checking whether /usr/local/bin/gcc accepts -g... (cached) yes
checking whether make sets ${MAKE}... (cached) yes
checking whether a default assembler was specified... no
checking whether a default linker was specified... no
checking for gawk... no
checking for mawk... no
checking for nawk... nawk
checking for flex... lex
checking for yywrap in -ll... yes
checking whether ln works... yes
checking whether ln -s works... yes
checking for volatile... yes
checking for ranlib... (cached) ranlib
checking for bison... no
checking for byacc... no
checking for a BSD compatible install... ../../gcc-2.95.3/gcc/../install-sh -c
checking how to run the C preprocessor... (cached) /usr/local/bin/gcc -E
checking for ANSI C header files... (cached) yes
checking whether time.h and sys/time.h may both be included... yes
checking whether string.h and strings.h may both be included... yes
checking for sys/wait.h that is POSIX.1 compatible... (cached) yes
checking for limits.h... (cached) yes
checking for stddef.h... yes
checking for string.h... (cached) yes
checking for strings.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for time.h... yes
checking for fcntl.h... (cached) yes
checking for unistd.h... (cached) yes
checking for stab.h... no
checking for sys/file.h... (cached) yes
checking for sys/time.h... (cached) yes
checking for sys/resource.h... (cached) yes
checking for sys/param.h... (cached) yes
checking for sys/times.h... yes
checking for sys/stat.h... yes
checking for direct.h... no
checking for thread.h... yes
checking for pthread.h... yes
checking for gnatbind... no
checking whether cpp understands the stringify operator... yes
checking for inttypes.h... no
checking for strtoul... (cached) yes
checking for bsearch... yes
checking for strerror... (cached) yes
checking for putenv... (cached) yes
checking for popen... yes
checking for bcopy... (cached) yes
checking for bzero... (cached) yes
checking for bcmp... (cached) yes
checking for index... (cached) yes
checking for rindex... (cached) yes
checking for strchr... (cached) yes
checking for strrchr... (cached) yes
checking for kill... yes
checking for getrlimit... yes
checking for setrlimit... yes
checking for atoll... yes
checking for atoq... no
checking for sysconf... (cached) yes
checking for isascii... yes
checking for gettimeofday... (cached) yes
checking for strsignal... (cached) yes
checking for putc_unlocked... yes
checking for fputc_unlocked... no
checking for fputs_unlocked... no
checking for vprintf... (cached) yes
checking whether the printf functions support %p... yes
checking for pid_t... (cached) yes
checking for vfork.h... (cached) no
checking for working vfork... (cached) yes
checking whether malloc must be declared... no
checking whether realloc must be declared... no
checking whether calloc must be declared... no
checking whether free must be declared... no
checking whether bcopy must be declared... no
checking whether bzero must be declared... no
checking whether bcmp must be declared... no
checking whether index must be declared... no
checking whether rindex must be declared... no
checking whether getenv must be declared... no
checking whether atol must be declared... no
checking whether sbrk must be declared... no
checking whether abort must be declared... no
checking whether atof must be declared... no
checking whether strerror must be declared... no
checking whether getcwd must be declared... no
checking whether getwd must be declared... yes
checking whether strsignal must be declared... no
checking whether putc_unlocked must be declared... yes
checking whether fputs_unlocked must be declared... yes
checking whether strstr must be declared... no
checking whether getrlimit must be declared... no
checking whether setrlimit must be declared... no
checking for sys_siglist declaration in signal.h or unistd.h... no
checking if mkdir takes one argument... no
Using `../../gcc-2.95.3/gcc/config/sparc/sparc.c' to output insns.
Using `../../gcc-2.95.3/gcc/config/sparc/sparc.md' as machine description file.
Using `../../gcc-2.95.3/gcc/config/sparc/sol2-sld.h' as target machine macro file.
Using the following host machine macro files:
../../gcc-2.95.3/gcc/config/xm-siglist.h
../../gcc-2.95.3/gcc/config/sparc/xm-sysv4.h
../../gcc-2.95.3/gcc/config/sparc/xm-sol2.h
checking for strerror in -lcposix... no
checking for working const... (cached) yes
checking for inline... (cached) inline
checking for off_t... (cached) yes
checking for size_t... (cached) yes
checking for working alloca.h... (cached) yes
checking for alloca... (cached) yes
checking for unistd.h... (cached) yes
checking for getpagesize... (cached) yes
checking for working mmap... (cached) yes
checking for argz.h... (cached) no
checking for limits.h... (cached) yes
checking for locale.h... (cached) yes
checking for nl_types.h... (cached) yes
checking for malloc.h... (cached) yes
checking for string.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/param.h... (cached) yes
checking for getcwd... (cached) yes
checking for munmap... (cached) yes
checking for putenv... (cached) yes
checking for setenv... (cached) no
checking for setlocale... (cached) yes
checking for strchr... (cached) yes
checking for strcasecmp... (cached) yes
checking for strdup... (cached) yes
checking for __argz_count... (cached) no
checking for __argz_stringify... (cached) no
checking for __argz_next... (cached) no
checking for LC_MESSAGES... (cached) yes
checking whether NLS is requested... no
checking assembler alignment features...
checking assembler subsection support...
checking assembler instructions...
Using the Haifa scheduler.
updating cache ../config.cache
creating ./config.status
creating Makefile
creating intl/Makefile
creating po/Makefile.in
creating fixinc/Makefile
creating cp/Makefile
creating f/Makefile
creating java/Makefile
creating auto-host.h
linking ../../gcc-2.95.3/gcc/intl/libgettext.h to intl/libintl.h
Merged sparc/x-sysv4.
Merged sparc/t-sol2 and t-install-cpp.
Created `ch/Makefile'.
Merged sparc/x-sysv4.
Merged sparc/t-sol2 and t-install-cpp.
Created `objc/Makefile'.
creating libintl.h
Configuring etc...
loading cache ../config.cache
checking for a BSD compatible install... ../../gcc-2.95.3/etc/../install-sh -c
creating ./config.status
creating Makefile

Schritt 2 und 3 lager ich in den/die nächsten Beitrag/Beiträge aus, da mich die Forensoftware höflich über eine Begrenzung informiert hat: "Beitrag hat die max. Länge erreicht (20000 Zeichen)." Wenn das so ist...
« Letzte Änderung: 18. April 2007, 16:29:14 von escimo »

Offline escimo

  • Sobl Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1674
  • SPARCstation 2
    • Youtube-Kanal opensparcbox.org
Re: GCC 2.95.3 für Solaris 2.5.1
« Antwort #22 am: 18. April 2007, 10:53:56 »
Schritt 2: das Komilieren mit make (gekürzt ;))
# make LANGUAGES="c"

make[1]: Entering directory `/opt/temp/gcc-sun4/libiberty'
if [ x"no" = xyes ] && [ ! -d pic ]; then \
    mkdir pic; \
  else true; fi
touch stamp-picdir
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/argv.c -o pic/argv.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/argv.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/choose-temp.c -o pic/choose-temp.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/choose-temp.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/concat.c -o pic/concat.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/concat.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/cplus-dem.c -o pic/cplus-dem.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/cplus-dem.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/fdmatch.c -o pic/fdmatch.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/fdmatch.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/fnmatch.c -o pic/fnmatch.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/fnmatch.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/getopt.c -o pic/getopt.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/getopt.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/getopt1.c -o pic/getopt1.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/getopt1.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/getruntime.c -o pic/getruntime.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/getruntime.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/hex.c -o pic/hex.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/hex.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/floatformat.c -o pic/floatformat.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/floatformat.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/objalloc.c -o pic/objalloc.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/objalloc.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/obstack.c -o pic/obstack.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/obstack.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/pexecute.c -o pic/pexecute.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/pexecute.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/spaces.c -o pic/spaces.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/spaces.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/splay-tree.c -o pic/splay-tree.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/splay-tree.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/strerror.c -o pic/strerror.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/strerror.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/strsignal.c -o pic/strsignal.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/strsignal.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/xatexit.c -o pic/xatexit.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/xatexit.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/xexit.c -o pic/xexit.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/xexit.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/xmalloc.c -o pic/xmalloc.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/xmalloc.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/xstrdup.c -o pic/xstrdup.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/xstrdup.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/xstrerror.c -o pic/xstrerror.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/xstrerror.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/asprintf.c -o pic/asprintf.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/asprintf.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/basename.c -o pic/basename.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/basename.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/mkstemps.c -o pic/mkstemps.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/mkstemps.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/setenv.c -o pic/setenv.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/setenv.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/sigsetmask.c -o pic/sigsetmask.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/sigsetmask.c
test x"no" != xyes || \
    /usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include   ../../gcc-2.95.3/libiberty/vasprintf.c -o pic/vasprintf.o
/usr/local/bin/gcc -c -DHAVE_CONFIG_H -g -O2 -I. -I../../gcc-2.95.3/libiberty/../include  ../../gcc-2.95.3/libiberty/vasprintf.c
rm -f libiberty.a
ar rc libiberty.a \
    argv.o choose-temp.o concat.o cplus-dem.o fdmatch.o fnmatch.o getopt.o getopt1.o getruntime.o hex.o floatformat.o objalloc.o obstack.o pexecute.o spaces.o splay-tree.o strerror.o strsignal.o xatexit.o xexit.o xmalloc.o xstrdup.o xstrerror.o  asprintf.o basename.o mkstemps.o setenv.o sigsetmask.o vasprintf.o
true libiberty.a

...
...
...

make[1]: Leaving directory `/opt/temp/gcc-sun4/gcc'
Configuring in sparc-sun-solaris2.5.1/libio
Configuring in sparc-sun-solaris2.5.1/libiberty
creating cache ./config.cache
checking host system type... sparc-sun-solaris2.5.1
checking build system type... sparc-sun-solaris2.5.1
checking for ar... ar
checking for ranlib... true
checking for gcc... /opt/temp/gcc-sun4/gcc/xgcc -B/opt/temp/gcc-sun4/gcc/ -B/opt/gnu/sparc-sun-solaris2.5.1/bin/
checking whether we are using GNU C... yes
checking whether /opt/temp/gcc-sun4/gcc/xgcc -B/opt/temp/gcc-sun4/gcc/ -B/opt/gnu/sparc-sun-solaris2.5.1/bin/ accepts -g... yes
checking for POSIXized ISC... no
checking for a BSD compatible install... ../../../gcc-2.95.3/libiberty/../install-sh -c
checking how to run the C preprocessor... /opt/temp/gcc-sun4/gcc/xgcc -B/opt/temp/gcc-sun4/gcc/ -B/opt/gnu/sparc-sun-solaris2.5.1/bin/ -E
checking for sys/file.h... yes
checking for sys/param.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for unistd.h... yes
checking for strings.h... yes
checking for sys/time.h... yes
checking for sys/resource.h... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking whether the C compiler (/opt/temp/gcc-sun4/gcc/xgcc -B/opt/temp/gcc-sun4/gcc/ -B/opt/gnu/sparc-sun-solaris2.5.1/bin/ -g -O2 ) works... yes
checking whether the C compiler (/opt/temp/gcc-sun4/gcc/xgcc -B/opt/temp/gcc-sun4/gcc/ -B/opt/gnu/sparc-sun-solaris2.5.1/bin/ -g -O2 ) is a cross-compiler... no
checking for asprintf... no
checking for atexit... yes
checking for basename... no
checking for bcmp... yes
checking for bcopy... yes
checking for bzero... yes
checking for calloc... yes
checking for clock... yes
checking for getcwd... yes
checking for getpagesize... yes
checking for index... yes
checking for insque... yes
checking for memchr... yes
checking for memcmp... yes
checking for memcpy... yes
checking for memmove... yes
checking for memset... yes
checking for mkstemps... no
checking for putenv... yes
checking for random... yes
checking for rename... yes
checking for rindex... yes
checking for setenv... no
checking for sigsetmask... no
checking for strcasecmp... yes
checking for strchr... yes
checking for strdup... yes
checking for strncasecmp... yes
checking for strrchr... yes
checking for strstr... yes
checking for strtod... yes
checking for strtol... yes
checking for strtoul... yes
checking for tmpnam... yes
checking for vasprintf... no
checking for vfprintf... yes
checking for vprintf... yes
checking for vsprintf... yes
checking for waitpid... yes
checking for working alloca.h... yes
checking for alloca... yes
checking for ANSI C header files... yes
checking for pid_t... yes
checking for vfork.h... no
checking for working vfork... yes
checking for sys_errlist... yes
checking for sys_nerr... yes
checking for sys_siglist... no
checking for getrusage... yes
checking for on_exit... no
checking for psignal... yes
checking for strerror... yes
checking for strsignal... yes
checking for sysconf... yes
checking for times... yes
checking for sbrk... yes
checking for gettimeofday... yes
updating cache ./config.cache
creating ./config.status
creating Makefile
creating testsuite/Makefile
creating config.h
Adding multilib support to Makefile in ../../../gcc-2.95.3/libiberty
multidirs=
with_multisubdir=
make[1]: Entering directory `/opt/temp/gcc-sun4/sparc-sun-solaris2.5.1/libiberty'

...
...
...

rm -f libiberty.a
ar rc libiberty.a \
    argv.o choose-temp.o concat.o cplus-dem.o fdmatch.o fnmatch.o getopt.o getopt1.o getruntime.o hex.o floatformat.o objalloc.o obstack.o pexecute.o spaces.o splay-tree.o strerror.o strsignal.o xatexit.o xexit.o xmalloc.o xstrdup.o xstrerror.o  asprintf.o basename.o mkstemps.o setenv.o sigsetmask.o vasprintf.o
true libiberty.a
rm -f needed-list; touch needed-list; \
  for f in atexit calloc memchr memcmp memcpy memmove memset rename strchr strerror strrchr strstr strtol strtoul tmpnam vfprintf vprintf vfork waitpid bcmp bcopy bzero; do \
    for g in asprintf.o basename.o mkstemps.o setenv.o sigsetmask.o vasprintf.o ; do \
      case "$g" in \
        *$f*) echo $g >> needed-list ;; \
      esac; \
    done; \
  done
echo argv.o choose-temp.o concat.o cplus-dem.o fdmatch.o fnmatch.o getopt.o getopt1.o getruntime.o hex.o floatformat.o objalloc.o obstack.o pexecute.o spaces.o splay-tree.o strerror.o strsignal.o xatexit.o xexit.o xmalloc.o xstrdup.o xstrerror.o > required-list
make[2]: Entering directory `/opt/temp/gcc-sun4/sparc-sun-solaris2.5.1/libiberty/testsuite'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/opt/temp/gcc-sun4/sparc-sun-solaris2.5.1/libiberty/testsuite'
make[2]: Entering directory `/opt/temp/gcc-sun4/sparc-sun-solaris2.5.1/libiberty'
if [ -z "" ]; then \
    true; \
  else \
    rootpre=`pwd`/; export rootpre; \
    srcrootpre=`cd ../../../gcc-2.95.3/libiberty; pwd`/; export srcrootpre; \
    lib=`echo ${rootpre} | sed -e 's,^.*/\([^/][^/]*\)/$,\1,'`; \
    compiler="/opt/temp/gcc-sun4/gcc/xgcc -B/opt/temp/gcc-sun4/gcc/ -B/opt/gnu/sparc-sun-solaris2.5.1/bin/"; \
    for i in `${compiler} --print-multi-lib 2>/dev/null`; do \
      dir=`echo $i | sed -e 's/;.*$//'`; \
      if [ "${dir}" = "." ]; then \
        true; \
      else \
        if [ -d ../${dir}/${lib} ]; then \
    flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
    if (cd ../${dir}/${lib}; make "AR=ar" "AR_FLAGS=rc" "CC=/opt/temp/gcc-sun4/gcc/xgcc -B/opt/temp/gcc-sun4/gcc/ -B/opt/gnu/sparc-sun-solaris2.5.1/bin/" "CFLAGS=-g -O2" "LIBCFLAGS=-g -O2" "EXTRA_OFILES=" "HDEFINES=" "INSTALL=/bin/sh /opt/temp/gcc-2.95.3/install-sh -c" "INSTALL_DATA=/bin/sh /opt/temp/gcc-2.95.3/install-sh -c -m 644" "INSTALL_PROGRAM=/bin/sh /opt/temp/gcc-2.95.3/install-sh -c " "LDFLAGS=" "LOADLIBES=" "RANLIB=true" "SHELL=/bin/sh" "prefix=/opt/gnu" "exec_prefix=/opt/gnu" "libdir=/opt/gnu/lib" "libsubdir=/opt/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3" "tooldir=/opt/gnu/sparc-sun-solaris2.5.1" \
        CFLAGS="-g -O2 ${flags}" \
        CXXFLAGS="-g -O2 ${flags}" \
        LIBCFLAGS="-g -O2 ${flags}" \
        LIBCXXFLAGS="-g -O2 -fno-implicit-templates ${flags}" \
        LDFLAGS=" ${flags}" \
        all); then \
      true; \
    else \
      exit 1; \
    fi; \
        else true; \
        fi; \
      fi; \
    done; \
  fi
make[2]: Leaving directory `/opt/temp/gcc-sun4/sparc-sun-solaris2.5.1/libiberty'
make[1]: Leaving directory `/opt/temp/gcc-sun4/sparc-sun-solaris2.5.1/libiberty'
Configuring in sparc-sun-solaris2.5.1/libstdc++
Configuring in sparc-sun-solaris2.5.1/libf2c
creating cache ./config.cache
checking if compiler f771 has been built... no
Configuring in sparc-sun-solaris2.5.1/libchill
creating cache ./config.cache
checking if compiler cc1chill has been built... no
Configuring in sparc-sun-solaris2.5.1/libobjc
creating cache ./config.cache
checking if compiler cc1obj has been built... no
mmhhh ... 1 Stunde und 10 Minuten später ... das sieht ganz gut aus.

Schritt 3: die Installation des Kompilats
# make install

/bin/sh ../gcc-2.95.3/mkinstalldirs /opt/gnu /opt/gnu
make[1]: Entering directory `/opt/temp/gcc-sun4/gcc'
(cd intl && make all)
make[2]: Entering directory `/opt/temp/gcc-sun4/gcc/intl'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/opt/temp/gcc-sun4/gcc/intl'
cd ch; make "AR_FLAGS_FOR_TARGET=rc" "AR_FOR_TARGET=ar" "BISON=bison" "BISONFLAGS=" "CFLAGS=-g -O2" "CLIB=" "GCC_FOR_TARGET=/opt/temp/gcc-sun4/gcc/xgcc -B/opt/temp/gcc-sun4/gcc/ -B/opt/gnu/sparc-sun-solaris2.5.1/bin/ -I/opt/gnu/sparc-sun-solaris2.5.1/include" "LDFLAGS=" "LEX=lex" "LEXFLAGS=" "LN=ln" "LN_S=ln -s" "MAKEINFO=/opt/temp/gcc-sun4/texinfo/makeinfo/makeinfo " "MAKEINFOFLAGS=" "RANLIB_FOR_TARGET=true" "RANLIB_TEST_FOR_TARGET=[ -f true ] || ( [ "sparc-sun-solaris2.5.1" = "sparc-sun-solaris2.5.1" ] && [ -f /usr/bin/ranlib -o -f /bin/ranlib ] )" "SHELL=/bin/sh" "STAGE_PREFIX=" "exeext=" "build_exeext=" "objext=.o" "exec_prefix=/opt/gnu" "prefix=/opt/gnu" "local_prefix=/opt/gnu" "gxx_include_dir=/opt/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/../../../..`echo /opt/gnu | sed -e 's|^/opt/gnu||' -e 's|/[^/]*|/..|g'`/include/g++-3" "tooldir=/opt/gnu/sparc-sun-solaris2.5.1" "gcc_tooldir=/opt/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/../../../../sparc-sun-solaris2.5.1" "bindir=/opt/gnu/bin" "libsubdir=/opt/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3" "datadir=/opt/gnu/share" "distdir=../tmp/\$(subdir)" "localedir=/opt/gnu/share/locale" "CC=/usr/local/bin/gcc" "CHILLFLAGS=-g -O2" "CHILL_FOR_TARGET=/opt/temp/gcc-sun4/gcc/xgcc -B/opt/temp/gcc-sun4/gcc/ -B/opt/gnu/sparc-sun-solaris2.5.1/bin/ -L/opt/temp/gcc-sun4/gcc/ch/runtime/" "CHILL_LIB=-lchill" "GNUCHILL_VERSION=1.5.2" ../cc1chill
make[2]: Entering directory `/opt/temp/gcc-sun4/gcc/ch'
/usr/local/bin/gcc -c  -DIN_GCC -DSVR4  -g -O2     -I. -I.. -I../../../gcc-2.95.3/gcc/ch -I../../../gcc-2.95.3/gcc/ch/.. -I../../../gcc-2.95.3/gcc/ch/../config -I../../../gcc-2.95.3/gcc/ch/../../include ../../../gcc-2.95.3/gcc/ch/decl.c
make[2]: Leaving directory `/opt/temp/gcc-sun4/gcc/ch'
make[1]: Leaving directory `/opt/temp/gcc-sun4/gcc'

# ls /opt/gnu
#
... Chill? Wieso? Davon habe ich nichts für die Übersetztung (LANGUAGES="c") ausgewählt ...

Kann mir jemand mal einen Tipp geben, was ich hier falsch gemacht habe?
Jedenfalls möchte ich einzig den C Compiler (evtl. noch C++ Compiler) übersetzen. Die restlichen Compiler sind mir "Wurst". ;)

Viele Grüße
Stephan
« Letzte Änderung: 18. April 2007, 10:58:08 von escimo »

Offline escimo

  • Sobl Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1674
  • SPARCstation 2
    • Youtube-Kanal opensparcbox.org
Re: GCC 2.95.3 für Solaris 2.5.1
« Antwort #23 am: 19. April 2007, 10:24:11 »
Habe gestern den ganzen Vorgang nocheinmal wiederholt, nachdem ich mich bei Linux From Scratch nochmal kundig gemacht habe. Da ist mir mein Fehler doch glatt ins Auge gefallen:  ::)


Zitat
# ../gcc-2.95.3/configure --prefix=/opt/gnu --with-local-prefix=/opt/gnu
# rm -Rf /opt/temp/gcc-sun4/*
# cd /opt/temp/gcc-sun4
# ../gcc-2.95.3/configure --prefix=/opt/gnu --enable-shared --enable-languages=c --enable-threads=solaris
...
# make bootstrap LANGUAGES="c"
...
# make install
...
# ls /opt/gnu
bin   include   info   lib   man   sun-sparc-solaris2.5.1
Und obwohl die Option "--enable-languages=c" notiert ist, habe ich sie erstmal ignoriert, weil ich von der INSTALL-Datei "vernebelt" gewesen bin.  :-\

Beim make habe ich noch "bootstrap" hinzugefügt, da...
Zitat
If you do not have to install any additional GNU tools, you may use the command
  make bootstrap LANGUAGES=language-list BOOT_CFLAGS=option-list
instead of making `stage1', `stage2', and performing the two compiler builds.

Der übernächste Schritt ist nun die Erstellung eines Paketes, was aufgrund der Dokumentationen auch nicht weiter schwer fallen sollte.

"Übernächst"? Wieso? - Ganz einfach. Ich muss den Compiler noch auf Funktionsfähigkeit testen. Am besten an einem anderen kleinen C-Programm.

Gruß
Stephan

Offline escimo

  • Sobl Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1674
  • SPARCstation 2
    • Youtube-Kanal opensparcbox.org
Re: GCC 2.95.3 für Solaris 2.5.1
« Antwort #24 am: 26. Juni 2007, 01:53:48 »
Die "Tests"  sind vorerst abgeschlossen.  ;D - Immehin konnte ich mich durchringen wenigstens ein kleines C-Programm einzutippen und zu übersetzen:

sypho% sh
$ cd $HOME/source
$ PATH=/opt/gnu/bin:.:$PATH; export PATH
$ LD_LIBRARY_PATH=/opt/gnu/lib:/usr/lib:.:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
$ gcc -S hello.c
$ gcc -o hello hello.c

Programm 1 als C-Source:
Code: (c) [Auswählen]
#include <stdio.h>

int main()
{
  printf("hello sypho !\n");
  return 0;
}

Programm 1 als Assembler-Source:
Code: (asm) [Auswählen]
.file "hello.c"
gcc2_compiled.:
.section ".rodata"
.align 8
.LLC0:
.asciz "hello sypho !\n"
.section ".text"
.align 4
.global main
.type main,#function
.proc 04
main:
!#PROLOGUE# 0
save %sp, -112, %sp
!#PROLOGUE# 1
sethi %hi(.LLC0), %o1
or %o1, %lo(.LLC0), %o0
call printf, 0
nop
mov 0, %i0
b .LL2
nop
.LL2:
ret
restore
.LLfe1:
.size main,.LLfe1-main
.ident "GCC: (GNU) 2.95.3 20010315 (release)"

Programm 1 Output:
sypho% pwd
/home/schaarst/source
sypho% hello
hello sypho !
sypho%

Demnächst noch was zum Erstellen eines System-V Paketes für den C-Compiler, wie SunOS 5.x sie standardmäßig verwendet...***gähn***    :-[

Gruß
escimo
« Letzte Änderung: 08. Juli 2007, 22:41:56 von escimo »

sonnenblen.de - Das unabhängige Sun User Forum

Re: GCC 2.95.3 für Solaris 2.5.1
« Antwort #24 am: 26. Juni 2007, 01:53:48 »

Offline escimo

  • Sobl Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1674
  • SPARCstation 2
    • Youtube-Kanal opensparcbox.org
Re: GCC 2.95.3 für Solaris 2.5.1
« Antwort #25 am: 08. Juli 2007, 23:39:56 »
...Bevor es zum Paketbau kommt noch eine Kleinigkeit. Die folgenden Verzeichnisse existieren nach erfolgter Kompilierung und Installation in das Verzeichnis /opt/gnu:

   # ls /opt/gnu
   bin   include   info   lib   man   sun-sparc-solaris2.5.1


Da habe ich noch ein klein wenig frisiert...
   # rm -Rf include/ info/ sun-sun-sparc-solaris2.5.1/
...so dass nur noch....
   # ls /opt/gnu
   bin   lib   man

...übrig bleiben. Danach habe ich die Test(s) gefahren.

Ich hoffe, dass hinterlässt kein instabiles Compiler-System. Bis jetzt hat jeder Übersetzungslauf ohne erkennbare Fehler bzw. ein Fehlverhalten funktioniert. :-\

Innerhalb der nächsten Woche dann endlich der Beitrag, wie man nun den C-Compiler in ein Paket schnürrt.

Gruß
escimo

Offline escimo

  • Sobl Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1674
  • SPARCstation 2
    • Youtube-Kanal opensparcbox.org
Re: GCC 2.95.3 für Solaris 2.5.1
« Antwort #26 am: 27. Juli 2007, 21:19:41 »
Für ungeduldige Leser...

Interessanter Weise gab es zum Thema Paketbau dazu von Christopher Atlan (Lordy) schon eine FAQ unter [Gewusst wie...] -> Anleitung zum Bau von Solaris Installationspaketen

Die Variante bezogen auf das "GNU C-Compiler 2.95.3"-Kompilat ist in Arbeit und folgt demnächst.

escimo
« Letzte Änderung: 28. Juli 2007, 01:22:42 von escimo »

Offline escimo

  • Sobl Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1674
  • SPARCstation 2
    • Youtube-Kanal opensparcbox.org
Re: GCC 2.95.3 für Solaris 2.5.1
« Antwort #27 am: 12. August 2007, 02:51:56 »
Ich sitze gerade am Paketbau und der "Kurz"-Dokumentation. Mir ist beim Wuseln aufgefallen, dass ich das include-Verzeichnis eventuell doch noch benötige, obwohl es unter /opt/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include auch vorhanden ist.

Diesen Konfigurationsschalter "--with-local-prefix=/opt/gnu" habe ich ja beim zweiten erfolgreichen Compilerlauf nicht angegeben. Das bedeutet aber, dass der Compiler jetzt standardmäßig unter /usr/local/include nach einigen Headern - zusätzlich zu /usr/include - sucht.

Unter $GCCSRC/gcc-2.95.3/gcc/INSTALL steht dazu...
Zitat
--with-local-prefix=dirname
    Specify the installation directory for local include files. The default is /usr/local. Specify this option if you want the compiler to search directory dirname/include for locally installed header files instead of /usr/local/include.

    You should specify --with-local-prefix only if your site has a different convention (not /usr/local) for where to put site-specific files.

    The default value for --with-local-prefix is /usr/local regardless of the value of --prefix. Specifying --prefix has no effect on which directory GCC searches for local header files. This may seem counterintuitive, but actually it is logical.

    The purpose of --prefix is to specify where to install GCC. The local header files in /usr/local/include—if you put any in that directory—are not part of GCC. They are part of other programs—perhaps many others. (GCC installs its own header files in another directory which is based on the --prefix value.)

    Both the local-prefix include directory and the GCC-prefix include directory are part of GCC's “system include” directories. Although these two directories are not fixed, they need to be searched in the proper order for the correct processing of the include_next directive. The local-prefix include directory is searched before the GCC-prefix include directory. Another characteristic of system include directories is that pedantic warnings are turned off for headers in these directories.

    Some autoconf macros add -I directory options to the compiler command line, to ensure that directories containing installed packages' headers are searched. When directory is one of GCC's system include directories, GCC will ignore the option so that system directories continue to be processed in the correct order. This may result in a search order different from what was specified but the directory will still be searched.

    GCC automatically searches for ordinary libraries using GCC_EXEC_PREFIX. Thus, when the same installation prefix is used for both GCC and packages, GCC will automatically search for both headers and libraries. This provides a configuration that is easy to use. GCC behaves in a manner similar to that when it is installed as a system compiler in /usr.

    Sites that need to install multiple versions of GCC may not want to use the above simple configuration. It is possible to use the --program-prefix, --program-suffix and --program-transform-name options to install multiple versions into a single directory, but it may be simpler to use different prefixes and the --with-local-prefix option to specify the location of the site-specific files for each version. It will then be necessary for users to specify explicitly the location of local site libraries (e.g., with LIBRARY_PATH).

    The same value can be used for both --with-local-prefix and --prefix provided it is not /usr. This can be used to avoid the default search of /usr/local/include.

    Do not specify /usr as the --with-local-prefix! The directory you use for --with-local-prefix must not contain any of the system's standard header files. If it did contain them, certain programs would be miscompiled (including GNU Emacs, on certain targets), because this would override and nullify the header file corrections made by the fixincludes script.

    Indications are that people who use this option use it based on mistaken ideas of what it is for. People use it as if it specified where to install part of GCC. Perhaps they make this assumption because installing GCC creates the directory.

Obwohl das Paket später nach /usr/local installiert werden können soll, benötige ich eventuell doch dieses Verzeichnis und sei es nur ein symbolischer Link.

Die Frage ist, wie ich diese Klippe am sichersten umschiffen kann!?  ???
   
Gruß
escimo


Offline escimo

  • Sobl Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1674
  • SPARCstation 2
    • Youtube-Kanal opensparcbox.org
Paket GNU C-Compiler 2.95.3 für Solaris 2.5.1
« Antwort #28 am: 18. August 2007, 02:23:25 »
Geschafft!

Die Klippe habe ich mal nicht umschifft, sondern "ratze fatze" Klippe sein lassen, damit ich das Paket fertigstellen konnte. Nun ist es soweit und obwohl ich ein mittelgroßes Problem mit dem Kommando pkgmk hatte, habe ich es heute - ehm gestern - während der Zugfahrt von Frankfurt endlich geschafft das Paket zu erstellen. :D

Hier ist das Paket für jeden, der es mal ausprobieren möchte: GNUccomp_2.95.3.Z

I Hinweise zum angebotenen Paket
  • Es handelt sich um ein Alpha-Release des Paketes.
  • Das Paket enthält Binaries, die einzig für SPARC (V8) kompiliert wurden.
  • Das Paket liegt im "*.Z"-Format vor, um vorzubeugen, falls kein GZIP auf der alten Solaris/SPARC-Maschine installiert ist.
  • In späteren Paketen fließt die Architektur-Bezeichnung, Betriebssystem-Bezeichnung und -Version in den Paketnamen mit ein.
  • Das Paket kann mittels "uncompress GNUccomp_2.95.3.Z" enpackt werden.
  • Informationen zum Paket lassen sich u.a. mit dem Kommando "pkgparam -v -d /GNUccomp_2.95.3 GNUccomp DESC ARCH EMAIL" ausgeben.
  • Anschließend kann mittels "pkgadd -d /path/to/GNUccomp_2.95.3" der C-Compiler installiert werden.

II Meine Anforderungen an das Paket
Aber wiederholen wir zunächst nochmal ein Paar Fakten und stellen einige Anforderungen an unser neues zu erstellendes Paket:
  • Das Kompilat wurde mittels make install unter /opt/gnu installiert und besitzt eine separate Verzeichnisstruktur (bin/, lib/, man/)
  • Ziel war die Erzeugung eines SVR4-Paketes, das sich auf beliebigen SunOS 5.x SPARC-Systemen mittels pkgadd installieren beziehungsweise mittels pkgrm wieder entfernen lässt.
  • Es wird festgelegt, dass die Installation Standard-mäßig in das Verzeichnis /usr/local erfolgt
  • future TODO: pre-/postinstall- und pre-/postremove-Skripte für das Modifizieren von (bestehenden) Dateien im File-System
  • future TODO: request-und checkinstall-Skripte für parametriesierbare Installation (Auswahl und Erstellung des Installationsverzeichnisses)
  • future TODO: mehrere Compiler (C, C++, Fortran) in einen Paket-Stream zusammenfassen

III Literatur zum Bau von Paketen
  • Manual Pages zu Kommandos pkgproto(1), pkgmk(1), pkgtrans(1), pkgchk(1), pkginfo(1), pkgparam(1), pkgadd(1M), pkgrm(1M)
  • Manual Pages zu Informationsdateien pkginfo(4), prototype(4), pkgmap(4), copyright(4), depend(4), admin(4), compver(4), space(4)
  • Sun "Application Packaging Developer's Guide" (en)

"So, jetzt geht es langsam los...;)

1 Einstieg in den Bau von SVR4-Paketen (Solaris)
1.1 Wozu Pakete
Pakete dienen dem Ausliefern von Anwendungs-Software. Sie werden in der Regel von dem Entwicklern geplant und erstellt, nachdem ein Softwareprodukt fertiggestellt wurde. So kann im weiteren Verlauf sichergestellt werden, dass die Software mit standardisierten Mitteln verteilt und installiert werden kann.

1.2 Was ist ein Paket:
Ein Paket ist eine Sammlung von Dateien und Verzeichnissen, die in einem definierten Format vorliegen. Dieses Format stimmt mit den Vorgaben des ABI (Application Binary Interface), das einen Zusatz zur System-V Schnittstellendefinition bildet, überein.

Für gewöhnlich wird ein Software-Produkt in einem bis mehreren Paketen ausgeliefert. Der Paketinhalt wird in zwei Kategorien gegliedert:
  • Paketobjekte als die auszuliefernde Software
  • Kontrolldateien, bestehend aus Imformationsdateien und Installationsskripten für benutzerspezifische Installtionen

1.3 Inhalt eines Paketes
Zweck eines Paketes ist die Auslieferung von Software einer Kategorie als Paketobjekt. Folgende Arten von Paketobjekten werden unterstützt:
  • Dateien (Binär, Text)
  • Verzeichnisse
  • Named Pipes
  • Links
  • Devices

Um ein Paket mit zur Verfügung stehenden Kommandos (z.B. pkgmk) erstellen zu können, müssen zusätzlich zu den Paketobjekten (der eigentlichen Software) nächst einige dieser Kontroldateien erstellt werden:
  • benötigte Informationsdateien pkginfo und prototype
  • optionale Informationsdateien compver, depend, space, copyright

Alle Installationsscripte sind optional und können bei Bedarf erstellt werden. Zu ihnen zählen unter anderem:
  • request-Skript
  • checkinstall-Skript (ab Solaris 2.5 verfügbar)
  • preinstall, postinstall, preremove, postremove als allgemeine Verarbeitungsskripte
  • Klassen-Verarbeitungsscripte

1.4 Allgemeine Anforderungen an ein Paket
Überlegungen vor dem Bau eines Paketes für ein Softwareprodukt (future TODO's):
  • besteht das auszuliefernde Softwareprodukt aus einem oder mehreren Paketen
  • wie segmentiere ich das Softwareprodukt für die Auslieferung bei mehreren Paketen

Welchen Anforderungen sollten Pakete entsprechen:
  • Pakete sollten sich relativ zum Pfad installieren lassen (Remote-Installation)
  • Pakete werden in funktionale Einheiten zusammengefasst und auf nötige Funktionen begrenzt
  • Berücksichtigung von Client-/Server-Architekturen (Pakete für Clients und Server)
  • Lizenz-pflichtige Software wird in separaten Paketen ausgeliefert
  • Software wird je nach System-Abhängigkeiten in separaten Paketen ausgeliefert (SPARC, x86, x64)
  • Duplikate (Kürzel) von Paketobjekten (Dateien) sollten vermieden werden; Aufsplittung der Software in Paket-Elemente (z.B. SWcommon, SWccomp, SWcpluscomp, SWfcomp, SWpcomp)
  • unterschiedliche Lokalisierungen/Sprachversionen (en, de, fr, it, ...) des Softwareproduktes sollten in separate Pakete verpackt werden

Soviel zu Teil I. Die Beschreibung zum konkreten [WIE] (Teil II) folgt später ... *gähn* ... heute...

Bis dahin.

Gruß
escimo
« Letzte Änderung: 01. März 2008, 22:01:46 von escimo »

Offline escimo

  • Sobl Moderator
  • Sobl Guru
  • *****
  • Beiträge: 1674
  • SPARCstation 2
    • Youtube-Kanal opensparcbox.org
Teil IIa: Paket GNU C-Compiler 2.95.3 für Solaris 2.5.1
« Antwort #29 am: 18. August 2007, 15:37:37 »
...ausgeschlafen und immer noch hungrig geht's weiter... Zugegeben, das Paket ist alles andere als perfekt. - Es ist ein Anfang.   ;)

2 Erstellung eines SVR4-Paketes
2.1 Schritte zur Erstellung eines Paketes
  • Organisation des Paketinhaltes in einer hierarchischen Verzeichnisstruktur
  • Vergabe/Anpassung von UID, GID und Datei-Rechten auf alle Paketobjekte (für Zielumgebung)
  • Erzeugung der benötigten Informationsdatei pkginfo
  • [OPTIONAL] Erzeugen von optionalen Informationsdateien, z.B. Definition von Paketabhängigkeiten (-> depend), Einbindung von Copyright-Texten (-> copyright), Reservierung von zusätzlichen Speicherplatz auf den Zielsysteme (-> space)
  • [OPTIONAL] Erzeugen von Installtionsskripten pre-/postinstall sowie pre-/postremove (benutzerspezifische Installation/Deinstalltion)
  • Erzeugen der Informationsdatei prototype
  • Erzeugen des Paketes mit dem Kommando pkgmk
  • Verifizierung/Test der Integrität des erzeugten Paketes mit den Kommandos pkgchk und pkgparam
  • Transfer des Paketes im Paketformat auf ein Distributionsmedium mit dem Kommando pkgtrans

2.1 Organisation der Verzeichnisstruktur und Anpassungen der Paketobjekte
Da die Verzeichnisstruktur bereits angepasst wurde (-> siehe hier), fehlt noch die Vergabe entsprechender Privilegien auf die Paketobjekte für die spätere Zielplattform/-installation. In diesem Beispiel wurde das Paket nach /opt/gnu installiert, was für ein Paketbau keine gute Idee war. Somit ist zusätzlich ein su erforderlich.

sypho% cd /opt/gnu
sypho% su
Password:
# chown -R bin:bin ./*
# chmod -R 755 ./*
# ^D
logout
sypho%

Folgende Richtlinien sind zu beachten:
  • Der Paketinhalt ist stets in einem eigenen Verzeichnis organisiert.
  • Das Verzeichnis weist die Struktur des späteres Zielsystems auf (/usr, /bin, usw.)
  • Die Zugriffsrechte sollten denen des späteren Zielsystems entsprechen.

2.2 Erstellung der Informationsdatei pkginfo
Die Informationsdatei pkginfo ist eine ASCII-Datei die einige Eigenschaften (Charakteristika) des Paketes beschreibt, die für den weiteren Installationsverlauf benötigt werden. Da es hier keinerlei mitgelieferten Automatismus (Skript o.ä.) gibt, der einen das Tippen teilweise abnimmt, muss man mit seinem bevorzugten Editor die Datei selbst zusammenstellen:

sypho% cd $HOME
sypho% pwd
/home/schaarst
sypho% mkdir InfoFiles
sypho% cd InfoFiles
sypho% pwd
/home/schaarst
sypho% vi pkginfo

 Jeder Eintrag beziehungsweise jede Zeile besteht aus einem Schlüssel-Werte-Paar im Format "PARAM=Value". Bei mehr als einer Wertangabe muss diese in einfache oder doppelte Anführungszeichen eingeschlossen werden ("Wert1 Wert" oder 'Wert1 Wert 2'). Sollten Sonderzeichen verwendet werden, so muss dieses im Format "\x" erfolgen.
Folgende Standard-Parameter müssen in der Datei pkginfo definiert werden: PKG, NAME, ARCH, VERSION und CATEGORY. Folgende Einträge habe ich hinzugefügt:

Code: (bash) [Auswählen]
PKG="GNUccomp"
NAME="GNU C Compiler (created on Solaris 2.5.1)"
ARCH="sparc"
VERSION="2.95.3"
CATEGORY="application"
DESC="GNU C Compiler for program development on the Solaris 2.5.1 Operating Environment and compatible operating systems on SPARC V8 platforms."
VENDOR="Free Software Foundation, Inc."
EMAIL="escimome-please@yahoo.de"
PSTAMP="escimo for sonnenblen.de"
ISTATES="S 2"
RSTATES="S 2"
BASEDIR="/usr/local"

Erklärung zu den Parametern in der pkginfo-Datei:
  • PKG -> Kürzel für Paketnamen (z.B. GNUapp); max. 32 Zeichen
  • NAME -> voller Name des Paketes
  • ARCH -> Ziel-Architekur des Paketes
  • VERSION -> Paketversion (kann alternativ auch für Programmversion verwendet werden)
  • CATEGORY -> Zugehörigkeit zu Software-Kategorie ("system", "application")
  • DESC -> Beschreibung zum Paketinhalte
  • VENDOR -> Hersteller der Paketquellen
  • EMAIL -> Kontakt-Adresse einer Ansprechperson für Fragen/Support
  • PSTAMP -> kann zum Erzeugen einen "package prducer stamps" genutzt werden
  • ISTATES -> bevorzugte init-Statuse, in denen das Paket installiert werden sollte.
  • RSTATES -> bevorzugte init-Statuse, in denen das Paket entfernt werden sollte.
  • BASEDIR -> Angabe eine absoluten Pfades zu einem Verzeichnisses, in das die Paketobjekte installiert werden.
Darüberhinaus gibt es auch noch andere Parameter wie CLASSES, auf die an dieser Stelle nicht näher eingegangen wird.

2.3 Erzeugen der Informationsdatei prototype
Die Informationsdatei prototype ist ebenfalls eine ASCII-Datei. Sie dient dem formatierten/spezifischen Listen aller Objekte eines Paketes und weiterer Informationen, die für das Kommando pkgmk benötigt werden. Dabei beschreibt jede Zeile ein einzelnes Objekt des Paketes nach einem festgelegten Format. Grundsätzlich lässt sich die prototype-Datei auch von Hand erstellen, was aber unter Umständen je nach Paketinhalt und -größe sehr zeitaufwändig werden kann. Das ist nötig, wenn der Paketinhalt vorher nicht organisiert und in einer Hierarchie zusammengefasst wurde. Für unseren Fall bedienen wir uns dem Kommando pkgproto, da wir die notwendigen Datei-Organisierung bereits vorgenommen haben:

sypho% cd $HOME
sypho% pwd
/home/schaarst
sypho% mkdir InfoFiles
sypho% cd /opt/gnu
sypho% pwd
/opt/gnu
sypho% pkgproto bin lib man > /home/schaarst/InfoFiles/prototype

Die Anweisung "pkgproto bin lib man > /home/schaarst/InfoFiles/prototype"  erstellt eine Datei mit der Bezeichnung "prototype" im Verzeichnis /home/schaarst/InfoFiles. Die 3 Pfad-Parameter im Format "Path1[=Path2]" dienen der Angabe des Pfades, wo sich Paketobjekte befinden. Wird die Option "=Path2" an Path1 angehängt, wird die Pfadangabe von Path1 mit der von Path2 in der prototype-Datei substituiert.

Folgenden Inhalt hat die prototype-Datei nach Ausführung der Anweisung:
d none bin 0755 bin bin
s none bin/cc=gcc
f none bin/protoize 0755 bin bin
f none bin/unprotoize 0755 bin bin
f none bin/gcov 0755 bin bin
f none bin/cpp 0755 bin bin
f none bin/gcc 0755 bin bin
d none lib 0755 bin bin
d none lib/gcc-lib 0755 bin bin
d none lib/gcc-lib/sparc-sun-solaris2.5.1 0755 bin bin
d none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3 0755 bin bin
d none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include 0755 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/math.h 0644 bin bin
d none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/sys 0755 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/sys/stream.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/curses.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/assert.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/syslimits.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/stdarg.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/stddef.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/varargs.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-alpha.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-h8300.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-i860.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-i960.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-mips.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-m88k.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-mn10200.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-mn10300.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-pa.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-pyr.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-sparc.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-clipper.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-spur.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-m32r.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-sh.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-v850.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/proto.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-arc.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/iso646.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-ppc.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/va-c4x.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/stdbool.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/limits.h 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/README 0644 bin bin
d none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/v7 0755 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/include/fixed 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/cc1 0755 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/collect2 0755 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/crt1.o 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/crti.o 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/crtn.o 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/gcrt1.o 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/gmon.o 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/crtbegin.o 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/crtend.o 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/specs 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/SYSCALLS.c.X 0644 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/cpp0 0755 bin bin
f none lib/gcc-lib/sparc-sun-solaris2.5.1/2.95.3/libgcc.a 0644 bin bin
f none lib/libiberty.a 0644 bin bin
d none man 0755 bin bin
d none man/man1 0755 bin bin
f none man/man1/gcc.1 0444 bin bin
f none man/man1/cccp.1 0444 bin bin

Nehmen wir uns mal den Eintrag "f none bin/gcc 0755 bin bin" aus der Datei prototype und erklären deren Bedeutung:
  • "f" -> bezeichnet den Objekt-Typ (hier f=file, d=directory, s=symbolic link)
  • "none" -> bezeichnet die Klasse zu der das Objekt gehört. Ohne Angabe des Parameters "CLASSES" in der Informationsdatei pkginfo wird "none" angenommen und bei Aufruf des Kommandos pkgmk in der pkginfo-Datei ergänzt.
  • "bin/gcc" -> gibt den Pfad (entw. relativ oder absolut) an, wohin das Objekt/die Datei durch das Kommando pkgadd installiert wird.
  • "0755" -> beschreibt die Objekt-Privilegiun als oktalen Wert (-rxwr-xr-x). Alternativ kann auch das Fragezeichen "?" gesetzt werden, womit die Privilegien denen des bereits vorhandenen Objektes (beim Überschreiben) auf dem Zielsystem entsprechen.
  • "bin" -> Benutzername des Eigentümers der Datei
  • "bin" -> Gruppenname des Eigentümers der Datei

Bevor wir das Paket mit dem Kommando pkgmk aufrufen können, müssen wir dem in der prototype-Datei noch eintragen, wo die pkginfo-Datei zu finden ist. Dazu kann wieder der bevorzugte Editor benutzt werden, der bei mir nicht unbedingt vi ist ;D aber überall vorhanden ist.

sypho% cd $HOME/InfoFiles
sypho% pwd
/home/schaarst/InfoFiles
sypho% ls
pkginfo     prototype
sypho% vi prototype

Code: (bash) [Auswählen]
i pkginfoDurch Einfügen von "i pkginfo" (include) wird dem Kommando pkgmk vermittelt, dass sich die Datei pkginfo im selben Verzeichnis befindet wie die prototype-Datei. Sollte die pkginfo-Datei in einem anderen Verzeichnis liegen, kann im Format "pkginfo=<Pfad>" auch ein alternativer Pfad (relativ oder absolut) angegeben werden. Darüberhinaus können auch weitere solcher Einträge genutzt werden, wie z.B.
  • i copyright=/path/to/my/copyright.file
  • !include InfoFile/prototype2
  • !default 0755 schaarst users
  • !search /home/schaarst/moreInstallAndInfoFiles

2.4 Erzeugen des Paketes mit dem Kommando pkgmk
Jetzt kommt der kritische Schritt: Das automatisierte Erzeugen des Paketes mit dem Kommando pkgmk. Folgende Aufgaben erledigt das pkgmk-Kommando für uns:
  • Aufbereiten aller in der prototype-Datei definierten Objekte zu einem Verzeichnis-Format.
  • Erstellen der Datei pkgmap, um die Datei prototype zu ersetzen.
  • Zusammenstellen einen installierbaren Paketes als Eingabedaten für das Kommando pkgadd.

Versuchen wir es mal:
sypho% cd $HOME/InfoFiles
sypho% pwd
/home/schaarst/InfoFiles
sypho% pkgmk
## pkgmap wird erzeugt aus Package-Prototypdatei.
FEHLER in /home/schaarst/InfoFiles/prototype:
    Kein Objekt für <bin/protoize> in root-Verzeichnis gefunden
    Kein Objekt für ...
    ...
pkgmk: ERROR: Erzeugen von pkgmap aus Prototypdatei nicht möglich
## Packaging war nicht erfolgreich.
sypho%
Das war wohl nichts. Da habe ich mich wieder mal total unfähig gestellt. Zuerst wollte ich die Ausgabe "Kein Objekt für <...> in root-Verzeichnis gefunden" nicht verstehen.  :(

Immer wieder wird es gesagt, notwendigerweise muss man es sich auch ab und zu selbst eingestehen: "Du Vollidiot. Lesen was da steht."  ::)

/!\ Nicht schon wieder: "Beitrag hat die max. Länge erreicht (20000 Zeichen)."


...  ;)
« Letzte Änderung: 18. August 2007, 17:27:36 von escimo »