123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- # Copyright 1999-2017 Gentoo Foundation
- # Distributed under the terms of the GNU General Public License v2
- EAPI=6
- PYTHON_COMPAT=( python2_7 )
- DISTUTILS_OPTIONAL=1
- inherit autotools distutils-r1 eutils linux-info perl-functions systemd user
- MY_P=${P/_/}
- DESCRIPTION="Access 1-Wire devices like a filesystem"
- SRC_URI="mirror://sourceforge/owfs/${MY_P}.tar.gz"
- HOMEPAGE="http://owfs.org/ https://sourceforge.net/projects/owfs/"
- KEYWORDS="amd64 arm x86"
- SLOT="0/4.0.0"
- LICENSE="GPL-2"
- RDEPEND="
- ftdi? ( dev-embedded/libftdi:0 )
- fuse? ( sys-fs/fuse )
- perl? ( dev-lang/perl:= )
- parport? ( sys-kernel/linux-headers )
- php? ( dev-lang/php:=[cli] )
- python? ( ${PYTHON_DEPS} )
- tcl? ( dev-lang/tcl:0= )
- usb? ( virtual/libusb:0 )
- zeroconf? ( net-dns/avahi[mdnsresponder-compat] )"
- DEPEND="${RDEPEND}
- perl? ( dev-lang/swig )
- php? ( dev-lang/swig )
- python? ( dev-lang/swig )"
- IUSE="debug ftdi ftpd fuse httpd parport perl php python tcl usb zeroconf"
- REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
- PATCHES=(
- "${FILESDIR}"/${PN}-3.1-vendordir.patch
- "${FILESDIR}"/${PN}-3.1p4-sysmacros.patch
- )
- S=${WORKDIR}/${MY_P}
- OWUID=${OWUID:-owfs}
- OWGID=${OWGID:-owfs}
- pkg_setup() {
- if use kernel_linux; then
- linux-info_pkg_setup
- if linux_config_exists; then
- if ! linux_chkconfig_present W1; then
- ewarn "CONFIG_W1 isn't set. You will not be able to use 1-wire bus on this system!"
- fi
- else
- elog "Cannot find a linux kernel configuration. Continuing anyway."
- fi
- fi
- use perl && perl_set_version
- enewgroup ${OWGID} 150
- enewuser ${OWUID} 150 -1 -1 ${OWGID}
- }
- src_prepare() {
- default
- # Support user's CFLAGS and LDFLAGS.
- sed -i "s/@CPPFLAGS@/@CPPFLAGS@ ${CFLAGS}/" \
- module/swig/perl5/OW/Makefile.linux.in || die
- sed -i "s/@LIBS@/@LIBS@ ${LDFLAGS}/" \
- module/swig/perl5/OW/Makefile.linux.in || die
- eautoreconf
- }
- src_configure() {
- # disable owpython since we can build python anyway
- # and without it, we don't have to fix the build ;)
- local myeconf=(
- $(use_enable debug)
- $(use_enable fuse owfs)
- $(use_enable ftdi)
- $(use_enable ftpd owftpd)
- $(use_enable httpd owhttpd)
- $(use_enable parport)
- $(use_enable perl owperl)
- $(use_enable php owphp)
- --disable-owpython
- $(use_enable tcl owtcl)
- $(use_enable zeroconf avahi)
- $(use_enable zeroconf zero)
- $(use_enable usb)
- --with-systemdsystemunitdir=$(systemd_get_systemunitdir)
- )
- if use httpd || use ftpd || use fuse; then
- myeconf+=( --enable-owserver )
- else
- myeconf+=( --disable-owserver )
- fi
- econf ${myeconf[@]}
- }
- src_compile() {
- default
- if use python; then
- local CFLAGS="${CFLAGS} -fno-strict-aliasing"
- pushd module/ownet/python > /dev/null || die
- distutils-r1_src_compile
- popd > /dev/null || die
- pushd module/swig/python > /dev/null || die
- emake ow_wrap.c
- distutils-r1_src_compile
- popd > /dev/null || die
- fi
- }
- src_test() { :; }
- src_install() {
- default
- if use httpd || use ftpd || use fuse; then
- newinitd "${FILESDIR}"/owserver.initd-r1 owserver
- newconfd "${FILESDIR}"/owserver.confd owserver
- for i in httpd ftpd; do
- if use ${i}; then
- newinitd "${FILESDIR}"/ow${i}.initd-r1 ow${i}
- newconfd "${FILESDIR}"/ow${i}.confd ow${i}
- fi
- done
- if use fuse; then
- dodir /var/lib/owfs
- dodir /var/lib/owfs/mnt
- newinitd "${FILESDIR}"/owfs.initd-r1 owfs
- newconfd "${FILESDIR}"/owfs.confd owfs
- fi
- fi
- use perl && perl_delete_localpod
- if use python; then
- pushd module/ownet/python > /dev/null || die
- distutils-r1_src_install
- popd > /dev/null || die
- pushd module/swig/python > /dev/null || die
- distutils-r1_src_install
- popd > /dev/null || die
- fi
- prune_libtool_files
- }
- pkg_postinst() {
- if use httpd || use ftpd || use fuse; then
- echo
- if [[ ${OWUID} != root ]]; then
- ewarn
- ewarn "In order to allow the OWFS daemon user '${OWUID}' to read"
- ewarn "from and/or write to a 1 wire bus controller device, make"
- ewarn "sure the user has appropriate permission to access the"
- ewarn "corresponding device node/path (e.g. /dev/ttyS0), for example"
- ewarn "by adding the user to the group 'uucp' (for serial devices)"
- ewarn "or 'usb' (for USB devices accessed via usbfs on /proc/bus/usb),"
- ewarn "or install an appropriate UDEV rules (see http://owfs.org/index.php?page=udev-and-usb"
- ewarn "for more information)."
- ewarn
- if use fuse; then
- ewarn "In order to allow regular users to read from and/or write to"
- ewarn "1 wire bus devices accessible via the owfs FUSE filesystem"
- ewarn "client and its filesystem mountpoint, make sure the user is"
- ewarn "a member of the group '${OWGID}'."
- ewarn
- fi
- echo
- fi
- fi
- }
|