| From 40702abf3156fa92ef70ee5d445fe52dd6cfbc7d Mon Sep 17 00:00:00 2001 |
| From: Robert Yang <liezhi.yang@windriver.com> |
| Date: Thu, 20 Sep 2018 18:48:48 +0800 |
| Subject: [PATCH] ExtUtils/MM_Unix.pm: fix race issues |
| |
| Fixed a race issue when compile libhtml-parser-perl and others who use MakeMaker: |
| [snip] |
| chmod 755 blib/arch/auto/HTML/Parser/Parser.so |
| chmod 644 "Parser.bs" |
| [snip] |
| |
| The rule INST_DYNAMIC removes '.bs' file which are generated by BOOTSTRAP, but |
| the have no dependencies, so there is a race issue: |
| |
| BOOTSTRAP: |
| touch foo.bs |
| chmod 755 foo.bs |
| |
| INST_DYNAMIC: |
| rm -fr foo.bs |
| |
| The error would happen when INST_DYNAMIC removes foo.bs after BOOTSTRAP touched |
| it but before chmod on it. |
| |
| Upstream-Status: Backport [https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/commit/44e95e717372abe2b0a6ee55de4b686760b65360] |
| |
| Note, This is not a real backport, upstream has totally refactored it in one |
| patch, please see the link above, it's not a good idea to backport such a big |
| patch, I just referred it to fix the problem in a simple way. I mark it as |
| backport is because we can drop the patch after upgrade perl to 5.26 or 5.28. |
| |
| Signed-off-by: Robert Yang <liezhi.yang@windriver.com> |
| --- |
| cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm |
| index 95d9761..9cabe2d 100644 |
| --- a/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm |
| +++ b/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm |
| @@ -933,7 +933,7 @@ OTHERLDFLAGS = '.$ld_opt.$otherldflags.' |
| INST_DYNAMIC_DEP = '.$inst_dynamic_dep.' |
| INST_DYNAMIC_FIX = '.$ld_fix.' |
| |
| -$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVEDEP) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP) |
| +$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVEDEP) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP) $(BOOTSTRAP) |
| '); |
| if ($armaybe ne ':'){ |
| $ldfrom = 'tmp$(LIB_EXT)'; |
| -- |
| 2.7.4 |
| |