# Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ inherit eutils linux-mod DESCRIPTION="The Linux GPIB Package is a support package for GPIB (IEEE 488.2) hardware." HOMEPAGE="http://linux-gpib.sourceforge.net/" SRC_URI="mirror://sourceforge/linux-gpib/${P}.tar.gz firmware? ( http://linux-gpib.sourceforge.net/firmware/gpib_firmware-2006-11-12.tar.gz )" LICENSE="GPL-2" SLOT="0" KEYWORDS="~amd64 ~x86" #IUSE_GPIB_DEVICES="all agilent_82350b agilent_82357a cb7210 cec hp_82335 hp_82341 ines nec7210 ni_usb pc2 tms9914 tnt4882" IUSE="pcmcia static debug guile perl php python tcl doc firmware" #for dev in ${IUSE_GPIB_DEVICES} ; do # IUSE="${IUSE} gpib_devices_${dev}" #done RDEPEND="tcl? ( dev-lang/tcl ) guile? ( dev-util/guile ) perl? ( dev-lang/perl ) php? ( dev-lang/php ) python? ( dev-lang/python ) firmware? ( sys-apps/fxload )" DEPEND="${RDEPEND} sys-kernel/module-rebuild doc? ( app-text/docbook-sgml-utils )" pkg_setup () { get_version check_KV case ${KV_MINOR} in 4) die "This version of Linux-GPIB requires a version 2.6.x of the Linux kernel. 2.4.x kernels are supported by Linux-GPIB versions 3.1.x." ;; 6) ;; *) die "Unsupported kernel version '${KV}'." ;; esac if [ ${KV_PATCH} -lt 8 ] ; then die "2.6.x kernels older than 2.6.8 are not supported." fi } src_unpack () { unpack ${A} cd "${S}" if [ "${KV_PATCH}" -ge 18 ] ; then einfo "Patching for 2.6.18 and newer kernels." for filename in $(find . -iname "*.[ch]") ; do sed -i -e 's/linux\/config.h/linux\/autoconf.h/' "$filename" || die "Sed failed!" done epatch "${FILESDIR}/${P}-drivers-gpib-sys-osinit.c.patch" fi } src_compile () { set_arch_to_kernel econf \ $(use_enable pcmcia) \ $(use_enable static) \ $(use_enable debug driver-debug) \ $(use_enable guile guile-binding) \ $(use_enable perl perl-binding) \ $(use_enable php php-binding) \ $(use_enable python python-binding) \ $(use_enable tcl tcl-binding) \ $(use_enable doc documentation) \ --with-linux-srcdir=${KV_DIR} \ || die "configure failed" emake || ( if [ "${KV_PATCH}" -ge 18 ] ; then einfo "Build failed. Try kernels older than 2.6.18." fi die "compile problem" ) } src_install () { addwrite /dev addwrite "/lib/modules/$(uname -r)" make DESTDIR=${D} install || die "install problem" if use pcmcia ; then dodir /etc/pcmcia insinto /etc/pcmcia doins ${S}/etc/pcmcia/* fi if use firmware ; then dodir "/usr/share/usb/agilent_8237a" insinto "/usr/share/usb/agilent_8237a" doins ${WORKDIR}/gpib_firmware-2006-11-12/agilent_8237a/* dodir "/usr/share/usb/ni_gpib_usb_b" insinto "/usr/share/usb/ni_gpib_usb_b" doins ${WORKDIR}/gpib_firmware-2006-11-12/ni_gpib_usb_b/* dodir "/usr/share/linux-gpib/hp_82341" insinto "/usr/share/linux-gpib/hp_82341" doins ${WORKDIR}/gpib_firmware-2006-11-12/hp_82341/* fi } pkg_postinst () { module-rebuild add ${CATEGORY}/${PF} einfo "You can load the driver module by typing" einfo " modprobe " einfo "See the documentation in /usr/share/linux-gpib/html to see" einfo "which driver your board is supported by." einfo "" einfo "You need to run the 'gpib_config' utility to setup the driver" einfo "before you can use it (the 'minor' options specifies which" einfo "board index you are setting up):" einfo " gpib_config --minor 0" einfo "" echo einfo "" einfo "To give a user access to the computer's gpib board you will have to add" einfo "them to the group 'gpib' (you can use the 'usermod' tool or edit" einfo "/etc/groups to change the groups a user belongs to). Or, you could change the" einfo "permissions on the device files /dev/gpib[0-15] to something you like" einfo "better, using 'chmod'. If you are using udev, you can set the permissions on" einfo "the gpib device files by adding a line like:" einfo "KERNEL=\"gpib[0-9]*\", MODE=\"0660\", GROUP=\"gpib\"" einfo "to your udev rules" einfo "" echo einfo "" einfo "Edit /etc/gpib.conf to match your interface board, and any devices you wish" einfo "to open via ibfind(). See the documentation in /usr/share/linux-gpib/html for" einfo "more information." einfo "" if use pcmcia ; then echo einfo "" einfo "For PCMCIA cards:" einfo "All files needed for a PCMCIA board were copied to /etc/pcmcia." einfo "You may wish to edit the options passed to the gpib_config call in the" einfo "/etc/pcmcia/linux-gpib-pcmcia script." einfo "You may need to send a SIGHUP signal to the cardmgr daemon to force it" einfo "to reload the files in /etc/pcmcia (alternatively you could use your" einfo "pcmcia init.d script to restart the cardmgr, or you could just reboot)." einfo "The driver module will be loaded as needed by the cardmgr." einfo "" fi if use firmware ; then echo einfo "" einfo "For Agilent (HP) 82341C and 82341D cards:" einfo "The firmware for these boards is uploaded by passing the appropriate" einfo "firmware file from /usr/share/linux-gpib/hp_82341 directory to" einfo "gpib_config using the -I or --init-data command line option. Example:" einfo "gpib_config --minor 0 --init-data \\" einfo "/usr/share/linux-gpib/hp_82341/hp_82341c_fw.bin" einfo "" fi } pkg_postrm() { rm -rf "/lib/modules/$(uname -r)/gpib" rm -f /dev/gpib* module-rebuild del ${CATEGORY}/${PF} }