Hello community,

here is the log from the commit of package perl-PAR for openSUSE:Factory 
checked in at 2017-01-23 11:34:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-PAR (Old)
 and      /work/SRC/openSUSE:Factory/.perl-PAR.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-PAR"

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-PAR/perl-PAR.changes        2016-09-25 
14:44:43.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.perl-PAR.new/perl-PAR.changes   2017-01-23 
11:34:35.289717068 +0100
@@ -1,0 +2,48 @@
+Mon Dec 19 06:48:51 UTC 2016 - [email protected]
+
+- updated to 1.014
+   see /usr/share/doc/packages/perl-PAR/Changes
+
+  1.014  2016-12-18
+  
+    - Fix RT#119224: "Issue about Can't locate loadable object for module"
+      drop "use" statements in PAR/Heavy.pm added in edf5f24d
+  
+    - Fix RT#119010: "Wrong license link"
+      always refer to the included LICENSE file
+  
+    - generate hello.par in Makefile target "pure_all"
+
+-------------------------------------------------------------------
+Mon Nov 28 06:57:47 UTC 2016 - [email protected]
+
+- updated to 1.013
+   see /usr/share/doc/packages/perl-PAR/Changes
+
+  1.013  2016-11-27
+  
+    - Fix a crucial typo, hopefully fixes RT#118981 "Tests fail (with PAR 
1.012?)"
+  
+    - Build t/hello.par at "make" time
+
+-------------------------------------------------------------------
+Sat Nov 26 06:55:50 UTC 2016 - [email protected]
+
+- updated to 1.012
+   see /usr/share/doc/packages/perl-PAR/Changes
+
+  1.012  2016-11-25
+  
+    - Guard against concurrent extraction attempts of zip into "inc"
+  
+      - use a file lock to protect the extraction of the complete zip into 
"inc"
+   
+      - _run_member_*(), _tempfile(), _dl_extract(): 
+        make the "persistent" filename only visible when the file 
+        has been completely written
+    
+    - Make build and test work if @INC does not include "."
+  
+    - Upgrade to Module::Install 1.17
+
+-------------------------------------------------------------------

Old:
----
  PAR-1.011.tar.gz

New:
----
  PAR-1.014.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-PAR.spec ++++++
--- /var/tmp/diff_new_pack.O2QVTg/_old  2017-01-23 11:34:36.217585492 +0100
+++ /var/tmp/diff_new_pack.O2QVTg/_new  2017-01-23 11:34:36.221584924 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           perl-PAR
-Version:        1.011
+Version:        1.014
 Release:        0
 %define cpan_name PAR
 Summary:        Perl Archive Toolkit
@@ -38,7 +38,6 @@
 Requires:       perl(AutoLoader) >= 5.66_02
 Requires:       perl(Compress::Zlib) >= 1.3
 Requires:       perl(PAR::Dist) >= 0.32
-Recommends:     perl(Digest) >= Module::Signature
 %{perl_requires}
 
 %description

++++++ PAR-1.011.tar.gz -> PAR-1.014.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/Changes new/PAR-1.014/Changes
--- old/PAR-1.011/Changes       2016-09-18 13:17:20.000000000 +0200
+++ new/PAR-1.014/Changes       2016-12-18 17:31:34.000000000 +0100
@@ -1,3 +1,33 @@
+1.014  2016-12-18
+
+  - Fix RT#119224: "Issue about Can't locate loadable object for module"
+    drop "use" statements in PAR/Heavy.pm added in edf5f24d
+
+  - Fix RT#119010: "Wrong license link"
+    always refer to the included LICENSE file
+
+  - generate hello.par in Makefile target "pure_all"
+
+1.013  2016-11-27
+
+  - Fix a crucial typo, hopefully fixes RT#118981 "Tests fail (with PAR 
1.012?)"
+
+  - Build t/hello.par at "make" time
+    
+1.012  2016-11-25
+
+  - Guard against concurrent extraction attempts of zip into "inc"
+
+    - use a file lock to protect the extraction of the complete zip into "inc"
+ 
+    - _run_member_*(), _tempfile(), _dl_extract(): 
+      make the "persistent" filename only visible when the file 
+      has been completely written
+  
+  - Make build and test work if @INC does not include "."
+
+  - Upgrade to Module::Install 1.17
+
 1.011  2016-09-18
 
 - Move to GitHub. Thanks, OpenFoundry, for years of service.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/LICENSE new/PAR-1.014/LICENSE
--- old/PAR-1.011/LICENSE       2016-09-18 13:00:22.000000000 +0200
+++ new/PAR-1.014/LICENSE       2016-10-01 17:13:12.000000000 +0200
@@ -1,201 +1,383 @@
-                      The Artistic License 2.0
+Copyright 2002-2010 by Audrey Tang <[email protected]>.
+Copyright 2006-2010 by Steffen Mueller <[email protected]>.
 
-           Copyright (c) 2000-2006, The Perl Foundation.
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
 
-     Everyone is permitted to copy and distribute verbatim copies
-      of this license document, but changing it is not allowed.
+Terms of the Perl programming language system itself
 
-Preamble
+a) the GNU General Public License as published by the Free
+   Software Foundation; either version 1, or (at your option) any
+   later version, or
+b) the "Artistic License"
+
+--- The GNU General Public License, Version 1, February 1989 ---
+
+Copyright 2002-2010 by Audrey Tang <[email protected]>.
+Copyright 2006-2010 by Steffen Mueller <[email protected]>.
+
+This is free software, licensed under:
+
+  The GNU General Public License, Version 1, February 1989
+
+                    GNU GENERAL PUBLIC LICENSE
+                     Version 1, February 1989
+
+ Copyright (C) 1989 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The license agreements of most software companies try to keep users
+at the mercy of those companies.  By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  The
+General Public License applies to the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must tell them their rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License.  The
+"Program", below, refers to any such program or work, and a "work based
+on the Program" means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications.  Each
+licensee is addressed as "you".
+
+  1. You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program.  You may charge a fee for the physical act of
+transferring a copy.
+
+  2. You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
+    a) cause the modified files to carry prominent notices stating that
+    you changed the files and the date of any change; and
+
+    b) cause the whole of any work that you distribute or publish, that
+    in whole or in part contains the Program or any part thereof, either
+    with or without modifications, to be licensed at no charge to all
+    third parties under the terms of this General Public License (except
+    that you may choose to grant warranty protection to some or all
+    third parties, at your option).
+
+    c) If the modified program normally reads commands interactively when
+    run, you must cause it, when started running for such interactive use
+    in the simplest and most usual way, to print or display an
+    announcement including an appropriate copyright notice and a notice
+    that there is no warranty (or else, saying that you provide a
+    warranty) and that users may redistribute the program under these
+    conditions, and telling the user how to view a copy of this General
+    Public License.
+
+    d) You may charge a fee for the physical act of transferring a
+    copy, and you may at your option offer warranty protection in
+    exchange for a fee.
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
+  3. You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
+    a) accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of
+    Paragraphs 1 and 2 above; or,
+
+    b) accompany it with a written offer, valid for at least three
+    years, to give any third party free (except for a nominal charge
+    for the cost of distribution) a complete machine-readable copy of the
+    corresponding source code, to be distributed under the terms of
+    Paragraphs 1 and 2 above; or,
+
+    c) accompany it with the information you received as to where the
+    corresponding source code may be obtained.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form alone.)
+
+Source code for a work means the preferred form of the work for making
+modifications to it.  For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
+  4. You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License.  However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
+  5. By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions.  You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein.
+
+  7. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of the license which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
+  8. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+        Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to humanity, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+  To do so, attach the following notices to the program.  It is safest to
+attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    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 1, 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, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA  02110-1301 
USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19xx name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the
+appropriate parts of the General Public License.  Of course, the
+commands you use may be called something other than `show w' and `show
+c'; they could even be mouse-clicks or menu items--whatever suits your
+program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  program `Gnomovision' (a program to direct compilers to make passes
+  at assemblers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+--- The Artistic License 1.0 ---
+
+Copyright 2002-2010 by Audrey Tang <[email protected]>.
+Copyright 2006-2010 by Steffen Mueller <[email protected]>.
+
+This is free software, licensed under:
+
+  The Artistic License 1.0
 
-This license establishes the terms under which a given free software
-Package may be copied, modified, distributed, and/or redistributed.
-The intent is that the Copyright Holder maintains some artistic
-control over the development of that Package while still keeping the
-Package available as open source and free software.
-
-You are always permitted to make arrangements wholly outside of this
-license directly with the Copyright Holder of a given Package.  If the
-terms of this license do not permit the full use that you propose to
-make of the Package, you should contact the Copyright Holder and seek
-a different licensing arrangement. 
-
-Definitions
-
-    "Copyright Holder" means the individual(s) or organization(s)
-    named in the copyright notice for the entire Package.
-
-    "Contributor" means any party that has contributed code or other
-    material to the Package, in accordance with the Copyright Holder's
-    procedures.
-
-    "You" and "your" means any person who would like to copy,
-    distribute, or modify the Package.
-
-    "Package" means the collection of files distributed by the
-    Copyright Holder, and derivatives of that collection and/or of
-    those files. A given Package may consist of either the Standard
-    Version, or a Modified Version.
-
-    "Distribute" means providing a copy of the Package or making it
-    accessible to anyone else, or in the case of a company or
-    organization, to others outside of your company or organization.
-
-    "Distributor Fee" means any fee that you charge for Distributing
-    this Package or providing support for this Package to another
-    party.  It does not mean licensing fees.
-
-    "Standard Version" refers to the Package if it has not been
-    modified, or has been modified only in ways explicitly requested
-    by the Copyright Holder.
+The Artistic License
 
-    "Modified Version" means the Package, if it has been changed, and
-    such changes were not explicitly requested by the Copyright
+Preamble
+
+The intent of this document is to state the conditions under which a Package
+may be copied, such that the Copyright Holder maintains some semblance of
+artistic control over the development of the package, while giving the users of
+the package the right to use and distribute the Package in a more-or-less
+customary fashion, plus the right to make reasonable modifications.
+
+Definitions:
+
+  - "Package" refers to the collection of files distributed by the Copyright
+    Holder, and derivatives of that collection of files created through
+    textual modification. 
+  - "Standard Version" refers to such a Package if it has not been modified,
+    or has been modified in accordance with the wishes of the Copyright
     Holder. 
+  - "Copyright Holder" is whoever is named in the copyright or copyrights for
+    the package. 
+  - "You" is you, if you're thinking about copying or distributing this 
Package.
+  - "Reasonable copying fee" is whatever you can justify on the basis of media
+    cost, duplication charges, time of people involved, and so on. (You will
+    not be required to justify it to the Copyright Holder, but only to the
+    computing community at large as a market that must bear the fee.) 
+  - "Freely Available" means that no fee is charged for the item itself, though
+    there may be fees involved in handling the item. It also means that
+    recipients of the item may redistribute it under the same conditions they
+    received it. 
+
+1. You may make and give away verbatim copies of the source form of the
+Standard Version of this Package without restriction, provided that you
+duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications derived
+from the Public Domain or from the Copyright Holder. A Package modified in such
+a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided that
+you insert a prominent notice in each changed file stating how and when you
+changed that file, and provided that you do at least ONE of the following:
+
+  a) place your modifications in the Public Domain or otherwise make them
+     Freely Available, such as by posting said modifications to Usenet or an
+     equivalent medium, or placing the modifications on a major archive site
+     such as ftp.uu.net, or by allowing the Copyright Holder to include your
+     modifications in the Standard Version of the Package.
+
+  b) use the modified Package only within your corporation or organization.
+
+  c) rename any non-standard executables so the names do not conflict with
+     standard executables, which must also be provided, and provide a separate
+     manual page for each non-standard executable that clearly documents how it
+     differs from the Standard Version.
+
+  d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or executable
+form, provided that you do at least ONE of the following:
+
+  a) distribute a Standard Version of the executables and library files,
+     together with instructions (in the manual page or equivalent) on where to
+     get the Standard Version.
+
+  b) accompany the distribution with the machine-readable source of the Package
+     with your modifications.
+
+  c) accompany any non-standard executables with their corresponding Standard
+     Version executables, giving the non-standard executables non-standard
+     names, and clearly documenting the differences in manual pages (or
+     equivalent), together with instructions on where to get the Standard
+     Version.
+
+  d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this
+Package.  You may charge any fee you choose for support of this Package. You
+may not charge a fee for this Package itself. However, you may distribute this
+Package in aggregate with other (possibly commercial) programs as part of a
+larger (possibly commercial) software distribution provided that you do not
+advertise this Package as a product of your own.
+
+6. The scripts and library files supplied as input to or produced as output
+from the programs of this Package do not automatically fall under the copyright
+of this Package, but belong to whomever generated them, and may be sold
+commercially, and may be aggregated with this Package.
+
+7. C or perl subroutines supplied by you and linked into this Package shall not
+be considered part of this Package.
+
+8. The name of the Copyright Holder may not be used to endorse or promote
+products derived from this software without specific prior written permission.
+
+9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+The End
+
 
-    "Original License" means this Artistic License as Distributed with
-    the Standard Version of the Package, in its current version or as
-    it may be modified by The Perl Foundation in the future.
-
-    "Source" form means the source code, documentation source, and
-    configuration files for the Package.
-
-    "Compiled" form means the compiled bytecode, object code, binary,
-    or any other form resulting from mechanical transformation or
-    translation of the Source form.
-
-
-Permission for Use and Modification Without Distribution
-
-(1)  You are permitted to use the Standard Version and create and use
-Modified Versions for any purpose without restriction, provided that
-you do not Distribute the Modified Version.
-
-
-Permissions for Redistribution of the Standard Version
-
-(2)  You may Distribute verbatim copies of the Source form of the
-Standard Version of this Package in any medium without restriction,
-either gratis or for a Distributor Fee, provided that you duplicate
-all of the original copyright notices and associated disclaimers.  At
-your discretion, such verbatim copies may or may not include a
-Compiled form of the Package.
-
-(3)  You may apply any bug fixes, portability changes, and other
-modifications made available from the Copyright Holder.  The resulting
-Package will still be considered the Standard Version, and as such
-will be subject to the Original License.
-
-
-Distribution of Modified Versions of the Package as Source 
-
-(4)  You may Distribute your Modified Version as Source (either gratis
-or for a Distributor Fee, and with or without a Compiled form of the
-Modified Version) provided that you clearly document how it differs
-from the Standard Version, including, but not limited to, documenting
-any non-standard features, executables, or modules, and provided that
-you do at least ONE of the following:
-
-    (a)  make the Modified Version available to the Copyright Holder
-    of the Standard Version, under the Original License, so that the
-    Copyright Holder may include your modifications in the Standard
-    Version.
-
-    (b)  ensure that installation of your Modified Version does not
-    prevent the user installing or running the Standard Version. In
-    addition, the Modified Version must bear a name that is different
-    from the name of the Standard Version.
-
-    (c)  allow anyone who receives a copy of the Modified Version to
-    make the Source form of the Modified Version available to others
-    under
-               
-       (i)  the Original License or
-
-       (ii)  a license that permits the licensee to freely copy,
-       modify and redistribute the Modified Version using the same
-       licensing terms that apply to the copy that the licensee
-       received, and requires that the Source form of the Modified
-       Version, and of any works derived from it, be made freely
-       available in that license fees are prohibited but Distributor
-       Fees are allowed.
-
-
-Distribution of Compiled Forms of the Standard Version 
-or Modified Versions without the Source
-
-(5)  You may Distribute Compiled forms of the Standard Version without
-the Source, provided that you include complete instructions on how to
-get the Source of the Standard Version.  Such instructions must be
-valid at the time of your distribution.  If these instructions, at any
-time while you are carrying out such distribution, become invalid, you
-must provide new instructions on demand or cease further distribution.
-If you provide valid instructions or cease distribution within thirty
-days after you become aware that the instructions are invalid, then
-you do not forfeit any of your rights under this license.
-
-(6)  You may Distribute a Modified Version in Compiled form without
-the Source, provided that you comply with Section 4 with respect to
-the Source of the Modified Version.
-
-
-Aggregating or Linking the Package 
-
-(7)  You may aggregate the Package (either the Standard Version or
-Modified Version) with other packages and Distribute the resulting
-aggregation provided that you do not charge a licensing fee for the
-Package.  Distributor Fees are permitted, and licensing fees for other
-components in the aggregation are permitted. The terms of this license
-apply to the use and Distribution of the Standard or Modified Versions
-as included in the aggregation.
-
-(8) You are permitted to link Modified and Standard Versions with
-other works, to embed the Package in a larger work of your own, or to
-build stand-alone binary or bytecode versions of applications that
-include the Package, and Distribute the result without restriction,
-provided the result does not expose a direct interface to the Package.
-
-
-Items That are Not Considered Part of a Modified Version 
-
-(9) Works (including, but not limited to, modules and scripts) that
-merely extend or make use of the Package, do not, by themselves, cause
-the Package to be a Modified Version.  In addition, such works are not
-considered parts of the Package itself, and are not subject to the
-terms of this license.
-
-
-General Provisions
-
-(10)  Any use, modification, and distribution of the Standard or
-Modified Versions is governed by this Artistic License. By using,
-modifying or distributing the Package, you accept this license. Do not
-use, modify, or distribute the Package, if you do not accept this
-license.
-
-(11)  If your Modified Version has been derived from a Modified
-Version made by someone other than you, you are nevertheless required
-to ensure that your Modified Version complies with the requirements of
-this license.
-
-(12)  This license does not grant you the right to use any trademark,
-service mark, tradename, or logo of the Copyright Holder.
-
-(13)  This license includes the non-exclusive, worldwide,
-free-of-charge patent license to make, have made, use, offer to sell,
-sell, import and otherwise transfer the Package with respect to any
-patent claims licensable by the Copyright Holder that are necessarily
-infringed by the Package. If you institute patent litigation
-(including a cross-claim or counterclaim) against any party alleging
-that the Package constitutes direct or contributory patent
-infringement, then this Artistic License to you shall terminate on the
-date that such litigation is filed.
-
-(14)  Disclaimer of Warranty:
-THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
-IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
-NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL
-LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/MANIFEST new/PAR-1.014/MANIFEST
--- old/PAR-1.011/MANIFEST      2016-09-18 13:26:20.000000000 +0200
+++ new/PAR-1.014/MANIFEST      2016-12-18 17:34:14.000000000 +0100
@@ -26,5 +26,10 @@
 t/40-par-hashref.t
 t/50-autoloaderfix.t
 t/60-cleanup.t
-t/hello.par
+t/data/lib/Data.pm
+t/data/lib/Hello.pm
+t/data/script/data.pl
+t/data/script/hello.pl
+t/data/script/nostrict.pl
+t/gen-hello-par.pl
 t/Hello.pm
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/MANIFEST.SKIP new/PAR-1.014/MANIFEST.SKIP
--- old/PAR-1.011/MANIFEST.SKIP 2016-09-18 13:26:17.000000000 +0200
+++ new/PAR-1.014/MANIFEST.SKIP 2016-11-27 17:10:15.000000000 +0100
@@ -10,3 +10,4 @@
 ^\.gitignore
 \B\.svn\b
 ^MYMETA\.
+^t/hello.par
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/META.yml new/PAR-1.014/META.yml
--- old/PAR-1.011/META.yml      2016-09-18 13:29:53.000000000 +0200
+++ new/PAR-1.014/META.yml      2016-12-18 17:33:45.000000000 +0100
@@ -3,44 +3,26 @@
 author:
   - 'Audrey Tang <[email protected]>'
 build_requires:
-  ExtUtils::MakeMaker: 6.59
+  ExtUtils::MakeMaker: '6.59'
 configure_requires:
-  ExtUtils::MakeMaker: 6.59
-distribution_type: module
-dynamic_config: 1
-generated_by: 'Module::Install version 1.16'
+  ExtUtils::MakeMaker: '0'
+dynamic_config: 0
+generated_by: 'ExtUtils::MakeMaker version 7.1002, CPAN::Meta::Converter 
version 2.150005'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
-  version: 1.4
+  version: '1.4'
 name: PAR
 no_index:
   directory:
-    - inc
     - t
-provides:
-  PAR:
-    file: lib/PAR.pm
-    version: '1.011'
-  PAR::Heavy:
-    file: lib/PAR/Heavy.pm
-    version: '0.12'
-  PAR::SetupProgname:
-    file: lib/PAR/SetupProgname.pm
-    version: '1.002'
-  PAR::SetupTemp:
-    file: lib/PAR/SetupTemp.pm
-    version: '1.002'
-recommends:
-  Digest: Module::Signature
+    - inc
 requires:
-  Archive::Zip: 1
+  Archive::Zip: '1'
   AutoLoader: 5.66_02
-  Compress::Zlib: 1.3
-  File::Temp: 0.05
-  PAR::Dist: 0.32
-  perl: 5.8.1
-resources:
-  license: http://dev.perl.org/licenses/
-  repository: https://github.com/rschupp/PAR
-version: '1.011'
+  Compress::Zlib: '1.3'
+  File::Temp: '0.05'
+  PAR::Dist: '0.32'
+  perl: '5.008001'
+version: '1.014'
+x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/Makefile.PL new/PAR-1.014/Makefile.PL
--- old/PAR-1.011/Makefile.PL   2016-09-18 13:08:01.000000000 +0200
+++ new/PAR-1.014/Makefile.PL   2016-12-18 17:13:32.000000000 +0100
@@ -1,6 +1,7 @@
 
 use strict;
 use 5.008001;
+use lib ".";
 use inc::Module::Install;
 
 name        'PAR';
@@ -30,7 +31,16 @@
             'Module::Signature';
 }
 
-no_index            directory => 'contrib';
+no_index    directory => 'contrib';
 auto_provides;
 
+clean_files 't/hello.par';
+
 WriteAll sign => 0;
+
+sub MY::postamble {
+    return <<'...';
+pure_all :: 
+       $(PERL) t/gen-hello-par.pl
+...
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/README new/PAR-1.014/README
--- old/PAR-1.011/README        2016-09-18 13:07:38.000000000 +0200
+++ new/PAR-1.014/README        2016-12-18 16:18:28.000000000 +0100
@@ -59,4 +59,4 @@
 All rights reserved.  You can redistribute and/or modify
 this bundle under the same terms as Perl itself.
 
-See <http://dev.perl.org/licenses/artistic.html>.
+See LICENSE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/inc/Module/Install/Base.pm 
new/PAR-1.014/inc/Module/Install/Base.pm
--- old/PAR-1.011/inc/Module/Install/Base.pm    2016-09-18 13:29:52.000000000 
+0200
+++ new/PAR-1.014/inc/Module/Install/Base.pm    2016-11-06 14:03:48.000000000 
+0100
@@ -4,7 +4,7 @@
 use strict 'vars';
 use vars qw{$VERSION};
 BEGIN {
-       $VERSION = '1.16';
+       $VERSION = '1.17';
 }
 
 # Suspend handler for "redefined" warnings
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/inc/Module/Install/Can.pm 
new/PAR-1.014/inc/Module/Install/Can.pm
--- old/PAR-1.011/inc/Module/Install/Can.pm     2016-09-18 13:29:52.000000000 
+0200
+++ new/PAR-1.014/inc/Module/Install/Can.pm     2016-11-06 14:03:48.000000000 
+0100
@@ -8,7 +8,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '1.16';
+       $VERSION = '1.17';
        @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
 }
@@ -121,6 +121,15 @@
 # Can we locate a (the) C compiler
 sub can_cc {
        my $self   = shift;
+
+       if ($^O eq 'VMS') {
+               require ExtUtils::CBuilder;
+               my $builder = ExtUtils::CBuilder->new(
+               quiet => 1,
+               );
+               return $builder->have_compiler;
+       }
+
        my @chunks = split(/ /, $Config::Config{cc}) or return;
 
        # $Config{cc} may contain args; try to find out the program part
@@ -151,4 +160,4 @@
 
 __END__
 
-#line 236
+#line 245
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/inc/Module/Install/Fetch.pm 
new/PAR-1.014/inc/Module/Install/Fetch.pm
--- old/PAR-1.011/inc/Module/Install/Fetch.pm   2016-09-18 13:29:52.000000000 
+0200
+++ new/PAR-1.014/inc/Module/Install/Fetch.pm   2016-11-06 14:03:48.000000000 
+0100
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '1.16';
+       $VERSION = '1.17';
        @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/inc/Module/Install/Makefile.pm 
new/PAR-1.014/inc/Module/Install/Makefile.pm
--- old/PAR-1.011/inc/Module/Install/Makefile.pm        2016-09-18 
13:29:52.000000000 +0200
+++ new/PAR-1.014/inc/Module/Install/Makefile.pm        2016-11-06 
14:03:48.000000000 +0100
@@ -8,7 +8,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '1.16';
+       $VERSION = '1.17';
        @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/inc/Module/Install/Metadata.pm 
new/PAR-1.014/inc/Module/Install/Metadata.pm
--- old/PAR-1.011/inc/Module/Install/Metadata.pm        2016-09-18 
13:29:52.000000000 +0200
+++ new/PAR-1.014/inc/Module/Install/Metadata.pm        2016-11-06 
14:03:48.000000000 +0100
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '1.16';
+       $VERSION = '1.17';
        @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/inc/Module/Install/Win32.pm 
new/PAR-1.014/inc/Module/Install/Win32.pm
--- old/PAR-1.011/inc/Module/Install/Win32.pm   2016-09-18 13:29:52.000000000 
+0200
+++ new/PAR-1.014/inc/Module/Install/Win32.pm   2016-11-06 14:03:48.000000000 
+0100
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '1.16';
+       $VERSION = '1.17';
        @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/inc/Module/Install/WriteAll.pm 
new/PAR-1.014/inc/Module/Install/WriteAll.pm
--- old/PAR-1.011/inc/Module/Install/WriteAll.pm        2016-09-18 
13:29:52.000000000 +0200
+++ new/PAR-1.014/inc/Module/Install/WriteAll.pm        2016-11-06 
14:03:48.000000000 +0100
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '1.16';
+       $VERSION = '1.17';
        @ISA     = qw{Module::Install::Base};
        $ISCORE  = 1;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/inc/Module/Install.pm 
new/PAR-1.014/inc/Module/Install.pm
--- old/PAR-1.011/inc/Module/Install.pm 2016-09-18 13:29:52.000000000 +0200
+++ new/PAR-1.014/inc/Module/Install.pm 2016-11-06 14:03:47.000000000 +0100
@@ -31,7 +31,7 @@
        # This is not enforced yet, but will be some time in the next few
        # releases once we can make sure it won't clash with custom
        # Module::Install extensions.
-       $VERSION = '1.16';
+       $VERSION = '1.17';
 
        # Storage for the pseudo-singleton
        $MAIN    = undef;
@@ -244,6 +244,8 @@
        }
        return $args{_self} if $args{_self};
 
+       $base_path = VMS::Filespec::unixify($base_path) if $^O eq 'VMS';
+
        $args{dispatch} ||= 'Admin';
        $args{prefix}   ||= 'inc';
        $args{author}   ||= ($^O eq 'VMS' ? '_author' : '.author');
@@ -322,7 +324,7 @@
        my ($self, $path) = @_;
 
        my @found;
-       File::Find::find( sub {
+       File::Find::find( {no_chdir => 1, wanted => sub {
                my $file = $File::Find::name;
                return unless $file =~ m!^\Q$path\E/(.+)\.pm\Z!is;
                my $subpath = $1;
@@ -336,7 +338,7 @@
                # correctly.  Otherwise, root through the file to locate the 
case-preserved
                # version of the package name.
                if ( $subpath eq lc($subpath) || $subpath eq uc($subpath) ) {
-                       my $content = Module::Install::_read($subpath . '.pm');
+                       my $content = Module::Install::_read($File::Find::name);
                        my $in_pod  = 0;
                        foreach ( split /\n/, $content ) {
                                $in_pod = 1 if /^=\w/;
@@ -351,7 +353,7 @@
                }
 
                push @found, [ $file, $pkg ];
-       }, $path ) if -d $path;
+       }}, $path ) if -d $path;
 
        @found;
 }
@@ -373,8 +375,6 @@
        return $call;
 }
 
-# Done in evals to avoid confusing Perl::MinimumVersion
-eval( $] >= 5.006 ? <<'END_NEW' : <<'END_OLD' ); die $@ if $@;
 sub _read {
        local *FH;
        open( FH, '<', $_[0] ) or die "open($_[0]): $!";
@@ -383,16 +383,6 @@
        close FH or die "close($_[0]): $!";
        return $string;
 }
-END_NEW
-sub _read {
-       local *FH;
-       open( FH, "< $_[0]"  ) or die "open($_[0]): $!";
-       binmode FH;
-       my $string = do { local $/; <FH> };
-       close FH or die "close($_[0]): $!";
-       return $string;
-}
-END_OLD
 
 sub _readperl {
        my $string = Module::Install::_read($_[0]);
@@ -413,8 +403,6 @@
        return $string;
 }
 
-# Done in evals to avoid confusing Perl::MinimumVersion
-eval( $] >= 5.006 ? <<'END_NEW' : <<'END_OLD' ); die $@ if $@;
 sub _write {
        local *FH;
        open( FH, '>', $_[0] ) or die "open($_[0]): $!";
@@ -424,17 +412,6 @@
        }
        close FH or die "close($_[0]): $!";
 }
-END_NEW
-sub _write {
-       local *FH;
-       open( FH, "> $_[0]"  ) or die "open($_[0]): $!";
-       binmode FH;
-       foreach ( 1 .. $#_ ) {
-               print FH $_[$_] or die "print($_[0]): $!";
-       }
-       close FH or die "close($_[0]): $!";
-}
-END_OLD
 
 # _version is for processing module versions (eg, 1.03_05) not
 # Perl versions (eg, 5.8.1).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/lib/PAR/Environment.pod 
new/PAR-1.014/lib/PAR/Environment.pod
--- old/PAR-1.011/lib/PAR/Environment.pod       2016-09-18 12:45:01.000000000 
+0200
+++ new/PAR-1.014/lib/PAR/Environment.pod       2016-12-18 16:18:28.000000000 
+0100
@@ -248,6 +248,6 @@
 This program or documentation is free software; you can redistribute it and/or 
modify it
 under the same terms as Perl itself.
 
-See L<http://www.perl.com/perl/misc/Artistic.html>
+See F<LICENSE>.
 
 =cut
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/lib/PAR/FAQ.pod 
new/PAR-1.014/lib/PAR/FAQ.pod
--- old/PAR-1.011/lib/PAR/FAQ.pod       2016-09-18 12:45:01.000000000 +0200
+++ new/PAR-1.014/lib/PAR/FAQ.pod       2016-12-18 16:18:28.000000000 +0100
@@ -360,6 +360,6 @@
 This document is free documentation; you can redistribute it and/or
 modify it under the same terms as Perl itself.
 
-See L<http://www.perl.com/perl/misc/Artistic.html>
+See F<LICENSE>.
 
 =cut
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/lib/PAR/Heavy.pm 
new/PAR-1.014/lib/PAR/Heavy.pm
--- old/PAR-1.011/lib/PAR/Heavy.pm      2016-09-18 12:45:01.000000000 +0200
+++ new/PAR-1.014/lib/PAR/Heavy.pm      2016-12-18 16:18:28.000000000 +0100
@@ -18,6 +18,9 @@
 ########################################################################
 # Dynamic inclusion of XS modules
 
+# NOTE: Don't "use" any module here, esp. one that is an XS module or 
+# whose "use" could cause the loading of an XS module thru its dependencies.
+
 my ($bootstrap, $dl_findfile);  # Caches for code references
 my ($cache_key);                # The current file to find
 my $is_insensitive_fs = (
@@ -97,7 +100,7 @@
         }
     }
 
-    $FullCache{$file} = _dl_extract($member, $file);
+    $FullCache{$file} = _dl_extract($member);
 
     # Now extract all associated shared objs in the same auto/ dir
     # XXX: shouldn't this also set $FullCache{...} for those files?
@@ -112,7 +115,7 @@
             next if $name eq $first;
             next unless $name =~ 
m{^/?\Q$path_pattern\E\/[^/]*\.\Q$DynaLoader::dl_dlext\E[^/]*$};
             $name =~ s{.*/}{};
-            _dl_extract($member, $file, $name);
+            _dl_extract($member, $name);
         }
     }
 
@@ -121,46 +124,30 @@
 }
 
 sub _dl_extract {
-    my ($member, $file, $name) = @_;
+    my ($member, $name) = @_;
+    $name ||= $member->crc32String . ".$DynaLoader::dl_dlext";
 
-    require File::Spec;
-    require File::Temp;
+    my $filename = File::Spec->catfile($ENV{PAR_TEMP} || File::Spec->tmpdir, 
$name);
+    ($filename) = $filename =~ /^([\x20-\xff]+)$/;
 
-    my ($fh, $filename);
+    return $filename if -e $filename && -s _ == $member->uncompressedSize;
 
-    # fix borked tempdir from earlier versions
-    if ($ENV{PAR_TEMP} and -e $ENV{PAR_TEMP} and !-d $ENV{PAR_TEMP}) {
-        unlink($ENV{PAR_TEMP});
-        mkdir($ENV{PAR_TEMP}, 0755);
-    }
-
-    if ($ENV{PAR_CLEAN} and !$name) {
-        ($fh, $filename) = File::Temp::tempfile(
-            DIR         => ($ENV{PAR_TEMP} || File::Spec->tmpdir),
-            SUFFIX      => ".$DynaLoader::dl_dlext",
-            UNLINK      => ($^O ne 'MSWin32' and $^O !~ /hpux/),
-        );
-        ($filename) = $filename =~ /^([\x20-\xff]+)$/;
-    }
-    else {
-        $filename = File::Spec->catfile(
-            ($ENV{PAR_TEMP} || File::Spec->tmpdir),
-            ($name || ($member->crc32String . ".$DynaLoader::dl_dlext"))
-        );
-        ($filename) = $filename =~ /^([\x20-\xff]+)$/;
-
-        open $fh, '>', $filename or die $!
-            unless -r $filename and -e _
-                and -s _ == $member->uncompressedSize;
-    }
-
-    if ($fh) {
-        binmode($fh);
-        $member->extractToFileHandle($fh);
-        close $fh;
-        chmod 0750, $filename;
+    # $filename doesn't exist or hasn't been completely extracted:
+    # extract it under a temporary name that isn't likely to be used
+    # by concurrent processes doing the same
+    my $tempname = "$filename.$$";
+    $member->extractToFileNamed($tempname) == Archive::Zip::AZ_OK()
+        or die "Can't extract archive member ".$member->fileName." to 
$tempname: $!";
+
+    # now that we have a "good" copy in $tempname, rename it to $filename;
+    # if this fails (e.g. some OSes won't let you delete DLLs that are
+    # in use), but $filename exists, we assume that $filename is also
+    # "good": remove $tempname and return $filename
+    unless (rename($tempname, $filename))
+    {
+        -e $filename or die "can't rename $tempname to $filename: $!";
+        unlink($tempname);
     }
-
     return $filename;
 }
 
@@ -191,6 +178,6 @@
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
 
-See L<http://www.perl.com/perl/misc/Artistic.html>
+See F<LICENSE>.
 
 =cut
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/lib/PAR/SetupProgname.pm 
new/PAR-1.014/lib/PAR/SetupProgname.pm
--- old/PAR-1.011/lib/PAR/SetupProgname.pm      2016-09-18 12:45:01.000000000 
+0200
+++ new/PAR-1.014/lib/PAR/SetupProgname.pm      2016-12-18 16:18:28.000000000 
+0100
@@ -86,7 +86,7 @@
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
 
-See L<http://www.perl.com/perl/misc/Artistic.html>
+See F<LICENSE>.
 
 =cut
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/lib/PAR/SetupTemp.pm 
new/PAR-1.014/lib/PAR/SetupTemp.pm
--- old/PAR-1.011/lib/PAR/SetupTemp.pm  2016-09-18 12:45:01.000000000 +0200
+++ new/PAR-1.014/lib/PAR/SetupTemp.pm  2016-12-18 16:18:28.000000000 +0100
@@ -183,7 +183,7 @@
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
 
-See L<http://www.perl.com/perl/misc/Artistic.html>
+See F<LICENSE>.
 
 =cut
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/lib/PAR/Tutorial.pod 
new/PAR-1.014/lib/PAR/Tutorial.pod
--- old/PAR-1.011/lib/PAR/Tutorial.pod  2016-09-18 12:45:01.000000000 +0200
+++ new/PAR-1.014/lib/PAR/Tutorial.pod  2016-12-18 16:18:28.000000000 +0100
@@ -1111,6 +1111,6 @@
 This document is free documentation; you can redistribute it and/or
 modify it under the same terms as Perl itself.
 
-See L<http://www.perl.com/perl/misc/Artistic.html>
+See F<LICENSE>.
 
 =cut
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/lib/PAR.pm new/PAR-1.014/lib/PAR.pm
--- old/PAR-1.011/lib/PAR.pm    2016-09-18 12:45:01.000000000 +0200
+++ new/PAR-1.014/lib/PAR.pm    2016-12-18 16:18:28.000000000 +0100
@@ -1,5 +1,5 @@
 package PAR;
-$PAR::VERSION = '1.011';
+$PAR::VERSION = '1.014';
 
 use 5.006;
 use strict;
@@ -18,6 +18,7 @@
             File::Glob
             File::Spec
             File::Temp
+            Fcntl
             LWP::Simple
             PAR::Heavy
         /;
@@ -309,6 +310,9 @@
 
 =cut
 
+use Fcntl ':flock';
+use Archive::Zip qw( :ERROR_CODES ); 
+
 use vars qw(@PAR_INC);              # explicitly stated PAR library files 
(preferred)
 use vars qw(@PAR_INC_LAST);         # explicitly stated PAR library files 
(fallback)
 use vars qw(%PAR_INC);              # sets {$par}{$file} for require'd modules
@@ -595,15 +599,16 @@
 
 sub _run_member_from_par {
     my $member = shift;
-    my ($fh, $is_new, $filename) = _tempfile($member->crc32String . ".pl");
-
-    if ($is_new) {
-        my $file = $member->fileName;
-        print $fh "package main;\n",
-                  "#line 1 \"$file\"\n";
-        $member->extractToFileHandle($fh);
-        seek ($fh, 0, 0);
-    }
+    my (undef, $filename) = _tempfile(
+        sub {
+            my $fh = shift;
+            my $file = $member->fileName;
+            print $fh "package main;\n",
+                      "#line 1 \"$file\"\n";
+            $member->extractToFileHandle($fh) == AZ_OK
+                or die "Can't extract $file: $!";
+        },
+        $member->crc32String . ".pl");
 
     $ENV{PAR_0} = $filename; # for Pod::Usage
     { do $filename;
@@ -615,15 +620,16 @@
 
 sub _run_member {
     my $member = shift;
-    my ($fh, $is_new, $filename) = _tempfile($member->crc32String . ".pl");
-
-    if ($is_new) {
-        my $file = $member->fileName;
-        print $fh "package main;\n",
-                  "#line 1 \"$file\"\n";
-        $member->extractToFileHandle($fh);
-        seek ($fh, 0, 0);
-    }
+    my ($fh, $filename) = _tempfile(
+        sub {
+            my $fh = shift;
+            my $file = $member->fileName;
+            print $fh "package main;\n",
+                      "#line 1 \"$file\"\n";
+            $member->extractToFileHandle($fh) == AZ_OK
+                or die "Can't extract $file: $!";
+        },
+        $member->crc32String . ".pl");
 
     # NOTE: Perl 5.14.x will print the infamous warning
     # "Use of uninitialized value in do "file" at .../PAR.pm line 636" 
@@ -675,12 +681,20 @@
     my $is_handle = ref($file_or_azip_handle) && 
$file_or_azip_handle->isa('Archive::Zip::Archive');
 
     require File::Spec;
+
     my $inc = File::Spec->catdir($PAR::SetupTemp::PARTemp, "inc");
+    my $inc_lock = "$inc.lock";
+
     my $canary = File::Spec->catfile($PAR::SetupTemp::PARTemp, 
$PAR::SetupTemp::Canary);
 
-    if (!-d $inc || !-e $canary) {
-        for (1 .. 10) { mkdir("$inc.lock", 0755) and last; sleep 1 }
-        
+    # acquire the "wanna extract inc" lock
+    open my $lock, ">", $inc_lock or die qq[can't open "$inc_lock": $!];
+    flock($lock, LOCK_EX);
+
+    unless (-d $inc && -e $canary)
+    {
+        mkdir($inc, 0755);
+
         undef $@;
         if (!$is_handle) {
           # First try to unzip the *fast* way.
@@ -697,8 +711,8 @@
           }
         }
 
-        # either failed to load Archive::Unzip::Burst or got an A::Zip handle
-        # fallback to slow way.
+        # either failed to load Archive::Unzip::Burst or got 
+        # an Archive::Zip handle: fallback to slow way.
         if ($is_handle || $@) {
           my $zip;
           if (!$is_handle) {
@@ -708,15 +722,13 @@
             bless($fh, 'IO::File');
 
             $zip = Archive::Zip->new;
-            ( $zip->readFromFileHandle($fh, $file_or_azip_handle) == 
Archive::Zip::AZ_OK() )
+            $zip->readFromFileHandle($fh, $file_or_azip_handle) == AZ_OK
                 or die "Read '$file_or_azip_handle' error: $!";
           }
           else {
             $zip = $file_or_azip_handle;
           }
 
-          mkdir($inc) if not -d $inc;
-
           for ( $zip->memberNames() ) {
               s{^/}{};
               my $outfile =  File::Spec->catfile($inc, $_);
@@ -728,7 +740,9 @@
               utime(undef, undef, $outfile);
           }
         }
-        
+
+        $ArchivesExtracted{$is_handle ? $file_or_azip_handle->fileName() : 
$file_or_azip_handle} = $inc;
+    
         # touch (and back-date) canary file
         open my $fh, ">", $canary; 
         print $fh <<'...';
@@ -739,12 +753,12 @@
         close $fh;
         my $dateback = time() - $PAR::SetupTemp::CanaryDateBack;
         utime($dateback, $dateback, $canary);
-
-        rmdir("$inc.lock");
-
-        $ArchivesExtracted{$is_handle ? $file_or_azip_handle->fileName() : 
$file_or_azip_handle} = $inc;
     }
 
+    # release the "wanna extract inc" lock
+    flock($lock, LOCK_UN);
+    close $lock;
+
     # add the freshly extracted directories to @INC,
     # but make sure there's no duplicates
     my %inc_exists = map { ($_, 1) } @INC;
@@ -961,9 +975,10 @@
         }
         # Got the .par as a string. (reference to scalar, of course)
         elsif (ref($par) eq 'SCALAR') {
-            my ($fh) = _tempfile();
-            print $fh $$par;
-            $par = $fh;
+            ($par, undef) = _tempfile(sub {
+                    my $fh = shift;
+                    print $fh $$par;
+                });
         }
         # If the par is not a valid .par file name and we're being strict
         # about this, then also check whether "$par.par" exists
@@ -989,7 +1004,7 @@
         Archive::Zip::setErrorHandler(sub {});
         my $rv = $zip->readFromFileHandle($par, @file);
         Archive::Zip::setErrorHandler(undef);
-        return unless $rv == Archive::Zip::AZ_OK();
+        return unless $rv == AZ_OK;
 
         push @LibCache, $zip;
         $LibCache{$_[0]} = $zip;
@@ -1025,11 +1040,13 @@
                         ^([^/]+)$
                     };
                 my $extract_name = $1;
-                my $dest_name =
-                    File::Spec->catfile($ENV{PAR_TEMP}, $extract_name);
+                my $dest_name = File::Spec->catfile($ENV{PAR_TEMP}, 
$extract_name);
                 # but don't extract it if we've already got one
-                $member->extractToFileNamed($dest_name)
-                    unless(-e $dest_name);
+                unless (-e $dest_name)
+                {
+                    $member->extractToFileNamed($dest_name) == AZ_OK
+                        or die "Can't extract $member_name: $!";
+                }
             }
         }
 
@@ -1054,7 +1071,6 @@
                $ENV{$key} = $tempdir;
            }
        }
-    
     }
 
     $LastAccessedPAR = $zip;
@@ -1072,51 +1088,60 @@
 
     return $member if $member_only;
 
-    my ($fh, $is_new);
-    ($fh, $is_new, $LastTempFile) = _tempfile($member->crc32String . ".pm");
-    die "Bad Things Happened..." unless $fh;
-
-    if ($is_new) {
-        $member->extractToFileHandle($fh);
-        seek ($fh, 0, 0);
-    }
+    (my $fh, $LastTempFile) = _tempfile(
+        sub { 
+            my $fh = shift; 
+            my $file = $member->fileName;
+            $member->extractToFileHandle($fh) == AZ_OK
+                or die "Can't extract $file: $!";
+        },
+        $member->crc32String . ".pm");
 
     return $fh;
 }
 
 sub _tempfile {
-    my ($fh, $filename);
-    if ($ENV{PAR_CLEAN} or !@_) {
+    my ($callback, $name) = @_;
+    
+    if ($ENV{PAR_CLEAN} or !defined $name) {
         require File::Temp;
 
         if (defined &File::Temp::tempfile) {
             # under Win32, the file is created with O_TEMPORARY,
             # and will be deleted by the C runtime; having File::Temp
             # delete it has the only effect of giving ugly warnings
-            ($fh, $filename) = File::Temp::tempfile(
+            my ($fh, $filename) = File::Temp::tempfile(
                 DIR     => $PAR::SetupTemp::PARTemp,
                 UNLINK  => ($^O ne 'MSWin32' and $^O !~ /hpux/),
             ) or die "Cannot create temporary file: $!";
             binmode($fh);
-            return ($fh, 1, $filename);
+            $callback->($fh);
+            seek($fh, 0, 0);
+            return ($fh, $filename);
         }
     }
 
     require File::Spec;
 
     # untainting tempfile path
-    local $_ = File::Spec->catfile( $PAR::SetupTemp::PARTemp, $_[0] );
-    /^(.+)$/ and $filename = $1;
+    my ($filename) = File::Spec->catfile($PAR::SetupTemp::PARTemp, $name) =~ 
/^(.+)$/;
 
-    if (-r $filename) {
-        open $fh, '<', $filename or die $!;
+    unless (-r $filename) {
+        my $tempname = "$filename.$$";
+
+        open my $fh, '>', $tempname or die $!;
         binmode($fh);
-        return ($fh, 0, $filename);
+        $callback->($fh);
+        close($fh);
+
+        # FIXME why?
+        rename($tempname, $filename) or unlink($tempname); 
     }
 
-    open $fh, '+>', $filename or die $!;
+    open my $fh, '<', $filename or die $!;
     binmode($fh);
-    return ($fh, 1, $filename);
+
+    return ($fh, $filename);
 }
 
 # Given an Archive::Zip object, this generates a hash of
@@ -1247,6 +1272,6 @@
 This program is free software; you can redistribute it and/or modify it
 under the same terms as Perl itself.
 
-See L<http://www.perl.com/perl/misc/Artistic.html>
+See F<LICENSE>.
 
 =cut
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/t/data/lib/Data.pm 
new/PAR-1.014/t/data/lib/Data.pm
--- old/PAR-1.011/t/data/lib/Data.pm    1970-01-01 01:00:00.000000000 +0100
+++ new/PAR-1.014/t/data/lib/Data.pm    2016-11-27 17:10:15.000000000 +0100
@@ -0,0 +1,10 @@
+package Data;
+
+use strict;
+sub data {
+    print <DATA>;
+}
+
+1;
+__DATA__
+Data section
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/t/data/lib/Hello.pm 
new/PAR-1.014/t/data/lib/Hello.pm
--- old/PAR-1.011/t/data/lib/Hello.pm   1970-01-01 01:00:00.000000000 +0100
+++ new/PAR-1.014/t/data/lib/Hello.pm   2016-11-27 17:10:15.000000000 +0100
@@ -0,0 +1,8 @@
+package Hello;
+
+use strict;
+sub hello {
+    print "Hello, world!\n";
+}
+
+1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/t/data/script/data.pl 
new/PAR-1.014/t/data/script/data.pl
--- old/PAR-1.011/t/data/script/data.pl 1970-01-01 01:00:00.000000000 +0100
+++ new/PAR-1.014/t/data/script/data.pl 2016-11-27 17:10:15.000000000 +0100
@@ -0,0 +1,9 @@
+#!/usr/bin/perl
+
+use Data;
+
+Data::data();
+print <DATA>;
+
+__DATA__
+Data reflection
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/t/data/script/hello.pl 
new/PAR-1.014/t/data/script/hello.pl
--- old/PAR-1.011/t/data/script/hello.pl        1970-01-01 01:00:00.000000000 
+0100
+++ new/PAR-1.014/t/data/script/hello.pl        2016-11-27 17:10:15.000000000 
+0100
@@ -0,0 +1,6 @@
+#!/usr/bin/perl
+
+use Hello;
+
+Hello::hello();
+print "Goodbye, world!\n";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/t/data/script/nostrict.pl 
new/PAR-1.014/t/data/script/nostrict.pl
--- old/PAR-1.011/t/data/script/nostrict.pl     1970-01-01 01:00:00.000000000 
+0100
+++ new/PAR-1.014/t/data/script/nostrict.pl     2016-11-27 17:10:15.000000000 
+0100
@@ -0,0 +1,4 @@
+#!/usr/bin/perl
+
+${'a'} = "No Strict!\n";
+print $a;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/PAR-1.011/t/gen-hello-par.pl 
new/PAR-1.014/t/gen-hello-par.pl
--- old/PAR-1.011/t/gen-hello-par.pl    1970-01-01 01:00:00.000000000 +0100
+++ new/PAR-1.014/t/gen-hello-par.pl    2016-11-27 17:10:15.000000000 +0100
@@ -0,0 +1,7 @@
+use strict;
+use warnings;
+use Archive::Zip qw( :ERROR_CODES );
+
+my $zip = Archive::Zip->new();
+exit($zip->addTree("t/data", "") == AZ_OK
+     && $zip->writeToFileNamed("t/hello.par") == AZ_OK ? 0 : 1);
Binary files old/PAR-1.011/t/hello.par and new/PAR-1.014/t/hello.par differ


Reply via email to