Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/2] wget: fix ssl detection in static libs configuration
@ 2016-11-08 18:36 Rahul Bedarkar
  2016-11-08 18:36 ` [Buildroot] [PATCH 2/2] wget: fix static link with gnutls Rahul Bedarkar
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Rahul Bedarkar @ 2016-11-08 18:36 UTC (permalink / raw)
  To: buildroot

When building wget with openssl in static libs configuration, wget
build system fails detect openssl because it doesn't specify LD flags
for private libs used by openssl. This specifically happens when we
pass --with-libssl-prefix to configure which tries to find ssl using
custom flags. If we don't specify --with-libssl-prefix, it relies on
pkg-config files to detect ssl and it's LD flags which helps with static
linking.

This commit removes --with-libssl-prefix conf opts. Since this case is
similar to gnutls, we remove same conf opts for gnutls as well.

wget can be built with either gnutls or openssl crypto libraries, so
separate optional support for both is not required. This commit also
does minor optimization by checking for either gnutls or openssl while
at it.

Fixes:
  http://autobuild.buildroot.net/results/c6a/c6abdff37b86471cf8b0ceffeff5472042923de0/

Signed-off-by: Rahul Bedarkar <rahul.bedarkar@imgtec.com>
---
 package/wget/wget.mk | 19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)

diff --git a/package/wget/wget.mk b/package/wget/wget.mk
index 9cda76b..c9efc03 100644
--- a/package/wget/wget.mk
+++ b/package/wget/wget.mk
@@ -17,26 +17,17 @@ WGET_DEPENDENCIES += busybox
 endif
 
 ifeq ($(BR2_PACKAGE_GNUTLS),y)
-WGET_CONF_OPTS += \
-	--with-ssl=gnutls \
-	--with-libgnutls-prefix=$(STAGING_DIR)
+WGET_CONF_OPTS += --with-ssl=gnutls
 WGET_DEPENDENCIES += gnutls
-endif
-
-ifeq ($(BR2_PACKAGE_OPENSSL),y)
-WGET_CONF_OPTS += --with-ssl=openssl --with-libssl-prefix=$(STAGING_DIR)
+else ifeq ($(BR2_PACKAGE_OPENSSL),y)
+WGET_CONF_OPTS += --with-ssl=openssl
 WGET_DEPENDENCIES += openssl
+else
+WGET_CONF_OPTS += --without-ssl
 endif
 
 ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)
 WGET_DEPENDENCIES += util-linux
 endif
 
-# --with-ssl is default
-ifneq ($(BR2_PACKAGE_GNUTLS),y)
-ifneq ($(BR2_PACKAGE_OPENSSL),y)
-WGET_CONF_OPTS += --without-ssl
-endif
-endif
-
 $(eval $(autotools-package))
-- 
2.6.2

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH 2/2] wget: fix static link with gnutls
  2016-11-08 18:36 [Buildroot] [PATCH 1/2] wget: fix ssl detection in static libs configuration Rahul Bedarkar
@ 2016-11-08 18:36 ` Rahul Bedarkar
  2016-11-11 21:51   ` Thomas Petazzoni
  2016-11-08 21:45 ` [Buildroot] [PATCH 1/2] wget: fix ssl detection in static libs configuration Arnout Vandecappelle
  2016-11-11 21:12 ` Thomas Petazzoni
  2 siblings, 1 reply; 5+ messages in thread
From: Rahul Bedarkar @ 2016-11-08 18:36 UTC (permalink / raw)
  To: buildroot

When statically linking with gnutls, we get definition clash error for
base64_encode which is also defined by gnutls.

This commit adds patch to rename base64_{encode,decode} defined in wget.

Signed-off-by: Rahul Bedarkar <rahul.bedarkar@imgtec.com>
---
 .../0001-utils-rename-base64_-encode-decode.patch  | 134 +++++++++++++++++++++
 1 file changed, 134 insertions(+)
 create mode 100644 package/wget/0001-utils-rename-base64_-encode-decode.patch

diff --git a/package/wget/0001-utils-rename-base64_-encode-decode.patch b/package/wget/0001-utils-rename-base64_-encode-decode.patch
new file mode 100644
index 0000000..f219afa
--- /dev/null
+++ b/package/wget/0001-utils-rename-base64_-encode-decode.patch
@@ -0,0 +1,134 @@
+From 9e68787576fec304da23af26dca963a4cdea7765 Mon Sep 17 00:00:00 2001
+From: Rahul Bedarkar <rahul.bedarkar@imgtec.com>
+Date: Tue, 8 Nov 2016 23:42:53 +0530
+Subject: [PATCH] utils: rename base64_{encode,decode}
+
+When statically linking with gnutls, we get definition clash error for
+base64_encode which is also defined by gnutls.
+
+/home/rahul.bedarkar/buildroot/output/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgnutls.a(base64.o): In function `base64_encode':
+base64.c:(.text+0x148): multiple definition of `base64_encode'
+utils.o:utils.c:(.text+0x4378): first defined here
+collect2: error: ld returned 1 exit status
+
+To prevent definition clash, rename base64_{encode,decode}
+
+Signed-off-by: Rahul Bedarkar <rahul.bedarkar@imgtec.com>
+---
+ src/http-ntlm.c | 6 +++---
+ src/http.c      | 4 ++--
+ src/utils.c     | 8 ++++----
+ src/utils.h     | 4 ++--
+ 4 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/src/http-ntlm.c b/src/http-ntlm.c
+index 56c40ae..87f5a37 100644
+--- a/src/http-ntlm.c
++++ b/src/http-ntlm.c
+@@ -122,7 +122,7 @@ ntlm_input (struct ntlmdata *ntlm, const char *header)
+ 
+       DEBUGP (("Received a type-2 NTLM message.\n"));
+ 
+-      size = base64_decode (header, buffer);
++      size = wget_base64_decode (header, buffer);
+       if (size < 0)
+         return false;           /* malformed base64 from server */
+ 
+@@ -411,7 +411,7 @@ ntlm_output (struct ntlmdata *ntlm, const char *user, const char *passwd,
+     size = 32 + hostlen + domlen;
+ 
+     base64 = (char *) alloca (BASE64_LENGTH (size) + 1);
+-    base64_encode (ntlmbuf, size, base64);
++    wget_base64_encode (ntlmbuf, size, base64);
+ 
+     output = concat_strings ("NTLM ", base64, (char *) 0);
+     break;
+@@ -584,7 +584,7 @@ ntlm_output (struct ntlmdata *ntlm, const char *user, const char *passwd,
+ 
+     /* convert the binary blob into base64 */
+     base64 = (char *) alloca (BASE64_LENGTH (size) + 1);
+-    base64_encode (ntlmbuf, size, base64);
++    wget_base64_encode (ntlmbuf, size, base64);
+ 
+     output = concat_strings ("NTLM ", base64, (char *) 0);
+ 
+diff --git a/src/http.c b/src/http.c
+index 7e60a07..368d30d 100644
+--- a/src/http.c
++++ b/src/http.c
+@@ -2818,7 +2818,7 @@ metalink_from_http (const struct response *resp, const struct http_stat *hs,
+           char *bin_hash = alloca (dig_hash_str_len * 3 / 4 + 1);
+           size_t hash_bin_len;
+ 
+-          hash_bin_len = base64_decode (dig_hash, bin_hash);
++          hash_bin_len = wget_base64_decode (dig_hash, bin_hash);
+ 
+           /* One slot for me, one for zero-termination.  */
+           mfile->checksums =
+@@ -4546,7 +4546,7 @@ basic_authentication_encode (const char *user, const char *passwd)
+   sprintf (t1, "%s:%s", user, passwd);
+ 
+   t2 = (char *)alloca (BASE64_LENGTH (len1) + 1);
+-  base64_encode (t1, len1, t2);
++  wget_base64_encode (t1, len1, t2);
+ 
+   return concat_strings ("Basic ", t2, (char *) 0);
+ }
+diff --git a/src/utils.c b/src/utils.c
+index b07da9f..355f0ce 100644
+--- a/src/utils.c
++++ b/src/utils.c
+@@ -2140,7 +2140,7 @@ xsleep (double seconds)
+    base64 data.  */
+ 
+ size_t
+-base64_encode (const void *data, size_t length, char *dest)
++wget_base64_encode (const void *data, size_t length, char *dest)
+ {
+   /* Conversion table.  */
+   static const char tbl[64] = {
+@@ -2208,7 +2208,7 @@ base64_encode (const void *data, size_t length, char *dest)
+    This function originates from Free Recode.  */
+ 
+ ssize_t
+-base64_decode (const char *base64, void *dest)
++wget_base64_decode (const char *base64, void *dest)
+ {
+   /* Table of base64 values for first 128 characters.  Note that this
+      assumes ASCII (but so does Wget in other places).  */
+@@ -2588,7 +2588,7 @@ wg_pubkey_pem_to_der (const char *pem, unsigned char **der, size_t *der_len)
+ 
+   base64data = xmalloc (BASE64_LENGTH(stripped_pem_count));
+ 
+-  size = base64_decode (stripped_pem, base64data);
++  size = wget_base64_decode (stripped_pem, base64data);
+ 
+   if (size < 0) {
+     xfree (base64data);           /* malformed base64 from server */
+@@ -2651,7 +2651,7 @@ wg_pin_peer_pubkey (const char *pinnedpubkey, const char *pubkey, size_t pubkeyl
+           end_pos[0] = '\0';
+ 
+         /* decode base64 pinnedpubkey, 8 is length of "sha256//" */
+-        decoded_hash_length = base64_decode (begin_pos + 8, expectedsha256sumdigest);
++        decoded_hash_length = wget_base64_decode (begin_pos + 8, expectedsha256sumdigest);
+         /* if valid base64, compare sha256 digests directly */
+         if (SHA256_DIGEST_SIZE == decoded_hash_length &&
+            !memcmp (sha256sumdigest, expectedsha256sumdigest, SHA256_DIGEST_SIZE)) {
+diff --git a/src/utils.h b/src/utils.h
+index f224b73..aaac730 100644
+--- a/src/utils.h
++++ b/src/utils.h
+@@ -140,8 +140,8 @@ void xsleep (double);
+ /* How many bytes it will take to store LEN bytes in base64.  */
+ #define BASE64_LENGTH(len) (4 * (((len) + 2) / 3))
+ 
+-size_t base64_encode (const void *, size_t, char *);
+-ssize_t base64_decode (const char *, void *);
++size_t wget_base64_encode (const void *, size_t, char *);
++ssize_t wget_base64_decode (const char *, void *);
+ 
+ #ifdef HAVE_LIBPCRE
+ void *compile_pcre_regex (const char *);
+-- 
+2.6.2
+
-- 
2.6.2

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH 1/2] wget: fix ssl detection in static libs configuration
  2016-11-08 18:36 [Buildroot] [PATCH 1/2] wget: fix ssl detection in static libs configuration Rahul Bedarkar
  2016-11-08 18:36 ` [Buildroot] [PATCH 2/2] wget: fix static link with gnutls Rahul Bedarkar
@ 2016-11-08 21:45 ` Arnout Vandecappelle
  2016-11-11 21:12 ` Thomas Petazzoni
  2 siblings, 0 replies; 5+ messages in thread
From: Arnout Vandecappelle @ 2016-11-08 21:45 UTC (permalink / raw)
  To: buildroot



On 08-11-16 19:36, Rahul Bedarkar wrote:
> When building wget with openssl in static libs configuration, wget
> build system fails detect openssl because it doesn't specify LD flags
                    to

> for private libs used by openssl. This specifically happens when we
> pass --with-libssl-prefix to configure which tries to find ssl using
> custom flags. If we don't specify --with-libssl-prefix, it relies on
> pkg-config files to detect ssl and it's LD flags which helps with static
> linking.

 Interesting point to note: the --with-libssl-prefix dates from a time when it
didn't have pkg-config support yet. It should have been removed when pkg-config
support was added, with the bump to 1.16.1.

> 
> This commit removes --with-libssl-prefix conf opts. Since this case is
> similar to gnutls, we remove same conf opts for gnutls as well.
> 
> wget can be built with either gnutls or openssl crypto libraries, so
> separate optional support for both is not required. This commit also
> does minor optimization by checking for either gnutls or openssl while
> at it.

 That really should have been a separate patch, but OK.


Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

 Regards,
 Arnout

> 
> Fixes:
>   http://autobuild.buildroot.net/results/c6a/c6abdff37b86471cf8b0ceffeff5472042923de0/
> 
> Signed-off-by: Rahul Bedarkar <rahul.bedarkar@imgtec.com>
> ---
>  package/wget/wget.mk | 19 +++++--------------
>  1 file changed, 5 insertions(+), 14 deletions(-)
> 
> diff --git a/package/wget/wget.mk b/package/wget/wget.mk
> index 9cda76b..c9efc03 100644
> --- a/package/wget/wget.mk
> +++ b/package/wget/wget.mk
> @@ -17,26 +17,17 @@ WGET_DEPENDENCIES += busybox
>  endif
>  
>  ifeq ($(BR2_PACKAGE_GNUTLS),y)
> -WGET_CONF_OPTS += \
> -	--with-ssl=gnutls \
> -	--with-libgnutls-prefix=$(STAGING_DIR)
> +WGET_CONF_OPTS += --with-ssl=gnutls
>  WGET_DEPENDENCIES += gnutls
> -endif
> -
> -ifeq ($(BR2_PACKAGE_OPENSSL),y)
> -WGET_CONF_OPTS += --with-ssl=openssl --with-libssl-prefix=$(STAGING_DIR)
> +else ifeq ($(BR2_PACKAGE_OPENSSL),y)
> +WGET_CONF_OPTS += --with-ssl=openssl
>  WGET_DEPENDENCIES += openssl
> +else
> +WGET_CONF_OPTS += --without-ssl
>  endif
>  
>  ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBUUID),y)
>  WGET_DEPENDENCIES += util-linux
>  endif
>  
> -# --with-ssl is default
> -ifneq ($(BR2_PACKAGE_GNUTLS),y)
> -ifneq ($(BR2_PACKAGE_OPENSSL),y)
> -WGET_CONF_OPTS += --without-ssl
> -endif
> -endif
> -
>  $(eval $(autotools-package))
> 

-- 
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:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH 1/2] wget: fix ssl detection in static libs configuration
  2016-11-08 18:36 [Buildroot] [PATCH 1/2] wget: fix ssl detection in static libs configuration Rahul Bedarkar
  2016-11-08 18:36 ` [Buildroot] [PATCH 2/2] wget: fix static link with gnutls Rahul Bedarkar
  2016-11-08 21:45 ` [Buildroot] [PATCH 1/2] wget: fix ssl detection in static libs configuration Arnout Vandecappelle
@ 2016-11-11 21:12 ` Thomas Petazzoni
  2 siblings, 0 replies; 5+ messages in thread
From: Thomas Petazzoni @ 2016-11-11 21:12 UTC (permalink / raw)
  To: buildroot

Hello,

On Wed, 9 Nov 2016 00:06:41 +0530, Rahul Bedarkar wrote:
> When building wget with openssl in static libs configuration, wget
> build system fails detect openssl because it doesn't specify LD flags
> for private libs used by openssl. This specifically happens when we
> pass --with-libssl-prefix to configure which tries to find ssl using
> custom flags. If we don't specify --with-libssl-prefix, it relies on
> pkg-config files to detect ssl and it's LD flags which helps with static
> linking.
> 
> This commit removes --with-libssl-prefix conf opts. Since this case is
> similar to gnutls, we remove same conf opts for gnutls as well.
> 
> wget can be built with either gnutls or openssl crypto libraries, so
> separate optional support for both is not required. This commit also
> does minor optimization by checking for either gnutls or openssl while
> at it.
> 
> Fixes:
>   http://autobuild.buildroot.net/results/c6a/c6abdff37b86471cf8b0ceffeff5472042923de0/
> 
> Signed-off-by: Rahul Bedarkar <rahul.bedarkar@imgtec.com>
> ---
>  package/wget/wget.mk | 19 +++++--------------
>  1 file changed, 5 insertions(+), 14 deletions(-)

Applied to master, thanks.

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH 2/2] wget: fix static link with gnutls
  2016-11-08 18:36 ` [Buildroot] [PATCH 2/2] wget: fix static link with gnutls Rahul Bedarkar
@ 2016-11-11 21:51   ` Thomas Petazzoni
  0 siblings, 0 replies; 5+ messages in thread
From: Thomas Petazzoni @ 2016-11-11 21:51 UTC (permalink / raw)
  To: buildroot

Hello,

On Wed, 9 Nov 2016 00:06:42 +0530, Rahul Bedarkar wrote:
> When statically linking with gnutls, we get definition clash error for
> base64_encode which is also defined by gnutls.
> 
> This commit adds patch to rename base64_{encode,decode} defined in wget.
> 
> Signed-off-by: Rahul Bedarkar <rahul.bedarkar@imgtec.com>
> ---
>  .../0001-utils-rename-base64_-encode-decode.patch  | 134 +++++++++++++++++++++
>  1 file changed, 134 insertions(+)
>  create mode 100644 package/wget/0001-utils-rename-base64_-encode-decode.patch

Applied to master, thanks. Please submit the patch to the upstream wget
project. Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-11-11 21:51 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-08 18:36 [Buildroot] [PATCH 1/2] wget: fix ssl detection in static libs configuration Rahul Bedarkar
2016-11-08 18:36 ` [Buildroot] [PATCH 2/2] wget: fix static link with gnutls Rahul Bedarkar
2016-11-11 21:51   ` Thomas Petazzoni
2016-11-08 21:45 ` [Buildroot] [PATCH 1/2] wget: fix ssl detection in static libs configuration Arnout Vandecappelle
2016-11-11 21:12 ` Thomas Petazzoni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox