diff options
author | Ctibor Brančík <ctibor@brancik.cz> | 2018-07-30 20:21:48 +0200 |
---|---|---|
committer | Ctibor Brančík <ctibor@brancik.cz> | 2018-07-30 20:21:48 +0200 |
commit | 0941ad3a8e32ef29a2bee344c597dc509e81b51d (patch) | |
tree | 6ac91ffa21e1d5ee02070a9f145f33894a086ad0 | |
parent | c64bf95222e34af572964bbcb57c21d394ca1e50 (diff) | |
download | brancik-overlay-0941ad3a8e32ef29a2bee344c597dc509e81b51d.tar.gz brancik-overlay-0941ad3a8e32ef29a2bee344c597dc509e81b51d.tar.bz2 |
Update wiringPi, taken from https://github.com/sakaki-/rpi3-overlay
-rw-r--r-- | dev-libs/wiringPi/Manifest | 1 | ||||
-rw-r--r-- | dev-libs/wiringPi/files/2.44-pseudo-cpuinfo.patch | 35 | ||||
-rw-r--r-- | dev-libs/wiringPi/files/cpuinfo-1 | 5 | ||||
-rw-r--r-- | dev-libs/wiringPi/wiringPi-2.13.ebuild | 126 | ||||
-rw-r--r-- | dev-libs/wiringPi/wiringPi-2.44-r7.ebuild | 120 |
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 +} |