Re: portupgrde: make-args oder make-env?

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Wed, 30 Nov 2005 08:59:14 +0100 (CET)

Heino Tiedemann <rotkaps_spam_trap(at)gmx.de> wrote:
> Oliver Fromme <olli(at)lurza.secnetix.de> wrote:
> > Heino Tiedemann <rotkaps_spam_trap(at)gmx.de> wrote:
> > > ,----
> > > | -m
> > > | --make-args Specify arguments to append to each make(1) com-
> > > | mand line.
> > > |
> > > | -M
> > > | --make-env Specify arguments to prepend to each make(1) com-
> > > | mand line.
> > > `----
> > >
> > > Die manpage spricht einla von append und einmal von prepend. Wie wirkt
> > > sich was aus? Wie sähen die zugehörigen make aufrufe aus?
> >
> > Disclaimer: Ich benutze portupgrade nicht, aber der obigen
> > Beschreibung nach sähe es so aus:
> >
> > # ... -m foo=bar -M baz=hurz
> > ..
> > baz=hurz /usr/bin/make ... foo=bar
>
> Und was macht das genau für einen unterschied?

¨hm, wenn Dir das nicht klar ist, solltest Du vielleicht
mal ein UNIX-Anfänger-Buch lesen. Ohne Dir damit nahe-
treten zu wollen. :-)

   baz=hurz Programm

hat exakt denselben Effekt wie:

   (export baz=hurz; Programm)

Sprich: Das Programm wird mit der angegebenen Variablen
im Environment aufgerufen. Das Environment der aufrufenden
Shell bleibt unbeeinflußt.

Dagegen wird bei

   Programm foo=bar

einfach nur der String foo=bar als Argument übergeben. Was
das Programm damit anfängt, bleibt ihm überlasssen, und im
Normalfall ist das in der zugehörigen manpage dokumentiert.
So auch im Falle von make(1). <-- Wink mit Zaunpfahl

Im Falle von make kann man mit einem Argument der Form
foo=bar eine make-Variable setzen. Dies ist etwas anderes
als eine Environment-Variable, allerdings wird, wenn in
einem Makefile eine Variable verwendet wird, die nicht als
make-Variable definitiert wurde, per Default ein Fallback
auf eine Environment-Variable gleichen Namens gemacht.
In der Praxis ist es also meistens wurscht, ob man dem make
eine Variable im Environment oder per Argument übergibt.
Es gibt aber auch Ausnahmen.

Wie gesagt: make(1) lesen.

> Anders gefragt, welchen sll ich nehmen, Angenommen:
>
> Port: xemacs
> Argumente: WITH_GTK
>
> portupgrade -m '-DWITH_GTK' -f xemacs

Wie ich in der vorherigen Mail ausgeführt habe, führt das
zu:

   make -DWITH_GTK

> O D E R
>
> portupgrade -M '-DWITH_GTK' -f xemacs

Und das führt zu:

   -DWITH_GTK make

Eins von den beiden sollte Dir nun spanisch vorkommen. ;-)

Gruß
   Olli

-- 
Oliver Fromme,  secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing
Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
(On the statement print "42 monkeys" + "1 snake":)  By the way,
both perl and Python get this wrong.  Perl gives 43 and Python
gives "42 monkeys1 snake", when the answer is clearly "41 monkeys
and 1 fat snake".        -- Jim Fulton
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 30 Nov 2005 - 09:00:27 CET

search this site