diff mbox

[1/3] wiringpi: new package

Message ID 1389383422-29665-1-git-send-email-lucas.de.marchi@gmail.com
State Rejected
Headers show

Commit Message

Lucas De Marchi Jan. 10, 2014, 7:50 p.m. UTC
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

Comments

Thomas Petazzoni Jan. 11, 2014, 6:08 a.m. UTC | #1
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
Lucas De Marchi Jan. 11, 2014, 12:20 p.m. UTC | #2
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
Thomas Petazzoni March 7, 2014, 10:52 p.m. UTC | #3
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
Lucas De Marchi April 1, 2014, 4:55 p.m. UTC | #4
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
diff mbox

Patch

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))