diff mbox

bluez5_utils: add autoreconf back

Message ID 20161205131504.28872-1-gary.bisson@boundarydevices.com
State Not Applicable
Headers show

Commit Message

Gary Bisson Dec. 5, 2016, 1:15 p.m. UTC
Not necessary for an unmodified package. However if your external
layer includes BlueZ5 patches which brings new files (such as a
new hciattach protocol), it will not be built since the Makefile.in
is already there.

Forcing an autoreconf fixes such issue.

Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
---
Hi all,

I know this is a corner case which isn't a problem for 99% of users
so I won't be surprised if it is rejected.

The use case here is that we provide a WiFi/BT combo from Qualcomm
(QCA9377) which isn't supported in upstream BlueZ5.
https://boundarydevices.com/product/bd_sdmac_wifi/

Qualcomm said there was no plan to upstream the support, but provides
their own (outdated) tree in codeaurora:
https://source.codeaurora.org/quic/la/platform/external/bluetooth/bluez/

We generated a patch out of that repo that allows to add support for
this chip in Yocto (with a simple bbappend):
https://github.com/boundarydevices/meta-boundary/tree/krogoth/recipes-connectivity/bluez5/bluez5

Now the idea is to provide a Boundary external layer that adds support
for this chip in Buildroot.

When adding this patch, the builds fails since hciattach_rome.c isn't
specified in the Makefile.in already present in the archive.

Let me know if there's another opion in your opinion.

Regards,
Gary
---
 package/bluez5_utils/bluez5_utils.mk | 1 +
 1 file changed, 1 insertion(+)

Comments

Thomas Petazzoni Dec. 5, 2016, 8:32 p.m. UTC | #1
Hello,

On Mon,  5 Dec 2016 14:15:04 +0100, Gary Bisson wrote:
> Not necessary for an unmodified package. However if your external
> layer includes BlueZ5 patches which brings new files (such as a
> new hciattach protocol), it will not be built since the Makefile.in
> is already there.
> 
> Forcing an autoreconf fixes such issue.
> 
> Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
> ---
> Hi all,
> 
> I know this is a corner case which isn't a problem for 99% of users
> so I won't be surprised if it is rejected.

Indeed :)

> The use case here is that we provide a WiFi/BT combo from Qualcomm
> (QCA9377) which isn't supported in upstream BlueZ5.
> https://boundarydevices.com/product/bd_sdmac_wifi/
> 
> Qualcomm said there was no plan to upstream the support, but provides
> their own (outdated) tree in codeaurora:
> https://source.codeaurora.org/quic/la/platform/external/bluetooth/bluez/
> 
> We generated a patch out of that repo that allows to add support for
> this chip in Yocto (with a simple bbappend):
> https://github.com/boundarydevices/meta-boundary/tree/krogoth/recipes-connectivity/bluez5/bluez5
> 
> Now the idea is to provide a Boundary external layer that adds support
> for this chip in Buildroot.
> 
> When adding this patch, the builds fails since hciattach_rome.c isn't
> specified in the Makefile.in already present in the archive.
> 
> Let me know if there's another opion in your opinion.

Have you tried adding BLUEZ5_AUTORECONF = YES to your external.mk file?

Thanks,

Thomas
Arnout Vandecappelle Dec. 5, 2016, 9:16 p.m. UTC | #2
On 05-12-16 21:32, Thomas Petazzoni wrote:
> Hello,
> 
> On Mon,  5 Dec 2016 14:15:04 +0100, Gary Bisson wrote:
>> Not necessary for an unmodified package. However if your external
>> layer includes BlueZ5 patches which brings new files (such as a
>> new hciattach protocol), it will not be built since the Makefile.in
>> is already there.
>>
>> Forcing an autoreconf fixes such issue.
>>
>> Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
>> ---
>> Hi all,
>>
>> I know this is a corner case which isn't a problem for 99% of users
>> so I won't be surprised if it is rejected.
> 
> Indeed :)
> 
>> The use case here is that we provide a WiFi/BT combo from Qualcomm
>> (QCA9377) which isn't supported in upstream BlueZ5.
>> https://boundarydevices.com/product/bd_sdmac_wifi/
>>
>> Qualcomm said there was no plan to upstream the support, but provides
>> their own (outdated) tree in codeaurora:
>> https://source.codeaurora.org/quic/la/platform/external/bluetooth/bluez/
>>
>> We generated a patch out of that repo that allows to add support for
>> this chip in Yocto (with a simple bbappend):
>> https://github.com/boundarydevices/meta-boundary/tree/krogoth/recipes-connectivity/bluez5/bluez5
>>
>> Now the idea is to provide a Boundary external layer that adds support
>> for this chip in Buildroot.
>>
>> When adding this patch, the builds fails since hciattach_rome.c isn't
>> specified in the Makefile.in already present in the archive.
>>
>> Let me know if there's another opion in your opinion.
> 
> Have you tried adding BLUEZ5_AUTORECONF = YES to your external.mk file?

 That won't work, because it's used in an ifeq in the autotools-package
expansion, and external.mk is included after the packages.

 It does work if you put it in override.mk, but that's not convenient in an
external.

 Regards,
 Arnout
Thomas Petazzoni Dec. 5, 2016, 9:19 p.m. UTC | #3
Hello,

On Mon, 5 Dec 2016 22:16:03 +0100, Arnout Vandecappelle wrote:

> > Have you tried adding BLUEZ5_AUTORECONF = YES to your external.mk file?  
> 
>  That won't work, because it's used in an ifeq in the autotools-package
> expansion, and external.mk is included after the packages.

Gah.

>  It does work if you put it in override.mk, but that's not convenient in an
> external.

I guess you wanted to say "local.mk" and not "override.mk", right?

But in any case, I don't think we want to have a <pkg>_AUTORECONF = YES
in a package "just in case" someone has patches against this package in
his external tree. Otherwise, all autoconf packages should be
<pkg>_AUTORECONF = YES.

So, we've got two options here:

 1. Say that having to change the original .mk file of a package in
    Buildroot is a fact of life if you add custom patches for this
    package.

 2. Imagine a mechanism that allows the "external" stuff to set
    autoreconf on a per-package basis.

Thomas
Arnout Vandecappelle Dec. 5, 2016, 10 p.m. UTC | #4
On 05-12-16 22:19, Thomas Petazzoni wrote:
> Hello,
> 
> On Mon, 5 Dec 2016 22:16:03 +0100, Arnout Vandecappelle wrote:
> 
>>> Have you tried adding BLUEZ5_AUTORECONF = YES to your external.mk file?  
>>
>>  That won't work, because it's used in an ifeq in the autotools-package
>> expansion, and external.mk is included after the packages.
> 
> Gah.
> 
>>  It does work if you put it in override.mk, but that's not convenient in an
>> external.
> 
> I guess you wanted to say "local.mk" and not "override.mk", right?
> 
> But in any case, I don't think we want to have a <pkg>_AUTORECONF = YES
> in a package "just in case" someone has patches against this package in
> his external tree. Otherwise, all autoconf packages should be
> <pkg>_AUTORECONF = YES.
> 
> So, we've got two options here:
> 
>  1. Say that having to change the original .mk file of a package in
>     Buildroot is a fact of life if you add custom patches for this
>     package.

 Actually, for this particular case, it would be sufficient to patch Makefile in
addition to Makefile.in. Which is a fact of life I'd say. We also sometimes have
to do that when autoreconf doesn't work.


>  2. Imagine a mechanism that allows the "external" stuff to set
>     autoreconf on a per-package basis.

 Eek please no.

 One thing I can imagine is that the expansion of the package infras is done
later (after inclusion of external.mk). The first pass would just set variables,
not define rules and definitely not use any ifdefs. The rules etc. would then
have to avoid using $(1) $(2) etc, and just rely on $($(PKG)_NAME) and friends.

 Regards,
 Arnout
Peter Korsgaard Dec. 5, 2016, 10:39 p.m. UTC | #5
>>>>> "Arnout" == Arnout Vandecappelle <arnout@mind.be> writes:

Hi,

 >> So, we've got two options here:
 >> 
 >> 1. Say that having to change the original .mk file of a package in
 >> Buildroot is a fact of life if you add custom patches for this
 >> package.

 >  Actually, for this particular case, it would be sufficient to patch Makefile in
 > addition to Makefile.in. Which is a fact of life I'd say. We also sometimes have
 > to do that when autoreconf doesn't work.

 >> 2. Imagine a mechanism that allows the "external" stuff to set
 >> autoreconf on a per-package basis.

 >  Eek please no.

 >  One thing I can imagine is that the expansion of the package infras is done
 > later (after inclusion of external.mk). The first pass would just set variables,
 > not define rules and definitely not use any ifdefs. The rules etc. would then
 > have to avoid using $(1) $(2) etc, and just rely on $($(PKG)_NAME) and friends.

Lets not complicate things too much. Just patching Makefile as well
and/or modifying the package is imho good enough.
Gary Bisson Dec. 5, 2016, 10:52 p.m. UTC | #6
Hi all,

On Mon, Dec 5, 2016 at 11:39 PM, Peter Korsgaard <peter@korsgaard.com> wrote:
>>>>>> "Arnout" == Arnout Vandecappelle <arnout@mind.be> writes:
>
> Hi,
>
>  >> So, we've got two options here:
>  >>
>  >> 1. Say that having to change the original .mk file of a package in
>  >> Buildroot is a fact of life if you add custom patches for this
>  >> package.
>
>  >  Actually, for this particular case, it would be sufficient to patch Makefile in
>  > addition to Makefile.in. Which is a fact of life I'd say. We also sometimes have
>  > to do that when autoreconf doesn't work.
>
>  >> 2. Imagine a mechanism that allows the "external" stuff to set
>  >> autoreconf on a per-package basis.
>
>  >  Eek please no.
>
>  >  One thing I can imagine is that the expansion of the package infras is done
>  > later (after inclusion of external.mk). The first pass would just set variables,
>  > not define rules and definitely not use any ifdefs. The rules etc. would then
>  > have to avoid using $(1) $(2) etc, and just rely on $($(PKG)_NAME) and friends.
>
> Lets not complicate things too much. Just patching Makefile as well
> and/or modifying the package is imho good enough.

Sure it's a solution but it's a shame I can't use the Yocto patch
as-is. BTW, is Yocto always performing an autoreconf for autotools
packages?

The external.mk solution sounds interesting.

Thanks for your interest in this case anyway.

Regards,
Gary
diff mbox

Patch

diff --git a/package/bluez5_utils/bluez5_utils.mk b/package/bluez5_utils/bluez5_utils.mk
index 49cc7c2..af92926 100644
--- a/package/bluez5_utils/bluez5_utils.mk
+++ b/package/bluez5_utils/bluez5_utils.mk
@@ -11,6 +11,7 @@  BLUEZ5_UTILS_INSTALL_STAGING = YES
 BLUEZ5_UTILS_DEPENDENCIES = dbus libglib2
 BLUEZ5_UTILS_LICENSE = GPLv2+, LGPLv2.1+
 BLUEZ5_UTILS_LICENSE_FILES = COPYING COPYING.LIB
+BLUEZ5_UTILS_AUTORECONF = YES
 
 BLUEZ5_UTILS_CONF_OPTS = 	\
 	--enable-tools 		\