User:Siwinski/Draft:Packaging:Drupal8

From FedoraProject

< User:Siwinski(Difference between revisions)
Jump to: navigation, search
(Naming Scheme)
(Add libraries to the mix)
 
Line 15: Line 15:
 
* '''Themes''': A theme package '''MUST''' be placed in the <code>%drupal8_themes</code> directory (base "<code>themes/</code>" directory)
 
* '''Themes''': A theme package '''MUST''' be placed in the <code>%drupal8_themes</code> directory (base "<code>themes/</code>" directory)
 
* '''Distributions/Profiles''': A distribution/profile package '''MUST''' be placed in the <code>%drupal8_profiles</code> directory (base "<code>profiles/</code>" directory)
 
* '''Distributions/Profiles''': A distribution/profile package '''MUST''' be placed in the <code>%drupal8_profiles</code> directory (base "<code>profiles/</code>" directory)
 +
* '''Libraries''': A library package '''MUST''' be placed in the <code>%drupal8_libraries</code> directory (base "<code>libraries/</code>" directory)
  
 
== Requires and Provides ==
 
== Requires and Provides ==
Line 55: Line 56:
 
|-
 
|-
 
| <code>%drupal8_themes</code> || <code>%{drupal8}/themes</code> ||  Drupal 8 themes directory.
 
| <code>%drupal8_themes</code> || <code>%{drupal8}/themes</code> ||  Drupal 8 themes directory.
 +
|-
 +
| <code>%drupal8_libraries</code> || <code>%{drupal8}/libraries</code> || Drupal 8 library directory.
 
|}
 
|}
  

Latest revision as of 18:03, 28 February 2013

Warning (medium size).png
This is only a DRAFT!

Contents

[edit] Guidelines for packaging Drupal 8 modules, themes, and profiles

[edit] 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.

[edit] 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>).

[edit] 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)

[edit] 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

[edit] Other Packages

See PHP packaging guidelines.

[edit] PHP Extensions

See PHP packaging guidelines.

[edit] 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.

[edit] 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.

[edit] Additional Hints

[edit] Templates

[edit] Module

[edit] Theme

[edit] Distribution/Profile