From Fedora Project Wiki

< User:Siwinski

Revision as of 18:03, 28 February 2013 by Jsmith (talk | contribs) (Add libraries to the mix)

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Warning.png
This is only a DRAFT!

Guidelines for packaging Drupal 8 modules, themes, and profiles

Different Kinds of Packages

  • Modules: Modules extend and customize Drupal functionality.
  • Themes: Themes allow users to change the look and feel of their Drupal site.
  • Distributions/Profiles: Distributions provide site features and functions for a specific type of site.

Naming Scheme

Every package MUST be named drupal8-<drupal_machine_name>. Drupal itself enforces unique machine names for each of its' projects and there is a single namespace for all modules, themes, and distributions/profiles. The <drupal_machine_name> MUST match the drupal.org project name (i.e. drupal.org/project/<drupal_machine_name>).

File Placement

  • Modules: A module package MUST be placed in the %drupal8_modules directory (base "modules/" directory)
  • Themes: A theme package MUST be placed in the %drupal8_themes directory (base "themes/" directory)
  • Distributions/Profiles: A distribution/profile package MUST be placed in the %drupal8_profiles directory (base "profiles/" directory)
  • Libraries: A library package MUST be placed in the %drupal8_libraries directory (base "libraries/" directory)

Requires and Provides

Every package MUST include the following in its' spec:

BuildRequires: drupal8-rpmbuild

The drupal8-rpmbuild package automatically scans files for provides [1] and requires [2] and automatically adds them to the package during build time as "drupal8(<drupal_machine_name>)" virtual resources. The use of virtual provides and requires helps alleviate the confusion of sub-modules and which modules actually provide those sub-modules. They also help simplify spec files.

[1] From *.info filenames
[2] From *.info file "dependencies[]" entries

Other Packages

See PHP packaging guidelines.

PHP Extensions

See PHP packaging guidelines.

Requiring a Minimum PHP Version

See PHP packaging guidelines but note that this should not normally be required by most packages (see [1]).

Important.png
This needs to be added to the drupal8-rpmbuild package so it is automatic.

Macros and Scriptlets

Macros provided by the drupal8-rpmbuild package:

Macro Value Description
%drupal8_version 8.0* Drupal 8 version.
* Numeric value is dynamically updated by the Drupal 8 core package.
%drupal8 %{_datadir}/drupal8 Drupal 8 base directory.
%drupal8_modules %{drupal8}/modules Drupal 8 modules directory.
%drupal8_profiles %{drupal8}/profiles Drupal 8 profiles directory.
%drupal8_themes %{drupal8}/themes Drupal 8 themes directory.
%drupal8_libraries %{drupal8}/libraries Drupal 8 library directory.

Additional Hints

Templates

Module

Theme

Distribution/Profile