wiringpi: new package
PATCH v2 1/1 wiringpi: new package
---
Changes v1 -> v2:
- fix typo in commit message (wirinpi vs wiringpi)
--- package/Config.in | 1 + ...-Fix-devLib-gpio-include-and-library-path.patch | 40 ++++++++++++++++++++++ package/wiringpi/Config.in | 6 ++++ package/wiringpi/wiringpi.mk | 29 ++++++++++++++++ 4 files changed, 76 insertions(+) create mode 100644 package/wiringpi/0001-Fix-devLib-gpio-include-and-library-path.patch create mode 100644 package/wiringpi/Config.in create mode 100644 package/wiringpi/wiringpi.mk
package/Config.in +1 -0
@@ -438,6 +438,7 @@ endif source "package/w_scan/Config.in" source "package/wf111/Config.in" source "package/wipe/Config.in" + source "package/wiringpi/Config.in" source "package/xorriso/Config.in" endmenu
package/wiringpi/0001-Fix-devLib-gpio-include-and-library-path.patch new file +40 -0
@@ -0,0 +1,40 @@ +From d0e4c2ac47776e60fac64143a58b4fbe23f433be Mon Sep 17 00:00:00 2001 +From: Peter Seiderer <[email protected]> +Date: Tue, 24 Nov 2015 22:26:13 +0100 +Subject: [PATCH] Fix devLib/gpio include and library path. + +Signed-off-by: Peter Seiderer <[email protected]> +--- + devLib/Makefile | 2 +- + gpio/Makefile | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/devLib/Makefile b/devLib/Makefile +index 0fb0033..f956abe 100644 +--- a/devLib/Makefile ++++ b/devLib/Makefile +@@ -37,7 +37,7 @@ DYNAMIC=libwiringPiDev.so.$(VERSION) + #DEBUG = -g -O0 + DEBUG = -O2 + CC = gcc +-INCLUDE = -I. ++INCLUDE = -I$(DESTDIR)$(PREFIX)/wiringPi -I$(DESTDIR)$(PREFIX)/devLib + DEFS = -D_GNU_SOURCE + CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC + +diff --git a/gpio/Makefile b/gpio/Makefile +index 7dcd090..f5b588a 100644 +--- a/gpio/Makefile ++++ b/gpio/Makefile +@@ -33,7 +33,7 @@ endif + #DEBUG = -g -O0 + DEBUG = -O2 + CC = gcc +-INCLUDE = -I$(DESTDIR)$(PREFIX)/include ++INCLUDE = -I$(DESTDIR)$(PREFIX)/wiringPi -I$(DESTDIR)$(PREFIX)/devLib + CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe + + LDFLAGS = -L$(DESTDIR)$(PREFIX)/lib +-- +2.1.4 +
package/wiringpi/Config.in new file +6 -0
@@ -0,0 +1,6 @@ +config BR2_PACKAGE_WIRINGPI + bool "wiringpi" + help + wiringPi libraries (and gpio command) + + http://wiringpi.com/
package/wiringpi/wiringpi.mk new file +29 -0
@@ -0,0 +1,29 @@ +WIRINGPI_VERSION = 2.29 +WIRINGPI_SITE = git://git.drogon.net/wiringPi +WIRINGPI_INSTALL_STAGING = YES + +define WIRINGPI_BUILD_CMDS + $(MAKE) -C $(@D)/wiringPi CC=$(TARGET_CC) + $(INSTALL) -D -m 0755 $(@D)/wiringPi/libwiringPi.so.2.29 $(STAGING_DIR)/usr/lib/libwiringPi.so.2.29 + ln -sf $(STAGING_DIR)/usr/lib/libwiringPi.so.2.29 $(STAGING_DIR)/usr/lib/libwiringPi.so + $(MAKE) -C $(@D)/devLib CC=$(TARGET_CC) PREFIX=$(@D) DESTDIR= + $(INSTALL) -D -m 0755 $(@D)/devLib/libwiringPiDev.so.2.29 $(STAGING_DIR)/usr/lib/libwiringPiDev.so.2.29 + ln -sf $(STAGING_DIR)/usr/lib/libwiringPiDev.so.2.29 $(STAGING_DIR)/usr/lib/libwiringPiDev.so + $(MAKE) -C $(@D)/gpio CC=$(TARGET_CC) PREFIX=$(@D) DESTDIR= +endef + +define WIRINGPI_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/wiringPi/*.h $(STAGING_DIR)/usr/include + $(INSTALL) -D -m 0644 $(@D)/devLib/*.h $(STAGING_DIR)/usr/include +endef + +define WIRINGPI_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/wiringPi/libwiringPi.so* $(TARGET_DIR)/usr/lib + ln -sf libwiringPi.so.2.29 $(TARGET_DIR)/usr/lib/libwiringPi.so + $(INSTALL) -D -m 0755 $(@D)/devLib/libwiringPiDev.so* $(TARGET_DIR)/usr/lib + ln -sf libwiringPiDev.so.2.29 $(TARGET_DIR)/usr/lib/libwiringPiDev.so + $(INSTALL) -D -m 0755 $(@D)/gpio/gpio $(TARGET_DIR)/usr/bin + $(INSTALL) -D -m 0755 $(@D)/gpio/pintest $(TARGET_DIR)/usr/bin +endef + +$(eval $(generic-package))
Signature · 1 line
2.1.4
PATCH v2 1/1 wiringpi: new package
Dear Peter Seiderer,
package/Config.in endif · line 441
Quoted 9 lines · Peter Seiderer
package/Config.in +1
-0@@ -438,6 +438,7 @@ endif source "package/w_scan/Config.in" source "package/wf111/Config.in" source "package/wipe/Config.in" + source "package/wiringpi/Config.in"
Isn't wiringpi mainly a library ? Maybe it should go under Libraries -> Hardware handling.
Quoted 13 lines
package/Config.in +13
-0+diff --git a/devLib/Makefile b/devLib/Makefile +index 0fb0033..f956abe 100644 +--- a/devLib/Makefile ++++ b/devLib/Makefile +@@ -37,7 +37,7 @@ DYNAMIC=libwiringPiDev.so.$(VERSION) + #DEBUG = -g -O0 + DEBUG = -O2 + CC = gcc +-INCLUDE = -I. ++INCLUDE = -I$(DESTDIR)$(PREFIX)/wiringPi -I$(DESTDIR)$(PREFIX)/devLib + DEFS = -D_GNU_SOURCE + CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC +
package/Config.in endif
Quoted 10 lines
package/Config.in +10
-0+diff --git a/gpio/Makefile b/gpio/Makefile +index 7dcd090..f5b588a 100644 +--- a/gpio/Makefile ++++ b/gpio/Makefile +@@ -33,7 +33,7 @@ endif + #DEBUG = -g -O0 + DEBUG = -O2 + CC = gcc +-INCLUDE = -I$(DESTDIR)$(PREFIX)/include ++INCLUDE = -I$(DESTDIR)$(PREFIX)/wiringPi -I$(DESTDIR)$(PREFIX)/devLib
This patch is not correct I believe. It makes the assumption that wiringPi is already installed in $(DESTDIR)$(PREFIX), which it is not when you are building it.
package/wiringpi/wiringpi.mk
Quoted 6 lines
package/wiringpi/wiringpi.mk new file +0
-0@@ -0,0 +1,29 @@
Missing comment header.
package/wiringpi/wiringpi.mk line 3
Quoted 3 lines
package/wiringpi/wiringpi.mk new file +3
-0+WIRINGPI_VERSION = 2.29 +WIRINGPI_SITE = git://git.drogon.net/wiringPi +WIRINGPI_INSTALL_STAGING = YES
Missing license + license file information.
package/wiringpi/wiringpi.mk line 6
Quoted 3 lines
package/wiringpi/wiringpi.mk new file +3
-0+ +define WIRINGPI_BUILD_CMDS + $(MAKE) -C $(@D)/wiringPi CC=$(TARGET_CC)
It would be a lot better to use $(TARGET_CONFIGURE_OPTS), and $(TARGET_MAKE_ENV), i.e:
$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/wiringPi
the CC=$(TARGET_CC) is already part of TARGET_CONFIGURE_OPTS. Also you will probably have to adjust the Makefile to turn CFLAGS = into CFLAGS
+=.
package/wiringpi/wiringpi.mk line 8
Quoted 2 lines
package/wiringpi/wiringpi.mk new file +2
-0+ $(INSTALL) -D -m 0755 $(@D)/wiringPi/libwiringPi.so.2.29 $(STAGING_DIR)/usr/lib/libwiringPi.so.2.29 + ln -sf $(STAGING_DIR)/usr/lib/libwiringPi.so.2.29 $(STAGING_DIR)/usr/lib/libwiringPi.so
Why are you doing installation within the <pkg>_BUILDS_CMDS ? This is not good ?
package/wiringpi/wiringpi.mk line 9
Quoted 1 line
package/wiringpi/wiringpi.mk new file +1
-0+ $(MAKE) -C $(@D)/devLib CC=$(TARGET_CC) PREFIX=$(@D) DESTDIR=
Why is DESTDIR= needed here ?
package/wiringpi/wiringpi.mk line 11
Quoted 2 lines
package/wiringpi/wiringpi.mk new file +2
-0+ $(INSTALL) -D -m 0755 $(@D)/devLib/libwiringPiDev.so.2.29 $(STAGING_DIR)/usr/lib/libwiringPiDev.so.2.29 + ln -sf $(STAGING_DIR)/usr/lib/libwiringPiDev.so.2.29 $(STAGING_DIR)/usr/lib/libwiringPiDev.so
Ditto installation.
package/wiringpi/wiringpi.mk line 17
Quoted 6 lines
package/wiringpi/wiringpi.mk new file +6
-0+ $(MAKE) -C $(@D)/gpio CC=$(TARGET_CC) PREFIX=$(@D) DESTDIR= +endef + +define WIRINGPI_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/wiringPi/*.h $(STAGING_DIR)/usr/include + $(INSTALL) -D -m 0644 $(@D)/devLib/*.h $(STAGING_DIR)/usr/include
This is not good because $(INSTALL) -D expect a full destination path. I guess the easiest is just:
cp -dpfr $(@D)/wiringPi/*.h $(STAGING_DIR)/usr/include
package/wiringpi/wiringpi.mk line 26
Quoted 7 lines
package/wiringpi/wiringpi.mk new file +7
-0+define WIRINGPI_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/wiringPi/libwiringPi.so* $(TARGET_DIR)/usr/lib + ln -sf libwiringPi.so.2.29 $(TARGET_DIR)/usr/lib/libwiringPi.so + $(INSTALL) -D -m 0755 $(@D)/devLib/libwiringPiDev.so* $(TARGET_DIR)/usr/lib + ln -sf libwiringPiDev.so.2.29 $(TARGET_DIR)/usr/lib/libwiringPiDev.so + $(INSTALL) -D -m 0755 $(@D)/gpio/gpio $(TARGET_DIR)/usr/bin + $(INSTALL) -D -m 0755 $(@D)/gpio/pintest $(TARGET_DIR)/usr/bin
Same comments here: $(INSTALL) -D requires a full destination path. Otherwise, if $(TARGET_DIR)/usr/bin doesn't exist as a directory, you will have you "pintest" program installed as "bin" in $(TARGET_DIR)/usr.
Moreover, the upstream project has some "install" and "install-static" targets. You should use them instead of doing manual installation.
Finally, if you're installing unconditionally shared libraries, then it means that they are always being built. So your package should depend on !BR2_STATIC_LIBS.
Can you fix those comments and send an updated version ?
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v2 1/1 wiringpi: new package
Hello Thomas,
Quoted 4 lines · Thomas Petazzoni
Dear Peter Seiderer,
On Tue, 24 Nov 2015 22:36:31 +0100, Peter Seiderer wrote:
Quoted 12 lines
package/Config.in endif · line 441
Quoted 9 lines
package/Config.in +1
-0@@ -438,6 +438,7 @@ endif source "package/w_scan/Config.in" source "package/wf111/Config.in" source "package/wipe/Config.in" + source "package/wiringpi/Config.in"Isn't wiringpi mainly a library ? Maybe it should go under Libraries -> Hardware handling.
O.k., will fix it...
Quoted 20 lines
Quoted 20 lines
package/Config.in +19
-0+diff --git a/devLib/Makefile b/devLib/Makefile +index 0fb0033..f956abe 100644 +--- a/devLib/Makefile ++++ b/devLib/Makefile +@@ -37,7 +37,7 @@ DYNAMIC=libwiringPiDev.so.$(VERSION) + #DEBUG = -g -O0 + DEBUG = -O2 + CC = gcc +-INCLUDE = -I. ++INCLUDE = -I$(DESTDIR)$(PREFIX)/wiringPi -I$(DESTDIR)$(PREFIX)/devLib + DEFS = -D_GNU_SOURCE + CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC + +diff --git a/gpio/Makefile b/gpio/Makefile +index 7dcd090..f5b588a 100644 +--- a/gpio/Makefile ++++ b/gpio/Makefile +@@ -33,7 +33,7 @@ endif + #DEBUG = -g -O0
Quoted 8 lines
Quoted 4 lines
+ DEBUG = -O2
+ CC = gcc+-INCLUDE = -I$(DESTDIR)$(PREFIX)/include ++INCLUDE = -I$(DESTDIR)$(PREFIX)/wiringPi -I$(DESTDIR)$(PREFIX)/devLibThis patch is not correct I believe. It makes the assumption that wiringPi is already installed in $(DESTDIR)$(PREFIX), which it is not when you are building it.
Intention was to set DESTDIR/PREFIX values to the build directory to avoid the install step before linking gpio (as the original build script does)...
Quoted 9 lines
package/wiringpi/wiringpi.mk
Quoted 7 lines
package/wiringpi/wiringpi.mk new file +0
-0@@ -0,0 +1,29 @@Missing comment header.
O.k., will fix (should have marked this patch as early draft ;-) )
Quoted 6 lines
package/wiringpi/wiringpi.mk line 3
Quoted 4 lines
package/wiringpi/wiringpi.mk new file +3
-0+WIRINGPI_VERSION = 2.29 +WIRINGPI_SITE = git://git.drogon.net/wiringPi +WIRINGPI_INSTALL_STAGING = YESMissing license + license file information.
O.k., will fix...
Quoted 11 lines
package/wiringpi/wiringpi.mk line 6
Quoted 4 lines
package/wiringpi/wiringpi.mk new file +3
-0+ +define WIRINGPI_BUILD_CMDS + $(MAKE) -C $(@D)/wiringPi CC=$(TARGET_CC)It would be a lot better to use $(TARGET_CONFIGURE_OPTS), and $(TARGET_MAKE_ENV), i.e:
$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)/wiringPithe CC=$(TARGET_CC) is already part of
TARGET_CONFIGURE_OPTS. Also you
Did not work, because the original Makefile used 'CC=gcc' which is only overridden by command line options, not by environment variables...
Quoted 7 lines
will probably have to adjust the
Makefileto turn CFLAGS = into CFLAGS
+=.package/wiringpi/wiringpi.mk line 8
Quoted 2 lines
package/wiringpi/wiringpi.mk new file +2
-0+ $(INSTALL) -D -m 0755 $(@D)/wiringPi/libwiringPi.so.2.29 $(STAGING_DIR)/usr/lib/libwiringPi.so.2.29 + ln -sf $(STAGING_DIR)/usr/lib/libwiringPi.so.2.29 $(STAGING_DIR)/usr/lib/libwiringPi.soWhy are you doing installation within the <pkg>_BUILDS_CMDS ? This is not good ?
Because I tried to not patch the original build system which assumes:
- build wiringPi, install wiringPi
- build devLib, install devLib
- build gpio, install gpio
But will complete rework my patch...
Quoted 9 lines
package/wiringpi/wiringpi.mk line 9
Quoted 2 lines
package/wiringpi/wiringpi.mk new file +1
-0+ $(MAKE) -C $(@D)/devLib CC=$(TARGET_CC) PREFIX=$(@D) DESTDIR=Why is DESTDIR= needed here ?
package/wiringpi/wiringpi.mk line 11
Quoted 2 lines
package/wiringpi/wiringpi.mk new file +2
-0+ $(INSTALL) -D -m 0755 $(@D)/devLib/libwiringPiDev.so.2.29 $(STAGING_DIR)/usr/lib/libwiringPiDev.so.2.29 + ln -sf $(STAGING_DIR)/usr/lib/libwiringPiDev.so.2.29 $(STAGING_DIR)/usr/lib/libwiringPiDev.soDitto installation.
Will be changed in next version...
Quoted 10 lines
package/wiringpi/wiringpi.mk line 17
Quoted 7 lines
package/wiringpi/wiringpi.mk new file +6
-0+ $(MAKE) -C $(@D)/gpio CC=$(TARGET_CC) PREFIX=$(@D) DESTDIR= +endef + +define WIRINGPI_INSTALL_STAGING_CMDS + $(INSTALL) -D -m 0644 $(@D)/wiringPi/*.h $(STAGING_DIR)/usr/include + $(INSTALL) -D -m 0644 $(@D)/devLib/*.h $(STAGING_DIR)/usr/includeThis is not good because $(INSTALL) -D expect a full destination path. I guess the easiest is just:
O.k, will fix...
Quoted 15 lines
cp -dpfr $(@D)/wiringPi/*.h $(STAGING_DIR)/usr/includepackage/wiringpi/wiringpi.mk line 26
Quoted 7 lines
package/wiringpi/wiringpi.mk new file +7
-0+define WIRINGPI_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/wiringPi/libwiringPi.so* $(TARGET_DIR)/usr/lib + ln -sf libwiringPi.so.2.29 $(TARGET_DIR)/usr/lib/libwiringPi.so + $(INSTALL) -D -m 0755 $(@D)/devLib/libwiringPiDev.so* $(TARGET_DIR)/usr/lib + ln -sf libwiringPiDev.so.2.29 $(TARGET_DIR)/usr/lib/libwiringPiDev.so + $(INSTALL) -D -m 0755 $(@D)/gpio/gpio $(TARGET_DIR)/usr/bin + $(INSTALL) -D -m 0755 $(@D)/gpio/pintest $(TARGET_DIR)/usr/binSame comments here: $(INSTALL) -D requires a full destination path. Otherwise, if $(TARGET_DIR)/usr/bin doesn't exist as a directory, you will have you "pintest" program installed as "bin" in $(TARGET_DIR)/usr.
Quoted 3 lines
Moreover, the upstream project has some "install" and "install-static" targets. You should use them instead of doing manual installation.
O.k., will be in the next version...
Quoted 5 lines
Finally, if you're installing unconditionally shared libraries, then it means that they are always being built. So your package should depend on !BR2_STATIC_LIBS.
Can you fix those comments and send an updated version ?
Yes, will do...
Thanks for review...
Regards,
Peter
Quoted 4 lines
Thanks!
Thomas