BuildRequires: drupal7-rpmbuild >= 7.23-3
Every package MUST be named drupal7-`<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``>`).
Macros provided by the drupal7-rpmbuild package:
| Macro | Value | Description |
|---|---|---|
|
|
Drupal 7 base directory |
|
|
Drupal 7 modules directory |
|
|
Drupal 7 themes directory |
|
|
Drupal 7 libraries directory |
|
Fedora:
|
Modules: A module package MUST be placed in the %drupal7_modules directory
Themes: A theme package MUST be placed in the %drupal7_themes directory
Libraries: A library package MUST be placed in the %drupal7_libraries directory
Every package MUST require “drupal7(``)” virtual resources instead of “drupal7-” packages.
Every package MUST include the following in its' spec:
The drupal7-rpmbuild package automatically requires drupal7(core) and scans files for provides (from *.info files) and automatically adds them to the package during build time as “drupal7(``)” virtual resources. Hidden projects are ignored. The use of virtual provides and requires helps alleviate the confusion of sub-modules and which modules actually provide those sub-modules.
BuildRequires: drupal7-rpmbuild >= 7.23-3
For compatibility with RPM < 4.9 (i.e. EPEL 5/6):
%{?drupal7_find_provides_and_requires}
Every package MUST NOT:
explicitly require “drupal7” or “drupal7(core)” (unless a specific core version is required) because drupal7-rpmbuild auro-requires “drupal7(core)”
explicitly provide “drupal7(`)” virtual resources because `drupal7-rpmbuild auto-provides these
See Packaging:PHP#Extensions_Requires[PHP packaging guidelines].
To get a list of required PHP extensions, use PHP_CompatInfo (phpcompatinfo):
phpcompatinfo print --recursive --report=extension unpacked_package_source_directory
To install PHP_CompatInfo (phpcompatinfo), run “yum install php-bartlett-PHP-CompatInfo”.
See Packaging:PHP#Requiring_a_Minimum_PHP_version[PHP packaging guidelines] but note that this should not normally be required by most packages (see 1).
On RHEL 5/6 there is an issue with the standard auto-requires script (/usr/lib/rpm/find-requires). When there is no “#!” (she-bang) line at the beginning of an executable PHP file, the script tries to add an invalid "
+ " as a dependency. Rpmbuild then errors out with something similar to the following:
RPM build errors:
line 53: Dependency tokens must begin with alpha-numeric, '_' or '/': -
+
To fix this issue, find the files that incorrectly have their executable bit set and remove the executable bit in the spec’s %prep section. If there should be no executable files in the package then the following could be added to the spec’s %prep section:
+
find . -type f -executable -print0 | xargs -0 chmod -x
+
Every module package SHOULD list the Drupal modules it provides in its' description:
This package provides the following Drupal module(s):
* %{module}
For example, the drupal7-domain package contains the following in its' description:
This package provides the following Drupal modules:
* %{module}
* %{module}_alias
* %{module}_conf
* %{module}_content
* %{module}_nav
* %{module}_settings
* %{module}_source
* %{module}_strict
* %{module}_theme
Templates ~~~
After installation, you must enable this module from the Drupal administration page. If upgrading this module separately from the core Drupal package, be sure to run the http://hostname/drupal7/upgrade.php script after this RPM is upgraded.
%{?drupal7_find_provides_and_requires}
%global module __MODULE__
Name: drupal7-%{module}
Version: __VERSION__
Release: 1%{?dist}
Summary: __SUMMARY__
Group: Applications/Publishing
License: GPLv2+
URL: http://drupal.org/project/%{module}
Source0: http://ftp.drupal.org/files/projects/%{module}-7.x-%{version}.tar.gz
Source1: %{name}-RPM-README.txt
BuildArch: noarch
BuildRequires: drupal7-rpmbuild >= 7.23-3
# phpcompatinfo (computed from version __VERSION__)
#Requires: php-
%description
__DESCRIPTION__
This package provides the following Drupal module(s):
* %{module}
%prep
%setup -qn %{module}
cp -p %{SOURCE1} .
%build
# Empty build section, nothing to build
%install
mkdir -pm 0755 %{buildroot}%{drupal7_modules}/%{module}
cp -pr * %{buildroot}%{drupal7_modules}/%{module}/
%files
%doc *.txt
%{drupal7_modules}/%{module}
%exclude %{drupal7_modules}/%{module}/*.txt
%changelog
* ddd MMM DD YYYY __NAME__ <__EMAIL__> __VERSION__-1
- Initial package
%{?drupal7_find_provides_and_requires}
%global theme __THEME__
Name: drupal7-%{theme}
Version: __VERSION__
Release: 1%{?dist}
Summary: __SUMMARY__
Group: Applications/Publishing
License: GPLv2+
URL: http://drupal.org/project/%{theme}
Source0: http://ftp.drupal.org/files/projects/%{theme}-7.x-%{version}.tar.gz
Source1: %{name}-RPM-README.txt
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: drupal7-rpmbuild >= 7.23-3
# phpcompatinfo (computed from version __VERSION__)
#Requires: php-
%description
__DESCRIPTION__
%prep
%setup -qn %{theme}
cp -p %{SOURCE1} .
%build
# Empty build section, nothing to build
%install
mkdir -pm 0755 %{buildroot}%{drupal7_themes}/%{theme}
cp -pr * %{buildroot}%{drupal7_themes}/%{theme}/
%files
%doc *.txt
%{drupal7_themes}/%{theme}
%exclude %{drupal7_themes}/%{theme}/*.txt
%changelog
* ddd MMM DD YYYY __NAME__ <__EMAIL__> __VERSION__-1
- Initial package