pear.phpunit.de, Composer und Drupal

PHUnit und PEAR

Während der Installation von der benötigten Pakate für das PHING-Drupal-Template1, einer XML-Build-Datei für ein Phing-Build-System für Drupal-Projekte als zentraler Bestandteil eines PHING-Drupal-Jobs2 für den Continous Integration3 Server Jenkins4 lief ich in einer längere Fehlersuche. Zwei Pakete die durch pear.phpunit.de bereitgestellt werden, phpcpd5, ein PHP Copy n Paste Detector und phploc6, ein Tool für Code-Metriken sollen laut den Anforderungen7 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"8... ...OK, pear.phpuntit.de wurde zum Jahreswechsel 2014/2015 abgeschaltet...Gut zu wissen...

Composer

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 Composer9, 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:10.

Drupal und Composer

Aufmerksam wurde ich auf die Drupal und Composer Thematik durch die Slides von Florian Weber bei der DUB 11, hier wurde Composer nicht nur als Dependency-Management sondern als Package-Management und Drush-Make-Ersatz gehandelt.

Drush-Make12 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.make13 von Bassets14 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 Insel15!

Meanwhile the PHP Community has gathered around another dependency manager, Composer. It is even used for managing dependencies for Drupal 8 Core.16

.

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.o17 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 18 19 vorangetrieben
und erfährt erstaunlich viel Beachtung und Akzeptanz.

Schaut mal rein, ich finde diese Entwicklung spannend!