make mit einer Quelle im Internet?

OP #6242074
Lesenswert?

hallo miteinander!

make muss doch als erstes prüfen, ob sich ein Quelltext geändert hat. 
Wenn ich eine Datei aus dem Internet hole, habe ich eine lokale Kopie 
die sich scheinbar nie mehr ändert. Die echte Quelle ändert sich 
natürlich gelegentlich.
1
wget -N 'http://ftp.iana.org/tz/tzdata/latest.tar.gz'
 funktioniert schon ziemlich richtig indem wget etwas wie HEAD oder 
if-modified-since benutzt und den Download nur bei Bedarf macht.

Wie erkläre ich dem make, dass es erstmal dieses wget aufruft und dann 
(meistens) nichts weiter macht?
Gast #6242104
Lesenswert?

Du kannst ein separates Target zum updaten externer Dependencies machen.
1
update:
2
  wget ...
3

4
bla.tgz abc.def:
5
  $(MAKE) update
6

7
.PHONY: update

Idealerweise sollte man die Signatur noch Prüfen. Lasse es nicht beim 
Compilieren automatisch zeug runterladen, das ist ganz schlechter style.
OP #6242124
Lesenswert?

DPA schrieb:
> Lasse es nicht beim
> Compilieren automatisch zeug runterladen, das ist ganz schlechter style.

Das ist mal ein Argument... Aber gut, ich will ja brav sein. Dann ist 
ein extra Target natürlich genau richtig. Dabei fällt mir ein, man 
braucht das ja nur einmal zu Anfang und dann erst wieder beim Release. 
Man muss eben dran denken. Vielleicht baue ich ein echo "nicht vegessen: 
die Politiker ändern gerne die Sommerzeitregeln" ein ;)
Dankeschön!
#6244147
Lesenswert?

Bauform B. schrieb:
> Dann ist ein extra Target natürlich genau richtig.

Du kannst die Bedingung auch für die Datei selbst definieren:
1
# update latest.tar.gz if needed
2
latest.tar.gz: update-tz
3
update-tz:
4
        wget -N 'pfad/zur/latest.tar.gz'
5
.PHONY: update-tz

Dann brauchst du den Rest vom Makefile nicht anfassen.

Aber es wäre vermutlich trotzdem besser, wenn du einfach vor dem Release 
(oder z.B. einmal im Monat) einfach zwingend runterlädst. Spart Traffic 
auf dem Server.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren