I've observed a couple of build failures locally which I've tracked down to
the Makefile generated by the yocto recipe for libbsd-resource-perl.

The attached patch file addresses the problem and I offer it for your
consideration.  The file containing the problem is
ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm

What I believe is happening is that the make recipe for BOOTSTRAP and
INST_DYNAMIC are executing in parallel.  The recipe for BOOTSTRAP is of
course making BOOTSTRAP and in addition touches it and performs a chmod on
it.

The make recipe for INST_DYNAMIC includes a RM_RF on BOOTSTRAP which can
interfere with the recipe for BOOTSTRAP.

I'm also attaching my generated Makefile.  You can see the RM_RF on
BOOTSTRAP at line 473 in the rule for INST_DYNAMIC.  We're building under
Fedora-20 on x86_64 using poky-1.7.  Perl version is 5.20 and MakeMaker
version appears to be 7.04_01.

$(BOOTSTRAP) : $(FIRST_MAKEFILE) $(BOOTDEP)
$(INST_ARCHAUTODIR)$(DFSEP).exists
    $(NOECHO) $(ECHO) "Running Mkbootstrap for $(NAME) ($(BSLOADLIBS))"
    $(NOECHO) $(PERLRUN) \
        "-MExtUtils::Mkbootstrap" \
        -e "Mkbootstrap('$(BASEEXT)','$(BSLOADLIBS)');"
    $(NOECHO) $(TOUCH) $@
    $(CHMOD) $(PERM_RW) $@


$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists
$(EXPORT_LIST) $(PERL_ARCHIVE) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP)
    $(RM_F) $@
    $(LD)  $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) -o $@ $(MYEXTLIB)    \
      $(PERL_ARCHIVE) $(LDLOADLIBS) $(PERL_ARCHIVE_AFTER) $(EXPORT_LIST)
\
      $(INST_DYNAMIC_FIX)
    $(CHMOD) $(PERM_RWX) $@
    $(NOECHO) $(RM_RF) $(BOOTSTRAP)
    - $(CP_NONEMPTY) $(BOOTSTRAP) $(INST_BOOT) $(PERM_RW)

Regards,
John

Attachment: Makefile
Description: Binary data

Attachment: 0001-MM_Unix-adds-dependency-on-BOOTSTRAP-to-avoid-race.patch
Description: application/download

Reply via email to