summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: d50e6e938a083e6715125302d91bb5aefbc89510 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# 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')
sha256sums=('d5ac2012bae944d398517511b55cd43d920c79de910cae8e60ca05eaa1408b70')

_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'

  # 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