Automatisierung mit make

Ähnliche Dokumente
Arbeiten in der Unix-Kommandozeile

Arbeiten in der Unix-Kommandozeile

Grundlagen der Informatik Vorlesungsskript

U1 3. Übung U1 3. Übung. Die Kommandos auf den folgenden Folien dienen der Veranschaulichung. Sind nicht direkt auf die Übungsaufgabe übertragbar

Eine kleine Makefile Einführung

Arbeiten mit der Shell Teil 1

Arbeiten mit der Shell Teil 1

Arbeiten in der Unix-Kommandozeile. PeP et al. Toolbox Workshop

Arbeiten mit der Shell Teil 1

Software build (-erstellung), deployment(-verteilung) und execution(-ausführung)

Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe

Variablen in MATLAB. Unterschiede zur Mathematik: Symbolisches und numerisches Rechnen. Skriptdateien. for-schleifen.

0. Erste Schritte REM. Jürgen Mäter Arbeitsgruppe Modellierung und Simulation. Lehrstuhl für Informatik 4 TU Dortmund

Mapra: C++ Teil 3. Felix Gruber. 29. April IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 3 29.

Shellkurs Shell, SSH, Skripte... Justus Pfannschmidt, Carola Bothe, Samuel Domiks Freie Universität Berlin

Übungszettel 2a - Python

Grundkurs C++ Buildsysteme Versionsverwaltung mit git

Grundkurs C++ Buildsysteme Versionsverwaltung mit git

Grundkurs C++ Buildsysteme Versionsverwaltung mit git

Arbeiten mit der Shell Teil 1

Schreibweise in IGOR: 6.02E-23

Ant - das Java Build-Tool

Continuous Integration mit TravisCI u.a. Jan Steemann

2 2. Tag. 2.1 Das Dateisystem. das Dateisystem organisiert die Speicherung von Daten. viele Betriebssysteme haben verschiedene Dateisysteme

Mapra: C++ Teil 3. Felix Gruber, Michael Rom. IGPM, RWTH Aachen. 10. Mai 2016

Stapelverarbeitung mit Adobe Acrobat Professional. Leibniz Universität IT Services Anja Aue

git Änderungen verwalten mit git

Überblick zum Thema CDO und Shell-Skripting

Installationsanleitung

ANT. Kurzvortrag von Manuel Schulze.

3 Geoverarbeitung mit dem ModelBuilder

1. Python Interpreter installieren (WinPython)

Vorlesung Unix-Praktikum

Vorlesung Unix-Praktikum

Praktikumstermin B-07: make & Makefiles

Informatik II Übung 1

5.1 Vorgänge erfassen

PriMus: Hinweise zur Installation und Update

Bedienungsanleitung RWK-Melder:

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

Bedienungsanleitung RWK-Melder:

Installationsanleitung HBB-NX-Tools

Es wird eine MySQL Datenbank benötigt, es wird die Tabelle SB_Musikmanager erstellt.

Der Ordner mit der Datenbank ist als als zip-datei komprimiert, d.h. nach dem Herunterladen muss der Datenbankordner zunächst entpackt werden.

Lernziele Dateiverwaltung Bearbeiten von Textdateien Sichere Anmeldung per SSH-Schlüssel. Linux für Anfänger

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme

GERICHTETER GEWICHTETER GRAPH DESIGNDOKUMENT

hue12 January 24, 2017

Programmieren in C++

COMPUTERIA VOM

GWEDEVEL AUTOFILEMOVER BENUTZERHANDBUCH

Einführung in Git. master. Initial commit

Linux Kommandozeile: Einfache Skripte. 1 Wiederhohlung. 2 Einfache Skripte

PriMus: Hinweise zur Installation und Update

1. das es keiner Ausdrucke mehr für die Formwertrichter bedarf 2. das die Korrekturen vom Richter selbst an seinem PC durchgeführt werden können.

Debian Pakete bauen. Eine kurze Einführung. Sebastian Harl. 12. März

Merkblatt System-C Installation Linux

zur Verfügung gestellt durch das OpenOffice.org Dokumentations-Projekt

Bedienungsanleitung Einsatzplanung. Bedienungsanleitung Einsatzplanung. Inhalt. Bedienung einer Plan-Tabelle

Vergleich zweier CAD Programme Übung Elite Cad

Auswertung erstellen

Wissenschaftliche Arbeiten schreiben mit Word

cytan cytansynchro Version 4.1 / Mai 2016 Letzte Softwareanpassung: Woche 17 / 2016

Nuetzlicher Kleinkram

Programmieren in C++

Mit dem Explorer arbeiten

Erstellen einer PostScript-Datei unter Windows XP

Projekte mit Qt und Dev-C++(MinGW) kompilieren

Einführung in "ERWIN"

GEOPROCESSING UND MODELBUILDER

Komplettes Backup/Wiederherstellung des BIM Servers 14

Elektronisches Ursprungszeugnis euz

Die vier goldenen Regeln für die Einzugsgebietserstellung und -berechnung im MikeUrban

Deformierbares Teil. 1 Erstellung von einem Deformierbaren Teil. Werkzeuge > Deformierbares Teil definieren Tools > Define Deformable Part

Benutzung von Microsoft Visual Studio 2017

Arbeiten mit der Shell Teil 1

1. Aufgabenstellung. 2. Methode der Auswertung. 2.1 Die Theorie: 2.2 Der SAS-Quellcode:

SCI Linux Einführung

Inhaltsverzeichnis Erste Schritte Grundprinzipien in Linux

Transkript:

Automatisierung mit make PeP et al. Toolbox Workshop PeP et al. e.v. Physikstudierende und ehemalige Physikstudierende der TU Dortmund 2017

Automatisierte, reproduzierbare Prozesse Problem: Kurz vor Abgabe noch neue Korrekturen einpflegen 1. Tippfehler korrigieren, Plots bearbeiten 2. T E X ausführen, ausdrucken vergessen, Plots neu zu erstellen zurück zu Schritt 1... PeP et al. Toolbox Workshop Pep et al. e.v. make 2 / 12

Automatisierte, reproduzierbare Prozesse Lösung: Make prüft, welche Dateien geändert wurden berechnet nötige Operationen um Abhängigkeiten zu erfüllen führt Befehle aus Python-Skripe T E X etc... PeP et al. Toolbox Workshop Pep et al. e.v. make 3 / 12

Motivation Automatisierung verhindert Fehler Dient als Dokumentation Reproduzierbarkeit: unverzichtbar in der Wissenschaft Spart Zeit: nur notwendige Operationen werden ausgeführt Idealfall: Eingabe von make erstellt komplettes Protokoll/Paper aus Daten PeP et al. Toolbox Workshop Pep et al. e.v. make 4 / 12

Makefile Von make benutzte Datei heißt Makefile (keine Endung) bei Windows Dateiendungen einschalten, siehe http://support.microsoft.com/kb/865219/de Makefile besteht aus Regeln (Rules): Rule target: prerequisites recipe target Datei(en), die von dieser Rule erzeugt werden prerequisites Dateien, von denen diese Rule abhängt recipe Befehle, um vom prerequisites zu target zu kommen wird mit Tab unter target: prerequisites eingerückt PeP et al. Toolbox Workshop Pep et al. e.v. make 5 / 12

Einfachstes Beispiel plot.pdf: plot.py data.txt python plot.py Wir wollen plot.pdf erzeugen (target) plot.pdf hängt von plot.py und data.txt ab (prerequisites) Der Befehl, um plot.pdf aus den prerequisites zu erhalten ist python plot.pdf PeP et al. Toolbox Workshop Pep et al. e.v. make 6 / 12

Beispiel all: report.pdf # convention plot.pdf: plot.py data.txt python plot.py report.pdf: report.tex lualatex report.tex report.pdf: plot.pdf # add prerequisite make eingeben: all braucht report.pdf report.pdf braucht plot.pdf python plot.py lualatex report.tex PeP et al. Toolbox Workshop Pep et al. e.v. make 7 / 12

Funktionsweise all report.pdf report.tex plot.pdf plot2.pdf plot.py data.txt plot2.py data2.txt Abhängigkeiten bilden einen DAG (directed acyclic graph) Dateien werden neu erstellt, falls sie nicht existieren oder älter als ihre Prerequisites sind Prerequisites werden zuerst erstellt top-down Vorgehen PeP et al. Toolbox Workshop Pep et al. e.v. make 8 / 12

Argumente für make make target make -n make -d make -p statt des ersten in der Makefile genannten Targets (meist all) nur target erstellen dry run: Befehle anzeigen aber nicht ausführen debug: anzeigen, warum make sich so entschieden hat Datenbank aller Abhängigkeiten ausgeben Nützlich, wenn man einen Plot bearbeitet: make plot.pdf PeP et al. Toolbox Workshop Pep et al. e.v. make 9 / 12

make clean (Nützliche) Konvention: make clean löscht alle vom Makefile erstellten Dateien/Ordner. clean: rm plot.pdf report.pdf Das Projekt sollte dann so aussehen, wie vor dem ersten Ausführen von make. PeP et al. Toolbox Workshop Pep et al. e.v. make 10 / 12

Advanced build-ordner: Projekt sauber halten all: build/report.pdf build/plot.pdf: plot.py data.txt build python plot.py # savefig('build/plot.pdf') build/report.pdf: report.tex build/plot.pdf build lualatex --output-directory=build report.tex build: mkdir -p build clean: rm -rf build.phony: all clean build ist ein order-only Prerequisite: Alter wird ignoriert Targets, die bei.phony genannt werden, entsprechen nicht Dateien (guter Stil) PeP et al. Toolbox Workshop Pep et al. e.v. make 11 / 12

Expert Können mehrere unabhängige Auswertungen parallel ausgeführt werden? Ja: make -j4 (nutzt 4 Prozesse gleichzeitig) Problem: Manchmal führt make Skripte gleichzeitig zweimal aus (hier plot.py) all: report.txt report.txt: plot1.pdf plot2.pdf touch report.txt plot1.pdf plot2.pdf: plot.py data.txt python plot.py # plot.py produziert sowohl plot1.pdf als auch plot2.pdf Lösung: manuell synchronisieren plot1.pdf: plot.py data.txt python plot.py plot2.pdf: plot1.pdf Wenn man plot2.pdf aber nicht plot1.pdf löscht, kann make nicht mehr plot2.pdf erstellen. PeP et al. Toolbox Workshop Pep et al. e.v. make 12 / 12