Forum: Compiler & IDEs make mit einer Quelle im Internet?


von Bauform B. (bauformb)


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?

von DPA (Gast)


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.

von Bauform B. (bauformb)


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!

von Jim M. (turboj)


Lesenswert?

Muss es unbedingt wget sein?

Mit "svn update" oder "git pull" könnte man das IMHO deutlich 
vereinfachen.

von Bauform B. (bauformb)


Lesenswert?

Hamsterkäufe? svn und git sind jedenfalls aus. Im Angebot wären noch 
ftp, http und, man staune, rsync.

von Blume (Gast)


Lesenswert?

Bauform B. schrieb:
> Hamsterkäufe? svn und git sind jedenfalls aus. Im Angebot wären noch
> ftp, http und, man staune, rsync.

um sich dann selber um das holen von versionen zu kümmern, auch 
schlechter style

von S. R. (svenska)


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.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.