libusb: add an option to compile examples
PATCH v3 1/1 libusb: add an option to compile examples
---
Changes since v1:
- remove presence check.
Changes since v2:
- fix typo in list of examples
package/libusb/Config.in | 7 +++++++ package/libusb/libusb.mk | 10 ++++++++++ 2 files changed, 17 insertions(+)
package/libusb/Config.in +7 -0
@@ -6,5 +6,12 @@ config BR2_PACKAGE_LIBUSB http://libusb.info/ +if BR2_PACKAGE_LIBUSB + +config BR2_PACKAGE_LIBUSB_EXAMPLES + bool "build libusb examples" + +endif + comment "libusb needs a toolchain w/ threads" depends on !BR2_TOOLCHAIN_HAS_THREADS
package/libusb/libusb.mk +10 -0
@@ -25,5 +25,15 @@ else LIBUSB_CONF_OPTS += --disable-udev endif +ifeq ($(BR2_PACKAGE_LIBUSB_EXAMPLES),y) +LIBUSB_CONF_OPTS += --enable-examples-build +define LIBUSB_INSTALL_TARGET_EXAMPLES + for example in listdevs xusb fxload hotplugtest testlibusb dpfp dpfp_threaded sam3u_benchmark ; do \ + cp -dpfr $(@D)/examples/$${example} $(TARGET_DIR)/usr/bin; \ + done +endef +LIBUSB_POST_INSTALL_TARGET_HOOKS += LIBUSB_INSTALL_TARGET_EXAMPLES +endif + $(eval $(autotools-package)) $(eval $(host-autotools-package))
Signature · 1 line
2.11.0
PATCH v3 1/1 libusb: add an option to compile examples
Hello,
package/libusb/libusb.mk else · line 31
Quoted 4 lines · Ga?l PORTAY
package/libusb/libusb.mk +4
-0+ifeq ($(BR2_PACKAGE_LIBUSB_EXAMPLES),y) +LIBUSB_CONF_OPTS += --enable-examples-build +define LIBUSB_INSTALL_TARGET_EXAMPLES + for example in listdevs xusb fxload hotplugtest testlibusb dpfp dpfp_threaded sam3u_benchmark ; do \
As I said in a review of an earlier version, you should use a make loop instead of a shell loop. One benefit of make loops is that they bail out if one iteration of the loop fails. A shell loop doesn't, and continues with the next iterations.
package/libusb/libusb.mk else · line 32
Quoted 1 line
package/libusb/libusb.mk +1
-0+ cp -dpfr $(@D)/examples/$${example} $(TARGET_DIR)/usr/bin; \
This should have use $(INSTALL) -D -m 0755 and a full destination path.
I've fixed both issues and applied.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com
PATCH v3 1/1 libusb: add an option to compile examples
Thomas,
Quoted 4 lines · Thomas Petazzoni
Hello,
On Mon, 11 Jun 2018 09:47:50 -0400, Ga?l PORTAY wrote:
Quoted 10 lines
package/libusb/libusb.mk else · line 31
Quoted 4 lines
package/libusb/libusb.mk +4
-0+ifeq ($(BR2_PACKAGE_LIBUSB_EXAMPLES),y) +LIBUSB_CONF_OPTS += --enable-examples-build +define LIBUSB_INSTALL_TARGET_EXAMPLES + for example in listdevs xusb fxload hotplugtest testlibusb dpfp dpfp_threaded sam3u_benchmark ; do \As I said in a review of an earlier version, you should use a make loop instead of a shell loop. One benefit of make loops is that they bail out if one iteration of the loop fails. A shell loop doesn't, and continues with the next iterations.
Sorry to have missed your review.
Hum... the shell's for loop exits in error too when an iteration fails; which causes make failure for TARGET_INSTALL (unless set +e is specified)... or maybe I missed something :/
Whatever, I really do prefer your solution.
Quoted 6 lines
package/libusb/libusb.mk else · line 32
Quoted 1 line
package/libusb/libusb.mk +1
-0+ cp -dpfr $(@D)/examples/$${example} $(TARGET_DIR)/usr/bin; \This should have use $(INSTALL) -D -m 0755 and a full destination path.
I've fixed both issues and applied.
I pretty sure I picked up this part of code from another package in buildroot. I can apply the same changes to keep package consistent.
Quoted 11 lines
Thanks!
Thomas
Signature · 7 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
PATCH v3 1/1 libusb: add an option to compile examples
Hello,
Quoted 11 lines · Ga?l PORTAY
Quoted 5 lines
As I said in a review of an earlier version, you should use a make loop instead of a shell loop. One benefit of make loops is that they bail out if one iteration of the loop fails. A shell loop doesn't, and continues with the next iterations.
Sorry to have missed your review.
Hum... the shell's for loop exits in error too when an iteration fails; which causes make failure for
TARGET_INSTALL(unless set +e is specified)... or maybe I missed something :/
I don't think shell snippets executed by make are executed with set -e.
Quoted 9 lines
Quoted 6 lines
package/libusb/libusb.mk else · line 32
Quoted 1 line
package/libusb/libusb.mk +1
-0+ cp -dpfr $(@D)/examples/$${example} $(TARGET_DIR)/usr/bin; \This should have use $(INSTALL) -D -m 0755 and a full destination path.
I've fixed both issues and applied.
I pretty sure I picked up this part of code from another package in buildroot. I can apply the same changes to keep package consistent.
We do use "cp -dpfr" to copy entire directories. But for individual files, we prefer $(INSTALL).
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com