* [Buildroot] [PATCH 1/3] wiringpi: new package
@ 2014-01-10 19:50 Lucas De Marchi
2014-01-10 19:50 ` [Buildroot] [PATCH 2/3] psplash: use git repository Lucas De Marchi
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Lucas De Marchi @ 2014-01-10 19:50 UTC (permalink / raw)
To: buildroot
wiringpi has a really poor build system wrt cross-compiling and has no
official release. These are the patches needed to cross-compile it in
its latest revision.
This patch set was made hoping it would be merged by upstream. Therefore
it's conservative on the changes. However the feedback was that
"cross-compiling is wrong and you should fork it if you want to do so".
I don't really want to fork it, but I think it's doable to maintain a
patch set like this in buildroot.
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
---
package/Config.in | 1 +
package/wiringpi/0001-Do-not-call-ldconfig.patch | 84 +++++++++
package/wiringpi/0002-Fix-typo-in-makefiles.patch | 187 +++++++++++++++++++++
...verride-build-variables-from-command-line.patch | 94 +++++++++++
package/wiringpi/0004-Add-gitignore-file.patch | 23 +++
...er-includes-from-source-instead-of-system.patch | 41 +++++
.../0006-Use-relative-links-on-install-rules.patch | 41 +++++
.../0007-Link-gpio-binary-to-local-libraries.patch | 59 +++++++
.../0008-Do-not-try-to-change-gpio-ownership.patch | 27 +++
package/wiringpi/0008-tmp.patch | 25 +++
package/wiringpi/Config.in | 17 ++
package/wiringpi/wiringpi.mk | 28 +++
12 files changed, 627 insertions(+)
create mode 100644 package/wiringpi/0001-Do-not-call-ldconfig.patch
create mode 100644 package/wiringpi/0002-Fix-typo-in-makefiles.patch
create mode 100644 package/wiringpi/0003-Do-not-override-build-variables-from-command-line.patch
create mode 100644 package/wiringpi/0004-Add-gitignore-file.patch
create mode 100644 package/wiringpi/0005-Prefer-includes-from-source-instead-of-system.patch
create mode 100644 package/wiringpi/0006-Use-relative-links-on-install-rules.patch
create mode 100644 package/wiringpi/0007-Link-gpio-binary-to-local-libraries.patch
create mode 100644 package/wiringpi/0008-Do-not-try-to-change-gpio-ownership.patch
create mode 100644 package/wiringpi/0008-tmp.patch
create mode 100644 package/wiringpi/Config.in
create mode 100644 package/wiringpi/wiringpi.mk
diff --git a/package/Config.in b/package/Config.in
index 38db5de..748ddbf 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -581,6 +581,7 @@ source "package/neardal/Config.in"
source "package/pcsc-lite/Config.in"
source "package/tslib/Config.in"
source "package/urg/Config.in"
+source "package/wiringpi/Config.in"
endmenu
menu "Javascript"
diff --git a/package/wiringpi/0001-Do-not-call-ldconfig.patch b/package/wiringpi/0001-Do-not-call-ldconfig.patch
new file mode 100644
index 0000000..5455b5e8
--- /dev/null
+++ b/package/wiringpi/0001-Do-not-call-ldconfig.patch
@@ -0,0 +1,84 @@
+From 7835204d98b973ac9f489ba14e6dea7547791254 Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.de.marchi@gmail.com>
+Date: Sat, 28 Dec 2013 18:26:09 -0200
+Subject: [PATCH 1/8] Do not call ldconfig
+
+This is wrong to do when cross-compiling and better done in the build
+script for easy of use.
+---
+ build | 3 +++
+ devLib/Makefile | 2 --
+ wiringPi/Makefile | 2 --
+ 3 files changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/build b/build
+index e17cf18..04e1615 100755
+--- a/build
++++ b/build
+@@ -39,6 +39,7 @@ if [ x$1 = "xuninstall" ]; then
+ echo -n "DevLib: " ; sudo make uninstall
+ cd ../gpio
+ echo -n "gpio: " ; sudo make uninstall
++ sudo ldconfig
+ exit
+ fi
+
+@@ -59,6 +60,7 @@ fi
+ make
+ check_make_ok
+ sudo make install
++ sudo ldconfig
+ fi
+ check_make_ok
+
+@@ -74,6 +76,7 @@ fi
+ make
+ check_make_ok
+ sudo make install
++ sudo ldconfig
+ fi
+ check_make_ok
+
+diff --git a/devLib/Makefile b/devLib/Makefile
+index a3c0d42..e81246f 100644
+--- a/devLib/Makefile
++++ b/devLib/Makefile
+@@ -95,7 +95,6 @@ install: $(DYNAMIC) install-headers
+ @install -m 0755 -d $(DESTDIR)$(PREFIX)/lib
+ @install -m 0755 libwiringPiDev.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION)
+ @ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION) $(DESTDIR)/lib/libwiringPiDev.so
+- @ldconfig
+
+ .PHONEY: install-static
+ install-static: $(STATIC) install-headers
+@@ -115,7 +114,6 @@ uninstall:
+ @rm -f $(DESTDIR)$(PREFIX)/include/lcd.h
+ @rm -f $(DESTDIR)$(PREFIX)/include/piGlow.h
+ @rm -f $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.*
+- @ldconfig
+
+
+ .PHONEY: depend
+diff --git a/wiringPi/Makefile b/wiringPi/Makefile
+index 619a3dc..5351594 100644
+--- a/wiringPi/Makefile
++++ b/wiringPi/Makefile
+@@ -122,7 +122,6 @@ install: $(DYNAMIC) install-headers
+ @install -m 0755 -d $(DESTDIR)$(PREFIX)/lib
+ @install -m 0755 libwiringPi.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION)
+ @ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION) $(DESTDIR)/lib/libwiringPi.so
+- @ldconfig
+
+ .PHONEY: install-static
+ install-static: $(STATIC) install-headers
+@@ -157,7 +156,6 @@ uninstall:
+ @rm -f $(DESTDIR)$(PREFIX)/include/pcf8591.h
+ @rm -f $(DESTDIR)$(PREFIX)/include/sn3218.h
+ @rm -f $(DESTDIR)$(PREFIX)/lib/libwiringPi.*
+- @ldconfig
+
+
+ .PHONEY: depend
+--
+1.8.5.2
+
diff --git a/package/wiringpi/0002-Fix-typo-in-makefiles.patch b/package/wiringpi/0002-Fix-typo-in-makefiles.patch
new file mode 100644
index 0000000..3145aa5
--- /dev/null
+++ b/package/wiringpi/0002-Fix-typo-in-makefiles.patch
@@ -0,0 +1,187 @@
+From d87fbc10e372139736029009f0574e228776f205 Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.de.marchi@gmail.com>
+Date: Sat, 28 Dec 2013 18:26:13 -0200
+Subject: [PATCH 2/8] Fix typo in makefiles
+
+It's PHONY, not PHONEY.
+---
+ devLib/Makefile | 14 +++++++-------
+ gpio/Makefile | 10 +++++-----
+ pins/Makefile | 2 +-
+ wiringPi/Makefile | 14 +++++++-------
+ 4 files changed, 20 insertions(+), 20 deletions(-)
+
+diff --git a/devLib/Makefile b/devLib/Makefile
+index e81246f..2481150 100644
+--- a/devLib/Makefile
++++ b/devLib/Makefile
+@@ -65,18 +65,18 @@ $(DYNAMIC): $(OBJ)
+ @echo [Compile] $<
+ @$(CC) -c $(CFLAGS) $< -o $@
+
+-.PHONEY: clean
++.PHONY: clean
+ clean:
+ @echo "[Clean]"
+ @rm -f $(OBJ) $(OBJ_I2C) *~ core tags Makefile.bak libwiringPiDev.*
+
+-.PHONEY: tags
++.PHONY: tags
+ tags: $(SRC)
+ @echo [ctags]
+ @ctags $(SRC)
+
+
+-.PHONEY: install-headers
++.PHONY: install-headers
+ install-headers:
+ @echo "[Install Headers]"
+ @install -m 0755 -d $(DESTDIR)$(PREFIX)/include
+@@ -89,20 +89,20 @@ install-headers:
+ @install -m 0644 lcd.h $(DESTDIR)$(PREFIX)/include
+ @install -m 0644 piGlow.h $(DESTDIR)$(PREFIX)/include
+
+-.PHONEY: install
++.PHONY: install
+ install: $(DYNAMIC) install-headers
+ @echo "[Install Dynamic Lib]"
+ @install -m 0755 -d $(DESTDIR)$(PREFIX)/lib
+ @install -m 0755 libwiringPiDev.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION)
+ @ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION) $(DESTDIR)/lib/libwiringPiDev.so
+
+-.PHONEY: install-static
++.PHONY: install-static
+ install-static: $(STATIC) install-headers
+ @echo "[Install Static Lib]"
+ @install -m 0755 -d $(DESTDIR)$(PREFIX)/lib
+ @install -m 0755 libwiringPiDev.a $(DESTDIR)$(PREFIX)/lib
+
+-.PHONEY: uninstall
++.PHONY: uninstall
+ uninstall:
+ @echo "[UnInstall]"
+ @rm -f $(DESTDIR)$(PREFIX)/include/ds1302.h
+@@ -116,7 +116,7 @@ uninstall:
+ @rm -f $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.*
+
+
+-.PHONEY: depend
++.PHONY: depend
+ depend:
+ makedepend -Y $(SRC)
+
+diff --git a/gpio/Makefile b/gpio/Makefile
+index 8fa12d5..de57e0a 100644
+--- a/gpio/Makefile
++++ b/gpio/Makefile
+@@ -52,17 +52,17 @@ gpio: $(OBJ)
+ @echo [Compile] $<
+ @$(CC) -c $(CFLAGS) $< -o $@
+
+-.PHONEY: clean
++.PHONY: clean
+ clean:
+ @echo "[Clean]"
+ @rm -f $(OBJ) gpio *~ core tags *.bak
+
+-.PHONEY: tags
++.PHONY: tags
+ tags: $(SRC)
+ @echo [ctags]
+ @ctags $(SRC)
+
+-.PHONEY: install
++.PHONY: install
+ install:
+ @echo "[Install]"
+ @cp gpio $(DESTDIR)$(PREFIX)/bin
+@@ -71,13 +71,13 @@ install:
+ @mkdir -p $(DESTDIR)$(PREFIX)/man/man1
+ @cp gpio.1 $(DESTDIR)$(PREFIX)/man/man1
+
+-.PHONEY: uninstall
++.PHONY: uninstall
+ uninstall:
+ @echo "[UnInstall]"
+ @rm -f $(DESTDIR)$(PREFIX)/bin/gpio
+ @rm -f $(DESTDIR)$(PREFIX)/man/man1/gpio.1
+
+-.PHONEY: depend
++.PHONY: depend
+ depend:
+ makedepend -Y $(SRC)
+
+diff --git a/pins/Makefile b/pins/Makefile
+index 5e200c2..fd34ee9 100644
+--- a/pins/Makefile
++++ b/pins/Makefile
+@@ -13,6 +13,6 @@ pdf: pins.dvi
+ @dvipdf pins.dvi
+
+
+-.PHONEY: clean
++.PHONY: clean
+ clean:
+ @rm -f *.dvi *.aux *.log *.ps *.toc *.bak *~
+diff --git a/wiringPi/Makefile b/wiringPi/Makefile
+index 5351594..800b94d 100644
+--- a/wiringPi/Makefile
++++ b/wiringPi/Makefile
+@@ -77,18 +77,18 @@ $(DYNAMIC): $(OBJ)
+ @echo [Compile] $<
+ @$(CC) -c $(CFLAGS) $< -o $@
+
+-.PHONEY: clean
++.PHONY: clean
+ clean:
+ @echo "[Clean]"
+ @rm -f $(OBJ) $(OBJ_I2C) *~ core tags Makefile.bak libwiringPi.*
+
+-.PHONEY: tags
++.PHONY: tags
+ tags: $(SRC)
+ @echo [ctags]
+ @ctags $(SRC)
+
+
+-.PHONEY: install-headers
++.PHONY: install-headers
+ install-headers:
+ @echo "[Install Headers]"
+ @install -m 0755 -d $(DESTDIR)$(PREFIX)/include
+@@ -116,20 +116,20 @@ install-headers:
+ @install -m 0644 pcf8591.h $(DESTDIR)$(PREFIX)/include
+ @install -m 0644 sn3218.h $(DESTDIR)$(PREFIX)/include
+
+-.PHONEY: install
++.PHONY: install
+ install: $(DYNAMIC) install-headers
+ @echo "[Install Dynamic Lib]"
+ @install -m 0755 -d $(DESTDIR)$(PREFIX)/lib
+ @install -m 0755 libwiringPi.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION)
+ @ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION) $(DESTDIR)/lib/libwiringPi.so
+
+-.PHONEY: install-static
++.PHONY: install-static
+ install-static: $(STATIC) install-headers
+ @echo "[Install Static Lib]"
+ @install -m 0755 -d $(DESTDIR)$(PREFIX)/lib
+ @install -m 0755 libwiringPi.a $(DESTDIR)$(PREFIX)/lib
+
+-.PHONEY: uninstall
++.PHONY: uninstall
+ uninstall:
+ @echo "[UnInstall]"
+ @rm -f $(DESTDIR)$(PREFIX)/include/wiringPi.h
+@@ -158,7 +158,7 @@ uninstall:
+ @rm -f $(DESTDIR)$(PREFIX)/lib/libwiringPi.*
+
+
+-.PHONEY: depend
++.PHONY: depend
+ depend:
+ makedepend -Y $(SRC) $(SRC_I2C)
+
+--
+1.8.5.2
+
diff --git a/package/wiringpi/0003-Do-not-override-build-variables-from-command-line.patch b/package/wiringpi/0003-Do-not-override-build-variables-from-command-line.patch
new file mode 100644
index 0000000..b2f4dcb
--- /dev/null
+++ b/package/wiringpi/0003-Do-not-override-build-variables-from-command-line.patch
@@ -0,0 +1,94 @@
+From c016993d789ef8082520b16289adc7a50ebfe3ce Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.de.marchi@gmail.com>
+Date: Sat, 28 Dec 2013 18:26:16 -0200
+Subject: [PATCH 3/8] Do not override build variables from command line
+
+Allow to set DEBUG, CC and PREFIX as arguments to make. This allows us
+to easily set another compiler, prefix, flags and so on. It also stops
+setting DESTDIR, since this shouldn't be touched in the makefile, but
+honoured while installing.
+---
+ devLib/Makefile | 13 ++++++-------
+ gpio/Makefile | 7 +++----
+ wiringPi/Makefile | 11 +++++------
+ 3 files changed, 14 insertions(+), 17 deletions(-)
+
+diff --git a/devLib/Makefile b/devLib/Makefile
+index 2481150..a620b71 100644
+--- a/devLib/Makefile
++++ b/devLib/Makefile
+@@ -23,18 +23,17 @@
+ DYN_VERS_MAJ=2
+ DYN_VERS_MIN=0
+
+-VERSION=$(DYN_VERS_MAJ).$(DYN_VERS_MIN)
+-DESTDIR=/usr
+-PREFIX=/local
++VERSION =$(DYN_VERS_MAJ).$(DYN_VERS_MIN)
++PREFIX ?= /usr/local
+
+ STATIC=libwiringPiDev.a
+ DYNAMIC=libwiringPiDev.so.$(VERSION)
+
+ #DEBUG = -g -O0
+-DEBUG = -O2
+-CC = gcc
+-INCLUDE = -I.
+-CFLAGS = $(DEBUG) -Wformat=2 -Wall $(INCLUDE) -Winline -pipe -fPIC
++DEBUG ?= -O2
++CC ?= gcc
++INCLUDE = -I.
++CFLAGS = $(DEBUG) -Wformat=2 -Wall $(INCLUDE) -Winline -pipe -fPIC
+
+ LIBS =
+
+diff --git a/gpio/Makefile b/gpio/Makefile
+index de57e0a..da629fe 100644
+--- a/gpio/Makefile
++++ b/gpio/Makefile
+@@ -23,12 +23,11 @@
+ # along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
+ #################################################################################
+
+-DESTDIR=/usr
+-PREFIX=/local
++PREFIX ?= /usr/local
+
+ #DEBUG = -g -O0
+-DEBUG = -O2
+-CC = gcc
++DEBUG ?= -O2
++CC ?= gcc
+ INCLUDE = -I$(DESTDIR)$(PREFIX)/include
+ CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
+
+diff --git a/wiringPi/Makefile b/wiringPi/Makefile
+index 800b94d..f88c9d1 100644
+--- a/wiringPi/Makefile
++++ b/wiringPi/Makefile
+@@ -24,17 +24,16 @@
+ DYN_VERS_MAJ=2
+ DYN_VERS_MIN=0
+
+-VERSION=$(DYN_VERS_MAJ).$(DYN_VERS_MIN)
+-DESTDIR=/usr
+-PREFIX=/local
++VERSION =$(DYN_VERS_MAJ).$(DYN_VERS_MIN)
++PREFIX ?= /usr/local
+
+ STATIC=libwiringPi.a
+ DYNAMIC=libwiringPi.so.$(VERSION)
+
+ #DEBUG = -g -O0
+-DEBUG = -O2
+-CC = gcc
+-INCLUDE = -I.
++DEBUG ?= -O2
++CC ?= gcc
++INCLUDE = -I.
+ DEFS = -D_GNU_SOURCE
+ CFLAGS = $(DEBUG) $(DEFS) -Wformat=2 -Wall -Winline $(INCLUDE) -pipe -fPIC
+
+--
+1.8.5.2
+
diff --git a/package/wiringpi/0004-Add-gitignore-file.patch b/package/wiringpi/0004-Add-gitignore-file.patch
new file mode 100644
index 0000000..081d5be
--- /dev/null
+++ b/package/wiringpi/0004-Add-gitignore-file.patch
@@ -0,0 +1,23 @@
+From 5f677acf115e1aa36d32a93164aa669d73c40fbf Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.de.marchi@gmail.com>
+Date: Sat, 28 Dec 2013 18:26:20 -0200
+Subject: [PATCH 4/8] Add gitignore file
+
+---
+ .gitignore | 4 ++++
+ 1 file changed, 4 insertions(+)
+ create mode 100644 .gitignore
+
+diff --git a/.gitignore b/.gitignore
+new file mode 100644
+index 0000000..d20b9b6
+--- /dev/null
++++ b/.gitignore
+@@ -0,0 +1,4 @@
++*.o
++*.so
++*.so.*
++/gpio/gpio
+--
+1.8.5.2
+
diff --git a/package/wiringpi/0005-Prefer-includes-from-source-instead-of-system.patch b/package/wiringpi/0005-Prefer-includes-from-source-instead-of-system.patch
new file mode 100644
index 0000000..11dd47e
--- /dev/null
+++ b/package/wiringpi/0005-Prefer-includes-from-source-instead-of-system.patch
@@ -0,0 +1,41 @@
+From 326cabab71c3b7c71bb7759e2da03f487a74dfba Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.de.marchi@gmail.com>
+Date: Sat, 28 Dec 2013 18:34:37 -0200
+Subject: [PATCH 5/8] Prefer includes from source instead of system
+
+We might not have the headers installed or have an older version. Always
+prefer the includes from the source file.
+---
+ devLib/Makefile | 2 +-
+ gpio/Makefile | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/devLib/Makefile b/devLib/Makefile
+index a620b71..dc7801f 100644
+--- a/devLib/Makefile
++++ b/devLib/Makefile
+@@ -32,7 +32,7 @@ DYNAMIC=libwiringPiDev.so.$(VERSION)
+ #DEBUG = -g -O0
+ DEBUG ?= -O2
+ CC ?= gcc
+-INCLUDE = -I.
++INCLUDE = -I. -I../wiringPi
+ CFLAGS = $(DEBUG) -Wformat=2 -Wall $(INCLUDE) -Winline -pipe -fPIC
+
+ LIBS =
+diff --git a/gpio/Makefile b/gpio/Makefile
+index da629fe..7148bf1 100644
+--- a/gpio/Makefile
++++ b/gpio/Makefile
+@@ -28,7 +28,7 @@ PREFIX ?= /usr/local
+ #DEBUG = -g -O0
+ DEBUG ?= -O2
+ CC ?= gcc
+-INCLUDE = -I$(DESTDIR)$(PREFIX)/include
++INCLUDE = -I../wiringPi -I../devLib -I$(DESTDIR)$(PREFIX)/include
+ CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
+
+ LDFLAGS = -L$(DESTDIR)$(PREFIX)/lib
+--
+1.8.5.2
+
diff --git a/package/wiringpi/0006-Use-relative-links-on-install-rules.patch b/package/wiringpi/0006-Use-relative-links-on-install-rules.patch
new file mode 100644
index 0000000..5359b07
--- /dev/null
+++ b/package/wiringpi/0006-Use-relative-links-on-install-rules.patch
@@ -0,0 +1,41 @@
+From 741a55e34c9360407e3c7e9b5ff82d1b6135ba3e Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.de.marchi@gmail.com>
+Date: Sat, 28 Dec 2013 18:46:04 -0200
+Subject: [PATCH 6/8] Use relative links on install rules
+
+We need relative links since the place in which we are installing may
+not be the final place due to DESTDIR.
+---
+ devLib/Makefile | 2 +-
+ wiringPi/Makefile | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/devLib/Makefile b/devLib/Makefile
+index dc7801f..1a94c0a 100644
+--- a/devLib/Makefile
++++ b/devLib/Makefile
+@@ -93,7 +93,7 @@ install: $(DYNAMIC) install-headers
+ @echo "[Install Dynamic Lib]"
+ @install -m 0755 -d $(DESTDIR)$(PREFIX)/lib
+ @install -m 0755 libwiringPiDev.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION)
+- @ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so.$(VERSION) $(DESTDIR)/lib/libwiringPiDev.so
++ @ln -sf libwiringPiDev.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPiDev.so
+
+ .PHONY: install-static
+ install-static: $(STATIC) install-headers
+diff --git a/wiringPi/Makefile b/wiringPi/Makefile
+index f88c9d1..7679dc2 100644
+--- a/wiringPi/Makefile
++++ b/wiringPi/Makefile
+@@ -120,7 +120,7 @@ install: $(DYNAMIC) install-headers
+ @echo "[Install Dynamic Lib]"
+ @install -m 0755 -d $(DESTDIR)$(PREFIX)/lib
+ @install -m 0755 libwiringPi.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION)
+- @ln -sf $(DESTDIR)$(PREFIX)/lib/libwiringPi.so.$(VERSION) $(DESTDIR)/lib/libwiringPi.so
++ @ln -sf libwiringPi.so.$(VERSION) $(DESTDIR)$(PREFIX)/lib/libwiringPi.so
+
+ .PHONY: install-static
+ install-static: $(STATIC) install-headers
+--
+1.8.5.2
+
diff --git a/package/wiringpi/0007-Link-gpio-binary-to-local-libraries.patch b/package/wiringpi/0007-Link-gpio-binary-to-local-libraries.patch
new file mode 100644
index 0000000..fa1c869
--- /dev/null
+++ b/package/wiringpi/0007-Link-gpio-binary-to-local-libraries.patch
@@ -0,0 +1,59 @@
+From 36502d94f2845e97ac8a56fedd5c95f3d3dd6a8c Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.de.marchi@gmail.com>
+Date: Mon, 30 Dec 2013 13:18:36 -0200
+Subject: [PATCH 7/8] Link gpio binary to local libraries
+
+The system libraries might be older or non-existent. Link to the locally
+built libraries instead.
+
+Also do not override LDFLAGS, but rather append to this variable.
+---
+ devLib/Makefile | 1 +
+ gpio/Makefile | 4 ++--
+ wiringPi/Makefile | 1 +
+ 3 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/devLib/Makefile b/devLib/Makefile
+index 1a94c0a..7004ddb 100644
+--- a/devLib/Makefile
++++ b/devLib/Makefile
+@@ -59,6 +59,7 @@ $(STATIC): $(OBJ)
+ $(DYNAMIC): $(OBJ)
+ @echo "[Link (Dynamic)]"
+ @$(CC) -shared -Wl,-soname,libwiringPiDev.so -o libwiringPiDev.so.$(VERSION) -lpthread $(OBJ)
++ @ln -sf libwiringPiDev.so.$(VERSION) libwiringPiDev.so
+
+ .c.o:
+ @echo [Compile] $<
+diff --git a/gpio/Makefile b/gpio/Makefile
+index 7148bf1..8e80762 100644
+--- a/gpio/Makefile
++++ b/gpio/Makefile
+@@ -28,10 +28,10 @@ PREFIX ?= /usr/local
+ #DEBUG = -g -O0
+ DEBUG ?= -O2
+ CC ?= gcc
+-INCLUDE = -I../wiringPi -I../devLib -I$(DESTDIR)$(PREFIX)/include
++INCLUDE = -I../wiringPi -I../devLib
+ CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe
+
+-LDFLAGS = -L$(DESTDIR)$(PREFIX)/lib
++LDFLAGS += -L../wiringPi -L../devLib
+ LIBS = -lwiringPi -lwiringPiDev -lpthread -lm
+
+ # May not need to alter anything below this line
+diff --git a/wiringPi/Makefile b/wiringPi/Makefile
+index 7679dc2..a60cc0e 100644
+--- a/wiringPi/Makefile
++++ b/wiringPi/Makefile
+@@ -71,6 +71,7 @@ $(STATIC): $(OBJ)
+ $(DYNAMIC): $(OBJ)
+ @echo "[Link (Dynamic)]"
+ @$(CC) -shared -Wl,-soname,libwiringPi.so -o libwiringPi.so.$(VERSION) -lpthread $(OBJ)
++ @ln -sf libwiringPi.so.$(VERSION) libwiringPi.so
+
+ .c.o:
+ @echo [Compile] $<
+--
+1.8.5.2
+
diff --git a/package/wiringpi/0008-Do-not-try-to-change-gpio-ownership.patch b/package/wiringpi/0008-Do-not-try-to-change-gpio-ownership.patch
new file mode 100644
index 0000000..46ca9c3
--- /dev/null
+++ b/package/wiringpi/0008-Do-not-try-to-change-gpio-ownership.patch
@@ -0,0 +1,27 @@
+From 16baf307dfd1b5c5b4cd58bd52a717125e595c90 Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.de.marchi@gmail.com>
+Date: Mon, 30 Dec 2013 18:27:24 -0200
+Subject: [PATCH 8/8] Do not try to change gpio ownership
+
+---
+ gpio/Makefile | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/gpio/Makefile b/gpio/Makefile
+index 8e80762..c21f2b7 100644
+--- a/gpio/Makefile
++++ b/gpio/Makefile
+@@ -64,9 +64,7 @@ tags: $(SRC)
+ .PHONY: install
+ install:
+ @echo "[Install]"
+- @cp gpio $(DESTDIR)$(PREFIX)/bin
+- @chown root.root $(DESTDIR)$(PREFIX)/bin/gpio
+- @chmod 4755 $(DESTDIR)$(PREFIX)/bin/gpio
++ @install gpio -m 0755 $(DESTDIR)$(PREFIX)/bin/gpio
+ @mkdir -p $(DESTDIR)$(PREFIX)/man/man1
+ @cp gpio.1 $(DESTDIR)$(PREFIX)/man/man1
+
+--
+1.8.5.2
+
diff --git a/package/wiringpi/0008-tmp.patch b/package/wiringpi/0008-tmp.patch
new file mode 100644
index 0000000..10d4396
--- /dev/null
+++ b/package/wiringpi/0008-tmp.patch
@@ -0,0 +1,25 @@
+From fb72d08215b9f9af0d58951794f314f1ff6de04d Mon Sep 17 00:00:00 2001
+From: Lucas De Marchi <lucas.de.marchi@gmail.com>
+Date: Mon, 30 Dec 2013 17:08:37 -0200
+Subject: [PATCH 8/8] tmp
+
+---
+ gpio/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gpio/Makefile b/gpio/Makefile
+index 387f28c..55704fa 100644
+--- a/gpio/Makefile
++++ b/gpio/Makefile
+@@ -45,7 +45,7 @@ all: gpio
+
+ gpio: $(OBJ)
+ @echo [Link]
+- @$(CC) -o $@ $(OBJ) $(LDFLAGS) $(LIBS)
++ $(CC) -o $@ $(OBJ) $(LDFLAGS) $(LIBS)
+
+ .c.o:
+ @echo [Compile] $<
+--
+1.8.5.2
+
diff --git a/package/wiringpi/Config.in b/package/wiringpi/Config.in
new file mode 100644
index 0000000..1e7433a
--- /dev/null
+++ b/package/wiringpi/Config.in
@@ -0,0 +1,17 @@
+config BR2_PACKAGE_WIRINGPI
+ bool "wiringpi"
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ depends on BR2_PACKAGE_RPI_USERLAND
+ help
+ WiringPi is a GPIO access library written in C for the BCM2835
+ used in the Raspberry Pi.
+
+ WiringPi includes a command-line utility gpio which can be
+ used to program and setup the GPIO pins. You can use this to
+ read and write the pins and even use it to control them from
+ shell scripts.
+
+ http://wiringpi.com/
+
+comment "wiringpi needs a toolchain w/ threads"
+ depends on !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/wiringpi/wiringpi.mk b/package/wiringpi/wiringpi.mk
new file mode 100644
index 0000000..8e448ea
--- /dev/null
+++ b/package/wiringpi/wiringpi.mk
@@ -0,0 +1,28 @@
+################################################################################
+#
+# wiringpi
+#
+################################################################################
+
+WIRINGPI_VERSION = f18c8f7204d6354220fd6754578b3daa43734e1b
+WIRINGPI_SITE = git://git.drogon.net/wiringPi
+
+WIRINGPI_LICENSE = LGPLv3
+WIRINGPI_LICENSE_FILES = COPYING.LESSER
+
+PREFIX = /usr
+
+define WIRINGPI_BUILD_CMDS
+ env
+ $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) $(MAKE) -C $(@D)/wiringPi
+ $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) $(MAKE) -C $(@D)/devLib
+ $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) DESTDIR=$(TARGET_DIR) $(MAKE) -C $(@D)/gpio
+endef
+
+define WIRINGPI_INSTALL_TARGET_CMDS
+ $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) DESTDIR=$(TARGET_DIR) $(MAKE) -C $(@D)/wiringPi install
+ $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) DESTDIR=$(TARGET_DIR) $(MAKE) -C $(@D)/devLib install
+ $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) DESTDIR=$(TARGET_DIR) $(MAKE) -C $(@D)/gpio install
+endef
+
+$(eval $(generic-package))
--
1.8.5.2
^ permalink raw reply related [flat|nested] 11+ messages in thread* [Buildroot] [PATCH 2/3] psplash: use git repository
2014-01-10 19:50 [Buildroot] [PATCH 1/3] wiringpi: new package Lucas De Marchi
@ 2014-01-10 19:50 ` Lucas De Marchi
2014-01-15 22:18 ` Peter Korsgaard
2014-01-10 19:50 ` [Buildroot] [PATCH 3/3] pi4j: new package Lucas De Marchi
2014-01-11 6:08 ` [Buildroot] [PATCH 1/3] wiringpi: " Thomas Petazzoni
2 siblings, 1 reply; 11+ messages in thread
From: Lucas De Marchi @ 2014-01-10 19:50 UTC (permalink / raw)
To: buildroot
psplash doesn't see a new release for quite some time. The lattest
commits brought some nice bug fixes and a feature that allows to
easily customize the splash image.
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
---
package/psplash/psplash.mk | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/package/psplash/psplash.mk b/package/psplash/psplash.mk
index cb1c54a..fe14f44 100644
--- a/package/psplash/psplash.mk
+++ b/package/psplash/psplash.mk
@@ -4,9 +4,10 @@
#
################################################################################
-PSPLASH_VERSION = 0.1
-PSPLASH_SITE = http://downloads.yoctoproject.org/releases/psplash
+PSPLASH_VERSION = afd4e228c606a9998feae44a3fed4474803240b7
+PSPLASH_SITE = git://git.yoctoproject.org/psplash
PSPLASH_LICENSE = GPLv2+
PSPLASH_LICENSE_FILES = COPYING
+PSPLASH_AUTORECONF = YES
$(eval $(autotools-package))
--
1.8.5.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 2/3] psplash: use git repository
2014-01-10 19:50 ` [Buildroot] [PATCH 2/3] psplash: use git repository Lucas De Marchi
@ 2014-01-15 22:18 ` Peter Korsgaard
0 siblings, 0 replies; 11+ messages in thread
From: Peter Korsgaard @ 2014-01-15 22:18 UTC (permalink / raw)
To: buildroot
>>>>> "Lucas" == Lucas De Marchi <lucas.de.marchi@gmail.com> writes:
> psplash doesn't see a new release for quite some time. The lattest
> commits brought some nice bug fixes and a feature that allows to
> easily customize the splash image.
> Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
> ---
> package/psplash/psplash.mk | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
> diff --git a/package/psplash/psplash.mk b/package/psplash/psplash.mk
> index cb1c54a..fe14f44 100644
> --- a/package/psplash/psplash.mk
> +++ b/package/psplash/psplash.mk
> @@ -4,9 +4,10 @@
> #
> ################################################################################
> -PSPLASH_VERSION = 0.1
> -PSPLASH_SITE = http://downloads.yoctoproject.org/releases/psplash
> +PSPLASH_VERSION = afd4e228c606a9998feae44a3fed4474803240b7
> +PSPLASH_SITE = git://git.yoctoproject.org/psplash
> PSPLASH_LICENSE = GPLv2+
> PSPLASH_LICENSE_FILES = COPYING
That git revision no longer has a COPYING file, so I've dropped this
line and committed, thanks.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 3/3] pi4j: new package
2014-01-10 19:50 [Buildroot] [PATCH 1/3] wiringpi: new package Lucas De Marchi
2014-01-10 19:50 ` [Buildroot] [PATCH 2/3] psplash: use git repository Lucas De Marchi
@ 2014-01-10 19:50 ` Lucas De Marchi
2014-01-11 6:40 ` Thomas Petazzoni
2014-01-11 6:08 ` [Buildroot] [PATCH 1/3] wiringpi: " Thomas Petazzoni
2 siblings, 1 reply; 11+ messages in thread
From: Lucas De Marchi @ 2014-01-10 19:50 UTC (permalink / raw)
To: buildroot
Add pi4j using its released binaries. The java archives are a bit
different than other packages. Since they are coming already
pre-compiled put them in /opt with the same layout as in raspbian,
according to http://pi4j.com/install.html
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
---
package/Config.in | 1 +
package/pi4j/Config.in | 10 ++++++++++
package/pi4j/pi4j.mk | 30 ++++++++++++++++++++++++++++++
3 files changed, 41 insertions(+)
create mode 100644 package/pi4j/Config.in
create mode 100644 package/pi4j/pi4j.mk
diff --git a/package/Config.in b/package/Config.in
index 748ddbf..ea4556f 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -579,6 +579,7 @@ source "package/mtdev/Config.in"
source "package/ne10/Config.in"
source "package/neardal/Config.in"
source "package/pcsc-lite/Config.in"
+source "package/pi4j/Config.in"
source "package/tslib/Config.in"
source "package/urg/Config.in"
source "package/wiringpi/Config.in"
diff --git a/package/pi4j/Config.in b/package/pi4j/Config.in
new file mode 100644
index 0000000..99736bf
--- /dev/null
+++ b/package/pi4j/Config.in
@@ -0,0 +1,10 @@
+config BR2_PACKAGE_PI4J
+ bool "pi4j"
+ depends on BR2_PACKAGE_RPI_USERLAND
+ help
+ This package is intended to provide a bridge between the native
+ libraries and Java for full access to the Raspberry Pi.
+
+ It installs the pre-compiled library from the released pi4j tarball.
+
+ http://pi4j.com/
diff --git a/package/pi4j/pi4j.mk b/package/pi4j/pi4j.mk
new file mode 100644
index 0000000..38f2926
--- /dev/null
+++ b/package/pi4j/pi4j.mk
@@ -0,0 +1,30 @@
+################################################################################
+#
+# pi4j
+#
+################################################################################
+
+PI4J_VERSION = 0.0.5
+PI4J_SITE = http://pi4j.googlecode.com/files/
+PI4J_SOURCE = pi4j-$(PI4J_VERSION).zip
+PI4J_LICENSE = Apache-v2
+PI4J_LICENSE_FILES = LICENSE.txt
+
+define PI4J_EXTRACT_CMDS
+ unzip -q -d $(@D)/../ $(DL_DIR)/$(PI4J_SOURCE)
+endef
+
+define PI4J_INSTALL_TARGET_CMDS
+ $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-core.jar \
+ $(TARGET_DIR)/opt/pi4j/lib/pi4j-core.jar
+ $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-device.jar \
+ $(TARGET_DIR)/opt/pi4j/lib/pi4j-device.jar
+ $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-example.jar \
+ $(TARGET_DIR)/opt/pi4j/lib/pi4j-example.jar
+ $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-gpio-extension.jar \
+ $(TARGET_DIR)/opt/pi4j/lib/pi4j-extension.jar
+ $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-service.jar \
+ $(TARGET_DIR)/opt/pi4j/lib/pi4j-service.jar
+endef
+
+$(eval $(generic-package))
--
1.8.5.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 3/3] pi4j: new package
2014-01-10 19:50 ` [Buildroot] [PATCH 3/3] pi4j: new package Lucas De Marchi
@ 2014-01-11 6:40 ` Thomas Petazzoni
2014-01-11 12:27 ` Lucas De Marchi
0 siblings, 1 reply; 11+ messages in thread
From: Thomas Petazzoni @ 2014-01-11 6:40 UTC (permalink / raw)
To: buildroot
Dear Lucas De Marchi,
On Fri, 10 Jan 2014 17:50:22 -0200, Lucas De Marchi wrote:
> Add pi4j using its released binaries. The java archives are a bit
> different than other packages. Since they are coming already
> pre-compiled put them in /opt with the same layout as in raspbian,
> according to http://pi4j.com/install.html
I think this is quite certainly the first Java library for which we
have a package. Which JVM are you using to run this on the target? The
official Oracle JDK?
I think this package, like Python/Lua/Perl packages, should depend on
the selection of a JVM, be it the official Oracle JDK (for which a
package would have to be created), or JamVM, if this package is
actually compatible with it.
Regarding the installation in /opt, I'm not sure. The fact that
Raspbian installs it here is not that much of an argument to me (quite
the opposite, actually!).
On Ubuntu, the Java libraries are apparently installed
in /usr/share/java/, which seems a bit more sensible to me. The JNI
parts are installed in /usr/lib/jni/. See:
$ dpkg -L librxtx-java
[... skip documentation ...]
/usr/share/java
/usr/share/java/RXTXcomm-2.2pre2.jar
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/librxtx-java
/usr/lib
/usr/lib/jni
/usr/lib/jni/librxtxRaw-2.2pre1.so
/usr/lib/jni/librxtxI2C-2.2pre1.so
/usr/lib/jni/librxtxRS485-2.2pre1.so
/usr/lib/jni/librxtxSerial-2.2pre1.so
/usr/lib/jni/librxtxParallel-2.2pre1.so
/usr/share/java/RXTXcomm.jar
/usr/lib/jni/librxtxSerial.so
/usr/lib/jni/librxtxRS485.so
/usr/lib/jni/librxtxI2C.so
/usr/lib/jni/librxtxParallel.so
/usr/lib/jni/librxtxRaw.so
> diff --git a/package/pi4j/Config.in b/package/pi4j/Config.in
> new file mode 100644
> index 0000000..99736bf
> --- /dev/null
> +++ b/package/pi4j/Config.in
> @@ -0,0 +1,10 @@
> +config BR2_PACKAGE_PI4J
> + bool "pi4j"
> + depends on BR2_PACKAGE_RPI_USERLAND
Why this dependency?
As stated above, we should ensure that a JVM is selected here.
> +define PI4J_INSTALL_TARGET_CMDS
> + $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-core.jar \
> + $(TARGET_DIR)/opt/pi4j/lib/pi4j-core.jar
> + $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-device.jar \
> + $(TARGET_DIR)/opt/pi4j/lib/pi4j-device.jar
> + $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-example.jar \
> + $(TARGET_DIR)/opt/pi4j/lib/pi4j-example.jar
> + $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-gpio-extension.jar \
> + $(TARGET_DIR)/opt/pi4j/lib/pi4j-extension.jar
> + $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-service.jar \
> + $(TARGET_DIR)/opt/pi4j/lib/pi4j-service.jar
> +endef
This can probably be improved a little bit:
PI4J_LIBS = core device example extension service
define PI4J_INSTALL_TARGET_CMDS
$(foreach lib,$(PI4J_LIBS),\
$(INSTALL) -D -m 0644 $(@D)/lib/pi4j-$(lib).jar $(TARGET_DIR)/opt/pi4j/lib/pi4j-$(lib).jar)
endef
Thanks!
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 3/3] pi4j: new package
2014-01-11 6:40 ` Thomas Petazzoni
@ 2014-01-11 12:27 ` Lucas De Marchi
2014-01-13 8:02 ` Thomas Petazzoni
0 siblings, 1 reply; 11+ messages in thread
From: Lucas De Marchi @ 2014-01-11 12:27 UTC (permalink / raw)
To: buildroot
On Sat, Jan 11, 2014 at 4:40 AM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Dear Lucas De Marchi,
>
> On Fri, 10 Jan 2014 17:50:22 -0200, Lucas De Marchi wrote:
>
>> Add pi4j using its released binaries. The java archives are a bit
>> different than other packages. Since they are coming already
>> pre-compiled put them in /opt with the same layout as in raspbian,
>> according to http://pi4j.com/install.html
>
> I think this is quite certainly the first Java library for which we
> have a package. Which JVM are you using to run this on the target? The
> official Oracle JDK?
I'm using the official Oracle JDK. However I think we are not allowed
to distribute it or make "recipes" to distribute it as part of
buildroot, are we? Its license looks really restrictive. My current
approach for the rootfs I'm building for a friend of mine is to
install the Oracle jdk by using a overlay directory in buildroot. Do
you think it would be possible to add the oracle jdk to buildroot?
>
> I think this package, like Python/Lua/Perl packages, should depend on
> the selection of a JVM, be it the official Oracle JDK (for which a
> package would have to be created), or JamVM, if this package is
> actually compatible with it.
>
> Regarding the installation in /opt, I'm not sure. The fact that
> Raspbian installs it here is not that much of an argument to me (quite
> the opposite, actually!).
I put it there actually because it's a pre-compiled thing.
>
> On Ubuntu, the Java libraries are apparently installed
> in /usr/share/java/, which seems a bit more sensible to me. The JNI
> parts are installed in /usr/lib/jni/. See:
>
> $ dpkg -L librxtx-java
> [... skip documentation ...]
> /usr/share/java
> /usr/share/java/RXTXcomm-2.2pre2.jar
> /usr/share/lintian
> /usr/share/lintian/overrides
> /usr/share/lintian/overrides/librxtx-java
> /usr/lib
> /usr/lib/jni
> /usr/lib/jni/librxtxRaw-2.2pre1.so
> /usr/lib/jni/librxtxI2C-2.2pre1.so
> /usr/lib/jni/librxtxRS485-2.2pre1.so
> /usr/lib/jni/librxtxSerial-2.2pre1.so
> /usr/lib/jni/librxtxParallel-2.2pre1.so
> /usr/share/java/RXTXcomm.jar
> /usr/lib/jni/librxtxSerial.so
> /usr/lib/jni/librxtxRS485.so
> /usr/lib/jni/librxtxI2C.so
> /usr/lib/jni/librxtxParallel.so
> /usr/lib/jni/librxtxRaw.so
>
>
>> diff --git a/package/pi4j/Config.in b/package/pi4j/Config.in
>> new file mode 100644
>> index 0000000..99736bf
>> --- /dev/null
>> +++ b/package/pi4j/Config.in
>> @@ -0,0 +1,10 @@
>> +config BR2_PACKAGE_PI4J
>> + bool "pi4j"
>> + depends on BR2_PACKAGE_RPI_USERLAND
>
> Why this dependency?
the same as for wiringpi. This package is specific to rpi and doesn't
make sense on other platforms.
>
> As stated above, we should ensure that a JVM is selected here.
>
>> +define PI4J_INSTALL_TARGET_CMDS
>> + $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-core.jar \
>> + $(TARGET_DIR)/opt/pi4j/lib/pi4j-core.jar
>> + $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-device.jar \
>> + $(TARGET_DIR)/opt/pi4j/lib/pi4j-device.jar
>> + $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-example.jar \
>> + $(TARGET_DIR)/opt/pi4j/lib/pi4j-example.jar
>> + $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-gpio-extension.jar \
>> + $(TARGET_DIR)/opt/pi4j/lib/pi4j-extension.jar
>> + $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-service.jar \
>> + $(TARGET_DIR)/opt/pi4j/lib/pi4j-service.jar
>> +endef
>
> This can probably be improved a little bit:
>
> PI4J_LIBS = core device example extension service
>
> define PI4J_INSTALL_TARGET_CMDS
> $(foreach lib,$(PI4J_LIBS),\
> $(INSTALL) -D -m 0644 $(@D)/lib/pi4j-$(lib).jar $(TARGET_DIR)/opt/pi4j/lib/pi4j-$(lib).jar)
> endef
>
> Thanks!
ok, thanks.
Lucas De Marchi
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 3/3] pi4j: new package
2014-01-11 12:27 ` Lucas De Marchi
@ 2014-01-13 8:02 ` Thomas Petazzoni
0 siblings, 0 replies; 11+ messages in thread
From: Thomas Petazzoni @ 2014-01-13 8:02 UTC (permalink / raw)
To: buildroot
Dear Lucas De Marchi,
On Sat, 11 Jan 2014 10:27:41 -0200, Lucas De Marchi wrote:
> > I think this is quite certainly the first Java library for which we
> > have a package. Which JVM are you using to run this on the target? The
> > official Oracle JDK?
>
> I'm using the official Oracle JDK. However I think we are not allowed
> to distribute it or make "recipes" to distribute it as part of
> buildroot, are we? Its license looks really restrictive. My current
> approach for the rootfs I'm building for a friend of mine is to
> install the Oracle jdk by using a overlay directory in buildroot. Do
> you think it would be possible to add the oracle jdk to buildroot?
I haven't looked at the licensing details, but it would be worth
checking this. I know that some time ago, Debian had a package for the
JVM, which was downloading it from Sun (back in the days).
> > Regarding the installation in /opt, I'm not sure. The fact that
> > Raspbian installs it here is not that much of an argument to me (quite
> > the opposite, actually!).
>
> I put it there actually because it's a pre-compiled thing.
Still, my feeling is that /usr/share/java is a better location.
> >> diff --git a/package/pi4j/Config.in b/package/pi4j/Config.in
> >> new file mode 100644
> >> index 0000000..99736bf
> >> --- /dev/null
> >> +++ b/package/pi4j/Config.in
> >> @@ -0,0 +1,10 @@
> >> +config BR2_PACKAGE_PI4J
> >> + bool "pi4j"
> >> + depends on BR2_PACKAGE_RPI_USERLAND
> >
> > Why this dependency?
>
> the same as for wiringpi. This package is specific to rpi and doesn't
> make sense on other platforms.
But you can perfectly use the Rasberry Pi without rpi-userland.
rpi-userland is just the binary blobs for OpenGL and al.
Just make this dependency a dependency on BR2_arm.
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 1/3] wiringpi: new package
2014-01-10 19:50 [Buildroot] [PATCH 1/3] wiringpi: new package Lucas De Marchi
2014-01-10 19:50 ` [Buildroot] [PATCH 2/3] psplash: use git repository Lucas De Marchi
2014-01-10 19:50 ` [Buildroot] [PATCH 3/3] pi4j: new package Lucas De Marchi
@ 2014-01-11 6:08 ` Thomas Petazzoni
2014-01-11 12:20 ` Lucas De Marchi
2 siblings, 1 reply; 11+ messages in thread
From: Thomas Petazzoni @ 2014-01-11 6:08 UTC (permalink / raw)
To: buildroot
Dear Lucas De Marchi,
On Fri, 10 Jan 2014 17:50:20 -0200, Lucas De Marchi wrote:
> wiringpi has a really poor build system wrt cross-compiling and has no
> official release. These are the patches needed to cross-compile it in
> its latest revision.
We already had a patch that proposed to add this library in July 2013
(search for "Raspberry Pi - WiringPi Library Package" in the mailing
list archives). At the time, the approach of the patch was to
completely replace the package build system by a CMake based one. The
patches were actually smaller than the ones you're proposing here:
package/Config.in | 1 +
package/wiringpi/Config.in | 8 ++
package/wiringpi/wiringpi-CLOEXEC-undefined.patch | 15 ++++
package/wiringpi/wiringpi-cmake-support.patch | 101 ++++++++++++++++++++++
package/wiringpi/wiringpi.mk | 41 +++++++++
That being said, the big drawback of having a completely different
build system is that everytime we will bump this library, we will need
to do some close analysis to verify that our CMake based build system
is aligned with what the official custom build system is doing. In that
sense, I may in the end prefer your approach that consists in fixing
the build system itself. This way, if it gets changed, then we'll
automatically have these changes, or we will notice through conflicts
that things have changed.
Also, looking at your patches below, only a few of them are in fact
directly related to cross-compilation. Most of them fix various other
issues, and maybe could be upstreamed.
> This patch set was made hoping it would be merged by upstream. Therefore
> it's conservative on the changes. However the feedback was that
> "cross-compiling is wrong and you should fork it if you want to do so".
These RasberryPi people are really crazy. That some of them want to
spend hours doing native builds on their RasberryPi is a thing, but
that they force everybody to use those poor practices is really
frustrating.
> diff --git a/package/wiringpi/0002-Fix-typo-in-makefiles.patch b/package/wiringpi/0002-Fix-typo-in-makefiles.patch
> new file mode 100644
> index 0000000..3145aa5
> --- /dev/null
> +++ b/package/wiringpi/0002-Fix-typo-in-makefiles.patch
> @@ -0,0 +1,187 @@
> +From d87fbc10e372139736029009f0574e228776f205 Mon Sep 17 00:00:00 2001
> +From: Lucas De Marchi <lucas.de.marchi@gmail.com>
> +Date: Sat, 28 Dec 2013 18:26:13 -0200
> +Subject: [PATCH 2/8] Fix typo in makefiles
> +
> +It's PHONY, not PHONEY.
This one can probably be upstreamed. Or maybe making typos is also part
of the RasberryPi way of doing things? :-)
> diff --git a/package/wiringpi/0004-Add-gitignore-file.patch b/package/wiringpi/0004-Add-gitignore-file.patch
> new file mode 100644
> index 0000000..081d5be
> --- /dev/null
> +++ b/package/wiringpi/0004-Add-gitignore-file.patch
> @@ -0,0 +1,23 @@
> +From 5f677acf115e1aa36d32a93164aa669d73c40fbf Mon Sep 17 00:00:00 2001
> +From: Lucas De Marchi <lucas.de.marchi@gmail.com>
> +Date: Sat, 28 Dec 2013 18:26:20 -0200
> +Subject: [PATCH 4/8] Add gitignore file
I don't think we really need this patch in Buildroot.
> diff --git a/package/wiringpi/Config.in b/package/wiringpi/Config.in
> new file mode 100644
> index 0000000..1e7433a
> --- /dev/null
> +++ b/package/wiringpi/Config.in
> @@ -0,0 +1,17 @@
> +config BR2_PACKAGE_WIRINGPI
> + bool "wiringpi"
> + depends on BR2_TOOLCHAIN_HAS_THREADS
> + depends on BR2_PACKAGE_RPI_USERLAND
Is this dependency really needed? What does rpi-userland brings that is
needed for wiringPi?
> + help
> + WiringPi is a GPIO access library written in C for the BCM2835
> + used in the Raspberry Pi.
I continue to be skeptical about the usefulness of such a library. Why
not just use the /sys/class/gpio interface? But well, wiringPi seems to
actually be used by some people, so we should have a package for it.
> diff --git a/package/wiringpi/wiringpi.mk b/package/wiringpi/wiringpi.mk
> new file mode 100644
> index 0000000..8e448ea
> --- /dev/null
> +++ b/package/wiringpi/wiringpi.mk
> @@ -0,0 +1,28 @@
> +################################################################################
> +#
> +# wiringpi
> +#
> +################################################################################
> +
> +WIRINGPI_VERSION = f18c8f7204d6354220fd6754578b3daa43734e1b
> +WIRINGPI_SITE = git://git.drogon.net/wiringPi
> +
> +WIRINGPI_LICENSE = LGPLv3
License is LGPLv3+ it seems
> +WIRINGPI_LICENSE_FILES = COPYING.LESSER
> +
> +PREFIX = /usr
No, this is not possible. Make variables in Buildroot are global, and
we clearly do not want a global PREFIX variable to be defined.
> +define WIRINGPI_BUILD_CMDS
> + env
> + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) $(MAKE) -C $(@D)/wiringPi
> + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) $(MAKE) -C $(@D)/devLib
> + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) DESTDIR=$(TARGET_DIR) $(MAKE) -C $(@D)/gpio
> +endef
> +
> +define WIRINGPI_INSTALL_TARGET_CMDS
> + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) DESTDIR=$(TARGET_DIR) $(MAKE) -C $(@D)/wiringPi install
> + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) DESTDIR=$(TARGET_DIR) $(MAKE) -C $(@D)/devLib install
> + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) DESTDIR=$(TARGET_DIR) $(MAKE) -C $(@D)/gpio install
> +endef
A better solution is probably:
WIRINGPI_MAKE_OPTS = \
$(TARGET_CONFIGURE_OPTS) \
PREFIX=/usr
WIRINGPI_DIRS = wiringPi devLib gpio
define WIRINGPI_BUILD_CMDS
$(foreach d,$(WIRINGPI_DIRS),\
$(TARGET_MAKE_ENV) $(MAKE) $(WIRINGPI_MAKE_OPTS) -C $(@D)/$(d))
endef
define WIRINGPI_INSTALL_TARGET_CMDS
$(foreach d,$(WIRINGPI_DIRS),\
$(TARGET_MAKE_ENV) $(MAKE) $(WIRINGPI_MAKE_OPTS) DESTDIR=$(TARGET_DIR) -C $(@D)/$(d) install)
endef
Also, I'm a bit surprised that it doesn't get installed in the staging
directory (i.e WIRINGPI_INSTALL_STAGING = YES). If it's a library, to
which other applications can get linked to, then it should be installed
to the staging directory as well.
Thanks!
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 1/3] wiringpi: new package
2014-01-11 6:08 ` [Buildroot] [PATCH 1/3] wiringpi: " Thomas Petazzoni
@ 2014-01-11 12:20 ` Lucas De Marchi
2014-03-07 22:52 ` Thomas Petazzoni
0 siblings, 1 reply; 11+ messages in thread
From: Lucas De Marchi @ 2014-01-11 12:20 UTC (permalink / raw)
To: buildroot
Hi Thomas,
On Sat, Jan 11, 2014 at 4:08 AM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Dear Lucas De Marchi,
>
> On Fri, 10 Jan 2014 17:50:20 -0200, Lucas De Marchi wrote:
>
>> wiringpi has a really poor build system wrt cross-compiling and has no
>> official release. These are the patches needed to cross-compile it in
>> its latest revision.
>
> We already had a patch that proposed to add this library in July 2013
> (search for "Raspberry Pi - WiringPi Library Package" in the mailing
> list archives). At the time, the approach of the patch was to
> completely replace the package build system by a CMake based one. The
> patches were actually smaller than the ones you're proposing here:
>
> package/Config.in | 1 +
> package/wiringpi/Config.in | 8 ++
> package/wiringpi/wiringpi-CLOEXEC-undefined.patch | 15 ++++
> package/wiringpi/wiringpi-cmake-support.patch | 101 ++++++++++++++++++++++
> package/wiringpi/wiringpi.mk | 41 +++++++++
>
> That being said, the big drawback of having a completely different
> build system is that everytime we will bump this library, we will need
> to do some close analysis to verify that our CMake based build system
> is aligned with what the official custom build system is doing. In that
> sense, I may in the end prefer your approach that consists in fixing
> the build system itself. This way, if it gets changed, then we'll
> automatically have these changes, or we will notice through conflicts
> that things have changed.
Yes. I did what I did in the hope to merge the patches upstream though
I still think it's a poor handmade build system. From my experience
it's easier to merge patches with some changes to the build system
making it compatible with what it was previously doing rather than
proposing a new build system.
>
> Also, looking at your patches below, only a few of them are in fact
> directly related to cross-compilation. Most of them fix various other
> issues, and maybe could be upstreamed.
Yeah... I'll remove the ones that are not needed. I've got really
frustrated and surprised about the upstream feedback and sent it as
is.
>
>> This patch set was made hoping it would be merged by upstream. Therefore
>> it's conservative on the changes. However the feedback was that
>> "cross-compiling is wrong and you should fork it if you want to do so".
>
> These RasberryPi people are really crazy. That some of them want to
> spend hours doing native builds on their RasberryPi is a thing, but
> that they force everybody to use those poor practices is really
> frustrating.
agreed.
>
>> diff --git a/package/wiringpi/0002-Fix-typo-in-makefiles.patch b/package/wiringpi/0002-Fix-typo-in-makefiles.patch
>> new file mode 100644
>> index 0000000..3145aa5
>> --- /dev/null
>> +++ b/package/wiringpi/0002-Fix-typo-in-makefiles.patch
>> @@ -0,0 +1,187 @@
>> +From d87fbc10e372139736029009f0574e228776f205 Mon Sep 17 00:00:00 2001
>> +From: Lucas De Marchi <lucas.de.marchi@gmail.com>
>> +Date: Sat, 28 Dec 2013 18:26:13 -0200
>> +Subject: [PATCH 2/8] Fix typo in makefiles
>> +
>> +It's PHONY, not PHONEY.
>
> This one can probably be upstreamed. Or maybe making typos is also part
> of the RasberryPi way of doing things? :-)
I sent this patch as is... it was not even reviewed. I think the
wiringpi author has a wrong vision of open source: he publishes the
code and he is the only one to make changes but doesn't accept
contributions.
>
>
>> diff --git a/package/wiringpi/0004-Add-gitignore-file.patch b/package/wiringpi/0004-Add-gitignore-file.patch
>> new file mode 100644
>> index 0000000..081d5be
>> --- /dev/null
>> +++ b/package/wiringpi/0004-Add-gitignore-file.patch
>> @@ -0,0 +1,23 @@
>> +From 5f677acf115e1aa36d32a93164aa669d73c40fbf Mon Sep 17 00:00:00 2001
>> +From: Lucas De Marchi <lucas.de.marchi@gmail.com>
>> +Date: Sat, 28 Dec 2013 18:26:20 -0200
>> +Subject: [PATCH 4/8] Add gitignore file
>
> I don't think we really need this patch in Buildroot.
ok
>
>> diff --git a/package/wiringpi/Config.in b/package/wiringpi/Config.in
>> new file mode 100644
>> index 0000000..1e7433a
>> --- /dev/null
>> +++ b/package/wiringpi/Config.in
>> @@ -0,0 +1,17 @@
>> +config BR2_PACKAGE_WIRINGPI
>> + bool "wiringpi"
>> + depends on BR2_TOOLCHAIN_HAS_THREADS
>> + depends on BR2_PACKAGE_RPI_USERLAND
>
> Is this dependency really needed? What does rpi-userland brings that is
> needed for wiringPi?
humn... I've put this dependency because this patch makes sense only
for raspberry. As I can see (I'm not the one that is actually making
use of it) it contains configurations that are specific to the rpi and
make no sense in other platforms.
Is this "depends on" the right way to depend on a certain board.
>
>> + help
>> + WiringPi is a GPIO access library written in C for the BCM2835
>> + used in the Raspberry Pi.
>
> I continue to be skeptical about the usefulness of such a library. Why
> not just use the /sys/class/gpio interface? But well, wiringPi seems to
> actually be used by some people, so we should have a package for it.
I agree with you. I don't think it's useful at all. The only reason
I'm adding it is because people are using it (particularly the gpio
command that is part of it).
>
>> diff --git a/package/wiringpi/wiringpi.mk b/package/wiringpi/wiringpi.mk
>> new file mode 100644
>> index 0000000..8e448ea
>> --- /dev/null
>> +++ b/package/wiringpi/wiringpi.mk
>> @@ -0,0 +1,28 @@
>> +################################################################################
>> +#
>> +# wiringpi
>> +#
>> +################################################################################
>> +
>> +WIRINGPI_VERSION = f18c8f7204d6354220fd6754578b3daa43734e1b
>> +WIRINGPI_SITE = git://git.drogon.net/wiringPi
>> +
>> +WIRINGPI_LICENSE = LGPLv3
>
> License is LGPLv3+ it seems
indeed.
>
>> +WIRINGPI_LICENSE_FILES = COPYING.LESSER
>> +
>> +PREFIX = /usr
>
> No, this is not possible. Make variables in Buildroot are global, and
> we clearly do not want a global PREFIX variable to be defined.
ok, thanks
>
>> +define WIRINGPI_BUILD_CMDS
>> + env
>> + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) $(MAKE) -C $(@D)/wiringPi
>> + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) $(MAKE) -C $(@D)/devLib
>> + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) DESTDIR=$(TARGET_DIR) $(MAKE) -C $(@D)/gpio
>> +endef
>> +
>> +define WIRINGPI_INSTALL_TARGET_CMDS
>> + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) DESTDIR=$(TARGET_DIR) $(MAKE) -C $(@D)/wiringPi install
>> + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) DESTDIR=$(TARGET_DIR) $(MAKE) -C $(@D)/devLib install
>> + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) PREFIX=$(PREFIX) DESTDIR=$(TARGET_DIR) $(MAKE) -C $(@D)/gpio install
>> +endef
>
> A better solution is probably:
>
> WIRINGPI_MAKE_OPTS = \
> $(TARGET_CONFIGURE_OPTS) \
> PREFIX=/usr
>
> WIRINGPI_DIRS = wiringPi devLib gpio
>
> define WIRINGPI_BUILD_CMDS
> $(foreach d,$(WIRINGPI_DIRS),\
> $(TARGET_MAKE_ENV) $(MAKE) $(WIRINGPI_MAKE_OPTS) -C $(@D)/$(d))
> endef
>
> define WIRINGPI_INSTALL_TARGET_CMDS
> $(foreach d,$(WIRINGPI_DIRS),\
> $(TARGET_MAKE_ENV) $(MAKE) $(WIRINGPI_MAKE_OPTS) DESTDIR=$(TARGET_DIR) -C $(@D)/$(d) install)
> endef
>
> Also, I'm a bit surprised that it doesn't get installed in the staging
> directory (i.e WIRINGPI_INSTALL_STAGING = YES). If it's a library, to
> which other applications can get linked to, then it should be installed
> to the staging directory as well.
I didn't notice it probably because the gpio program is the only one
actually using and linking to this library, so it doesn't need the
library in the staging dir.
thanks for reviewing it, I'll send an updated version.
Lucas De Marchi
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 1/3] wiringpi: new package
2014-01-11 12:20 ` Lucas De Marchi
@ 2014-03-07 22:52 ` Thomas Petazzoni
2014-04-01 16:55 ` Lucas De Marchi
0 siblings, 1 reply; 11+ messages in thread
From: Thomas Petazzoni @ 2014-03-07 22:52 UTC (permalink / raw)
To: buildroot
Dear Lucas De Marchi,
On Sat, 11 Jan 2014 10:20:39 -0200, Lucas De Marchi wrote:
> thanks for reviewing it, I'll send an updated version.
Do you plan to resend new versions of your wiringpi and pi4j patches,
taking into account the reviews that were made early January?
Thanks!
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 1/3] wiringpi: new package
2014-03-07 22:52 ` Thomas Petazzoni
@ 2014-04-01 16:55 ` Lucas De Marchi
0 siblings, 0 replies; 11+ messages in thread
From: Lucas De Marchi @ 2014-04-01 16:55 UTC (permalink / raw)
To: buildroot
Hi Thomas,
On Fri, Mar 7, 2014 at 7:52 PM, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Dear Lucas De Marchi,
>
> On Sat, 11 Jan 2014 10:20:39 -0200, Lucas De Marchi wrote:
>
>> thanks for reviewing it, I'll send an updated version.
>
> Do you plan to resend new versions of your wiringpi and pi4j patches,
> taking into account the reviews that were made early January?
sorry for the delay
I totally lost interest in these 2 packages, partially because of the
upstream reaction. Now I don't have access to a rpi anymore to test
them. I may send again in future, but currently I have no plans.
--
Lucas De Marchi
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2014-04-01 16:55 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-10 19:50 [Buildroot] [PATCH 1/3] wiringpi: new package Lucas De Marchi
2014-01-10 19:50 ` [Buildroot] [PATCH 2/3] psplash: use git repository Lucas De Marchi
2014-01-15 22:18 ` Peter Korsgaard
2014-01-10 19:50 ` [Buildroot] [PATCH 3/3] pi4j: new package Lucas De Marchi
2014-01-11 6:40 ` Thomas Petazzoni
2014-01-11 12:27 ` Lucas De Marchi
2014-01-13 8:02 ` Thomas Petazzoni
2014-01-11 6:08 ` [Buildroot] [PATCH 1/3] wiringpi: " Thomas Petazzoni
2014-01-11 12:20 ` Lucas De Marchi
2014-03-07 22:52 ` Thomas Petazzoni
2014-04-01 16:55 ` Lucas De Marchi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox