Continuous Integration ·Programmierung

[CMake] Ein add_jar Beispiel

Man kann mit CMake auch Java-Dateien kompilieren lassen und diese in eine jar-Datei packen. Dazu habe ich ein kleines Beipsiel erstellt. Zuerst die HalloWelt.java-Datei: import java.lang.*;   public class HalloWelt { public static void main(String[] args) { System.out.println("Hallo, Welt!"); } }import java.lang.*; public class HalloWelt { public static void main(String[] args) { System.out.println("Hallo, Welt!"); }… Weiterlesen [CMake] Ein add_jar Beispiel

Programmierung

pushdef und popdef in m4

Normalerweise definiert man in m4 ein Macro mit der define-Funktion. Das kann man aber auch mit Hilfe von pushdef und popdef machen. Hier mal ein Beispeil define(`test‘, `Eins‘)dnl test => Eins pushdef(`test‘, `Zwei‘)dnl test => Zwei pushdef(`test‘, `Drei‘)dnl pushdef(`test‘, `Vier‘)dnl test => Vier popdef(`test‘)dnl test => Drei popdef(`test‘, `test‘)dnl test => Eins popdef(`test‘, `test‘)dnl test… Weiterlesen pushdef und popdef in m4

Linux ·Programmierung

GCC: Profiling mit instrument-functions

So wie fast jeder guter Compiler, kann man auch unter dem GCC Profiling betreiben. Eine Möglichkeit, dies zu bewerkstelligen, sind die instrument functions. Dazu werden zwei Dinge benötigt: den zusätzlichen Compilerparameter -finstrument-functions Funktionen, die die instrument functions bearbeiten Hier soll mal ein Beispiel gezeigt werden. Man hat z.B. eine C-Quelltext-Datei namen foo.c mit folgendem Inhalt:… Weiterlesen GCC: Profiling mit instrument-functions

Continuous Integration ·Programmierung

Zwischendateien bei GNU make

Beim Ausführen einer Makefile durch GNU make werden Zwischendateien generiert. Bei C++ können das z.B. .o-Dateien sein. Aber auch andere Zwischendateien sind möglich. Ich habe mich ein wenig mit Zwischendateien von Makefiles beschäftigt und möchte hier ein wenig was dazu aufschreiben. Dazu habe ich hier mal ein Makefile erstellt, dass ich hier als Beispiel verwenden… Weiterlesen Zwischendateien bei GNU make

Continuous Integration ·Programmierung

CMake – Unterscheidung zwischen 32-bit und 64-bit Maschine

Beim Kompilieren, Linken und Ausführung von Projekten bzw. Programmen muss man auch manchmal eine Unterscheidung durchführen, ob das System eine 32-bit-Architektur hat oder eine 64-bit. Auch in CMake kann man eine solche Abfrage einfügen. Die Abfrage sieht i.d.R. so aus: if ( „${CMAKE_SIZEOF_VOID_P}“ EQUAL 4) # mach was für 32 bit elseif ( „${CMAKE_SIZEOF_VOID_P}“ EQUAL… Weiterlesen CMake – Unterscheidung zwischen 32-bit und 64-bit Maschine

Continuous Integration ·Programmierung

ANTLR in pom.xml hinzufügen

Beim kompilieren eines Projektes hatte ich vor kurzem die folgende Fehlermeldung: [ERROR] /home/jenkins/wap/src/main/java/wap/org/homeunix/wap/table/symbol/SymbolTable.java:[15,25] package org.antlr.runtime does not exist [ERROR] /home/jenkins/wap/src/main/java/wap/org/homeunix/wap/table/symbol/SymbolTable.java:[16,30] package org.antlr.runtime.tree does not exist Das liegt daran, dass ANTLR (ANother Tool for Language Recognition) nicht in den Abhängigkeiten in der pom.xml aufgelistet war. Dazu reicht es folgendes in der pom.xml hinzuzufügen: <dependencies> <dependency> <groupId>org.antlr</groupId>… Weiterlesen ANTLR in pom.xml hinzufügen

Programmierung

[Eclipse] Plugin execution not covered by lifecycle configuration

Ich bin noch recht neu bei Eclipse. In einem Fall, bei dem ich lernen wollte, wie man ein Jenkins-Plugin schreibt, tauchte die Fehlermeldung auf: Plugin execution not covered by lifecycle configuration: org.codehaus.gmaven:gmaven-plugin:1.5-jenkins-1:testCompile (execution: test-in-groovy, phase: test-compile) Lösung Die Lösung war folgende: In der Menüleiste Windows -> Preferences anklicken. Es tauchte ein neues Fenster auf (Preferences).… Weiterlesen [Eclipse] Plugin execution not covered by lifecycle configuration

Continuous Integration ·Programmierung

[Jenkins/Groovy] Konsolenausgabe in Datei abspeichern

Wenn man die Konsolenausgabe eines Jobs in eine Datei abspeichern möchte, um diese Datei eventuell später zu analysieren oder nach Fehlern zu durchsuchen, dann kann man folgende Zeilen verwenden: import hudson.model.*; import hudson.*;   String getLog() { return manager.build.logFile.text; }   EnvVars envVars = manager.build.getEnvironment(manager.listener); this_ws = envVars.get(’WORKSPACE’);   // Wenn der Job im Master… Weiterlesen [Jenkins/Groovy] Konsolenausgabe in Datei abspeichern

Continuous Integration ·Programmierung

[Jenkins/Groovy] Workspace-Pfad ausgeben

Wenn man Workspace-Pfad des gerade laufenden Programmes herausfinden und ausgeben möchte, kann man dieses kleine Script hierfür verwenden: import hudson.model.*; import hudson.*;   void log(msg) { manager.listener.logger.println(msg); }   EnvVars envVars = manager.build.getEnvironment(manager.listener); log("Workspace: " + envVars.get(’WORKSPACE’));import hudson.model.*; import hudson.*; void log(msg) { manager.listener.logger.println(msg); } EnvVars envVars = manager.build.getEnvironment(manager.listener); log("Workspace: " + envVars.get(‚WORKSPACE‘));

Continuous Integration ·Programmierung

[Groovy Postbuild] Konsolenausgabe

Ich habe vergeblich versucht, mit Hilfe von Groovy etwas in die Konsoleausgabe zu schreiben, vor allem mit dem Groovy Postbuild Plugin von Jenkins. Doch jetzt habe ich zum Glück ein kleines Skript gefunden, in der genau das getan wird (https://gist.github.com/halyph/4610274): import hudson.model.*; import hudson.*;   void log(msg) { manager.listener.logger.println(msg); }   log("Hallo Welt :)");import hudson.model.*;… Weiterlesen [Groovy Postbuild] Konsolenausgabe