[Buildroot] [PATCH 2/2] sigrok: new package
Bartosz Golaszewski
bgolaszewski at baylibre.com
Thu Jan 29 11:38:45 UTC 2015
2015-01-29 0:32 GMT+01:00 Arnout Vandecappelle <arnout at mind.be>:
> Hi Bartosz,
>
> Thanks for your contribution. I haven't tested this one yet, but I have some
> remarks.
>
>
> On 27/01/15 17:02, Bartosz Golaszewski wrote:
>> Add sigrok libraries and sigrok-cli executable in a single package.
>
> Is there a good reason to put everything in a single package? We normally make
> separate packages for everything. We also don't like putting things in a
> subdirectory very much. So I'd expect three separate packages:
>
> package/libserialport
> package/libsigrok
> package/libsigrokdecode
> package/sigrok-cli
>
> The first three would go in the Libraries -> Hardware Handling menu, while the
> cli would go in the Packages -> Hardware Handling menu.
>
>
>>
>> Signed-off-by: Bartosz Golaszewski <bgolaszewski at baylibre.com>
>> ---
>> package/Config.in | 1 +
>> package/sigrok/Config.in | 37 +++++++++++++++++++++++
>> package/sigrok/libserialport/libserialport.mk | 15 +++++++++
>> package/sigrok/libsigrok/libsigrok.mk | 16 ++++++++++
>> package/sigrok/libsigrokdecode/libsigrokdecode.mk | 16 ++++++++++
>> package/sigrok/sigrok.mk | 10 ++++++
>> package/sigrok/sigrokcli/sigrokcli.mk | 14 +++++++++
>> 7 files changed, 109 insertions(+)
>> create mode 100644 package/sigrok/Config.in
>> create mode 100644 package/sigrok/libserialport/libserialport.mk
>> create mode 100644 package/sigrok/libsigrok/libsigrok.mk
>> create mode 100644 package/sigrok/libsigrokdecode/libsigrokdecode.mk
>> create mode 100644 package/sigrok/sigrok.mk
>> create mode 100644 package/sigrok/sigrokcli/sigrokcli.mk
>>
>> diff --git a/package/Config.in b/package/Config.in
>> index 2d0adac..fe2f417 100644
>> --- a/package/Config.in
>> +++ b/package/Config.in
>> @@ -364,6 +364,7 @@ endif
>> source "package/sdparm/Config.in"
>> source "package/setserial/Config.in"
>> source "package/sg3_utils/Config.in"
>> + source "package/sigrok/Config.in"
>> source "package/sispmctl/Config.in"
>> source "package/smartmontools/Config.in"
>> source "package/smstools3/Config.in"
>> diff --git a/package/sigrok/Config.in b/package/sigrok/Config.in
>> new file mode 100644
>> index 0000000..f5f52ce
>> --- /dev/null
>> +++ b/package/sigrok/Config.in
>> @@ -0,0 +1,37 @@
>> +config BR2_PACKAGE_SIGROK
>> + bool "sigrok"
>> + select BR2_PACKAGE_LIBSERIALPORT
>> + select BR2_PACKAGE_LIBSIGROK
>> + select BR2_PACKAGE_LIBSIGROKDECODE
>> + select BR2_PACKAGE_SIGROKCLI
>> + # libglib2 & python3:
>> + depends on BR2_USE_WCHAR
>
> We usually put something like:
>
> depends on BR2_USE_WCHAR # libsigrok->libglib2, libsigrokdecode->python3
>
>> + depends on BR2_TOOLCHAIN_HAS_THREADS
>> + depends on BR2_USE_MMU
>> + help
>> + Signal analysis software suite.
>> +
>> + This package contains the sigrok software suite: libserialport,
>> + libsigrok, libsigrokdecode libraries and sigrok-cli command-line
>> + utility.
>> +
>> + http://sigrok.org/
>> +
>> +comment "sigrok needs a toolchain w/ wchar, threads
>> + depends on BR2_USE_MMU
>> + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS
>> +
>> +config BR2_PACKAGE_LIBSERIALPORT
>> + bool
>> +
>> +config BR2_PACKAGE_LIBSIGROK
>> + bool
>> + select BR2_PACKAGE_LIBGLIB2
>> + select BR2_PACKAGE_LIBZIP
>> +
>> +config BR2_PACKAGE_LIBSIGROKDECODE
>> + bool
>> + select BR2_PACKAGE_PYTHON3
>> +
>> +config BR2_PACKAGE_SIGROKCLI
>> + bool
>> diff --git a/package/sigrok/libserialport/libserialport.mk b/package/sigrok/libserialport/libserialport.mk
>> new file mode 100644
>> index 0000000..970e1c1
>> --- /dev/null
>> +++ b/package/sigrok/libserialport/libserialport.mk
>> @@ -0,0 +1,15 @@
>> +################################################################################
>> +#
>> +# libserialport
>> +#
>> +################################################################################
>> +
>> +LIBSERIALPORT_VERSION = HEAD
>
> We want a specific version so the build is reproducible. Preferably a tag, but
> in this case I guess it would be a full commit ID:
> e31f2c6b8b8f2b7e554df911cc9a3482b99632b4
>
> But I understand you plan to do that as soon as the ACME drivers have been
> accepted.
>
>
> Or a tarball is even better. If you can convince upstream to create a release?
>
> Same for the other packages of course.
>
>
>> +LIBSERIALPORT_SITE = git://sigrok.org/libserialport
>
> If http is possible, that is preferable, because not all company firewalls
> allow git to pass.
>
>> +LIBSERIALPORT_LICENSE = LGPLv3+
>> +LIBSERIALPORT_LICENSE_FILES = COPYING
>> +LIBSERIALPORT_AUTORECONF = YES
>
> We usually but a comment why autoreconf is needed:
>
> # git checkout has no configure script
>
>> +LIBSERIALPORT_INSTALL_STAGING = YES
>> +LIBSERIALPORT_PRE_CONFIGURE_HOOKS += SIGROK_ADD_MISSING
>
> Hm. I like it when code duplication is avoided, but for e.g. phpize we do
> duplicate it. Not sure...
>
>
>> +
>> +$(eval $(autotools-package))
>> diff --git a/package/sigrok/libsigrok/libsigrok.mk b/package/sigrok/libsigrok/libsigrok.mk
>> new file mode 100644
>> index 0000000..4a61f6c
>> --- /dev/null
>> +++ b/package/sigrok/libsigrok/libsigrok.mk
>> @@ -0,0 +1,16 @@
>> +################################################################################
>> +#
>> +# libsigrok
>> +#
>> +################################################################################
>> +
>> +LIBSIGROK_VERSION = HEAD
>> +LIBSIGROK_SITE = git://sigrok.org/libsigrok
>> +LIBSIGROK_LICENSE = GPLv3+
>> +LIBSIGROK_LICENSE = COPYING
>> +LIBSIGROK_AUTORECONF = YES
>> +LIBSIGROK_INSTALL_STAGING = YES
>> +LIBSIGROK_DEPENDENCIES = libglib2 libzip
>> +LIBSIGROK_PRE_CONFIGURE_HOOKS += SIGROK_ADD_MISSING
>
> I see a lot of optional dependencies here. We prefer to handle them explicitly,
> either disabling them:
>
> LIBSIGROK_CONF_OPTS = \
> --disable-libftdi \
> --disable-libusb \
> --disable-bindings
>
> or handling them:
>
> ifeq ($(BR2_PACKAGE_LIBFTDI),y)
> LIBSIGROK_CONF_OPTS += --enable-libftdi
> LIBSIGROK_DEPENDENCIES += libftdi
> else
> LIBSIGROK_CONF_OPTS += --disable-libftdi
> endif
>
>
> This makes sure that the build result is the same regardless of the order in
> which things are built.
>
>
> Note that there is also an optional dependency on glibmm, but it can't be
> disabled. This should be handled like this:
>
> ifeq ($(BR2_PACKAGE_GLIBMM),y)
> LIBSIGROK_DEPENDENCIES += glibmm
> endif
>
>
> Same for python-gobject.
>
> Check configure.ac for more.
>
>
>> +
>> +$(eval $(autotools-package))
> [snip]
>> diff --git a/package/sigrok/sigrokcli/sigrokcli.mk b/package/sigrok/sigrokcli/sigrokcli.mk
>> new file mode 100644
>> index 0000000..3d984ef
>> --- /dev/null
>> +++ b/package/sigrok/sigrokcli/sigrokcli.mk
>> @@ -0,0 +1,14 @@
>> +################################################################################
>> +#
>> +# sigrok-cli
>> +#
>> +################################################################################
>> +
>> +SIGROKCLI_VERSION = HEAD
>> +SIGROKCLI_SITE = git://sigrok.org/sigrok-cli
>> +SIGROKCLI_LICENSE = GPLv3+
>> +SIGROKCLI_LICENSE_FILES = COPYING
>> +SIGROKCLI_AUTORECONF = YES
>> +SIGROKCLI_PRE_CONFIGURE_HOOKS += SIGROK_ADD_MISSING
>
> The optional dependency on libsigrokdecode should definitely be handled here.
>
>
> Regards,
> Arnout
Hi Arnout,
thanks for the review! Please check the updated version I've just
submitted. Tested on a BeagleBone Black.
Bart
More information about the buildroot
mailing list