Re: Make Problem

Christian Boltz <suse-/[email protected]>
Newsgroups gmane.linux.suse.programming
Message-ID <[email protected]>
Hallo Ralf, hallo Leute,

Am Montag, 11. Oktober 2004 06:09 schrieb Ralf Corsepius:
> On Mon, 2004-10-11 at 01:11, Christian Boltz wrote:
> > Am Samstag, 9. Oktober 2004 19:49 schrieb Ralf Corsepius:
> > > On Sat, 2004-10-09 at 15:50, Christian Boltz wrote:
> > >
> > > 2 Portabilitätsfehler aus deinem Beispiel:
> > >
> > > 1. "for d in $(SUBDIRS)" ist nicht portabel.
> >
> > Hast Du ja schon mit David geklärt. Und da ich SUBDIRS=... händisch
> > ins Makefile schreibe, ist das garantiert nie leer.
>
> Irrtum, SUBDIRS ist eine Make-Variable. Diese können von der
> Kommandozeile aus überschrieben werden:
>
> make SUBDIRS=

Wenn Du so willst...

    make RM="rm -rf /" clean

Bin ich dann für die gelöschte Festplatte verantwortlich? ;-)

(Sprich: ich verstehe Deinen Einwand, aber gegen die Dummheit der User 
bin ich nunmal ziemlich machtlos.)

> > > 2. "make -C" ist nicht portabel.
> >
> > Verrätst Du mir auch, wo das Problem liegt? (ein Link o. ä. genügt)
>
> Es gibt makes, die -C nicht kennen (AFAIK, ist "make -C" GNU-make
> proprietär).

Ah so. Gutes Argument.

> > Bisher kam nämlich auch hier keine Reklamation ;-)  und in info
> > make habe ich keine Hinweise auf Inkompatibilitäten gefunden. Dort
> > steht nur ein Hinweis auf die Alternative "cd $subdir && make",
> > allerdings ohne nähere Erklärung, warum man diese oder jene
> > Variante nehmen sollte.
>
> "make.info" beschreibt GNU-make.
>
> "cd $subdir && make" wäre eine portable Alternative.

OK, ist ja nicht schwerer zu tippen. -C fliegt also bei Gelegenheit 
raus.

> > > > Recht interessant ist übrigens auch die Implementation von
> > > > "make dist" auf Basis von CVS/Entries ;-) 
> > > > (fontlinge_rc/Makefile)
> > >
> > > Manche Leute kommen auf Ideen ... :-()
> >
> > Ja und?
> > make dist ist ja etwas, was üblicherweise die Entwickler ausführen.
> >  Und da ist (bei den Fontlingen) sowohl das Betriebssystem Linux
> > als auch das Vorhandensein von CVS/Entries gesichert.
>
> "make dist" kann von jedermann, jederzeit an jeden Ort dieser Welt,
> auf jedem beliebigen OS, auf dem sich Dein Tarball auspacken lässt,
> ausgeführt werden.
>
> Dabei ist weder sichergestellt, dass CVS zur Verfügung steht, noch
> ist sichergestellt, noch dass "make dist" nur von
> Fontlinge-Entwicklern ausgeführt wird.

Theoretisch schon, aber warum sollte jemand außer den 
Fontlinge-Entwicklern "make dist" ausführen wollen?

> >  Warum sollten wir also das Paket "von Hand" schnüren (und dabei 
> >  z. B. Tempfiles usw. versehentlich mit einpacken)?
>
> Siehe oben.
>
> Das Problem an deinen Ansatz besteht darin, "Entwickler-umgebung" mit
> "Installierer-Umgebung", sowie "Releasemanagement" mit "make dist" zu
> vermischen/verwechseln.

Installierer-Umgebung mische ich da eigentlich überhaupt nicht rein, 
denn ein User wird üblicherweise nicht "make dist" aufrufen. Wenn er es 
doch tut und keine CVS-Verzeichnisse hat - sein Pech.

> > Sprich: make dist ist etwas, bei dem es mir egal ist, wenn es auf
> > $OS != Linux nicht läuft ;-)
>
> Wenn Du meinst, dass *das* ein guter Ansatz ist ... Ich bin es nicht.

Es gibt möglicherweise bessere Ansätze für "make dist" (die mir noch 
nicht über den Weg gelaufen sind), aber auch deutlich schlechtere (z. 
B. das komplette Verzeichnis in den Tarball stecken).

Bis ich etwas besseres finde, ist die Dateiliste aus CVS/Entries der 
geschickteste Weg, um z. B. Temp- und Testfiles aus dem Tarball 
rauszuhalten.

Zur Kompatibilität: Das Vorhandensein von "cut" und "test -d" und "echo" 
sowie die Fähigkeit, Shellfunktionen auszuführen, sind wohl nicht allzu 
große Anforderungen, die auf fast jedem unixartigen OS vorhanden sein 
sollten. Und die CVS-Verzeichnisse bekommt man problemlos durch einen 
(auch anonymous) checkout.

Trotzdem: ich baue im Makefile noch einen Test auf "leere Dateiliste" in 
make dist ein und schreib eine ordentliche Fehlermeldung raus ;-)


Gruß

Christian Boltz
-- 
Unix: Alles ist ein File, und was kein File ist, hat sich gefaelligst
als ein solches zu tarnen.      [Wolfgang Weisselberg in linux-liste]


-- 
Um die Liste abzubestellen, schicken Sie eine Mail an:
    suse-programming-unsubscribe-IBi9RG/[email protected]
Um eine Liste aller verfügbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-programming-help-IBi9RG/[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.