[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