User:Siwinski/Draft:Packaging:Drupal8
From FedoraProject
(→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
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_modulesdirectory (base "modules/" directory) - Themes: A theme package MUST be placed in the
%drupal8_themesdirectory (base "themes/" directory) - Distributions/Profiles: A distribution/profile package MUST be placed in the
%drupal8_profilesdirectory (base "profiles/" directory) - Libraries: A library package MUST be placed in the
%drupal8_librariesdirectory (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
[edit] PHP Extensions
[edit] Requiring a Minimum PHP Version
See PHP packaging guidelines but note that this should not normally be required by most packages (see [1]).
[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. |