Ein Angebot von

Continuous Delivery für embedded C/C++-Entwickler

| Autor / Redakteur: Johannes Nicolai * / Sebastian Gerstl

Einführung in conan.io

Conan.io ist ein in Python geschriebener Open Source Paketmanager, der von Anfang an auf die Besonderheiten von C und C++ optimiert wurde. Conan.io unterstützt eine Vielzahl von Betriebssystemen (Windows, Linux, Mac OS, Solaris, Free BSD, ...), Compilern (GCC, clang, Apple-clang, CL (MSFT), ARM, Raspberry PI, ...) und Build-Systemen (MSBuild, make, scons, cmake).

conan.io kann sowohl als Standalone-Server genutzt als auch als Teil einer umfänglicheren Lösung wie JFrog Artifactory oder BinTray betrieben werden.

Die benötigten Abhängigkeiten einer Applikation bezieht der Conan-Client (Teil vom Entwickler- und Build-System) aus einer Text-Datei conanfile.txt, welche alle benötigten Komponenten auflistet.

[requires]
ZenGitHub/[>0.9]@jonico/stable
libgit2/0.24.2@paulobrizolara/stable
bzip2/[~=1.0]@lasote/stable

Semantische Versions-Bereiche werden so aufgelöst, dass die Bedürfnisse aller indirekten Abhängigkeiten (insofern möglich) ebenfalls befriedigt werden können (siehe Bild 4).

In der Standardkonfiguration vermag conan.io bei der Auswahl der konkreten Build-Artefaktes zwischen Betriebssystem, Build-Typ, Compiler und Compiler-Version, Architektur, statischer und dynamischer Verlinkung sowie Standard-Bibliotheks/ABI-Kompatibilität zu unterscheiden. Die Definition weiterer „Dimensionen“ (conan.io-Terminologie) ist jederzeit möglich.

Der conan.io- Client berechnet aus den konkreten Werten für jede Dimension eine Check-Summe und überprüft anhand dieser, ob dafür ein Kompilat im conan.io-Server zum Download bereitsteht. Ist dem nicht so, bietet conan.io auch die Möglichkeit, das Paket mittels eines Build-Rezeptes (conanfile.py) lokal zu bauen und danach hochzuladen.

Eine Beispielapplikation macht alles anschaulicher

Im mit dem Beitrag assoziierten Vortrag auf dem ESE-Kongress 2018 und den dazugehörigen Präsentations-Slides wurde detailliert auf das in Bild 4 beschriebene Beispiel eingegangen. Der gesamte Programmcode, die Conan-Abhängigkeiten und Build-Rezepte sowie die cross-platform Build-Instruktionen für Jenkins, AppVeyor und Travis CI sind in den GitHub-Repositories (zenofgithub und libzengithub) des Autors zu finden. Auf umfangreiche Quellcode-Listings wird auf Grund der Platzbeschränkungen und der Aktualität (die Conan-Rezept-Spezifikation und Kommandozeilenparameter sind noch im Fluss) verzichtet, die Beispiele auf GitHub und die Vortragsfolien werden jedoch bei relevanten Änderungen angepasst.

Specification by Example: Wie bekomme ich genaue Anforderungsvorgaben?

Specification by Example: Wie bekomme ich genaue Anforderungsvorgaben?

08.10.18 - Specification by Example bedeutet, Anforderungen durch konkrete Beispiele zu spezifizieren. Dazu wird ein fixes Satzschema verwendet, welches ein einfaches Andocken von Testautomatisierung ermöglicht. So wird aus einem wertlosen Write-Only-Dokument eine wertbringende lebende Spezifikation. lesen

Git-Tutorial: Git und die wichtigsten Befehle kennenlernen

Git-Tutorial: Git und die wichtigsten Befehle kennenlernen

18.06.18 - Git kennt vermutlich jeder, der irgendetwas mit Informationstechnik am Hut hat. Aber wie die Versionsverwaltung funktioniert, steht auf einem ganz anderen Blatt. Wer einen einfachen, praxisnahen Einstieg sucht, ist hier richtig. lesen

Der Autor

Johannes Nicolai, Principal Solutions Engineer, GitHub.
Johannes Nicolai, Principal Solutions Engineer, GitHub. (Bild: GitHub)

* Johannes Nicolai ist ein langjähriger Open Source-Enthusiast und Contributor. In seiner Position als Enterprise Solutions Engineer bei GitHub unterstützt er Unternehmen wie BMW, Continental, Daimler, Elektrobit und SAP bei technischen und kulturellen Herausforderungen rund um Software Entwicklung und Open/Inner- Source. Vor GitHub war Johannes bei CollabNet als Europaleiter R&D für die Weiterentwicklung von Subversion, SourceForge, TeamForge und Gerrit zuständig. Johannes besitzt einen Master Abschluss vom Hasso-Plattner-Institut Potsdam und ist zertifizierter Scrum Master, Scrum Product Owner und Jenkins Engineer.

Dieser Beitrag stammt aus dem Tagungsband des ESE-Kongress 2018

Inhalt des Artikels:

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45662058 / Agilität)