Re: [Kolab-devel] PHP composer and packaging
Thomas Brüderli <[email protected]>
| Newsgroups | gmane.comp.kde.devel.kolab |
|---|---|
| Message-ID | <[email protected]> |
Mathieu Parent wrote: > Hello all, > > 2014-02-05 11:05 GMT+01:00 Thomas Brüderli <[email protected]>: > [..] >> Or we specify an entirely new way to define and handle PHP library >> dependencies which can work for both development and distribution. >> >> Does anybody have experience with this topic and or even found a nice >> working solution how to deal with PHP packages? Please speak up! >> >> Let's gather the options and stakes on this topic and find a sustainable >> way for the ongoing Kolab development. > > I couldnt agree more: composer is for developers and doesn't help much > packagers as it describe dependencies but not file paths. > > In the Debian pkg-php team, we have a tool named pkg-php-tools which > converts automatically PEAR/PECL or Composer deps to Debian deps. It > also ensure files are installed in the right place (PEAR/PECL only). I'd say that's a start. What about this idea: 1. Create a package with composer and its autoloading magic and install it in a global location like /usr/share/php: /usr/share/php/composer.phar /usr/share/php/vendor/autoload.php /usr/share/php/vendor/composer/ 2. Create individual packages for composer-based libraries and install them to /usr/share/php/vendor/. e.g. /usr/share/php/vendor/sabre/dav /usr/share/php/vendor/sabre/vobject /usr/share/php/vendor/sabre/symfony/yaml 3. After installing a package, execute $ php /usr/share/php/composer.phar --working-dir=/usr/share/php \ dump-autoload -o to update the classmap for autoloading. 4. When packaging projects like iRony or Roundcube which may use composer, use the composer.json file as a human readable source of dependency definitions and create a symlink for the vendor directory: <project-dir>/vendor -> /usr/share/php/vendor That way, developers can keep on using composer.json to define dependencies and can use composer to install them for their local project-related development environment and when distributed with the php-composer distribution packages, autoloading still works as expected. Kind regards, Thomas _______________________________________________ devel mailing list [email protected] https://lists.kolab.org/mailman/listinfo/devel