Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 01/13] perl: new package v6
Date: Thu, 20 Sep 2012 21:56:36 +0200	[thread overview]
Message-ID: <20120920215636.6d86b7b5@skate> (raw)
In-Reply-To: <1347107325-4163-1-git-send-email-francois.perrad@gadz.org>

Dear Francois Perrad,

Thanks for your continued work on this. Some comments below.

First, do not put the patch version in the patch title. If you want to
have a version, it should be between the [] at the beginning of the
title. Here is how you can do that with git:

git format-patch --subject-prefix="PATCH v7" <yourbasebranch>

On Sat,  8 Sep 2012 14:28:33 +0200, Francois Perrad wrote:
> ---
>  package/Config.in                      |    1 +
>  package/perl/Config.in                 |   17 +++++
>  package/perl/perl-configure-qemu.patch |   32 +++++++++
>  package/perl/perl-make-ext.patch       |   24 +++++++
>  package/perl/perl-mkppport.patch       |   37 ++++++++++
>  package/perl/perl.mk                   |  121 ++++++++++++++++++++++++++++++++
>  6 files changed, 232 insertions(+)
>  create mode 100644 package/perl/Config.in
>  create mode 100644 package/perl/perl-configure-qemu.patch
>  create mode 100644 package/perl/perl-make-ext.patch
>  create mode 100644 package/perl/perl-mkppport.patch
>  create mode 100644 package/perl/perl.mk
> 
> diff --git a/package/Config.in b/package/Config.in
> index f308de7..00a79ab 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -262,6 +262,7 @@ source "package/wsapi/Config.in"
>  source "package/xavante/Config.in"
>  endmenu
>  endif
> +source "package/perl/Config.in"
>  source "package/microperl/Config.in"
>  source "package/php/Config.in"
>  source "package/python/Config.in"
> diff --git a/package/perl/Config.in b/package/perl/Config.in
> new file mode 100644
> index 0000000..286b09e
> --- /dev/null
> +++ b/package/perl/Config.in
> @@ -0,0 +1,17 @@
> +config BR2_PACKAGE_PERL
> +	bool "perl"
> +	help
> +	  Larry Wall's Practical Extraction and Report Language
> +	  An interpreted scripting language, known among some as "Unix's Swiss
> +	  Army Chainsaw".
> +
> +	  http://www.perl.org/
> +
> +if BR2_PACKAGE_PERL
> +
> +config BR2_PACKAGE_PERL_CUSTOM_CONFIGURE
> +	string "configuration flags"
> +	help
> +	  Allows to add some flags to Configure.

We don't typically offer such choice for packages. Is there a good
reason for doing so in the case of Perl, rather than providing a few
additional kconfig configuration options if needed?

> +endif
> diff --git a/package/perl/perl-configure-qemu.patch b/package/perl/perl-configure-qemu.patch
> new file mode 100644
> index 0000000..00f7539
> --- /dev/null
> +++ b/package/perl/perl-configure-qemu.patch
> @@ -0,0 +1,32 @@
> +Add qemu support
> +

Please explain in more details what this means, and whether this patch
has a chance of being upstream or not.

Also, it seems to imply that the build process of Perl would require
Qemu. Or, Qemu is not amongst the requirements of Buildroot, and there
is no host-qemu package in the dependencies of your package (and we
don't have a host-qemu package). Yann E. Morin has posted a target
package for qemu a while ago, but it hasn't been merged so far.

That said, even so it is certainly possible to create a host-qemu
package, I am a bit annoyed to see the build process of a package
requiring qemu. Is there really no other way? I guess it uses qemu to
run a bunch of tests on the target system. Is there no way to provide
pre-defined values for those tests, on a per-architecture basis, rather
than running those test applications in Qemu?

> diff --git a/package/perl/perl-make-ext.patch b/package/perl/perl-make-ext.patch
> new file mode 100644
> index 0000000..e0195e7
> --- /dev/null
> +++ b/package/perl/perl-make-ext.patch
> @@ -0,0 +1,24 @@
> +Don't use RUN with make (only for perl)
> +
> +Signed-off-by: Francois Perrad <francois.perrad@gadz.org>

Sorry, but the patch description is insufficient to understand what is
going on here.

> +
> +Index: b/make_ext.pl
> +===================================================================
> +--- a/make_ext.pl
> ++++ b/make_ext.pl
> +@@ -458,11 +458,13 @@
> + 	# Give makefile an opportunity to rewrite itself.
> + 	# reassure users that life goes on...
> + 	my @args = ('config', @$pass_through);
> +-	system(@run, @make, @args) and print "@run @make @args failed, continuing anyway...\n";
> ++#	system(@run, @make, @args) and print "@run @make @args failed, continuing anyway...\n";
> ++	system(@make, @args) and print "@make @args failed, continuing anyway...\n";
> +     }
> +     my @targ = ($target, @$pass_through);
> +     print "Making $target in $ext_dir\n at run @make @targ\n";
> +-    my $code = system(@run, @make, @targ);
> ++#    my $code = system(@run, @make, @targ);
> ++    my $code = system(@make, @targ);
> +     die "Unsuccessful make($ext_dir): code=$code" if $code != 0;
> + 
> +     chdir $return_dir || die "Cannot cd to $return_dir: $!";
> diff --git a/package/perl/perl-mkppport.patch b/package/perl/perl-mkppport.patch
> new file mode 100644
> index 0000000..97f27a2
> --- /dev/null
> +++ b/package/perl/perl-mkppport.patch
> @@ -0,0 +1,37 @@
> +Add RUN
> +
> +Signed-off-by: Francois Perrad <francois.perrad@gadz.org>

Ditto.

> diff --git a/package/perl/perl.mk b/package/perl/perl.mk
> new file mode 100644
> index 0000000..2a8da79
> --- /dev/null
> +++ b/package/perl/perl.mk
> @@ -0,0 +1,121 @@
> +#############################################################
> +#
> +# perl
> +#
> +#############################################################
> +
> +PERL_VERSION_MAJOR = 16
> +PERL_VERSION = 5.$(PERL_VERSION_MAJOR).1
> +PERL_SITE = http://www.cpan.org/src/5.0
> +PERL_SOURCE = perl-$(PERL_VERSION).tar.bz2
> +PERL_LICENSE = Artistic
> +PERL_LICENSE_FILES = Artistic
> +PERL_INSTALL_STAGING = YES
> +
> +ifeq ($(shell expr $(PERL_VERSION_MAJOR) % 2), 1)
> +    PERL_USE_DEVEL=-Dusedevel
> +endif
> +
> +ifneq ($(BR2_LARGEFILE),y)
> +    PERL_NO_LARGEFILE=-Uuselargefiles
> +endif
> +
> +PERL_ARCH=$(call qstrip,$(BR2_ARCH))

You can use ARCH directly, it is already qstripped.

> +ifeq ($(PERL_ARCH),i686)
> +    PERL_ARCH=i386
> +endif
> +PERL_QEMU_USER_MODE=qemu-$(PERL_ARCH)
> +
> +define PERL_CONFIGURE_CMDS
> +	rm -f $(@D)/config.sh
> +	cd $(@D); ./Configure -des \

We generally like to put such commands into parenthesis, i.e:

	(cd $(@D); .... \
		.....   \
		.....)

> +		-Dusecrosscompile \
> +		-Dtargetrun=$(PERL_QEMU_USER_MODE) \
> +		-Dqemulib=$(STAGING_DIR) \
> +		-Dtargethost=dummy \
> +		-Dar="$(TARGET_AR)" \
> +		-Dcc="$(TARGET_CC)" \
> +		-Dcpp="$(TARGET_CC)" \
> +		-Dld="$(TARGET_LD)" \
> +		-Dnm="$(TARGET_NM)" \
> +		-Dranlib="$(TARGET_RANLIB)" \
> +		-Dccflags="$(TARGET_CFLAGS)" \
> +		-Dldflags="$(TARGET_LDFLAGS) -l gcc_s" \
> +		-Dlddlflags="-shared" \
> +		-Dlibc=$(TARGET_HOST)/usr/$(GNU_TARGET_NAME)/sysroot/lib/libc.so \
> +		-Duseshrplib \
> +		-Dprefix=/usr \
> +		-Uoptimize \
> +		$(PERL_USE_DEVEL) \
> +		$(PERL_NO_LARGEFILE) \
> +		$(call qstrip,$(BR2_PACKAGE_PERL_CUSTOM_CONFIGURE))
> +	echo "# patched values"                 >>$(@D)/config.sh
> +	$(SED) '/^myarchname=/d' \
> +		-e '/^mydomain=/d' \
> +		-e '/^myhostname=/d' \
> +		-e '/^myuname=/d' \
> +		-e '/^osname=/d' \
> +		-e '/^osvers=/d' \
> +		-e '/^perladmin=/d' \
> +		$(@D)/config.sh
> +	echo "myarchname='$(GNU_TARGET_NAME)'"                  >>$(@D)/config.sh
> +	echo "mydomain=''"                                      >>$(@D)/config.sh
> +	echo "myhostname='$(BR2_TARGET_GENERIC_HOSTNAME)'"      >>$(@D)/config.sh
> +	echo "myuname='Buildroot $(BR2_VERSION_FULL)'"          >>$(@D)/config.sh
> +	echo "osname='linux'"                                   >>$(@D)/config.sh
> +	echo "osvers='$(BR2_LINUX_KERNEL_VERSION)'"             >>$(@D)/config.sh
> +	echo "perladmin='root'"                                 >>$(@D)/config.sh
> +	cd $(@D); ./Configure -S
> +	cp $(@D)/config.h $(@D)/xconfig.h
> +	$(SED) 's/UNKNOWN-/Buildroot $(BR2_VERSION_FULL) /' $(@D)/patchlevel.h
> +endef
> +
> +define PERL_BUILD_CMDS
> +	echo "#!/bin/sh"                                                        > $(@D)/Cross/miniperl
> +	echo "$(PERL_QEMU_USER_MODE) -L $(STAGING_DIR) $(@D)/miniperl \"\$$@\"" >>$(@D)/Cross/miniperl
> +	chmod +x $(@D)/Cross/miniperl
> +	PERL_MM_OPT="PERL=$(@D)/Cross/miniperl" \
> +	$(MAKE) -C $(@D) all
> +endef
> +
> +define PERL_INSTALL_STAGING_CMDS
> +	$(MAKE) INSTALL_DEPENDENCE= \

Is it really INSTALL_DEPENDENCE ?

> +		INSTALLFLAGS= \
> +		DESTDIR="$(STAGING_DIR)" \
> +		-C $(@D) install.perl
> +	$(INSTALL) -m 755 $(@D)/libperl.so $(STAGING_DIR)/usr/lib/libperl.so

Maybe just a comment above on why the manual installation of this .so
file is needed.

> +endef
> +
> +define PERL_INSTALL_TARGET_CMDS
> +	$(MAKE) INSTALL_DEPENDENCE= \
> +		INSTALLFLAGS=-p \
> +		DESTDIR="$(TARGET_DIR)" \
> +		-C $(@D) install.perl
> +endef
> +
> +define PERL_CLEAN_CMDS
> +	-$(MAKE) -C $(@D) clean
> +endef
> +
> +define HOST_PERL_CONFIGURE_CMDS
> +	cd $(@D); ./Configure -des \
> +		-Dcc="$(HOSTCC)" \
> +		-Dprefix="$(HOST_DIR)/usr" \
> +		$(PERL_USE_DEVEL)
> +endef
> +
> +define HOST_PERL_BUILD_CMDS
> +	$(MAKE) -C $(@D) all
> +endef
> +
> +define HOST_PERL_INSTALL_CMDS
> +	$(MAKE) INSTALL_DEPENDENCE= \
> +		-C $(@D) install
> +endef
> +
> +define HOST_PERL_CLEAN_CMDS
> +	-$(MAKE) -C $(@D) clean
> +endef
> +
> +$(eval $(generic-package))
> +$(eval $(host-generic-package))

The host variant of perl seems to be here only as a build dependency of
microperl, which your patch set is deprecating. Is it really necessary
to have this host variant?

Best regards,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

  parent reply	other threads:[~2012-09-20 19:56 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-08 12:28 [Buildroot] [PATCH 01/13] perl: new package v6 Francois Perrad
2012-09-08 12:28 ` [Buildroot] [PATCH 02/13] perl: add an option for miniperl Francois Perrad
2012-09-08 12:28 ` [Buildroot] [PATCH 03/13] perl: add DB_File Francois Perrad
2012-09-20 19:57   ` Thomas Petazzoni
2012-09-21 18:26     ` François Perrad
2012-09-08 12:28 ` [Buildroot] [PATCH 04/13] gdbm: new package Francois Perrad
2012-09-12  5:30   ` Arnout Vandecappelle
2012-09-08 12:28 ` [Buildroot] [PATCH 05/13] perl: add GDBM_File Francois Perrad
2012-09-20 19:59   ` Thomas Petazzoni
2012-09-21 18:36     ` François Perrad
2012-09-21 19:01       ` Thomas Petazzoni
2012-09-24  8:43       ` Arnout Vandecappelle
2012-09-08 12:28 ` [Buildroot] [PATCH 06/13] cpanminus: new package v3 Francois Perrad
2012-09-20 20:04   ` Thomas Petazzoni
2012-09-20 21:35     ` Arnout Vandecappelle
2012-09-21 18:25       ` François Perrad
2012-09-21 19:02         ` Thomas Petazzoni
2012-09-08 12:28 ` [Buildroot] [PATCH 07/13] microperl: build extensions at build time Francois Perrad
2012-09-08 12:28 ` [Buildroot] [PATCH 08/13] microperl: bump version to 5.14.2 Francois Perrad
2012-09-08 12:28 ` [Buildroot] [PATCH 09/13] microperl: improve configure step on 64bits platform Francois Perrad
2012-09-08 12:28 ` [Buildroot] [PATCH 10/13] microperl: install more modules by default Francois Perrad
2012-09-08 12:28 ` [Buildroot] [PATCH 11/13] microperl: bump version to 5.16.1 Francois Perrad
2012-09-08 12:28 ` [Buildroot] [PATCH 12/13] microperl: remove host-microperl Francois Perrad
2012-09-08 12:28 ` [Buildroot] [PATCH 13/13] microperl: mark as DEPRECATED Francois Perrad
2012-09-20 20:22   ` Thomas Petazzoni
2012-09-21 18:53     ` François Perrad
2012-09-21 18:59       ` Thomas Petazzoni
2012-09-23 15:11         ` François Perrad
2012-09-23 15:25           ` Thomas Petazzoni
2012-09-20 19:56 ` Thomas Petazzoni [this message]
2012-09-21 21:29   ` [Buildroot] [UNSURE]Re: [PATCH 01/13] perl: new package v6 François Perrad
2012-09-22  3:38     ` Thomas Petazzoni
2012-09-24 20:20     ` [Buildroot] " Arnout Vandecappelle
2012-09-25 17:17       ` [Buildroot] [UNSURE]Re: " François Perrad

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120920215636.6d86b7b5@skate \
    --to=thomas.petazzoni@free-electrons.com \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox