You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
192 lines
4.6 KiB
192 lines
4.6 KiB
# Copyright 1999-2018 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"
|
|
# Upstream uses crazy SONAME, https://github.com/owfs/owfs/commit/c696fa9b9b44f49c96b9f1c2b3159d277e0c1273
|
|
SLOT="0/${PV}"
|
|
LICENSE="GPL-2"
|
|
|
|
RDEPEND="
|
|
ftdi? ( dev-embedded/libftdi:0 )
|
|
fuse? ( sys-fs/fuse:0= )
|
|
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
|
|
}
|