From edd7d395cd07f053496394976f3056df0b0ac478 Mon Sep 17 00:00:00 2001
From: Emmanuel Seyman <emman...@seyman.fr>
Date: Wed, 5 Apr 2017 07:39:28 +0200
Subject: Fix FTBFS, fix apache configuration and backport a File::Slurp fix

---
 bugzilla-1301887-File-Slurp-Warnings.patch | 256 +++++++++++++++++++++++++++++
 bugzilla-httpd-conf                        |   2 +-
 bugzilla.spec                              |  17 +-
 3 files changed, 271 insertions(+), 4 deletions(-)
 create mode 100644 bugzilla-1301887-File-Slurp-Warnings.patch

diff --git a/bugzilla-1301887-File-Slurp-Warnings.patch 
b/bugzilla-1301887-File-Slurp-Warnings.patch
new file mode 100644
index 0000000..e983cc3
--- /dev/null
+++ b/bugzilla-1301887-File-Slurp-Warnings.patch
@@ -0,0 +1,256 @@
+diff -up ./Bugzilla/Config.pm.orig ./Bugzilla/Config.pm
+--- ./Bugzilla/Config.pm.orig  2017-03-05 20:38:55.540137017 +0100
++++ ./Bugzilla/Config.pm       2017-03-05 20:40:18.954614192 +0100
+@@ -16,10 +16,9 @@ use autodie qw(:default);
+ 
+ use Bugzilla::Constants;
+ use Bugzilla::Hook;
+-use Bugzilla::Util qw(trick_taint);
++use Bugzilla::Util qw(trick_taint read_text write_text);
+ 
+ use JSON::XS;
+-use File::Slurp;
+ use File::Temp;
+ use File::Basename;
+ 
+@@ -284,7 +283,7 @@ sub write_params {
+     my $param_file = bz_locations()->{'datadir'} . '/params.json';
+ 
+     my $json_data = JSON::XS->new->canonical->pretty->encode($param_data);
+-    write_file($param_file, { binmode => ':utf8', atomic => 1 }, \$json_data);
++    write_text($param_file, $json_data);
+ 
+     # It's not common to edit parameters and loading
+     # Bugzilla::Install::Filesystem is slow.
+@@ -301,8 +300,8 @@ sub read_param_file {
+     my $file = bz_locations()->{'datadir'} . '/params.json';
+ 
+     if (-e $file) {
+-        my $data;
+-        read_file($file, binmode => ':utf8', buf_ref => \$data);
++        my $data = read_text($file);
++        trick_taint($data);
+ 
+         # If params.json has been manually edited and e.g. some quotes are
+         # missing, we don't want JSON::XS to leak the content of the file
+diff -up ./Bugzilla/Install/Filesystem.pm.orig ./Bugzilla/Install/Filesystem.pm
+--- ./Bugzilla/Install/Filesystem.pm.orig      2017-03-05 20:40:25.563572768 
+0100
++++ ./Bugzilla/Install/Filesystem.pm   2017-03-05 20:40:53.516397565 +0100
+@@ -31,7 +31,6 @@ use File::Path;
+ use File::Basename;
+ use File::Copy qw(move);
+ use File::Spec;
+-use File::Slurp;
+ use IO::File;
+ use POSIX ();
+ 
+@@ -536,7 +535,7 @@ sub update_filesystem {
+ 
+     # Remove old assets htaccess file to force recreation with correct values.
+     if (-e "$assetsdir/.htaccess") {
+-        if (read_file("$assetsdir/.htaccess") =~ /<FilesMatch \\\.css\$>/) {
++        if (read_text("$assetsdir/.htaccess") =~ /<FilesMatch \\\.css\$>/) {
+             unlink("$assetsdir/.htaccess");
+         }
+     }
+diff -up ./Bugzilla/Install/Requirements.pm.orig 
./Bugzilla/Install/Requirements.pm
+--- ./Bugzilla/Install/Requirements.pm.orig    2017-03-05 20:41:00.420354292 
+0100
++++ ./Bugzilla/Install/Requirements.pm 2017-03-05 20:41:24.044206223 +0100
+@@ -156,11 +156,6 @@ sub REQUIRED_MODULES {
+         version => '1.0.1',
+     },
+     {
+-        package => 'File-Slurp',
+-        module  => 'File::Slurp',
+-        version => '9999.13',
+-    },
+-    {
+         package => 'JSON-XS',
+         module  => 'JSON::XS',
+         # 2.0 is the first version that will work with JSON::RPC.
+diff -up ./Bugzilla/JobQueue.pm.orig ./Bugzilla/JobQueue.pm
+--- ./Bugzilla/JobQueue.pm.orig        2017-03-05 20:41:33.460147206 +0100
++++ ./Bugzilla/JobQueue.pm     2017-03-05 20:42:40.659726012 +0100
+@@ -14,8 +14,8 @@ use warnings;
+ use Bugzilla::Constants;
+ use Bugzilla::Error;
+ use Bugzilla::Install::Util qw(install_string);
++use Bugzilla::Util qw(read_text);
+ use File::Basename;
+-use File::Slurp;
+ use base qw(TheSchwartz);
+ use fields qw(_worker_pidfile);
+ 
+@@ -124,7 +124,7 @@ sub subprocess_worker {
+             # And poll the PID to detect when the working has finished.
+             # We do this instead of system() to allow for the INT signal to
+             # interrup us and trigger kill_worker().
+-            my $pid = read_file($self->{_worker_pidfile}, err_mode => 
'quiet');
++            my $pid = read_text($self->{_worker_pidfile}, err_mode => 
'quiet');
+             if ($pid) {
+                 sleep(3) while(kill(0, $pid));
+             }
+@@ -139,7 +139,7 @@ sub subprocess_worker {
+ sub kill_worker {
+     my $self = Bugzilla->job_queue();
+     if ($self->{_worker_pidfile} && -e $self->{_worker_pidfile}) {
+-        my $worker_pid = read_file($self->{_worker_pidfile});
++        my $worker_pid = read_text($self->{_worker_pidfile});
+         if ($worker_pid && kill(0, $worker_pid)) {
+             $self->debug("Stopping worker process");
+             system "$0 -f -p '" . $self->{_worker_pidfile} . "' stop";
+diff -up ./Bugzilla/Template.pm.orig ./Bugzilla/Template.pm
+--- ./Bugzilla/Template.pm.orig        2017-03-05 20:42:47.460683385 +0100
++++ ./Bugzilla/Template.pm     2017-03-05 20:46:35.942251308 +0100
+@@ -32,7 +32,6 @@ use Digest::MD5 qw(md5_hex);
+ use File::Basename qw(basename dirname);
+ use File::Find;
+ use File::Path qw(rmtree mkpath);
+-use File::Slurp;
+ use File::Spec;
+ use IO::Dir;
+ use List::MoreUtils qw(firstidx);
+@@ -502,7 +501,7 @@ sub _concatenate_css {
+         next unless -e "$cgi_path/$files{$source}";
+         my $file = $skins_path . '/' . md5_hex($source) . '.css';
+         if (!-e $file) {
+-            my $content = read_file("$cgi_path/$files{$source}");
++            my $content = read_text("$cgi_path/$files{$source}");
+ 
+             # minify
+             $content =~ s{/\*.*?\*/}{}sg;   # comments
+@@ -512,7 +511,7 @@ sub _concatenate_css {
+             # rewrite urls
+             $content =~ s{url\(([^\)]+)\)}{_css_url_rewrite($source, $1)}eig;
+ 
+-            write_file($file, "/* $files{$source} */\n" . $content . "\n");
++            write_text($file, "/* $files{$source} */\n" . $content . "\n");
+         }
+         push @minified, $file;
+     }
+@@ -522,9 +521,9 @@ sub _concatenate_css {
+     if (!-e $file) {
+         my $content = '';
+         foreach my $source (@minified) {
+-            $content .= read_file($source);
++            $content .= read_text($source);
+         }
+-        write_file($file, $content);
++        write_text($file, $content);
+     }
+ 
+     $file =~ s/^\Q$cgi_path\E\///o;
+@@ -563,7 +562,7 @@ sub _concatenate_js {
+         next unless -e "$cgi_path/$files{$source}";
+         my $file = $skins_path . '/' . md5_hex($source) . '.js';
+         if (!-e $file) {
+-            my $content = read_file("$cgi_path/$files{$source}");
++            my $content = read_text("$cgi_path/$files{$source}");
+ 
+             # minimal minification
+             $content =~ s#/\*.*?\*/##sg;    # block comments
+@@ -572,7 +571,7 @@ sub _concatenate_js {
+             $content =~ s#\n{2,}#\n#g;      # blank lines
+             $content =~ s#(^\s+|\s+$)##g;   # whitespace at the start/end of 
file
+ 
+-            write_file($file, ";/* $files{$source} */\n" . $content . "\n");
++            write_text($file, ";/* $files{$source} */\n" . $content . "\n");
+         }
+         push @minified, $file;
+     }
+@@ -582,9 +581,9 @@ sub _concatenate_js {
+     if (!-e $file) {
+         my $content = '';
+         foreach my $source (@minified) {
+-            $content .= read_file($source);
++            $content .= read_text($source);
+         }
+-        write_file($file, $content);
++        write_text($file, $content);
+     }
+ 
+     $file =~ s/^\Q$cgi_path\E\///o;
+diff -up ./Bugzilla/Util.pm.orig ./Bugzilla/Util.pm
+--- ./Bugzilla/Util.pm.orig    2017-03-05 20:46:54.370135805 +0100
++++ ./Bugzilla/Util.pm 2017-03-05 20:48:12.190648042 +0100
+@@ -24,7 +24,7 @@ use parent qw(Exporter);
+                              validate_email_syntax check_email_syntax 
clean_text
+                              get_text template_var display_value disable_utf8
+                              detect_encoding email_filter
+-                             join_activity_entries);
++                             join_activity_entries read_text write_text);
+ 
+ use Bugzilla::Constants;
+ use Bugzilla::RNG qw(irand);
+@@ -39,6 +39,8 @@ use Scalar::Util qw(tainted blessed);
+ use Text::Wrap;
+ use Encode qw(encode decode resolve_alias);
+ use Encode::Guess;
++use File::Basename qw(dirname);
++use File::Temp qw(tempfile);
+ 
+ sub trick_taint {
+     require Carp;
+@@ -106,6 +108,27 @@ sub html_quote {
+     return $var;
+ }
+ 
++sub read_text {
++    my ($filename) = @_;
++    open my $fh, '<:encoding(utf-8)', $filename;
++    local $/ = undef;
++    my $content = <$fh>;
++    close $fh;
++    return $content;
++}
++
++sub write_text {
++    my ($filename, $content) = @_;
++    my ($tmp_fh, $tmp_filename) = tempfile('.tmp.XXXXXXXXXX',
++        DIR    => dirname($filename),
++        UNLINK => 0,
++    );
++    binmode $tmp_fh, ':encoding(utf-8)';
++    print $tmp_fh $content;
++    close $tmp_fh;
++    rename $tmp_filename, $filename;
++}
++
+ sub html_light_quote {
+     my ($text) = @_;
+     # admin/table.html.tmpl calls |FILTER html_light| many times.
+diff -up ./docs/en/rst/installing/linux.rst.orig 
./docs/en/rst/installing/linux.rst
+--- ./docs/en/rst/installing/linux.rst.orig    2017-03-05 20:48:20.526595794 
+0100
++++ ./docs/en/rst/installing/linux.rst 2017-03-05 20:49:00.375346030 +0100
+@@ -49,7 +49,7 @@ graphviz patchutils gcc 'perl(Apache2::S
+ 'perl(Daemon::Generic)' 'perl(Date::Format)' 'perl(DateTime)'
+ 'perl(DateTime::TimeZone)' 'perl(DBI)' 'perl(Digest::SHA)' 'perl(Email::MIME)'
+ 'perl(Email::Reply)' 'perl(Email::Sender)' 'perl(Encode)' 
'perl(Encode::Detect)'
+-'perl(File::MimeInfo::Magic)' 'perl(File::Slurp)' 'perl(GD)' 'perl(GD::Graph)'
++'perl(File::MimeInfo::Magic)' 'perl(GD)' 'perl(GD::Graph)'
+ 'perl(GD::Text)' 'perl(HTML::FormatText::WithLinks)' 'perl(HTML::Parser)'
+ 'perl(HTML::Scrubber)' 'perl(IO::Scalar)' 'perl(JSON::RPC)' 'perl(JSON::XS)'
+ 'perl(List::MoreUtils)' 'perl(LWP::UserAgent)' 'perl(Math::Random::ISAAC)'
+diff -up ./docs/en/rst/installing/windows.rst.orig 
./docs/en/rst/installing/windows.rst
+--- ./docs/en/rst/installing/windows.rst.orig  2017-03-05 20:49:10.415283101 
+0100
++++ ./docs/en/rst/installing/windows.rst       2017-03-05 20:49:25.631187731 
+0100
+@@ -85,7 +85,6 @@ Install the following mandatory modules
+ * URI
+ * List-MoreUtils
+ * Math-Random-ISAAC
+-* File-Slurp
+ * JSON-XS
+ * Win32
+ * Win32-API
+diff -up ./template/en/default/pages/release-notes.html.tmpl.orig 
./template/en/default/pages/release-notes.html.tmpl
+--- ./template/en/default/pages/release-notes.html.tmpl.orig   2017-03-05 
20:49:34.287133477 +0100
++++ ./template/en/default/pages/release-notes.html.tmpl        2017-03-05 
20:49:52.223021059 +0100
+@@ -174,7 +174,7 @@
+ <h3 id="req_modules">Required Perl Modules</h3>
+ 
+ [% INCLUDE req_table reqs = REQUIRED_MODULES
+-                     new = ['File-Slurp','JSON-XS', 'Email-Sender']
++                     new = ['JSON-XS', 'Email-Sender']
+                      updated = ['DateTime', 'DateTime-TimeZone',
+                                 'Template-Toolkit', 'URI'] %]
+ 
diff --git a/bugzilla-httpd-conf b/bugzilla-httpd-conf
index 1ed7679..bdf6d85 100644
--- a/bugzilla-httpd-conf
+++ b/bugzilla-httpd-conf
@@ -13,7 +13,7 @@ Alias /bugzilla /usr/share/bugzilla
   AddHandler cgi-script .cgi
   Options +Indexes +ExecCGI +FollowSymLinks
   DirectoryIndex index.cgi index.html
-  AllowOverride Limit Options FileInfo Indexes
+  AllowOverride Limit Options FileInfo Indexes AuthConfig
   AddType application/vnd.mozilla.xul+xml .xul
   AddType application/rdf+xml .rdf
 </Directory>
diff --git a/bugzilla.spec b/bugzilla.spec
index d142409..f6f56a1 100644
--- a/bugzilla.spec
+++ b/bugzilla.spec
@@ -6,7 +6,7 @@ URL: https://www.bugzilla.org/
 Name: bugzilla
 Version: 5.0.3
 Group: Applications/Publishing
-Release: 3%{?dist}
+Release: 4%{?dist}
 License: MPLv1.1
 Source0: 
https://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-dnf.patch
+Patch2: bugzilla-1301887-File-Slurp-Warnings.patch
 
 BuildArch: noarch
 Requires: patchutils
@@ -43,14 +44,16 @@ BuildRequires: python-sphinx
 BuildRequires: texlive-collection-fontsrecommended
 BuildRequires: texlive-collection-latexrecommended
 BuildRequires: texlive-collection-basic
+BuildRequires: texlive-fncychap
 BuildRequires: tex-framed
 BuildRequires: tex-multirow
 BuildRequires: tex-threeparttable
 BuildRequires: tex-titlesec
 BuildRequires: tex-wrapfig
 %if 0%{?fedora}
-BuildRequires: texlive-capt-of.noarch
-BuildRequires: texlive-eqparbox.noarch
+BuildRequires: texlive-capt-of
+BuildRequires: texlive-eqparbox
+BuildRequires: texlive-tabulary
 BuildRequires: texlive-upquote
 %endif
 
@@ -165,6 +168,7 @@ if [ -f Bugzilla/Install/Requirements.pm.orig ]; then
     : ERROR: Patch1 did not apply cleanly
     exit 1
 fi
+%patch2 -p1
 
 # Remove bundled libs
 rm -rf lib/CGI*
@@ -174,6 +178,8 @@ rm -f js/yui/*/*.swf
 # Deal with changing /usr/local paths here instead of via patches
 %{__perl} -pi -e 's|/usr/local/bin/python\b|%{__python}|' contrib/*.py
 %{__perl} -pi -e 's|/usr/local/bin/ruby\b|%{_bindir}/ruby|' contrib/*.rb
+%{__perl} -pi -e 's|/usr/bin/env python|%{__python}|' 
contrib/bugzilla-submit/bugzilla-submit
+
 grep -rl '/usr/lib/sendmail\b' contrib docs \
 | xargs %{__perl} -pi -e 's|/usr/lib/sendmail\b|%{_sbindir}/sendmail|'
 
@@ -284,6 +290,11 @@ popd > /dev/null)
 %{bzinstallprefix}/bugzilla/contrib/Bugzilla.pm
 
 %changelog
+* Tue Apr 04 2017 Emmanuel Seyman <emman...@seyman.fr> - 5.0.3-4
+- Include more dependencies to fix FTBFS (#1423283)
+- Allow AuthConfig directives in Bugzilla's directory (#1403588)
+- Backport patch to use internal functions rather than File::Slurp (#1425077)
+
 * Sun Nov 27 2016 Emmanuel Seyman <emman...@seyman.fr> - 5.0.3-3
 - Check for perl(JSON::RPC::Legacy::Server::CGI) instead of perl(JSON::RPC)
 
-- 
cgit v1.1


        
https://src.fedoraproject.org/cgit/bugzilla.git/commit/?h=f25&id=edd7d395cd07f053496394976f3056df0b0ac478
_______________________________________________
perl-devel mailing list -- perl-devel@lists.fedoraproject.org
To unsubscribe send an email to perl-devel-le...@lists.fedoraproject.org

Reply via email to