Patchwork [2/5] perl 5.10.1: fix Time::HiRes cross-compilation

login
register
mail settings
Submitter Roman Khimov
Date Dec. 25, 2010, 10:48 a.m.
Message ID <1293274109-15695-2-git-send-email-khimov@altell.ru>
Download mbox | patch
Permalink /patch/125/
State Accepted
Headers show

Comments

Roman Khimov - Dec. 25, 2010, 10:48 a.m.
We can't do 'run' check, so let's hope compile check is enough.
Fixes

Time::HiRes::nanosleep(): unimplemented in this platform

error.

Signed-off-by: Roman I Khimov <khimov@altell.ru>
---
 .../perl-time-hires-fix-cross-compilation.patch    |   29 ++++++++++++++++++++
 recipes/perl/perl_5.10.1.bb                        |    3 +-
 2 files changed, 31 insertions(+), 1 deletions(-)
 create mode 100644 recipes/perl/perl-5.10.1/perl-time-hires-fix-cross-compilation.patch
Khem Raj - Dec. 25, 2010, 5:30 p.m.
On 12/25/2010 2:48 AM, Roman I Khimov wrote:
> We can't do 'run' check, so let's hope compile check is enough.
> Fixes
>
> Time::HiRes::nanosleep(): unimplemented in this platform
>
> error.
>
> Signed-off-by: Roman I Khimov<khimov@altell.ru>

is it possible to cache the vars instead? that will be better to keep
list of variables that are not runchecked

Acked-by: Khem Raj <raj.khem@gmail.com>

> ---
>   .../perl-time-hires-fix-cross-compilation.patch    |   29 ++++++++++++++++++++
>   recipes/perl/perl_5.10.1.bb                        |    3 +-
>   2 files changed, 31 insertions(+), 1 deletions(-)
>   create mode 100644 recipes/perl/perl-5.10.1/perl-time-hires-fix-cross-compilation.patch
>
> diff --git a/recipes/perl/perl-5.10.1/perl-time-hires-fix-cross-compilation.patch b/recipes/perl/perl-5.10.1/perl-time-hires-fix-cross-compilation.patch
> new file mode 100644
> index 0000000..7c8b47e
> --- /dev/null
> +++ b/recipes/perl/perl-5.10.1/perl-time-hires-fix-cross-compilation.patch
> @@ -0,0 +1,29 @@
> +Index: perl-5.10.1/ext/Time-HiRes/Makefile.PL
> +===================================================================
> +--- perl-5.10.1.orig/ext/Time-HiRes/Makefile.PL	2010-11-23 12:05:59.000000000 +0300
> ++++ perl-5.10.1/ext/Time-HiRes/Makefile.PL	2010-11-23 12:06:42.000000000 +0300
> +@@ -157,24 +157,6 @@
> + 	    my $res = system($cccmd);
> + 	    $ok = defined($res)&&  $res == 0&&  -s $tmp_exe&&  -x _;
> +
> +-	    if ( $ok&&  exists $args{run}&&  $args{run}) {
> +-		my $tmp_exe =
> +-		    File::Spec->catfile(File::Spec->curdir, $tmp_exe);
> +-		printf "Running $tmp_exe..." if $VERBOSE;
> +-		if (system($tmp_exe) == 0) {
> +-		    $ok = 1;
> +-		} else {
> +-		    $ok = 0;
> +-		    my $errno = $?>>  8;
> +-		    local $! = $errno;
> +-		    printf<<EOF;
> +-
> +-*** The test run of '$tmp_exe' failed: status $?
> +-*** (the status means: errno = $errno or '$!')
> +-*** DO NOT PANIC: this just means that *some* functionality will be missing.
> +-EOF
> +-		}
> +-	    }
> + 	    unlink("$tmp.c", $tmp_exe);
> +         }
> +     }
> diff --git a/recipes/perl/perl_5.10.1.bb b/recipes/perl/perl_5.10.1.bb
> index 387755e..0e6a1f9 100644
> --- a/recipes/perl/perl_5.10.1.bb
> +++ b/recipes/perl/perl_5.10.1.bb
> @@ -5,7 +5,7 @@ LICENSE = "Artistic|GPLv1+"
>   PRIORITY = "optional"
>   # We need gnugrep (for -I)
>   DEPENDS = "virtual/db perl-native grep-native"
> -PR = "r15"
> +PR = "r16"
>
>   # 5.10.1 has Module::Build built-in
>   PROVIDES += "libmodule-build-perl"
> @@ -62,6 +62,7 @@ SRC_URI = "ftp://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz;name=perl-${PV} \
>   	file://arm-alignment.diff \
>   	file://fcgi-test.diff \
>   	file://hurd-ccflags.diff \
> +	file://perl-time-hires-fix-cross-compilation.patch \
>   	\
>           file://Makefile.patch \
>           file://Makefile.SH.patch \
Roman Khimov - Dec. 25, 2010, 6:25 p.m.
? ????????? ?? ??????? 25 ??????? 2010 20:30:49 ????? Khem Raj ???????:
> On 12/25/2010 2:48 AM, Roman I Khimov wrote:
> > We can't do 'run' check, so let's hope compile check is enough.
> > Fixes
> >
> > Time::HiRes::nanosleep(): unimplemented in this platform
> >
> > error.
> >
> > Signed-off-by: Roman I Khimov<khimov@altell.ru>
> 
> is it possible to cache the vars instead? that will be better to keep
> list of variables that are not runchecked

Well, glancing at code another time, it probably could be solved via 
d_nanosleep in Config.sh. I think it's safe to assume that all of our targets 
implement nanosleep().
Khem Raj - Dec. 25, 2010, 7:57 p.m.
On 12/25/2010 10:25 AM, Roman I Khimov wrote:
> ? ????????? ?? ??????? 25 ??????? 2010 20:30:49 ????? Khem Raj ???????:
>> On 12/25/2010 2:48 AM, Roman I Khimov wrote:
>>> We can't do 'run' check, so let's hope compile check is enough.
>>> Fixes
>>>
>>> Time::HiRes::nanosleep(): unimplemented in this platform
>>>
>>> error.
>>>
>>> Signed-off-by: Roman I Khimov<khimov@altell.ru>
>>
>> is it possible to cache the vars instead? that will be better to keep
>> list of variables that are not runchecked
>
> Well, glancing at code another time, it probably could be solved via
> d_nanosleep in Config.sh. I think it's safe to assume that all of our targets
> implement nanosleep().
>

hmmm, I would be skeptical on the assumption but if you add this to the 
comment that would help someone who would want to use on  a weird 
architecture one day


Acked-by: Khem Raj <raj.khem@gmail.com>

>
>
>
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
Roman Khimov - Dec. 26, 2010, 6:26 a.m.
? ????????? ?? ??????? 25 ??????? 2010 22:57:43 ????? Khem Raj ???????:
> On 12/25/2010 10:25 AM, Roman I Khimov wrote:
> > ? ????????? ?? ??????? 25 ??????? 2010 20:30:49 ????? Khem Raj ???????:
> >> On 12/25/2010 2:48 AM, Roman I Khimov wrote:
> >>> We can't do 'run' check, so let's hope compile check is enough.
> >>> Fixes
> >>>
> >>> Time::HiRes::nanosleep(): unimplemented in this platform
> >>>
> >>> error.
> >>>
> >>> Signed-off-by: Roman I Khimov<khimov@altell.ru>
> >>
> >> is it possible to cache the vars instead? that will be better to keep
> >> list of variables that are not runchecked
> >
> > Well, glancing at code another time, it probably could be solved via
> > d_nanosleep in Config.sh. I think it's safe to assume that all of our
> > targets implement nanosleep().
> 
> hmmm, I would be skeptical on the assumption 

If you're skeptical about it, then I think it's better to leave the automatic 
test as it is now (patched). Because the run part of it comes from very rare 
corner-cases, there is a comment in test program:

    ret = nanosleep(&ts1, &ts2); /* E.g. in AIX nanosleep() fails and sets 
errno to ENOSYS. */

Patch

diff --git a/recipes/perl/perl-5.10.1/perl-time-hires-fix-cross-compilation.patch b/recipes/perl/perl-5.10.1/perl-time-hires-fix-cross-compilation.patch
new file mode 100644
index 0000000..7c8b47e
--- /dev/null
+++ b/recipes/perl/perl-5.10.1/perl-time-hires-fix-cross-compilation.patch
@@ -0,0 +1,29 @@ 
+Index: perl-5.10.1/ext/Time-HiRes/Makefile.PL
+===================================================================
+--- perl-5.10.1.orig/ext/Time-HiRes/Makefile.PL	2010-11-23 12:05:59.000000000 +0300
++++ perl-5.10.1/ext/Time-HiRes/Makefile.PL	2010-11-23 12:06:42.000000000 +0300
+@@ -157,24 +157,6 @@
+ 	    my $res = system($cccmd);
+ 	    $ok = defined($res) && $res == 0 && -s $tmp_exe && -x _;
+ 
+-	    if ( $ok && exists $args{run} && $args{run}) {
+-		my $tmp_exe =
+-		    File::Spec->catfile(File::Spec->curdir, $tmp_exe);
+-		printf "Running $tmp_exe..." if $VERBOSE;
+-		if (system($tmp_exe) == 0) {
+-		    $ok = 1;
+-		} else {
+-		    $ok = 0;
+-		    my $errno = $? >> 8;
+-		    local $! = $errno;
+-		    printf <<EOF;
+-
+-*** The test run of '$tmp_exe' failed: status $?
+-*** (the status means: errno = $errno or '$!')
+-*** DO NOT PANIC: this just means that *some* functionality will be missing.
+-EOF
+-		}
+-	    }
+ 	    unlink("$tmp.c", $tmp_exe);
+         }
+     }
diff --git a/recipes/perl/perl_5.10.1.bb b/recipes/perl/perl_5.10.1.bb
index 387755e..0e6a1f9 100644
--- a/recipes/perl/perl_5.10.1.bb
+++ b/recipes/perl/perl_5.10.1.bb
@@ -5,7 +5,7 @@  LICENSE = "Artistic|GPLv1+"
 PRIORITY = "optional"
 # We need gnugrep (for -I)
 DEPENDS = "virtual/db perl-native grep-native"
-PR = "r15"
+PR = "r16"
 
 # 5.10.1 has Module::Build built-in
 PROVIDES += "libmodule-build-perl"
@@ -62,6 +62,7 @@  SRC_URI = "ftp://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz;name=perl-${PV} \
 	file://arm-alignment.diff \
 	file://fcgi-test.diff \
 	file://hurd-ccflags.diff \
+	file://perl-time-hires-fix-cross-compilation.patch \
 	\
         file://Makefile.patch \
         file://Makefile.SH.patch \