diff options
Diffstat (limited to 'dev-libs/wiringPi/wiringPi-2.13.ebuild')
-rw-r--r-- | dev-libs/wiringPi/wiringPi-2.13.ebuild | 126 |
1 files changed, 103 insertions, 23 deletions
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 } |