Skip Menu |

This queue is for tickets about the ExtUtils-MakeMaker CPAN distribution.

Report information
The Basics
Id: 32758
Status: resolved
Priority: 0/
Queue: ExtUtils-MakeMaker

People
Owner: Nobody in particular
Requestors: schwern [...] pobox.com
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: [Fwd: MakeMaker: adjust install target dependencies to allow parallel makes]
Date: Mon, 28 Jan 2008 20:36:46 -0800
To: via RT <bug-ExtUtils-MakeMaker [...] rt.cpan.org>
From: Michael G Schwern <schwern [...] pobox.com>
Show quoted text
-------- Original Message -------- Subject: MakeMaker: adjust install target dependencies to allow parallel makes Date: Sun, 27 Jan 2008 14:14:55 +1100 From: Brendan O'Dea <bod@debian.org> To: Perl5 Porters <perl5-porters@perl.org> There was some discussion on the debian-devel mailing list about problems with running make -j on various packages: http://lists.debian.org/debian-devel/2007/12/msg00046.html There is an issue with the install rules generated by MakeMaker which causes some problems. Attached is a patch to fix this. I can't say that this will make all module builds work with -j, but if not it is at least a start. As a simple example of the problem, consider the simplified MakeMaker generated Makefile fragment attached, run with -j: $ make -f m1 -j install pure_site_install doc_site_install pure_install doc_install all install The obvious problem here being that "pure_site_install" &c are attempted before "all" completes. A modified fragment is attached for comparison. --bod
--- lib/ExtUtils/MM_Unix.pm.orig 2008-01-27 13:15:51.000000000 +1100 +++ lib/ExtUtils/MM_Unix.pm 2008-01-27 13:50:59.887358525 +1100 @@ -2088,16 +2088,16 @@ my(@m); push @m, q{ -install :: all pure_install doc_install +install :: pure_install doc_install $(NOECHO) $(NOOP) -install_perl :: all pure_perl_install doc_perl_install +install_perl :: pure_perl_install doc_perl_install $(NOECHO) $(NOOP) -install_site :: all pure_site_install doc_site_install +install_site :: pure_site_install doc_site_install $(NOECHO) $(NOOP) -install_vendor :: all pure_vendor_install doc_vendor_install +install_vendor :: pure_vendor_install doc_vendor_install $(NOECHO) $(NOOP) pure_install :: pure_$(INSTALLDIRS)_install @@ -2112,7 +2112,7 @@ doc__install : doc_site_install $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site -pure_perl_install :: +pure_perl_install :: all $(NOECHO) $(MOD_INSTALL) \ read }.$self->catfile('$(PERL_ARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \ write }.$self->catfile('$(DESTINSTALLARCHLIB)','auto','$(FULLEXT)','.packlist').q{ \ @@ -2126,7 +2126,7 @@ }.$self->catdir('$(SITEARCHEXP)','auto','$(FULLEXT)').q{ -pure_site_install :: +pure_site_install :: all $(NOECHO) $(MOD_INSTALL) \ read }.$self->catfile('$(SITEARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \ write }.$self->catfile('$(DESTINSTALLSITEARCH)','auto','$(FULLEXT)','.packlist').q{ \ @@ -2139,7 +2139,7 @@ $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ }.$self->catdir('$(PERL_ARCHLIB)','auto','$(FULLEXT)').q{ -pure_vendor_install :: +pure_vendor_install :: all $(NOECHO) $(MOD_INSTALL) \ read }.$self->catfile('$(VENDORARCHEXP)','auto','$(FULLEXT)','.packlist').q{ \ write }.$self->catfile('$(DESTINSTALLVENDORARCH)','auto','$(FULLEXT)','.packlist').q{ \ @@ -2150,7 +2150,7 @@ $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \ $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR) -doc_perl_install :: +doc_perl_install :: all $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) -$(NOECHO) $(DOC_INSTALL) \ @@ -2161,7 +2161,7 @@ EXE_FILES "$(EXE_FILES)" \ >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ -doc_site_install :: +doc_site_install :: all $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) -$(NOECHO) $(DOC_INSTALL) \ @@ -2172,7 +2172,7 @@ EXE_FILES "$(EXE_FILES)" \ >> }.$self->catfile('$(DESTINSTALLARCHLIB)','perllocal.pod').q{ -doc_vendor_install :: +doc_vendor_install :: all $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB) -$(NOECHO) $(DOC_INSTALL) \
all :: @sleep 10 @echo $@ install :: all pure_install doc_install @echo $@ pure_install :: pure_site_install @echo $@ doc_install :: doc_site_install @echo $@ pure_site_install :: @sleep 1 @echo $@ doc_site_install :: @sleep 1 @echo $@
all :: @sleep 10 @echo $@ install :: pure_install doc_install @echo $@ pure_install :: pure_site_install @echo $@ doc_install :: doc_site_install @echo $@ pure_site_install :: all @sleep 1 @echo $@ doc_site_install :: all @sleep 1 @echo $@
Subject: Re: MakeMaker: adjust install target dependencies to allow parallel makes
Date: Mon, 28 Jan 2008 20:39:35 -0800
To: Perl5 Porters <perl5-porters [...] perl.org>, via RT <bug-ExtUtils-MakeMaker [...] rt.cpan.org>
From: Michael G Schwern <schwern [...] pobox.com>
Brendan O'Dea wrote: Show quoted text
> There was some discussion on the debian-devel mailing list about > problems with running make -j on various packages: > > http://lists.debian.org/debian-devel/2007/12/msg00046.html > > There is an issue with the install rules generated by MakeMaker which > causes some problems. Attached is a patch to fix this.
Thanks Brendan. It looks sensible. PS I've forwarded this to the MakeMaker bug queue. In the future can you use bug-ExtUtils-MakeMaker@rt.cpan.org for MakeMaker issues? -- ROCKS FALL! EVERYONE DIES! http://www.somethingpositive.net/sp05032002.shtml
Thanks, its been added. Sorry for the delay.