[Buildroot] [PATCH 2/2] package/perl-net-ssleay: fix buildsystem for cross-compilation
François Perrad
francois.perrad at gadz.org
Sun Jul 13 07:07:54 UTC 2014
see http://patchwork.ozlabs.org/patch/367112/ (which is a part of your patch)
and http://patchwork.ozlabs.org/patch/366934/
François
2014-07-13 1:02 GMT+02:00 Yann E. MORIN <yann.morin.1998 at free.fr>:
> The buildsystem for perl-net-ssleay is totally brain-damaged: it tries
> to execute the openssl program. It uses that to check the openssl
> version, detect the prefix to openssl, and set the include and library
> search paths.
>
> Of course, it does not handle the destdir idiom, so it ends up finding
> the host system's openssl (not even ours!), so it sets search paths to
> /usr/inlcude and /usr/lib and /lib.
>
> Well, guess what? It does not work.
>
> Fix that by:
> - passing the prefix to openssl in the environment, so it does not go
> hunting for the host-system openssl;
> - not checking the version string, since we can't run, and Buildroot
> has the correct version anyway;
> - not setting any -I or -L paths since our compiler/linker already
> know where to look for for includes and libs.
>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
> Cc: Francois Perrad <fperrad at gmail.com>
> ---
> .../perl-net-ssleay-001-fix-build-system.patch | 25 ++++++++++++++++++++++
> package/perl-net-ssleay/perl-net-ssleay.mk | 4 ++++
> 2 files changed, 29 insertions(+)
> create mode 100644 package/perl-net-ssleay/perl-net-ssleay-001-fix-build-system.patch
>
> diff --git a/package/perl-net-ssleay/perl-net-ssleay-001-fix-build-system.patch b/package/perl-net-ssleay/perl-net-ssleay-001-fix-build-system.patch
> new file mode 100644
> index 0000000..a5ee961
> --- /dev/null
> +++ b/package/perl-net-ssleay/perl-net-ssleay-001-fix-build-system.patch
> @@ -0,0 +1,25 @@
> +diff -durN perl-net-ssleay-1.64.orig/inc/Module/Install/PRIVATE/Net/SSLeay.pm perl-net-ssleay-1.64/inc/Module/Install/PRIVATE/Net/SSLeay.pm
> +--- perl-net-ssleay-1.64.orig/inc/Module/Install/PRIVATE/Net/SSLeay.pm 2014-04-01 08:08:37.000000000 +0200
> ++++ perl-net-ssleay-1.64/inc/Module/Install/PRIVATE/Net/SSLeay.pm 2014-07-13 00:38:46.281380282 +0200
> +@@ -37,14 +37,18 @@
> + exit 0; # according http://wiki.cpantesters.org/wiki/CPANAuthorNotes this is best-practice when "missing library"
> + }
> +
> +- $self->check_openssl_version($prefix, $exec);
> ++# Does not work for cross-compilation.
> ++# In Buildroot, we do have a supported version.
> ++# $self->check_openssl_version($prefix, $exec);
> + my $opts = $self->ssleay_get_build_opts($prefix, $exec);
> +
> + $self->makemaker_args(
> + CCCDLFLAGS => $opts->{cccdlflags},
> + OPTIMIZE => $opts->{optimize},
> +- INC => join(' ', map {"-I$_"} @{$opts->{inc_paths}}),
> +- LIBS => join(' ', (map {"-L$_"} @{$opts->{lib_paths}}), (map {"-l$_"} @{$opts->{lib_links}})),
> ++# Buildroot already has the correct include and library search paths.
> ++# INC => join(' ', map {"-I$_"} @{$opts->{inc_paths}}),
> ++# LIBS => join(' ', (map {"-L$_"} @{$opts->{lib_paths}}), (map {"-l$_"} @{$opts->{lib_links}})),
> ++ LIBS => join(' ', (map {"-l$_"} @{$opts->{lib_links}})),
> + );
> +
> + if ( $self->prompt(
> diff --git a/package/perl-net-ssleay/perl-net-ssleay.mk b/package/perl-net-ssleay/perl-net-ssleay.mk
> index 413fdf0..4a362fb 100644
> --- a/package/perl-net-ssleay/perl-net-ssleay.mk
> +++ b/package/perl-net-ssleay/perl-net-ssleay.mk
> @@ -11,4 +11,8 @@ PERL_NET_SSLEAY_DEPENDENCIES = perl openssl
> PERL_NET_SSLEAY_LICENSE = OpenSSL
> PERL_NET_SSLEAY_LICENSE_FILES = LICENSE
>
> +# Try as hard as possible to remedy to the brain-damage their build-system
> +# suffers from: don't search for openssl, they pick the host-system one.
> +PERL_NET_SSLEAY_CONF_ENV = OPENSSL_PREFIX=$(STAGING_DIR)/usr
> +
> $(eval $(perl-package))
> --
> 1.9.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
More information about the buildroot
mailing list