git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v5] Makefile: replace perl/Makefile.PL with simple make rules

From
Todd Zullinger <tmz@pobox.com>
Date
Dec 20, 2017, 17:41 UTC
Message-ID
<20171220174147.GG3693@zaya.teonanacatl.net>
In-Reply-To
<20171220115240.19510-1-avarab@gmail.com>
Ævar Arnfjörð Bjarmason wrote:
> [Sorry for not CC-ing you on the last version. Forgot to update the
> giant send-email line I'm juggling for this series].
No worries.  It is a rather large CC list at this point. :)
> This *.pmc thing is just me being overly clever. Here's a v5 that gets
> rid of it. Diff with v4:
Ahh, thanks for the additional details on this.
Show 15 quoted lines
>         -+PMFILES := $(wildcard perl/*.pm perl/*/*.pm perl/*/*/*.pm perl/*/*/*/*.pm)
>         -+PMCFILES := $(patsubst perl/%.pm,perl/build/lib/%.pmc,$(PMFILES))
>         ++LIB_PERL := $(wildcard perl/*.pm perl/*/*.pm perl/*/*/*.pm perl/*/*/*/*.pm)
>         ++LIB_PERL_GEN := $(patsubst perl/%.pm,perl/build/lib/%.pm,$(LIB_PERL))
>          +
>          +ifndef NO_PERL
>         -+all:: $(PMCFILES)
>         ++all:: $(LIB_PERL_GEN)
>          +endif
>          +
>         -+perl/build/lib/%.pmc: perl/%.pm
>         ++perl/build/lib/%.pm: perl/%.pm
>          +  $(QUIET_GEN)mkdir -p $(dir $@) && \
>          +  sed -e 's|@@LOCALEDIR@@|$(localedir_SQ)|g' < $< > $@
>          +

Without the .pmc extensions, rpm picks up the perl dependencies, which is good. But an additional build/lib dir is created, which ends up in $perllibdir after install.

Here's an extract from a local build:

mkdir -p perl/build/lib/build/lib/ && \ sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' < perl/build/lib/Git.pm > perl/build/lib/build/lib/Git.pm mkdir -p perl/build/lib/build/lib/Git/ && \ sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' < perl/build/lib/Git/IndexInfo.pm > perl/build/lib/build/lib/Git/IndexInfo.pm mkdir -p perl/build/lib/build/lib/Git/ && \ sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' < perl/build/lib/Git/SVN.pm > perl/build/lib/build/lib/Git/SVN.pm mkdir -p perl/build/lib/build/lib/Git/ && \ sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' < perl/build/lib/Git/Error.pm > perl/build/lib/build/lib/Git/Error.pm mkdir -p perl/build/lib/build/lib/Git/ && \ sed -e 's|@@LOCALEDIR@@|/usr/share/locale|g' < perl/build/lib/Git/I18N.pm > perl/build/lib/build/lib/Git/I18N.pm

When PMFILES and PMCFILES matched .pm and .pmc respectively, the glob didn't match duplicated files under build/lib, so this wasn't an issue. I'm not sure where this is best fixed. The build/lib dir could be moved outside of perl or it could be made .build/lib to avoid the wildcard match, perhaps.

Building with perllibdir=/usr/share/perl5/vendor_perl results in:

/usr/share/perl5/vendor_perl/Git /usr/share/perl5/vendor_perl/Git.pm /usr/share/perl5/vendor_perl/Git/Error.pm /usr/share/perl5/vendor_perl/Git/FromCPAN /usr/share/perl5/vendor_perl/Git/FromCPAN/Error.pm /usr/share/perl5/vendor_perl/Git/I18N.pm /usr/share/perl5/vendor_perl/Git/IndexInfo.pm /usr/share/perl5/vendor_perl/Git/SVN /usr/share/perl5/vendor_perl/Git/SVN.pm /usr/share/perl5/vendor_perl/Git/SVN/Editor.pm /usr/share/perl5/vendor_perl/Git/SVN/Fetcher.pm /usr/share/perl5/vendor_perl/Git/SVN/GlobSpec.pm /usr/share/perl5/vendor_perl/Git/SVN/Log.pm /usr/share/perl5/vendor_perl/Git/SVN/Memoize /usr/share/perl5/vendor_perl/Git/SVN/Memoize/YAML.pm /usr/share/perl5/vendor_perl/Git/SVN/Migration.pm /usr/share/perl5/vendor_perl/Git/SVN/Prompt.pm /usr/share/perl5/vendor_perl/Git/SVN/Ra.pm /usr/share/perl5/vendor_perl/Git/SVN/Utils.pm /usr/share/perl5/vendor_perl/build /usr/share/perl5/vendor_perl/build/lib /usr/share/perl5/vendor_perl/build/lib/Git /usr/share/perl5/vendor_perl/build/lib/Git.pm /usr/share/perl5/vendor_perl/build/lib/Git/Error.pm /usr/share/perl5/vendor_perl/build/lib/Git/I18N.pm /usr/share/perl5/vendor_perl/build/lib/Git/IndexInfo.pm /usr/share/perl5/vendor_perl/build/lib/Git/SVN.pm

Note that not all of the .pm files are matched, which I believe is due to the glob matches only going 4 levels deep under the perl dir.

Thanks,
-- 
Todd
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Never do today that which will become someone else's responsibility
tomorrow.
Previous: Ævar Arnfjörð BjarmasonNext: Ævar Arnfjörð Bjarmason
Message 26 of 35 in “Makefile: replace the overly complex perl build system with something simple”
  1. Makefile: replace the overly complex perl build system with something simpleÆvar Arnfjörð Bjarmason, Nov 29, 2017
  2. Makefile: replace perl/Makefile.PL with simple make rulesÆvar Arnfjörð Bjarmason, Nov 29, 2017
  3. Jonathan NiederNov 30, 2017
  4. Ævar Arnfjörð BjarmasonNov 30, 2017
  5. Jonathan NiederNov 30, 2017
  6. Eric WongNov 30, 2017
  7. Jeff KingNov 30, 2017
  8. Ævar Arnfjörð BjarmasonNov 30, 2017
  9. Alex VandiverDec 21, 2017
  10. Makefile: replace perl/Makefile.PL with simple make rulesÆvar Arnfjörð Bjarmason, Dec 3, 2017
  11. Junio C HamanoDec 4, 2017
  12. Ævar Arnfjörð BjarmasonDec 4, 2017
  13. Junio C HamanoDec 4, 2017
  14. Dan JacquesDec 4, 2017
  15. Makefile: replace perl/Makefile.PL with simple make rulesÆvar Arnfjörð Bjarmason, Dec 10, 2017
  16. Junio C HamanoDec 11, 2017
  17. Randall S. BeckerDec 12, 2017
  18. Ævar Arnfjörð BjarmasonDec 12, 2017
  19. Michael J GruberDec 15, 2017
  20. Todd ZullingerDec 15, 2017
  21. Ævar Arnfjörð BjarmasonDec 15, 2017
  22. Junio C HamanoDec 19, 2017
  23. Makefile: replace perl/Makefile.PL with simple make rulesÆvar Arnfjörð Bjarmason, Dec 19, 2017
  24. Todd ZullingerDec 20, 2017
  25. Makefile: replace perl/Makefile.PL with simple make rulesÆvar Arnfjörð Bjarmason, Dec 20, 2017
  26. Todd ZullingerDec 20, 2017
  27. Makefile: replace perl/Makefile.PL with simple make rulesÆvar Arnfjörð Bjarmason, Dec 20, 2017
  28. Todd ZullingerDec 20, 2017
  29. Alex RiesenDec 21, 2017
  30. Junio C HamanoDec 22, 2017
  31. Ævar Arnfjörð BjarmasonDec 27, 2017
  32. Junio C HamanoDec 28, 2017
  33. Jonathan NiederJan 2, 2018
  34. perl: treat PERLLIB_EXTRA as an extra path again (Re: [PATCH v6] Makefile: replace perl/Makefile.PL with simple make rules)Jonathan Nieder, Jan 2, 2018
  35. Ævar Arnfjörð BjarmasonJan 2, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.