This is an automated email from the git hooks/post-receive script. guillem pushed a commit to branch master in repository dpkg.
commit ff00042f3d77a2b8d122a7a7628d43a3e3bbf385 Author: Guillem Jover <[email protected]> Date: Fri Jul 14 03:09:23 2017 +0200 Dpkg::File: Move file_lock() into a new Dpkg::Lock module This reduces the load chain for several Dpkg modules. --- debian/changelog | 2 ++ scripts/Dpkg/File.pm | 33 --------------------------------- scripts/Dpkg/{File.pm => Lock.pm} | 11 +---------- scripts/Makefile.am | 2 ++ scripts/dpkg-distaddfile.pl | 2 +- scripts/dpkg-genbuildinfo.pl | 2 +- scripts/dpkg-gencontrol.pl | 2 +- scripts/po/POTFILES.in | 1 + scripts/t/Dpkg_Lock.t | 27 +++++++++++++++++++++++++++ 9 files changed, 36 insertions(+), 46 deletions(-) diff --git a/debian/changelog b/debian/changelog index b70b645..2b3c753 100644 --- a/debian/changelog +++ b/debian/changelog @@ -39,6 +39,8 @@ dpkg (1.19.0) UNRELEASED; urgency=medium - Add new Dpkg::Interface::Storable option to disable compression support, so that we can load Dpkg::Compression::FileHandle only when enabled. - Disable decompression support for Dpkg::Vendor origin files. + - Move file_lock() function into a new Dpkg::Lock module, to reduce the + module load chain for several Dpkg modules. * Documentation: - Document currently accepted syntax for changelogs in deb-changelog(5). Closes: #858579 diff --git a/scripts/Dpkg/File.pm b/scripts/Dpkg/File.pm index cf68d9e..8849238 100644 --- a/scripts/Dpkg/File.pm +++ b/scripts/Dpkg/File.pm @@ -21,43 +21,10 @@ use warnings; our $VERSION = '0.01'; our @EXPORT = qw( - file_lock file_slurp ); use Exporter qw(import); -use Fcntl qw(:flock); - -use Dpkg::Gettext; -use Dpkg::ErrorHandling; - -sub file_lock($$) { - my ($fh, $filename) = @_; - - # A strict dependency on libfile-fcntllock-perl being it an XS module, - # and dpkg-dev indirectly making use of it, makes building new perl - # package which bump the perl ABI impossible as these packages cannot - # be installed alongside. - eval q{ - pop @INC if $INC[-1] eq '.'; - use File::FcntlLock; - }; - if ($@) { - # On Linux systems the flock() locks get converted to file-range - # locks on NFS mounts. - if ($^O ne 'linux') { - warning(g_('File::FcntlLock not available; using flock which is not NFS-safe')); - } - flock($fh, LOCK_EX) - or syserr(g_('failed to get a write lock on %s'), $filename); - } else { - eval q{ - my $fs = File::FcntlLock->new(l_type => F_WRLCK); - $fs->lock($fh, F_SETLKW) - or syserr(g_('failed to get a write lock on %s'), $filename); - } - } -} sub file_slurp { my $fh = shift; diff --git a/scripts/Dpkg/File.pm b/scripts/Dpkg/Lock.pm similarity index 93% copy from scripts/Dpkg/File.pm copy to scripts/Dpkg/Lock.pm index cf68d9e..6344779 100644 --- a/scripts/Dpkg/File.pm +++ b/scripts/Dpkg/Lock.pm @@ -14,7 +14,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. -package Dpkg::File; +package Dpkg::Lock; use strict; use warnings; @@ -22,7 +22,6 @@ use warnings; our $VERSION = '0.01'; our @EXPORT = qw( file_lock - file_slurp ); use Exporter qw(import); @@ -59,12 +58,4 @@ sub file_lock($$) { } } -sub file_slurp { - my $fh = shift; - - local $/; - my $data = <$fh>; - return $data; -} - 1; diff --git a/scripts/Makefile.am b/scripts/Makefile.am index efc970c..b66682e 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -88,6 +88,7 @@ nobase_dist_perllib_DATA = \ Dpkg/Index.pm \ Dpkg/Interface/Storable.pm \ Dpkg/IPC.pm \ + Dpkg/Lock.pm \ Dpkg/Package.pm \ Dpkg/Path.pm \ Dpkg/Shlibs.pm \ @@ -219,6 +220,7 @@ test_scripts = \ t/Dpkg_ErrorHandling.t \ t/Dpkg_Exit.t \ t/Dpkg_File.t \ + t/Dpkg_Lock.t \ t/Dpkg_Getopt.t \ t/Dpkg_Gettext.t \ t/Dpkg_Conf.t \ diff --git a/scripts/dpkg-distaddfile.pl b/scripts/dpkg-distaddfile.pl index 060b3a2..929b697 100755 --- a/scripts/dpkg-distaddfile.pl +++ b/scripts/dpkg-distaddfile.pl @@ -26,7 +26,7 @@ use POSIX qw(:errno_h :fcntl_h); use Dpkg (); use Dpkg::Gettext; use Dpkg::ErrorHandling; -use Dpkg::File; +use Dpkg::Lock; use Dpkg::Dist::Files; textdomain('dpkg-dev'); diff --git a/scripts/dpkg-genbuildinfo.pl b/scripts/dpkg-genbuildinfo.pl index d1da726..3682f2f 100755 --- a/scripts/dpkg-genbuildinfo.pl +++ b/scripts/dpkg-genbuildinfo.pl @@ -46,7 +46,7 @@ use Dpkg::Control; use Dpkg::Changelog::Parse; use Dpkg::Deps; use Dpkg::Dist::Files; -use Dpkg::File; +use Dpkg::Lock; use Dpkg::Version; use Dpkg::Vendor qw(get_current_vendor run_vendor_hook); diff --git a/scripts/dpkg-gencontrol.pl b/scripts/dpkg-gencontrol.pl index cf9529a..98c304a 100755 --- a/scripts/dpkg-gencontrol.pl +++ b/scripts/dpkg-gencontrol.pl @@ -29,7 +29,7 @@ use File::Find; use Dpkg (); use Dpkg::Gettext; use Dpkg::ErrorHandling; -use Dpkg::File; +use Dpkg::Lock; use Dpkg::Arch qw(get_host_arch debarch_eq debarch_is debarch_list_parse); use Dpkg::Package; use Dpkg::BuildProfiles qw(get_build_profiles); diff --git a/scripts/po/POTFILES.in b/scripts/po/POTFILES.in index 460a494..7584619 100644 --- a/scripts/po/POTFILES.in +++ b/scripts/po/POTFILES.in @@ -55,6 +55,7 @@ scripts/Dpkg/Gettext.pm scripts/Dpkg/IPC.pm scripts/Dpkg/Index.pm scripts/Dpkg/Interface/Storable.pm +scripts/Dpkg/Lock.pm scripts/Dpkg/Package.pm scripts/Dpkg/Path.pm scripts/Dpkg/Shlibs.pm diff --git a/scripts/t/Dpkg_Lock.t b/scripts/t/Dpkg_Lock.t new file mode 100644 index 0000000..0b85180 --- /dev/null +++ b/scripts/t/Dpkg_Lock.t @@ -0,0 +1,27 @@ +#!/usr/bin/perl +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + +use strict; +use warnings; + +use Test::More tests => 1; + +BEGIN { + use_ok('Dpkg::Lock'); +} + +# TODO: Add actual test cases. + +1; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/dpkg/dpkg.git

