commit:     56229e6d183e6c4cc4f84a41a2d5c1addb2e21fe
Author:     Nowa Ammerlaan <nowa <AT> gentoo <DOT> org>
AuthorDate: Fri Jan 17 15:51:35 2025 +0000
Commit:     Nowa Ammerlaan <nowa <AT> gentoo <DOT> org>
CommitDate: Fri Jan 17 15:54:12 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=56229e6d

sci-libs/linux-gpib: add 9999

plus fixes for USE=python, use distutils-r1 and:
- add python3.13 target
- add missing bdep on setuptools and cython
- implement support for multiple python targets
- fix byte-compilation warning
- port to pep517

Bug: https://bugs.gentoo.org/944714
Signed-off-by: Nowa Ammerlaan <nowa <AT> gentoo.org>

 sci-libs/linux-gpib/linux-gpib-9999.ebuild | 242 +++++++++++++++++++++++++++++
 1 file changed, 242 insertions(+)

diff --git a/sci-libs/linux-gpib/linux-gpib-9999.ebuild 
b/sci-libs/linux-gpib/linux-gpib-9999.ebuild
new file mode 100644
index 000000000000..25af503e2da7
--- /dev/null
+++ b/sci-libs/linux-gpib/linux-gpib-9999.ebuild
@@ -0,0 +1,242 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+GUILE_COMPAT=( 2-2 3-0 )
+PYTHON_COMPAT=( python3_{10..13} )
+DISTUTILS_EXT=1
+DISTUTILS_OPTIONAL=1
+DISTUTILS_USE_PEP517=setuptools
+
+inherit readme.gentoo-r1 autotools distutils-r1 guile-single perl-functions 
udev
+
+# Check for latest firmware version on bump
+FW_PV="2008-08-10"
+
+if [[ ${PV} == 9999 ]]; then
+       inherit git-r3
+       EGIT_REPO_URI="https://git.code.sf.net/p/linux-gpib/git";
+       S="${WORKDIR}/${P}/${PN}-user"
+else
+       SRC_URI="https://downloads.sourceforge.net/linux-gpib/${P}.tar.gz";
+       S="${WORKDIR}/${PN}-user-${PV}"
+       KEYWORDS="~amd64 ~arm ~x86"
+fi
+
+DESCRIPTION="Driver library for GPIB (IEEE 488.2) hardware"
+HOMEPAGE="https://linux-gpib.sourceforge.io/";
+SRC_URI+="
+       firmware? ( 
https://linux-gpib.sourceforge.io/firmware/gpib_firmware-${FW_PV}.tar.gz )
+"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="pcmcia static guile perl php python tcl doc firmware"
+REQUIRED_USE="
+       guile? ( ${GUILE_REQUIRED_USE} )
+       python? ( ${PYTHON_REQUIRED_USE} )
+"
+
+COMMONDEPEND="
+       sys-libs/readline:=
+       tcl? ( dev-lang/tcl:0= )
+       guile? ( ${GUILE_DEPS} )
+       perl? ( dev-lang/perl:= )
+       php? ( dev-lang/php:= )
+       firmware? ( sys-apps/fxload )
+"
+RDEPEND="${COMMONDEPEND}
+       acct-group/gpib
+       ~sci-libs/linux-gpib-modules-${PV}
+       python? ( ${PYTHON_DEPS} )
+"
+DEPEND="${COMMONDEPEND}"
+BDEPEND="
+       virtual/pkgconfig
+       doc? ( app-text/docbook-sgml-utils[jadetex] )
+       python? ( ${DISTUTILS_DEPS} ${PYTHON_DEPS} )
+"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-4.3.0-perl.patch
+)
+
+pkg_setup() {
+       use guile && guile-single_pkg_setup
+       use perl && perl_set_version
+       use python && python_setup
+}
+
+src_unpack() {
+       if [[ ${PV} == 9999 ]]; then
+               git-r3_src_unpack
+       else
+               default
+               unpack "${WORKDIR}/${P}/${PN}-user-${PV}.tar.gz"
+       fi
+}
+
+src_prepare() {
+       default
+
+       use guile && guile_bump_sources
+
+       # We have to use --root instead of --prefix for setup.py.
+       # Otherwise the python files are not installed properly into 
site-packages.
+       sed -i -e \
+               's/--prefix=$(DESTDIR)$(prefix)/--root=$(DESTDIR)/g' \
+               language/python/Makefile.am || die
+
+       eautoreconf
+
+       if use python; then
+               pushd language/python >/dev/null || die
+               distutils-r1_src_prepare
+               popd >/dev/null || die
+       fi
+}
+
+src_configure() {
+       myeconfargs=(
+               $(use_enable static)
+               $(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)
+               --disable-python-binding
+       )
+
+       econf "${myeconfargs[@]}"
+
+       if use python; then
+               pushd language/python >/dev/null || die
+               distutils-r1_src_configure
+               popd >/dev/null || die
+       fi
+}
+
+src_compile() {
+       default
+       if use python; then
+               pushd language/python >/dev/null || die
+               distutils-r1_src_compile
+               popd >/dev/null || die
+       fi
+}
+
+src_install() {
+       # PYTHONDONTWRITEBYTECODE=0 is required, otherwise
+       # installation of the python files is skipped
+       FIRM_DIR="${EPREFIX}"/usr/share/usb
+       emake \
+               DESTDIR="${ED}" \
+               INSTALL_MOD_PATH="${ED}" \
+               HOTPLUG_USB_CONF_DIR=/etc/hotplug/usb \
+               UDEV_RULES_DIR="$(get_udevdir)"/rules.d \
+               USB_FIRMWARE_DIR=${FIRM_DIR} \
+               PYTHONDONTWRITEBYTECODE=0 \
+               docdir="/usr/share/doc/${PF}/html" install
+
+       use guile && guile_unstrip_ccache
+
+       if use perl; then
+               einfo "Installing perl module"
+               cd "${S}"/language/perl || die
+               emake DESTDIR="${ED}" install
+               perl_fix_packlist
+               perl_delete_emptybsdir
+               cd "${S}" || die
+       fi
+
+       if use python; then
+               pushd language/python >/dev/null || die
+               distutils-r1_src_install
+               popd >/dev/null || die
+       fi
+
+       echo "KERNEL==\"gpib[0-9]*\",   MODE=\"0660\", GROUP=\"gpib\"" >> 
99-gpib.rules || die
+       udev_dorules 99-gpib.rules
+
+       dodoc AUTHORS README* NEWS
+       if [[ ${PV} == 9999 ]]; then
+               dodoc ../ChangeLog
+       else
+               dodoc doc/linux-gpib.pdf ChangeLog
+       fi
+
+       insinto /etc
+       newins util/templates/gpib.conf gpib.conf
+       newins util/templates/gpib.conf gpib.conf.example
+
+       if use pcmcia; then
+               insinto /etc/pcmcia
+               doins "${S}"/etc/pcmcia/*
+       fi
+
+       # remove .la files
+       find "${ED}" -name '*.la' -delete || die
+
+       DOC_CONTENTS="
+As the udev rules were changed and refactored in this release it is
+necessary to remove any manually installed pre-4.3.0 gpib udev rules files
+in /etc/udev/rules.d/. The files to remove are:
+\n
+       99-agilent_82357a.rules\n
+       99-gpib-generic.rules\n
+       99-ni_usb_gpib.rules\n
+\n
+You need to run the 'gpib_config' utility to setup the driver before
+you can use it. In order to do it automatically you can add to your
+start script something like this (supposing the appropriate driver
+is loaded on the startup):
+\n
+               gpib_config --minor 0
+\n
+To give a user access to the computer's gpib board you will have to add
+them to the group 'gpib' or, you could change the permissions on the device
+files /dev/gpib[0-15] to something you like better, using 'chmod'
+\n
+Edit /etc/gpib.conf to match your interface board, and any devices you wish
+to open via ibfind().  See the documentation in /usr/share/linux-gpib/html for
+more information.
+\n
+"
+
+       if use pcmcia; then
+               DOC_CONTENTS+='
+For PCMCIA cards:\n
+All files needed for a PCMCIA board were copied to /etc/pcmcia.
+You may wish to edit the options passed to the gpib_config call in the
+/etc/pcmcia/linux-gpib-pcmcia script.
+You may need to send a SIGHUP signal to the cardmgr daemon to force it
+to reload the files in /etc/pcmcia \(alternatively you could use your
+pcmcia init.d script to restart the cardmgr, or you could just reboot\).
+The driver module will be loaded as needed by the cardmgr.
+
+'
+       fi
+
+       if use firmware; then
+               DOC_CONTENTS+='
+For Agilent \(HP\) 82341C and 82341D cards:
+The firmware for these boards is uploaded by passing the appropriate
+firmware file from /usr/share/linux-gpib/hp_82341 directory to
+gpib_config using the -I or --init-data command line option. Example:\n
+gpib_config --minor 0 --init-data 
/usr/share/linux-gpib/hp_82341/hp_82341c_fw.bin
+'
+       fi
+
+       readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+       readme.gentoo_print_elog
+       udev_reload
+}
+
+pkg_postrm() {
+       udev_reload
+}

Reply via email to