[bugzilla/f18] Patch bugzilla so that it will cache bz_locations() and not memorize it. Clean up our own patch to B

Emmanuel Seyman eseyman at fedoraproject.org
Thu Nov 14 23:46:30 UTC 2013


commit 2cc07694781d8d5bdc663ba3e10f396e8bf6475a
Author: Emmanuel Seyman <emmanuel at seyman.fr>
Date:   Fri Nov 15 00:46:33 2013 +0100

    Patch bugzilla so that it will cache bz_locations() and not memorize it.
    Clean up our own patch to Bugzilla/Constants.pm so that the PROJECT
    environment variable can be used.

 bugzilla-project-mod_perl.patch |   41 +++++++++++++++++++++++++++++++++++++++
 bugzilla.spec                   |    8 ++++++-
 2 files changed, 48 insertions(+), 1 deletions(-)
---
diff --git a/bugzilla-project-mod_perl.patch b/bugzilla-project-mod_perl.patch
new file mode 100644
index 0000000..a29632a
--- /dev/null
+++ b/bugzilla-project-mod_perl.patch
@@ -0,0 +1,41 @@
+diff -up ./Bugzilla/Constants.pm.orig ./Bugzilla/Constants.pm
+--- ./Bugzilla/Constants.pm.orig	2013-11-14 23:21:44.947050044 +0100
++++ ./Bugzilla/Constants.pm	2013-11-14 23:23:55.873245730 +0100
+@@ -591,6 +591,13 @@ use constant AUDIT_CREATE => '__create__
+ use constant AUDIT_REMOVE => '__remove__';
+ 
+ sub bz_locations {
++    # Force memoize() to re-compute data per project, to avoid
++    # sharing the same data across different installations.
++    return _bz_locations($ENV{'PROJECT'});
++}
++
++sub _bz_locations {
++    my $project = shift;
+     # We know that Bugzilla/Constants.pm must be in %INC at this point.
+     # So the only question is, what's the name of the directory
+     # above it? This is the most reliable way to get our current working
+@@ -607,12 +614,13 @@ sub bz_locations {
+     $libpath =~ /(.*)/;
+     $libpath = $1;
+ 
+-    my ($project, $localconfig, $datadir);
+-    if ($ENV{'PROJECT'} && $ENV{'PROJECT'} =~ /^(\w+)$/) {
++    my ($localconfig, $datadir);
++    if ($project && $project =~ /^(\w+)$/) {
+         $project = $1;
+         $localconfig = "localconfig.$project";
+         $datadir = "data/$project";
+     } else {
++	$project = undef;
+         $localconfig = "localconfig";
+         $datadir = "data";
+     }
+@@ -647,6 +655,6 @@ sub bz_locations {
+ 
+ # This makes us not re-compute all the bz_locations data every time it's
+ # called.
+-BEGIN { memoize('bz_locations') };
++BEGIN { memoize('_bz_locations') };
+ 
+ 1;
diff --git a/bugzilla.spec b/bugzilla.spec
index f5048ca..7dbc0d1 100644
--- a/bugzilla.spec
+++ b/bugzilla.spec
@@ -6,7 +6,7 @@ URL: http://www.bugzilla.org/
 Name: bugzilla
 Version: 4.2.7
 Group: Applications/Publishing
-Release: 1%{?dist}
+Release: 2%{?dist}
 License: MPLv1.1
 Source0: http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-%{version}.tar.gz
 Source1: bugzilla-httpd-conf
@@ -14,6 +14,7 @@ Source2: README.fedora.bugzilla
 Source3: bugzilla.cron-daily
 Patch0: bugzilla-rw-paths.patch
 Patch1: bugzilla-yum.patch
+Patch1: bugzilla-project-mod_perl.patch
 
 BuildArch: noarch
 Requires: webserver, patchutils, perl(SOAP::Lite), which
@@ -104,6 +105,7 @@ Contributed scripts and functions for Bugzilla
 %setup -q -n %{name}-%{version}
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
 rm -f Bugzilla/Constants.pm.orig
 rm -f Bugzilla/Install/Requirements.pm.orig
 # Remove bundled libs
@@ -220,6 +222,10 @@ popd > /dev/null)
 %{bzinstallprefix}/bugzilla/contrib/syncLDAP.pl
 
 %changelog
+* Fri Nov 15 2013 Emmanuel Seyman <emmanuel at seyman.fr> - 4.2.7-2
+- Add patch to cache bz_locations() (bmo #843457)
+- Fix constants patch to honor the PROJECT environment variable (#911943)
+
 * Fri Oct 18 2013 Emmanuel Seyman <emmanuel at seyman.fr> - 4.2.7-1
 - Update to 4.2.7 (security updates)
 - Patch bugzilla to write compiled templates under /var (#949130)


More information about the scm-commits mailing list