# Maintainer: Chris Severance aur.severach aATt spamgourmet dott com # Brainboxes prefix list. Some but not all are supported by this driver. # BL - Bluetooth Serial Adapter # CC - PCI Serial Cards # ES - Ethernet to Serial # ED - Ethernet IO # IS - IntaShield uPCI Serial Cards # IX - IntaShield PCI Express Serial Cards # PM - Serial PC Card (PCMCIA) # PX - PCI Express Serial Cards # UC - uPCI Serial Cards # UP - uPCI Powered Serial Cards # US - USB to Serial # VX - Serial ExpressCard # XC - Serial Parallel ExpressCard # Some future supported models are found in $tf/13 set -u pkgname='brainboxes-serial-pci' pkgver='0.0.20160614' pkgrel='1' pkgdesc='script to enable Brainboxes serial and parallel ports PCI PCIe Express PCMCIA PM UC CC-525 CC-530 PX-275 PX-279 PX-263 PX-295 PX-272 PX-306' arch=('any') url='http://www.brainboxes.com/faq/items/where-can-i-find-the-latest-drivers-for-linux' license=('GPL') depends=('perl' 'setserial' 'pciutils') backup=('etc/bbportinst'{.conf,.local} 'etc/modprobe.d/parport_bb.conf') options=('!strip') install="${pkgname}-install.sh" _srcdir='bbportinst' source=('http://www.brainboxes.com/files/pages/support/faqs/drivers%20and%20firmware/bbportinst.zip' '0000-restore-deprecated-pcie-cards.patch') sha256sums=('d5ac2012bae944d398517511b55cd43d920c79de910cae8e60ca05eaa1408b70' 'ba1481741952faa9399df8f16a4808e89322c079bf248d664579ae7882bc2726') _servicename="${pkgname}.service" # We can't modify .install but we can stop and force the user to fix it. _install_check() { local _ckvar local _ckline local _pkgname="${pkgname}" for _ckvar in '_servicename'; do _ckline="${_ckvar}='${!_ckvar}'" if ! grep -q "^${_ckline}"'$' "${startdir}/${install}"; then msg "${install} must be fixed" echo "${_ckline}" set +u false fi done } prepare() { set -u _install_check cd "${_srcdir}" sed -e 's:\s*\r$::g' -i $(grep -rlFe $'\r') chmod 755 'bbportinst' if ! :; then # Pull the commented PCIe cards in from an old version gunzip < '$tf/13/9638928d-f5c9-4b4e-8050-fb2d8fc6aac4.gz' > 'bbportinst.9638928d-f5c9-4b4e-8050-fb2d8fc6aac4' sed -e 's:\s*\r$::g' -i 'bbportinst.9638928d-f5c9-4b4e-8050-fb2d8fc6aac4' # Extract table out and insert it into the new file. This gives us a clean diff without the other unwanted code changes. sed -ne '/^my @card_info_table/,/^);$/ p' 'bbportinst.9638928d-f5c9-4b4e-8050-fb2d8fc6aac4' > 'bbportinst.oldtable' rm 'bbportinst.9638928d-f5c9-4b4e-8050-fb2d8fc6aac4' sed -e '# Insert marker for new table' \ -e '/^my @card_info_table/ i #@TABLE_PLACE@' \ -e '# Remove old table leaving only marker' \ -e '/^my @card_info_table/,/^);$/ d' 'bbportinst' | sed -e '# Insert old table at marker' \ -e '/^#@TABLE_PLACE@$/ r bbportinst.oldtable' | sed -e '# Remove marker' \ -e '/^#@TABLE_PLACE@$/ d' > 'bbportinst.new.oldtable' rm 'bbportinst.oldtable' diff -pNau5 bbportinst{,.new.oldtable} > '0000-restore-deprecated-pcie-cards.patch' || : rm 'bbportinst.new.oldtable' set +u msg 'Move supplied patch to PKGBUILD' false fi patch -Nup0 -i '../0000-restore-deprecated-pcie-cards.patch' # Fix path sed -e 's:/bin/setserial:/usr/bin/setserial:g' -i 'bbportinst' sed -e '# Custom shell script instead of rc.local' \ -e '/^boot_local_file =/ s:auto:/etc/bbportinst.local:g' \ -e '# This file isnt unique enough' \ -e '/^parport_conf_file =/ s:auto:/etc/modprobe.d/parport_bb.conf:g' \ -i 'bbportinst.conf' set +u } package() { set -u cd "${_srcdir}" install -Dpm744 'bbportinst' -t "${pkgdir}/usr/bin" install -Dpm644 'bbportinst.conf' -t "${pkgdir}/etc" install -Dm644 /dev/null "${pkgdir}/etc/bbportinst.local" install -Dm644 /dev/null "${pkgdir}/etc/modprobe.d/parport_bb.conf" # systemd service install -Dm644 <(cat << EOF # Automatically generated by ${pkgname}-${pkgver} PKGBUILD from Arch Linux AUR # https://aur.archlinux.org/ [Unit] Description=Configure BrainBoxes Serial Parallel Cards bbportinst After=network.target [Service] Type=notify ExecStart=/usr/bin/sh -c 'source /etc/bbportinst.local; systemd-notify --ready' RemainAfterExit=yes [Install] WantedBy=multi-user.target EOF ) "${pkgdir}/usr/lib/systemd/system/${_servicename}" set +u } set +u