[drupal7] Additional RPM enhancements.
Jon Ciesla
limb at fedoraproject.org
Mon Jun 3 15:28:12 UTC 2013
commit 039b1a53a525f4cd06b8f149d3a877ad69f814db
Author: Jon Ciesla <limburgher at gmail.com>
Date: Mon Jun 3 10:23:30 2013 -0500
Additional RPM enhancements.
drupal7.attr | 3 +-
drupal7.prov | 17 +++++++--
drupal7.prov.rpm-lt-4-9-compat | 17 +++++++--
drupal7.req | 27 ++++++++++++++
drupal7.req.rpm-lt-4-9-compat | 42 ++++++++++++++++++++++
drupal7.spec | 72 +++++++++++++++++++++++++++++++++++--
macros.drupal7 | 6 ++--
macros.drupal7.rpm-lt-4-9-compat | 9 +++--
8 files changed, 175 insertions(+), 18 deletions(-)
---
diff --git a/drupal7.attr b/drupal7.attr
index 51e489d..94f4070 100644
--- a/drupal7.attr
+++ b/drupal7.attr
@@ -1,2 +1,3 @@
-%__drupal7_provides %{_prefix}/lib/rpm/drupal7.prov
+%__drupal7_provides %{_prefix}/lib/rpm/drupal7.prov %{version}
+%__drupal7_requires %{_prefix}/lib/rpm/drupal7.req
%__drupal7_path ^%{_datadir}/drupal7/(modules|profiles|themes)/
diff --git a/drupal7.prov b/drupal7.prov
index 5495296..8d25aa8 100644
--- a/drupal7.prov
+++ b/drupal7.prov
@@ -4,6 +4,8 @@
Automatic provides generator for Drupal 7 modules, profiles, and themes.
Parsed from *.info files.
+
+First command line argument is used as version if provided.
"""
# Copyright 2013 Shawn Iwinski <shawn.iwinski at gmail.com>
@@ -26,16 +28,25 @@ Parsed from *.info files.
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
+import re
import sys
import os
+RE_HIDDEN = re.compile(r'hidden\s*=\s*TRUE', re.IGNORECASE)
+
+
def main():
- paths = [path.rstrip() for path in sys.stdin.readlines()]
+ version = sys.argv[1] if len(sys.argv) > 1 else None
+ paths = [path.rstrip() for path in sys.stdin.readlines()]
for path in paths:
- if path.endswith('.info'):
- print 'drupal7(' + os.path.basename(path)[:-len('.info')] + ')'
+ if path.endswith('.info') and not re.search(RE_HIDDEN, open(path).read()):
+ print 'drupal7(' + os.path.basename(path)[:-len('.info')] + ')',
+ if version is not None:
+ print '=', version
+ else:
+ print ''
if __name__ == '__main__':
diff --git a/drupal7.prov.rpm-lt-4-9-compat b/drupal7.prov.rpm-lt-4-9-compat
index c11cafb..f64452c 100644
--- a/drupal7.prov.rpm-lt-4-9-compat
+++ b/drupal7.prov.rpm-lt-4-9-compat
@@ -4,6 +4,8 @@
Automatic provides generator for Drupal 7 modules, profiles, and themes.
Parsed from *.info files.
+
+First command line argument is used as version if provided.
"""
# Copyright 2013 Shawn Iwinski <shawn.iwinski at gmail.com>
@@ -26,17 +28,26 @@ Parsed from *.info files.
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
+import re
import subprocess
import sys
import os
+RE_HIDDEN = re.compile(r'hidden\s*=\s*TRUE', re.IGNORECASE)
+
+
def main():
- paths = [path.rstrip() for path in sys.stdin.readlines()]
+ version = sys.argv[1] if len(sys.argv) > 1 else None
+ paths = [path.rstrip() for path in sys.stdin.readlines()]
for path in paths:
- if path.endswith('.info'):
- print 'drupal7(' + os.path.basename(path)[:-len('.info')] + ')'
+ if path.endswith('.info') and not re.search(RE_HIDDEN, open(path).read()):
+ print 'drupal7(' + os.path.basename(path)[:-len('.info')] + ')',
+ if version is not None:
+ print '=', version
+ else:
+ print ''
# Invoke the regular RPM provides generator to allow compatibility with RPM < 4.9 (no fileattrs)
p = subprocess.Popen(['/usr/lib/rpm/find-provides'], stdout=subprocess.PIPE, stdin=subprocess.PIPE)
diff --git a/drupal7.req b/drupal7.req
new file mode 100644
index 0000000..05c84ea
--- /dev/null
+++ b/drupal7.req
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+#
+# Automatic requires generator for Drupal 7 modules, profiles, and themes.
+#
+
+# Copyright 2013 Shawn Iwinski <shawn.iwinski at gmail.com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+
+echo 'drupal7(core)'
diff --git a/drupal7.req.rpm-lt-4-9-compat b/drupal7.req.rpm-lt-4-9-compat
new file mode 100644
index 0000000..b208fec
--- /dev/null
+++ b/drupal7.req.rpm-lt-4-9-compat
@@ -0,0 +1,42 @@
+#!/usr/bin/python
+
+"""
+Automatic requires generator for Drupal 7 modules, profiles, and themes.
+"""
+
+# Copyright 2013 Shawn Iwinski <shawn.iwinski at gmail.com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+
+import subprocess
+import sys
+
+
+def main():
+ paths = [path.rstrip() for path in sys.stdin.readlines()]
+
+ print 'drupal7(core)'
+
+ # Invoke the regular RPM requires generator to allow compatibility with RPM < 4.9 (no fileattrs)
+ p = subprocess.Popen(['/usr/lib/rpm/find-requires'], stdout=subprocess.PIPE, stdin=subprocess.PIPE)
+ print p.communicate(input='\n'.join(paths))[0]
+
+
+if __name__ == '__main__':
+ main()
diff --git a/drupal7.spec b/drupal7.spec
index c8fe524..a564a83 100644
--- a/drupal7.spec
+++ b/drupal7.spec
@@ -4,7 +4,7 @@ AutoReqProv: no
%define drupaldir %{_datadir}/drupal7
Name: drupal7
Version: 7.22
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: An open-source content-management platform
Group: Applications/Publishing
@@ -20,6 +20,8 @@ Source6: %{name}.attr
Source7: %{name}.prov
Source8: macros.%{name}.rpm-lt-4-9-compat
Source9: %{name}.prov.rpm-lt-4-9-compat
+Source10: %{name}.req
+Source11: %{name}.req.rpm-lt-4-9-compat
Patch0: %{name}-7.4-scripts-noshebang.patch
Patch1: drupal-7.14-CVE-2012-2922.patch
@@ -27,6 +29,63 @@ BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Requires: php, php-gd, php-mbstring, wget, php-pdo, php-xml
+# Virtual provides
+## Core
+Provides: drupal7(core) = %{version}
+## Modules
+Provides: drupal7(aggregator) = %{version}
+Provides: drupal7(block) = %{version}
+Provides: drupal7(blog) = %{version}
+Provides: drupal7(book) = %{version}
+Provides: drupal7(color) = %{version}
+Provides: drupal7(comment) = %{version}
+Provides: drupal7(contact) = %{version}
+Provides: drupal7(contextual) = %{version}
+Provides: drupal7(dashboard) = %{version}
+Provides: drupal7(dblog) = %{version}
+Provides: drupal7(field_sql_storage) = %{version}
+Provides: drupal7(field_ui) = %{version}
+Provides: drupal7(field) = %{version}
+Provides: drupal7(file) = %{version}
+Provides: drupal7(filter) = %{version}
+Provides: drupal7(forum) = %{version}
+Provides: drupal7(help) = %{version}
+Provides: drupal7(image) = %{version}
+Provides: drupal7(list) = %{version}
+Provides: drupal7(locale) = %{version}
+Provides: drupal7(menu) = %{version}
+Provides: drupal7(node) = %{version}
+Provides: drupal7(number) = %{version}
+Provides: drupal7(openid) = %{version}
+Provides: drupal7(options) = %{version}
+Provides: drupal7(overlay) = %{version}
+Provides: drupal7(path) = %{version}
+Provides: drupal7(php) = %{version}
+Provides: drupal7(poll) = %{version}
+Provides: drupal7(rdf) = %{version}
+Provides: drupal7(search) = %{version}
+Provides: drupal7(shortcut) = %{version}
+Provides: drupal7(simpletest) = %{version}
+Provides: drupal7(statistics) = %{version}
+Provides: drupal7(syslog) = %{version}
+Provides: drupal7(system) = %{version}
+Provides: drupal7(taxonomy) = %{version}
+Provides: drupal7(text) = %{version}
+Provides: drupal7(toolbar) = %{version}
+Provides: drupal7(tracker) = %{version}
+Provides: drupal7(translation) = %{version}
+Provides: drupal7(trigger) = %{version}
+Provides: drupal7(update) = %{version}
+Provides: drupal7(user) = %{version}
+## Themes
+Provides: drupal7(bartik) = %{version}
+Provides: drupal7(garland) = %{version}
+Provides: drupal7(seven) = %{version}
+Provides: drupal7(stark) = %{version}emes
+## Profiles
+Provides: drupal7(minimal) = %{version}
+Provides: drupal7(standard) = %{version}
+
%description
Equipped with a powerful blend of features, Drupal is a Content Management
System written in PHP that can support a variety of websites ranging from
@@ -41,7 +100,6 @@ Group: Development/Tools
%{summary}.
%prep
-
%setup -q -n drupal-%{version}
%patch0 -p1
@@ -85,12 +143,14 @@ install -pm0644 %{SOURCE5} %{buildroot}%{_sysconfdir}/rpm/macros.%{name}
mkdir -p %{buildroot}%{_prefix}/lib/rpm/fileattrs
install -pm0644 %{SOURCE6} %{buildroot}%{_prefix}/lib/rpm/fileattrs/%{name}.attr
install -pm0755 %{SOURCE7} %{buildroot}%{_prefix}/lib/rpm/%{name}.prov
+install -pm0755 %{SOURCE10} %{buildroot}%{_prefix}/lib/rpm/%{name}.req
# RPM < 4.9
%else
mkdir -p %{buildroot}%{_sysconfdir}/rpm/
install -pm0644 %{SOURCE8} %{buildroot}%{_sysconfdir}/rpm/macros.%{name}
mkdir -p %{buildroot}%{_prefix}/lib/rpm/
install -pm0755 %{SOURCE9} %{buildroot}%{_prefix}/lib/rpm/%{name}.prov
+install -pm0755 %{SOURCE11} %{buildroot}%{_prefix}/lib/rpm/%{name}.req
%endif
%clean
@@ -125,13 +185,17 @@ rm -rf %{buildroot}
%{_sysconfdir}/rpm/macros.drupal7
%{?_fileattrsdir:%{_prefix}/lib/rpm/fileattrs/%{name}.attr}
%{_prefix}/lib/rpm/%{name}.prov
+%{_prefix}/lib/rpm/%{name}.req
%changelog
+* Mon Jun 01 2013 Jon Ciesla <limburgher at gmail.com> - 7.22-5
+- Add auto-requires, BZ 969593.
+
* Tue May 21 2013 Jon Ciesla <limburgher at gmail.com> - 7.22-4
-- Allow use of auto-provides <EL-6.
+- Allow use of auto-provides <= EL-6.
* Thu May 09 2013 Jon Ciesla <limburgher at gmail.com> - 7.22-3
-- Change rpmconfigdir to %{_prefix}/lib/rpm to support EL-5.
+- Change rpmconfigdir to %%{_prefix}/lib/rpm to support EL-5.
* Thu May 09 2013 Jon Ciesla <limburgher at gmail.com> - 7.22-2
- Add libraries directory and macro, BZ 959687.
diff --git a/macros.drupal7 b/macros.drupal7
index 920d2c0..efa7559 100644
--- a/macros.drupal7
+++ b/macros.drupal7
@@ -1,6 +1,6 @@
-%drupal7 %{_datadir}/drupal7
-%drupal7_modules %{drupal7}/modules
-%drupal7_themes %{drupal7}/themes
+%drupal7 %{_datadir}/drupal7
+%drupal7_modules %{drupal7}/modules
+%drupal7_themes %{drupal7}/themes
%drupal7_libraries %{_sysconfdir}/drupal7/all/libraries
# No-op macro to allow spec compatibility with RPM < 4.9 (no fileattrs)
diff --git a/macros.drupal7.rpm-lt-4-9-compat b/macros.drupal7.rpm-lt-4-9-compat
index 9d66394..d3187f5 100644
--- a/macros.drupal7.rpm-lt-4-9-compat
+++ b/macros.drupal7.rpm-lt-4-9-compat
@@ -1,10 +1,11 @@
-%drupal7 %{_datadir}/drupal7
-%drupal7_modules %{drupal7}/modules
-%drupal7_themes %{drupal7}/themes
+%drupal7 %{_datadir}/drupal7
+%drupal7_modules %{drupal7}/modules
+%drupal7_themes %{drupal7}/themes
%drupal7_libraries %{_sysconfdir}/drupal7/all/libraries
# Macro to allow spec compatibility with RPM < 4.9 (no fileattrs)
%drupal7_find_provides_and_requires %{expand: \
%global _use_internal_dependency_generator 0
-%global __find_provides %{_rpmconfigdir}/drupal7.prov
+%global __find_provides %{_rpmconfigdir}/drupal7.prov %{version}
+%global __find_requires %{_rpmconfigdir}/drupal7.req
}
More information about the scm-commits
mailing list