PHUnit und PEAR

Während der Installation von der benötigten Pakate für das PHING-Drupal-Templatehttps://github.com/reinblau/phing-drupal-build, einer XML-Build-Datei für ein Phing-Build-System für Drupal-Projekte als zentraler Bestandteil eines PHING-Drupal-Jobshttp://reload.github.io/jenkins-drupal-template/ für den Continous Integrationhttp://de.wikipedia.org/wiki/Kontinuierliche_Integration Server Jenkinshttp://jenkins-ci.org/ lief ich in einer längere Fehlersuche. Zwei Pakete die durch pear.phpunit.de bereitgestellt werden, phpcpdhttps://github.com/sebastianbergmann/phpcpd, ein PHP Copy n Paste Detector und phplochttps://github.com/sebastianbergmann/phploc, ein Tool für Code-Metriken sollen laut den Anforderungenhttp://reload.github.io/phing-drupal-template/ via PEAR installiert werden.

pear channel-discover pear.phpunit.de 

Aber schon die sog. “Channel discovery”, vergleichbar mit einem apt-get update nach einer Erweiterung der Repositories schlägt fehl…

Error: No version number found in <channel> tag Discovering channel pear.phpunit.de over http:// failed with message: channel-add: invalid channel.xml file 
Trying to discover channel pear.phpunit.de over https:// instead Error: No version number found in <channel> tag
Discovery of channel "pear.phpunit.de" failed (channel-add: invalid channel.xml file) </channel></channel>

Lange Suche und Versuche, kurzer Sinn, hat doch im Dezember noch alles funktioniert?! Als letztes stiess ich dann endlich auf “End of Life for PEAR Installation Method”https://github.com/sebastianbergmann/phpunit/wiki/End-of-Life-for-PEAR-Installation-Method… …OK, pear.phpuntit.de wurde zum Jahreswechsel 2014/2015 abgeschaltet…Gut zu wissenComposer

Ok, was ist denn Composer?!

Composer is a tool for dependency management in PHP. It allows you to declare the dependent libraries your project needs and it will install them in your project for you.

Drush setzt mittlerweile bei der Installationsmethode auf Composerhttp://drush.org/en/master/install/, während früher die empfohlene Installationsmethode auch PEAR war (pear.drush.org ist aber noch erreichbar wird aber nicht mehr für die Installation auf drush.org erwähnt). Bei den 2 benötigten Pakaten für das Phing Drupal Template, wird neben PHAR, die Installation via Composer angeboten(

composer global require 'phploc/phploc=*' 
composer global require 'sebastian/phpcpd=*' 

), jetzt geht es, somit der Patch auf das Phing Drupal Template:https://github.com/reinblau/phing-drupal-build/commit/06bf887a5a25ee8944bd95a3c9293da269690546.

Drupal und Composer

Aufmerksam wurde ich auf die Drupal und Composer Thematik durch die Slides von Florian Weber bei der DUB http://www.drupalberlin.de/sites/default/files/pdf/Drupal%20und%20Composer.pdf, hier wurde Composer nicht nur als Dependency-Management sondern als Package-Management und Drush-Make-Ersatz gehandelt.

Drush-Makehttps://www.drupal.org/project/drush_make ist in Drupal das De-Facto Standard Werkzeug um z.B. Drupal-Distributionen mit seinen Anhängigkeiten, Drupal-Core inklusive Module, festgepinnt auf Versionsnummern oder gar auf einen SHA1-Commit, inklusive seiner der in vielen Fällen noch benötigten Patches auf Module und ggf. auch Core und der benötigten Bibliotheken zu bauen. Diese “Rezepte” werden in sog. Makefiles hinterlegt, hier das drupal-org.makehttp://cgit.drupalcode.org/bassets/tree/drupal-org.make von Bassetshttps://www.drupal.org/project/bassets als Beispiel.
Im Optimalfall besteht ein Drupal-Projekt dann auch nur noch aus einem Makefile und seinem Custom-Code, also Modulen, Features, Theme und Template-Dateien, die anderen Abhängigkeiten werden über das Makefile erfasst und in der Regel dann über eine Continious Integration Umgebung zusammengebaut. Ade Patches.txt auf Root-Ebene, hallo Patchmanagement inkl. Fehlererkennung und Feedback! Jetzt hat sich in der PHP-Welt auch einiges getan und es heisst runter von der Inselhttps://www.acquia.com/blog/using-composer-manager-get-island-now!

Meanwhile the PHP Community has gathered around another dependency manager, Composer. It is even used for managing dependencies for Drupal 8 Core.https://github.com/drupal-composer/drupal-project

.

Der in den Slides beschrieben Helige Gral (oder das runter von der Insel), das Drush-Make-Replacement: Seit einiger Zeit ist die Composer Gruppe auf g.d.ohttps://groups.drupal.org/composer neben viel Beteiligung der Deutschen Drupal-Community wie von Florian Weber (webflo), Johannes Haseitl (derhasi) und Tobias Stöckler recht aktiv und es wird einiges https://github.com/drupal-composer http://packagist.drupal-composer.org/ vorangetrieben und erfährt erstaunlich viel Beachtung und Akzeptanz.

Schaut mal rein, ich finde diese Entwicklung spannend!