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.
gentoo-overlay/sys-fs/owfs/owfs-3.1_p4-r1.ebuild

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
}