summaryrefslogtreecommitdiff
path: root/dev-libs
diff options
context:
space:
mode:
authorCtibor Brančík <ctibor@brancik.cz>2018-07-30 20:21:48 +0200
committerCtibor Brančík <ctibor@brancik.cz>2018-07-30 20:21:48 +0200
commit0941ad3a8e32ef29a2bee344c597dc509e81b51d (patch)
tree6ac91ffa21e1d5ee02070a9f145f33894a086ad0 /dev-libs
parentc64bf95222e34af572964bbcb57c21d394ca1e50 (diff)
downloadbrancik-overlay-0941ad3a8e32ef29a2bee344c597dc509e81b51d.tar.gz
brancik-overlay-0941ad3a8e32ef29a2bee344c597dc509e81b51d.tar.bz2
Update wiringPi, taken from https://github.com/sakaki-/rpi3-overlay
Diffstat (limited to 'dev-libs')
-rw-r--r--dev-libs/wiringPi/Manifest1
-rw-r--r--dev-libs/wiringPi/files/2.44-pseudo-cpuinfo.patch35
-rw-r--r--dev-libs/wiringPi/files/cpuinfo-15
-rw-r--r--dev-libs/wiringPi/wiringPi-2.13.ebuild126
-rw-r--r--dev-libs/wiringPi/wiringPi-2.44-r7.ebuild120
5 files changed, 263 insertions, 24 deletions
diff --git a/dev-libs/wiringPi/Manifest b/dev-libs/wiringPi/Manifest
index 06a5a9d..df8cc87 100644
--- a/dev-libs/wiringPi/Manifest
+++ b/dev-libs/wiringPi/Manifest
@@ -1,2 +1 @@
-DIST wiringPi-2.13.tar.gz 112472 SHA256 f05443ba3db6e439b8819586d39a6289f3a00f58734e1213187f5c30048e6f64 SHA512 c94091c1a393164fdbc83569403142bd2a3f311c00af12d69753b1d775bd0cefaa2018637d016fd0185a2116b41984c213764266578d9aafbdac02087bdcfa62 WHIRLPOOL 7a67eb078c9705f0bbb8124c3bc0c000c69c92d0038c090e017a5538ba1b1edce1f17c2724e48a76c335269599ed82aaebf0ed2c015af2853bfacf8a912568a5
DIST wiringPi-2.44.tar.gz 159030 SHA256 548ffb87bdf147758503a3aa5a725ef90525134c2ec9d04d3e0ed452c2c5f7ce SHA512 b21bb602ee27232562ae0ce603b5d0537dc5cce5bc803adeba9bdb2b5eaec8df8205fb122c72624d12ead2f64176139c3e7fc17c8429297391911535bd8f159b WHIRLPOOL df5bebf2a743af0328abb7ac0a61efa1767ca0dddacdeeb36512eb0d362b504bf36fb07f3fc7c91f5e1b25647b14afe3a148f5340a246ce5335dec0dac60bb7f
diff --git a/dev-libs/wiringPi/files/2.44-pseudo-cpuinfo.patch b/dev-libs/wiringPi/files/2.44-pseudo-cpuinfo.patch
new file mode 100644
index 0000000..888afe4
--- /dev/null
+++ b/dev-libs/wiringPi/files/2.44-pseudo-cpuinfo.patch
@@ -0,0 +1,35 @@
+diff --git a/wiringPi/wiringPi.c b/wiringPi/wiringPi.c
+index a8f5963..73bee7b 100644
+--- a/wiringPi/wiringPi.c
++++ b/wiringPi/wiringPi.c
+@@ -678,7 +678,7 @@ int wiringPiFailure (int fatal, const char *message, ...)
+
+ static void piGpioLayoutOops (const char *why)
+ {
+- fprintf (stderr, "Oops: Unable to determine board revision from /proc/cpuinfo\n") ;
++ fprintf (stderr, "Oops: Unable to determine board revision from /etc/wiringpi/cpuinfo\n") ;
+ fprintf (stderr, " -> %s\n", why) ;
+ fprintf (stderr, " -> You'd best google the error to find out why.\n") ;
+ //fprintf (stderr, " -> http://www.raspberrypi.org/phpBB3/viewtopic.php?p=184410#p184410\n") ;
+@@ -695,8 +695,8 @@ int piGpioLayout (void)
+ if (gpioLayout != -1) // No point checking twice
+ return gpioLayout ;
+
+- if ((cpuFd = fopen ("/proc/cpuinfo", "r")) == NULL)
+- piGpioLayoutOops ("Unable to open /proc/cpuinfo") ;
++ if ((cpuFd = fopen ("/etc/wiringpi/cpuinfo", "r")) == NULL)
++ piGpioLayoutOops ("Unable to open /etc/wiringpi/cpuinfo") ;
+
+ // Start by looking for the Architecture to make sure we're really running
+ // on a Pi. I'm getting fed-up with people whinging at me because
+@@ -891,8 +891,8 @@ void piBoardId (int *model, int *rev, int *mem, int *maker, int *warranty)
+
+ (void)piGpioLayout () ; // Call this first to make sure all's OK. Don't care about the result.
+
+- if ((cpuFd = fopen ("/proc/cpuinfo", "r")) == NULL)
+- piGpioLayoutOops ("Unable to open /proc/cpuinfo") ;
++ if ((cpuFd = fopen ("/etc/wiringpi/cpuinfo", "r")) == NULL)
++ piGpioLayoutOops ("Unable to open /etc/wiringpi/cpuinfo") ;
+
+ while (fgets (line, 120, cpuFd) != NULL)
+ if (strncmp (line, "Revision", 8) == 0)
diff --git a/dev-libs/wiringPi/files/cpuinfo-1 b/dev-libs/wiringPi/files/cpuinfo-1
new file mode 100644
index 0000000..ac37271
--- /dev/null
+++ b/dev-libs/wiringPi/files/cpuinfo-1
@@ -0,0 +1,5 @@
+# Adjust this to match your desired /proc/cpuinfo output
+# The RPi3 has fields missing when running in 64-bit mode, hence this file
+# You only need the missing snippets, for wiringPi to read
+Hardware : BCM2709
+Revision : a02082
diff --git a/dev-libs/wiringPi/wiringPi-2.13.ebuild b/dev-libs/wiringPi/wiringPi-2.13.ebuild
index 628a847..a18db63 100644
--- a/dev-libs/wiringPi/wiringPi-2.13.ebuild
+++ b/dev-libs/wiringPi/wiringPi-2.13.ebuild
@@ -1,40 +1,120 @@
-# Copyright 2013 Hacking Networked Solutions
-# Distributed under the terms of the GNU General Public License v3
-# $Header: $
+# Copyright (c) 2017 sakaki <sakaki@deciban.com>
+# License: GPL v3+
+# NO WARRANTY
-EAPI="3"
+EAPI=6
+inherit flag-o-matic toolchain-funcs git-r3
-inherit eutils
+KEYWORDS="~arm ~arm64"
-DESCRIPTION="A 'wiring' like library for the Raspberry Pi"
+DESCRIPTION="GPIO interface libraries (and utility) for the Raspberry Pi"
HOMEPAGE="http://wiringpi.com/"
-SRC_URI="http://downloads.mad-hacking.net/software/${P}.tar.gz"
-
-LICENSE="LGPL-3"
+SRC_URI=""
+LICENSE="LGPL-3+"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
IUSE=""
+RESTRICT="mirror"
-RDEPEND=""
-DEPEND="${RDEPEND}"
+EGIT_REPO_URI="git://git.drogon.net/wiringPi"
+EGIT_BRANCH="master"
+# fetch the branch matching the ebuild version
+EGIT_COMMIT="${PV}"
-MAKEDIRS="wiringPi devLib"
+DEPEND=""
+RDEPEND="
+ ${DEPEND}"
src_prepare() {
- epatch "${FILESDIR}/wiringPi_Makefile.patch"
- epatch "${FILESDIR}/devLib_Makefile.patch"
+ local DIR
+ # put header files in include subdirectory
+ # don't make library links directly (these break)
+ # update manpage location to non-deprecated value
+ # get rid of suid (security risk); install utility as sbin instead
+ # if on arm64, install to /usr/lib64, not /usr/lib
+ # purge upstream email addresses as Gentoo is an unsupported platform
+ for DIR in wiringPi devLib gpio; do
+ sed -e "s#/include#/include/${PN}#" \
+ -e 's:\($Q \)ln -sf:#\1ln -sf:g' \
+ -e 's:/man/man:/share/man/man:g' \
+ -e 's:/bin:/sbin:g' \
+ -e 's:4755:0755:g' \
+ -i "${DIR}"/Makefile
+ if use arm64; then
+ sed -e 's:$(PREFIX)/lib:$(PREFIX)/lib64:g' \
+ -e 's:/lib/:/lib64/:g' \
+ -i "${DIR}"/Makefile
+ fi
+ done
+ sed -e 's/projects@drogon.net/(email removed, Gentoo unsupported)/g' \
+ -i $(find . -type f -exec grep -l "projects@drogon.net" {} +)
+ # deal with problem that RPi3 in 64-bit mode does not have
+ # the 'Hardware' line in /proc/cpuinfo, which the wiringPi library
+ # checks, by making it look in /etc/wiringpi/cpuinfo instead
+ use arm64 && epatch "${FILESDIR}/${PV}-pseudo-cpuinfo.patch"
+ default
}
src_compile() {
- for d in ${MAKEDIRS}; do
- cd "${WORKDIR}/${P}/${d}"
- emake
- done
+ # git archive contains object files
+ cd wiringPi
+ emake V=1 clean
+ append-cflags "-fPIC" "-I${S}/wiringPi"
+ # ensure the right compiler and flags get used
+ emake V=1 CC=$(tc-getCC) CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
+ LDCONFIG=/bin/true
+ # set up symlink for library
+ ln -s libwiringPi.so.* libwiringPi.so
+
+ # now ditto for other directories
+
+ cd ../devLib
+ emake V=1 clean
+ append-cflags "-I${S}/devLib"
+ emake V=1 CC=$(tc-getCC) CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
+ LDCONFIG=/bin/true
+ ln -s libwiringPiDev.so.* libwiringPiDev.so
+
+ cd ../gpio
+ emake V=1 clean
+ append-cflags "-I${S}/cpio"
+ append-ldflags "-L${S}/wiringPi" "-L${S}/devLib"
+ emake V=1 CC=$(tc-getCC) CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
+ LDCONFIG=/bin/true
}
src_install() {
- for d in ${MAKEDIRS}; do
- cd "${WORKDIR}/${P}/${d}"
- emake DESTDIR="${D}/usr/" PREFIX="" install
- done
+ local LIBDIR="${D%/}/usr/lib"
+ if use arm64; then
+ LIBDIR+="64"
+ fi
+ cd wiringPi
+ emake DESTDIR="${D%/}" PREFIX="/usr" install
+ cp --no-dereference libwiringPi.so "${LIBDIR}/"
+ cd ../devLib
+ emake DESTDIR="${D%/}" PREFIX="/usr" install
+ cp --no-dereference libwiringPiDev.so "${LIBDIR}/"
+ cd ../gpio
+ mkdir -p "${D%/}/usr/sbin"
+ emake DESTDIR="${D%/}" PREFIX="/usr" install
+ cd ..
+ DOCS=( README.TXT People )
+ if use arm64; then
+ # following is a snippet of cpuinfo, for use on Pi3s (which
+ # don't contain all the expected fields when booted in 64-bit
+ # mode)
+ insinto "/etc/${PN}"
+ newins "${FILESDIR}/cpuinfo-1" "cpuinfo"
+ fi
+ einstalldocs
+}
+
+pkg_postinst() {
+ if [[ -z ${REPLACING_VERSIONS} ]] && use arm64; then
+ elog "The file /etc/${PN}/cpuinfo has been created."
+ elog "The library will look there, instead of /proc/cpuinfo"
+ elog "when determining system type; this is necessary because"
+ elog "some /proc/cpuinfo data is not output in 64-bit mode."
+ elog "It only contains the necessary stanzas."
+ elog "You can modify this file as required."
+ fi
}
diff --git a/dev-libs/wiringPi/wiringPi-2.44-r7.ebuild b/dev-libs/wiringPi/wiringPi-2.44-r7.ebuild
new file mode 100644
index 0000000..a18db63
--- /dev/null
+++ b/dev-libs/wiringPi/wiringPi-2.44-r7.ebuild
@@ -0,0 +1,120 @@
+# Copyright (c) 2017 sakaki <sakaki@deciban.com>
+# License: GPL v3+
+# NO WARRANTY
+
+EAPI=6
+inherit flag-o-matic toolchain-funcs git-r3
+
+KEYWORDS="~arm ~arm64"
+
+DESCRIPTION="GPIO interface libraries (and utility) for the Raspberry Pi"
+HOMEPAGE="http://wiringpi.com/"
+SRC_URI=""
+LICENSE="LGPL-3+"
+SLOT="0"
+IUSE=""
+RESTRICT="mirror"
+
+EGIT_REPO_URI="git://git.drogon.net/wiringPi"
+EGIT_BRANCH="master"
+# fetch the branch matching the ebuild version
+EGIT_COMMIT="${PV}"
+
+DEPEND=""
+RDEPEND="
+ ${DEPEND}"
+
+src_prepare() {
+ local DIR
+ # put header files in include subdirectory
+ # don't make library links directly (these break)
+ # update manpage location to non-deprecated value
+ # get rid of suid (security risk); install utility as sbin instead
+ # if on arm64, install to /usr/lib64, not /usr/lib
+ # purge upstream email addresses as Gentoo is an unsupported platform
+ for DIR in wiringPi devLib gpio; do
+ sed -e "s#/include#/include/${PN}#" \
+ -e 's:\($Q \)ln -sf:#\1ln -sf:g' \
+ -e 's:/man/man:/share/man/man:g' \
+ -e 's:/bin:/sbin:g' \
+ -e 's:4755:0755:g' \
+ -i "${DIR}"/Makefile
+ if use arm64; then
+ sed -e 's:$(PREFIX)/lib:$(PREFIX)/lib64:g' \
+ -e 's:/lib/:/lib64/:g' \
+ -i "${DIR}"/Makefile
+ fi
+ done
+ sed -e 's/projects@drogon.net/(email removed, Gentoo unsupported)/g' \
+ -i $(find . -type f -exec grep -l "projects@drogon.net" {} +)
+ # deal with problem that RPi3 in 64-bit mode does not have
+ # the 'Hardware' line in /proc/cpuinfo, which the wiringPi library
+ # checks, by making it look in /etc/wiringpi/cpuinfo instead
+ use arm64 && epatch "${FILESDIR}/${PV}-pseudo-cpuinfo.patch"
+ default
+}
+
+src_compile() {
+ # git archive contains object files
+ cd wiringPi
+ emake V=1 clean
+ append-cflags "-fPIC" "-I${S}/wiringPi"
+ # ensure the right compiler and flags get used
+ emake V=1 CC=$(tc-getCC) CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
+ LDCONFIG=/bin/true
+ # set up symlink for library
+ ln -s libwiringPi.so.* libwiringPi.so
+
+ # now ditto for other directories
+
+ cd ../devLib
+ emake V=1 clean
+ append-cflags "-I${S}/devLib"
+ emake V=1 CC=$(tc-getCC) CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
+ LDCONFIG=/bin/true
+ ln -s libwiringPiDev.so.* libwiringPiDev.so
+
+ cd ../gpio
+ emake V=1 clean
+ append-cflags "-I${S}/cpio"
+ append-ldflags "-L${S}/wiringPi" "-L${S}/devLib"
+ emake V=1 CC=$(tc-getCC) CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
+ LDCONFIG=/bin/true
+}
+
+src_install() {
+ local LIBDIR="${D%/}/usr/lib"
+ if use arm64; then
+ LIBDIR+="64"
+ fi
+ cd wiringPi
+ emake DESTDIR="${D%/}" PREFIX="/usr" install
+ cp --no-dereference libwiringPi.so "${LIBDIR}/"
+ cd ../devLib
+ emake DESTDIR="${D%/}" PREFIX="/usr" install
+ cp --no-dereference libwiringPiDev.so "${LIBDIR}/"
+ cd ../gpio
+ mkdir -p "${D%/}/usr/sbin"
+ emake DESTDIR="${D%/}" PREFIX="/usr" install
+ cd ..
+ DOCS=( README.TXT People )
+ if use arm64; then
+ # following is a snippet of cpuinfo, for use on Pi3s (which
+ # don't contain all the expected fields when booted in 64-bit
+ # mode)
+ insinto "/etc/${PN}"
+ newins "${FILESDIR}/cpuinfo-1" "cpuinfo"
+ fi
+ einstalldocs
+}
+
+pkg_postinst() {
+ if [[ -z ${REPLACING_VERSIONS} ]] && use arm64; then
+ elog "The file /etc/${PN}/cpuinfo has been created."
+ elog "The library will look there, instead of /proc/cpuinfo"
+ elog "when determining system type; this is necessary because"
+ elog "some /proc/cpuinfo data is not output in 64-bit mode."
+ elog "It only contains the necessary stanzas."
+ elog "You can modify this file as required."
+ fi
+}