Skip to contentSkip to conversation

wiringpi: new package

PATCH Superseded Peter Seiderer 2 participants 3 messages Nov 24, 2015 – Dec 3, 2015

v2 of 5 Superseded Latest is v5 →

lore
Share & tools
lore
#0 lore raw

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
index bdc3063..9d273e7 100644
@@ -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
new file mode 100644
index 0000000..2a7e754
@@ -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
new file mode 100644
index 0000000..9275b82
@@ -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
new file mode 100644
index 0000000..258bb25
@@ -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
#1 lore raw

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
index bdc3063..9d273e7 100644
@@ -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
new file mode 100644
index 0000000..258bb25
@@ -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
#2 lore raw

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
index bdc3063..9d273e7 100644
@@ -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)/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.

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
new file mode 100644
index 0000000..258bb25
@@ -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 = YES

Missing 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)/wiringPi

the 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 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 ?

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.so

Ditto 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/include

This 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/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.

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