From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arnout Vandecappelle Date: Tue, 04 Feb 2014 09:49:57 +0100 Subject: [Buildroot] [pkg-perl infra V3 00/12] a package infrastructure for Perl/CPAN modules In-Reply-To: <1385198749-6249-1-git-send-email-francois.perrad@gadz.org> References: <1385198749-6249-1-git-send-email-francois.perrad@gadz.org> Message-ID: <52F0A9B5.1070900@mind.be> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net Hi Francois, Now that we have some dedicated time at the BR developer days we are finally getting around to reviewing your perl infrastructure update. I'm going to write down some overall remarks, while Yann will be posting more detailed feedback on the individual patches. First of all, it took a bit of effort to rebase on current master; if you continue with this series, you can start with pulling it from git at gitorious.org:buildroot/buildroot.git branch perl-fixup On 23/11/13 10:25, Francois Perrad wrote: > delta V2 vs V3 : > > - [03/12] scancpan: > add options (including a update/force mode) > refactor with Pod::Usage > > - [12/12] libxml-libxml-perl: > includes all its CPAN dependencies > > Francois Perrad (12): > perl: new infrastructure For this one, there are some issues with the details but the basic concept of adding a perl-package macro looks good. It would be good to add a dependency mechanism like for python: add perl to the dependencies automatically, and remove it from the host dependencies. That way you can also remove the explicit setting of host dependencies because it will always be the same as target dependencies (except for the manually edited packages but that's fine). > cpan: a home for Perl modules > scancpan: a new script This script looks really good as a way to semi-automatically keep our perl packages up-to-date. However, we think that the packages should really be committed buildroot and not be generated by the user. Even if we add a few hundred perl packages, that's not a big deal: we do that for xorg as well. For the naming of the packages, we prefer "perl-" rather than the Debian naming "lib-perl". Given that you're using $debname, I wonder: is this script in any way taken over from a Debian script? If so, you should credit the original authors (even if it is just "inspired on ... by ..."). Ideally, this scancpan support should save into BR2_EXTERNAL if that is defined. How that can be done in practice may be tricky, however... Perhaps the updating of the cpan/Config.in should _not_ be automated. Or else the cpan directory can be given as an argument. When running the script, I've encountered an issue: on line 589: $dist->{license} seems to be a single string, not an array. Also the example you give in the documentation could be something more relevant - for example, the packages that we carry in buildroot. The perl_5 license should be added to our list of license (in a separate patch). Maybe the generated files should be marked with an "Automatically generated by" header - even though that violates our normal coding style. I think the _AUTHOR variable is redundant. The _LICENSE_FILES variable is not set by the script - most likely because it is not always in the same file. This can be solved by manually editing the packages which do have a license file. Yet another reason for including the packages in buildroot instead of letting the user generate them. > cpanminus: remove it > perl: remove useless patch > qemu: add a Config.in.host This one can probably be done independently of the rest (but then remove the "after ..." comment). > host-libxml-parser-perl: move and refactor with perl infrastructure Why did you convert this into a host-only package? I think this one and the following ones should go to the beginning of the series - before the cpan stuff which is more controversial. > host-libmodule-build-perl: new package > manual: adding packages perl > libcurses-perl: new package make[2]: *** No rule to make target `$(STAGING_DIR)/usr/lib/perl5/5.18.2/x86_64-linux/CORE/patchlevel-debian.h', needed by `Curses.o'. Stop. (this is with a x86_64 target, and obviously on a debian host). > libnet-ssleay-perl: new package This one interactively asks me: Do you want to run external tests? Is there any way to avoid that, i.e. preseeding the answer to "no" (actually we don't want to run tests at all). It also fails because of the -debian thing. > libxml-libxml-perl: new package libxml-sax-perl also asks me something interactively. libxml-libxml-perl fails to build with: make[2]: *** No rule to make target `pure_all'. Stop. I'm sorry that we're giving you so much work :-) Regards, Arnout > > Config.in | 7 + > docs/manual/adding-packages-perl.txt | 91 +++ > docs/manual/adding-packages.txt | 2 + > package/Config.in | 3 +- > package/Config.in.host | 1 + > package/Makefile.in | 11 +- > package/cpan/Config.in | 6 + > package/cpan/cpan.mk | 1 + > package/cpan/libcurses-perl/Config.in | 6 + > package/cpan/libcurses-perl/libcurses-perl.mk | 15 + > .../libmodule-build-perl/libmodule-build-perl.mk | 13 + > package/cpan/libnet-ssleay-perl/Config.in | 6 + > .../cpan/libnet-ssleay-perl/libnet-ssleay-perl.mk | 16 + > package/cpan/libxml-libxml-perl/Config.in | 9 + > .../cpan/libxml-libxml-perl/libxml-libxml-perl.mk | 22 + > .../cpan/libxml-namespacesupport-perl/Config.in | 5 + > .../libxml-namespacesupport-perl.mk | 16 + > .../cpan/libxml-parser-perl/libxml-parser-perl.mk | 17 + > package/cpan/libxml-sax-base-perl/Config.in | 5 + > .../libxml-sax-base-perl/libxml-sax-base-perl.mk | 16 + > package/cpan/libxml-sax-perl/Config.in | 7 + > package/cpan/libxml-sax-perl/libxml-sax-perl.mk | 15 + > package/cpanminus/Config.in | 40 -- > package/cpanminus/cpanminus.mk | 47 -- > package/intltool/intltool.mk | 4 +- > package/libxml-parser-perl/Config.in | 11 - > package/libxml-parser-perl/libxml-parser-perl.mk | 35 - > package/perl/perl-fix-Module-Build.patch | 16 - > package/pkg-perl.mk | 220 ++++++ > package/qemu/Config.in.host | 10 + > support/scripts/scancpan | 700 ++++++++++++++++++++ > 31 files changed, 1216 insertions(+), 157 deletions(-) > create mode 100644 docs/manual/adding-packages-perl.txt > create mode 100644 package/cpan/Config.in > create mode 100644 package/cpan/cpan.mk > create mode 100644 package/cpan/libcurses-perl/Config.in > create mode 100644 package/cpan/libcurses-perl/libcurses-perl.mk > create mode 100644 package/cpan/libmodule-build-perl/libmodule-build-perl.mk > create mode 100644 package/cpan/libnet-ssleay-perl/Config.in > create mode 100644 package/cpan/libnet-ssleay-perl/libnet-ssleay-perl.mk > create mode 100644 package/cpan/libxml-libxml-perl/Config.in > create mode 100644 package/cpan/libxml-libxml-perl/libxml-libxml-perl.mk > create mode 100644 package/cpan/libxml-namespacesupport-perl/Config.in > create mode 100644 package/cpan/libxml-namespacesupport-perl/libxml-namespacesupport-perl.mk > create mode 100644 package/cpan/libxml-parser-perl/libxml-parser-perl.mk > create mode 100644 package/cpan/libxml-sax-base-perl/Config.in > create mode 100644 package/cpan/libxml-sax-base-perl/libxml-sax-base-perl.mk > create mode 100644 package/cpan/libxml-sax-perl/Config.in > create mode 100644 package/cpan/libxml-sax-perl/libxml-sax-perl.mk > delete mode 100644 package/cpanminus/Config.in > delete mode 100644 package/cpanminus/cpanminus.mk > delete mode 100644 package/libxml-parser-perl/Config.in > delete mode 100644 package/libxml-parser-perl/libxml-parser-perl.mk > delete mode 100644 package/perl/perl-fix-Module-Build.patch > create mode 100644 package/pkg-perl.mk > create mode 100644 package/qemu/Config.in.host > create mode 100755 support/scripts/scancpan > -- Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F