diff mbox

[2/2] tinycbor: fix issue on unnamed union

Message ID 1471290845-115279-2-git-send-email-fabrice.fontaine@orange.com
State Superseded
Headers show

Commit Message

Fabrice Fontaine Aug. 15, 2016, 7:54 p.m. UTC
Until tinycbor 0.4 is released, patch from dev branch is needed to
remove the usage of unnamed union which are not supported by all
targets such as blackfin

Signed-off-by: Fabrice Fontaine <fabrice.fontaine@orange.com>
---
 package/tinycbor/tinycbor.hash | 1 +
 package/tinycbor/tinycbor.mk   | 6 ++++++
 2 files changed, 7 insertions(+)

Comments

Peter Korsgaard Aug. 16, 2016, 5:52 a.m. UTC | #1
>>>>> "Fabrice" == Fabrice Fontaine <fontaine.fabrice@gmail.com> writes:

 > Until tinycbor 0.4 is released, patch from dev branch is needed to
 > remove the usage of unnamed union which are not supported by all
 > targets such as blackfin

What autobuilder issues does this fix?

I tried building this config after applying both patches:

http://autobuild.buildroot.net/results/f4d/f4d15afb44f471878dbdee7c67cd836bd2b79904/

But it now fails with:

src/open_memstream.c: In function ‘open_memstream’:
src/open_memstream.c:105: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘vtable’
src/open_memstream.c:105: error: ‘vtable’ undeclared (first use in this function)
src/open_memstream.c:105: error: (Each undeclared identifier is reported only once
src/open_memstream.c:105: error: for each function it appears in.)
src/open_memstream.c:105: error: expected expression before ‘{’ token
src/open_memstream.c:111: warning: implicit declaration of function ‘fopencookie’
src/open_memstream.c:111: warning: return makes pointer from integer without a cast
Makefile:198: recipe for target 'src/open_memstream.o' failed

So it isn't much of an improvement. Does it fix any other autobuilder issues?
Fabrice Fontaine Aug. 16, 2016, 2:11 p.m. UTC | #2
Dear Peter,

It seems that the link you provided is not correct as in this build, the old tinycbor 0.3.1 is being compiled. Could you provide me the correct link so I can reproduce the issue? I suspect you encountered a totally new issue with src/open_memstream.c which is being compiled only if open_memstream is found in the toolchain but this file is also using fopencookie which does not seem to be available in the toolchain. If I can reproduce the issue, I will make a new patch to check the presence of fopencookie an send it upstream.

Concerning your original question, tinycbor 0.3.2 includes directly the patch from Thomas, more details can be found her: https://github.com/01org/tinycbor/commit/31c7f81d45d115d2007b1c881cbbd3a19618465c.

The second patch removes the unnamed union, more details can be found here: https://patchwork.ozlabs.org/patch/652187/.

Best regards,

Fabrice

Le 16 août 2016 à 07:52, Peter Korsgaard <peter@korsgaard.com> a écrit :

>>>>>> "Fabrice" == Fabrice Fontaine <fontaine.fabrice@gmail.com> writes:
> 
>> Until tinycbor 0.4 is released, patch from dev branch is needed to
>> remove the usage of unnamed union which are not supported by all
>> targets such as blackfin
> 
> What autobuilder issues does this fix?
> 
> I tried building this config after applying both patches:
> 
> http://autobuild.buildroot.net/results/f4d/f4d15afb44f471878dbdee7c67cd836bd2b79904/
> 
> But it now fails with:
> 
> src/open_memstream.c: In function ‘open_memstream’:
> src/open_memstream.c:105: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘vtable’
> src/open_memstream.c:105: error: ‘vtable’ undeclared (first use in this function)
> src/open_memstream.c:105: error: (Each undeclared identifier is reported only once
> src/open_memstream.c:105: error: for each function it appears in.)
> src/open_memstream.c:105: error: expected expression before ‘{’ token
> src/open_memstream.c:111: warning: implicit declaration of function ‘fopencookie’
> src/open_memstream.c:111: warning: return makes pointer from integer without a cast
> Makefile:198: recipe for target 'src/open_memstream.o' failed
> 
> So it isn't much of an improvement. Does it fix any other autobuilder issues?
> 
> -- 
> Bye, Peter Korsgaard
Peter Korsgaard Aug. 16, 2016, 3:07 p.m. UTC | #3
>>>>> "Fabrice" == Fabrice Fontaine <fontaine.fabrice@gmail.com> writes:

 > Dear Peter,
 > It seems that the link you provided is not correct as in this build,
 > the old tinycbor 0.3.1 is being compiled.

Yes, naturally - There won't be any autobuilder results for 0.3.2 before
your patches get included in the buildroot repo.

I was expecting your patches to fix some of our existing (E.G. using
0.3.1) autobuilder issues, but that is apparently not the case?

 > Could you provide me the correct link so I can reproduce the issue? I
 > suspect you encountered a totally new issue with src/open_memstream.c
 > which is being compiled only if open_memstream is found in the
 > toolchain but this file is also using fopencookie which does not seem
 > to be available in the toolchain. If I can reproduce the issue, I
 > will make a new patch to check the presence of fopencookie an send it
 > upstream.

You should be able to reproduce the issue if you build the defconfig
from

http://autobuild.buildroot.net/results/f4d/f4d15afb44f471878dbdee7c67cd836bd2b79904/

After applying your 2 tinybcr patches.

 > Concerning your original question, tinycbor 0.3.2 includes directly
 > the patch from Thomas, more details can be found her:
 > https://github.com/01org/tinycbor/commit/31c7f81d45d115d2007b1c881cbbd3a19618465c.

Ok, so that means we can drop 
0001-Makefile-use-installation-logic-compatible-with-old-.patch, good.

> The second patch removes the unnamed union, more details can be found
> here: https://patchwork.ozlabs.org/patch/652187/.

Ok. It would be nice to mention that in the commit message.
Fabrice Fontaine Aug. 16, 2016, 8:57 p.m. UTC | #4
Dear Peter,

After more investigation, it seems that the uclibc for the blackfin target
is configured without __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
(./output/host/opt/ext-toolchain/bfin-uclinux/bfin-uclinux/runtime/usr/include/bits/uClibc_config.h).
Without this option, fopencookie is not available in the toolchain and so
the implementation of open_memstream function within tinycbor fails so I
would suggest to disable tinycbor if BR2_bfin target is set.

If this solution is acceptable, I can provide a patch.

Best Regards,

Fabrice

2016-08-16 17:07 GMT+02:00 Peter Korsgaard <peter@korsgaard.com>:

> >>>>> "Fabrice" == Fabrice Fontaine <fontaine.fabrice@gmail.com> writes:
>
>  > Dear Peter,
>  > It seems that the link you provided is not correct as in this build,
>  > the old tinycbor 0.3.1 is being compiled.
>
> Yes, naturally - There won't be any autobuilder results for 0.3.2 before
> your patches get included in the buildroot repo.
>
> I was expecting your patches to fix some of our existing (E.G. using
> 0.3.1) autobuilder issues, but that is apparently not the case?
>
>  > Could you provide me the correct link so I can reproduce the issue? I
>  > suspect you encountered a totally new issue with src/open_memstream.c
>  > which is being compiled only if open_memstream is found in the
>  > toolchain but this file is also using fopencookie which does not seem
>  > to be available in the toolchain. If I can reproduce the issue, I
>  > will make a new patch to check the presence of fopencookie an send it
>  > upstream.
>
> You should be able to reproduce the issue if you build the defconfig
> from
>
> http://autobuild.buildroot.net/results/f4d/f4d15afb44f471878dbdee7c67cd83
> 6bd2b79904/
>
> After applying your 2 tinybcr patches.
>
>  > Concerning your original question, tinycbor 0.3.2 includes directly
>  > the patch from Thomas, more details can be found her:
>  > https://github.com/01org/tinycbor/commit/31c7f81d45d115d2007b1c881cbbd3
> a19618465c.
>
> Ok, so that means we can drop
> 0001-Makefile-use-installation-logic-compatible-with-old-.patch, good.
>
> > The second patch removes the unnamed union, more details can be found
> > here: https://patchwork.ozlabs.org/patch/652187/.
>
> Ok. It would be nice to mention that in the commit message.
>
> --
> Venlig hilsen,
> Peter Korsgaard
>
Thomas Petazzoni Aug. 18, 2016, 7:30 p.m. UTC | #5
Hello,

On Tue, 16 Aug 2016 22:57:58 +0200, Fabrice Fontaine wrote:
> Dear Peter,
> 
> After more investigation, it seems that the uclibc for the blackfin target
> is configured without __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
> (./output/host/opt/ext-toolchain/bfin-uclinux/bfin-uclinux/runtime/usr/include/bits/uClibc_config.h).
> Without this option, fopencookie is not available in the toolchain and so
> the implementation of open_memstream function within tinycbor fails so I
> would suggest to disable tinycbor if BR2_bfin target is set.
> 
> If this solution is acceptable, I can provide a patch.

This solution as-is is not acceptable: we now have support for Blackfin
in the internal toolchain backend, in which case uClibc is built with
UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y.

Therefore, what you want to do is:

	# package uses fopencookie(), not available with this toolchain
	depends on !BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX

Could you resend a new patch series that takes into account this
aspect, and the other comments made by Peter Korsgaard?

Thanks!

Thomas
diff mbox

Patch

diff --git a/package/tinycbor/tinycbor.hash b/package/tinycbor/tinycbor.hash
index 258e0e6..8757047 100644
--- a/package/tinycbor/tinycbor.hash
+++ b/package/tinycbor/tinycbor.hash
@@ -1,2 +1,3 @@ 
 # Locally computed:
 sha256	f70de1e6b7e3750abb4ceacf0059e47b47c769f113434de10293b33867ce54c2	tinycbor-v0.3.2.tar.gz
+sha256	7d3aa839ae246e9e14fc73e67869d88c684802c1578fb75503f3fdde1482dcf6	ede7f1431ae06c9086f2a83a57bd7832d99280e3.patch
diff --git a/package/tinycbor/tinycbor.mk b/package/tinycbor/tinycbor.mk
index 1519680..6af2eef 100644
--- a/package/tinycbor/tinycbor.mk
+++ b/package/tinycbor/tinycbor.mk
@@ -9,6 +9,12 @@  TINYCBOR_SITE = $(call github,01org,tinycbor,$(TINYCBOR_VERSION))
 TINYCBOR_LICENSE = MIT
 TINYCBOR_LICENSE_FILES = LICENSE
 
+# This patch fixes the issue on unnamed union which are not supported by some
+# targets like blackfin
+# This patch is currently in dev branch and will be a part of v0.4
+TINYCBOR_PATCH = \
+	https://github.com/01org/tinycbor/commit/ede7f1431ae06c9086f2a83a57bd7832d99280e3.patch
+
 TINYCBOR_DEPENDENCIES = host-pkgconf
 TINYCBOR_INSTALL_STAGING = YES