diff options
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 180 |
1 files changed, 156 insertions, 24 deletions
@@ -1,5 +1,8 @@ # Maintainer: Chris Severance aur.severach aATt spamgourmet dott com +# Bug: New in 2.3.0 - 2.3.4, initd/advttyd.c was completely rewritten and now doesn't work +# Bug: New in 2.3.0 - 2.3.4, compiles in Linux 6.6 but kernel oops + _opt_DKMS=1 # This can be toggled between installs _opt_MAXINSTPORTS=16 # Maximum install ports. # Default=256 which is plenty for normal size installations. @@ -7,6 +10,8 @@ _opt_MAXINSTPORTS=16 # Maximum install ports. # /dev/ttyADV{0..n-1} #_opt_defaultmode='666' # default: 666 +#export KERNELRELEASE="$(basename $(dirname /usr/lib/modules/5.10.*/modules.alias))" + # Products, Intelligent Connectivity, Industrial Communication, Serial Device Servers # Todo: misspellings all over @@ -51,13 +56,20 @@ _opt_MAXINSTPORTS=16 # Maximum install ports. # Uninstall cleanup: sudo rm -f /etc/advttyd.conf* /var/log/advttyd.log +_opt_RAR=0 + set -u # Earlier versions of Advantech TTY were called ICOM # http://advdownload.advantech.com/productfile/Downloadfile1/1-NZ17GY/ICOM_LINUX_PSEUDO_TTY_DRIVER_V1.4.1.ZIP pkgname='advantech-vcom' +#pkgver='2.0.0'; _dl='4/1-X92NP4' #pkgver='2.1.0'; _dl='4/1-15OSOW4' #pkgver='2.2.0'; _dl='4/1-1LPJPGD' -pkgver='2.2.1'; _dl='5/1-1NOKMCV' +#pkgver='2.2.1'; _dl='5/1-1NOKMCV'; _opt_RAR=1 # not compatible with Linux 3.16, a RAR file +#pkgver='2.2.3'; _dl='5/1-1Y9Q0Z6' +#pkgver='2.2.5'; _dl='4/1-23X5L51' +#pkgver='2.3.0'; _dl='3/1-250ZNM3' +pkgver='2.3.4'; _dl='2/1-2HNI41Q' pkgrel='1' pkgdesc='tty driver for Advantech Adam EKI serial console terminal servers' _pkgdescshort="Advantech ${pkgname} TTY driver" @@ -67,15 +79,57 @@ license=('GPL') depends=('glibc' 'gawk' 'psmisc' 'sed' 'grep') backup=('etc/advttyd.conf') install="${pkgname}-install.sh" -_srcdir="VCOM_LINUX_${pkgver}.TAR.BZ2" -_srcdir="${_srcdir,,}" -source=("http://advdownload.advantech.com/productfile/Downloadfile${_dl}/${_srcdir}") +_srcdir="Advantech-VCOM-Linux-Driver-${pkgver}.zip" +#_srcdir="${_srcdir,,}" +source=("${_srcdir}::https://advdownload.advantech.com/productfile/Downloadfile${_dl}/${_srcdir}") +if [ "${_opt_RAR}" -ne 0 ]; then + _srcrar="${_srcdir//.tar.bz2/.rar}" + noextract=("${_srcrar}") # the RAR crashes bsdtar. Parsing filters is unsupported. + makedepends+=('unrar') + source[0]="${_srcrar}::${source[0]##*::}" +fi #source=("${_srcdir,,}::http://downloadt.advantech.com/download/downloadsr.aspx?File_Id=${_dl}") # redirect works sooner but can be changed arbitrairly -_srcdir="${_srcdir%\.tar*}" +_srcdir="${_srcdir%.zip}" #source=("http://advdownload.advantech.com/productfile/Downloadfile4/${_dl}/${_srcdir}.rar") -source+=('0000-advman.systemd.patch') -sha256sums=('e5e313a1542e227a654fd1a497f8846ccb90df5490a888929826cb82becb5b0f' - '02f504a23fbef07f666aaa595faba0513d9ffec5e99ebca7b7fe2299a0179e32') +source+=( + '0000-advman.systemd.patch' + '0000a-advman.systemd.patch' + '0000b-advman.systemd.patch' + '0000c-advman.systemd.patch' + '0001-adv_main-access_ok_kernel-5-0.patch' + '0002-adv_mmap-vm_fault_t-5-1.patch' + '0003-gcc-10-duplicate-variables-vc_mon-stk_mon.patch' + '0003a-gcc-10-duplicate-variables-vc_mon-stk_mon.patch' + '0004-adv_main-proc_create_data-kernel-5.6.patch' + '0005-kernel-5.17-change-PDE_DATA.patch' + '0006-kernel-6.0-set_termios-const-ktermios.patch' +) +md5sums=('d1650157bea8b25c321c6c6c80e47ac2' + '65bb3f58bf90650cd629b94057c80da5' + 'e8e05eebaa36ccf7bfe456ab59b75386' + 'cf730b084619fac9c20106e8e6359ccc' + '8e10c250ba777d270285e0bf79d44a1d' + '6b07ea60f898b5586ad8f23a28c32ab7' + 'b30212f45f0dcebc9b88b17e4355d298' + '0aa930803ed243f4e45f0d31bde581c8' + '2cf8ab9c5541c38eba5fb9687142d94d' + '446602b4feef554ade9a137303883432' + '32f3a081b5926d6ea7f1cd2a22655d95' + 'b005fdd5de28f835b7b37ecd74453785' + 'f16423b34e00d486c6d5dc877ddde32c') +sha256sums=('fdb2672d513c25039b46b5cf4fd449062f03567ca8617902023f2ed8213515df' + '02f504a23fbef07f666aaa595faba0513d9ffec5e99ebca7b7fe2299a0179e32' + '17fa883aeaea5821e00ead10777f54f4ad6b96f3a2f07097e3d9a77755f21c10' + '85785f80c7be4452e5b620b5d405646f0e9bacdbec2aecea68a059b6245519aa' + '1959411a50b800def13849672196295db3acb4aabd1db9fbc5cc52ebf390993c' + '9335cfe8addfdf80224d21529fe0a70a6b750fa0823cfe806f5c94ae50a06cad' + '77edc7a806085fc738fa4536e91fce98fb8e103f8207ec0d395f340107e83d0c' + '61c4b0c92488cce93e6b9ffca4f13eb7aa7fd8b267eb1438094ce41d96aaef53' + 'de3477551219d9fc5b1924775a4456155ef5beb5bd702fbc114ca0c956607953' + 'aa71ede3478a5b482cd085ed2406a1ccd6be3b3ef76ab1fc0b45f4133d3c5a59' + 'b65adbcbb83a21cf0a1c17b9bc2a039ad5c633021ecd90d88d5d978a03a59c23' + '99b7b7a2c84d8b82a3e79b2a7abe99d1696a7ff3df350560d96ce7f049e8cb27' + 'eb41e2eb1b9df42840295c59266e9e2cf01c4f275ef1a11aca765dfe4c81926d') if [ "${_opt_DKMS}" -ne 0 ]; then depends+=('linux' 'dkms' 'linux-headers') @@ -83,10 +137,62 @@ else makedepends+=('linux-headers') fi +if [ "${pkgver}" = '2.3.0' ] || [ "${pkgver}" = '2.3.4' ]; then + _altver='2.2.5'; _altdl='4/1-23X5L51' + _altdir="VCOM_LINUX_${_altver}.TAR.BZ2" + _altdir="${_altdir,,}" + source+=("${_altdir}::https://advdownload.advantech.com/productfile/Downloadfile${_altdl}/${_altdir}") + _altdir="${_altdir%\.tar*}" +fi + prepare() { set -u + if [ "${_opt_RAR}" -ne 0 ]; then + unrar x "${_srcrar}" + fi + + if [ ! -z "${_altdir:-}" ]; then + rm -rf "${_srcdir}/initd" + cp -pr "${_altdir}/initd" "${_srcdir}" + fi + cd "${_srcdir}" + if [ "$(vercmp "${pkgver}" "2.2.1")" -le 0 ]; then + #cp -p driver/adv_main.c{,.orig}; false + #diff -pNau5 driver/adv_main.c{.orig,} > '../0001-adv_main-access_ok_kernel-5-0.patch' + patch -Nup0 -i "${srcdir}/0001-adv_main-access_ok_kernel-5-0.patch" + + #cp -p driver/adv_mmap.c{,.orig}; false + #diff -pNau5 driver/adv_mmap.c{.orig,} > '../0002-adv_mmap-vm_fault_t-5-1.patch' + patch -Nup0 -i "${srcdir}/0002-adv_mmap-vm_fault_t-5-1.patch" + + fi + if [ "$(vercmp "${pkgver}" "2.2.5")" -le 0 ]; then + #cp -pr daemon{,.orig}; false + #diff -pNarZu5 daemon{.orig,} > '../0003-gcc-10-duplicate-variables-vc_mon-stk_mon.patch' + patch -Nup0 -i "${srcdir}/0003-gcc-10-duplicate-variables-vc_mon-stk_mon.patch" + elif [ "$(vercmp "${pkgver}" "2.3.0")" -le 0 ]; then + #cd '..'; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false + #diff -pNarZu5 'a' 'b' > '0003a-gcc-10-duplicate-variables-vc_mon-stk_mon.patch' + patch -Nup1 -i "${srcdir}/0003a-gcc-10-duplicate-variables-vc_mon-stk_mon.patch" + fi + if [ "$(vercmp "${pkgver}" "2.2.3")" -le 0 ]; then + #cp -p driver/adv_main.c{,.orig}; false + #diff -pNau5 driver/adv_main.c{.orig,} > '../0004-adv_main-proc_create_data-kernel-5.6.patch' + patch -Nup0 -i "${srcdir}/0004-adv_main-proc_create_data-kernel-5.6.patch" + fi + + if [ "$(vercmp "${pkgver}" "2.3.0")" -le 0 ]; then + #cd '..'; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false + #diff -pNarZu5 'a' 'b' > '0005-kernel-5.17-change-PDE_DATA.patch' + patch -Nup1 -i "${srcdir}/0005-kernel-5.17-change-PDE_DATA.patch" + + #cd '..'; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false + #diff -pNarZu2 'a' 'b' > '0006-kernel-6.0-set_termios-const-ktermios.patch' + patch -Nup1 -i "${srcdir}/0006-kernel-6.0-set_termios-const-ktermios.patch" + fi + # Cosmetic correction of CRLF for Linux sed -e 's:\r$::g' -i 'readme.txt' @@ -106,13 +212,24 @@ prepare() { test ! -s 'Makefile.Arch' || echo "${}" # Fix driver Makefile + #cp -p 'driver/Makefile'{,.Arch} sed -e '# Cosmetic correction of spaces' \ -e 's:\s\+$::g' \ -e '# Clean missed some files' \ -e 's:^\s\+rm -.*$:& *.order *.symvers:g' \ -e '# Adding the current dir (.) to the include path seems unnecessary' \ -e 's:^ccflags-y += -I:#&:g' \ + -e '# No DKMS instructions say to do this but it works and keeps the MAKE line real simple' \ + -e 's:$(shell uname -r):$(KERNELRELEASE):g' \ + -e 's:`uname -r`:$(KERNELRELEASE):g' \ + -e '# DKMS sets KERNELRELEASE which accidentally launches phase 2 of this Makefile' \ + -e '# Fix by changing the detection var.' \ + -e 's:^ifneq ($(KERNELRELEASE),):ifneq ($(ARCHLINUX),):g' \ + -e '# Put the detection var in' \ + -e 's:^\s\+\$(MAKE)\s-C\s\$(KERNELDIR):& ARCHLINUX=1:g' \ + -e '1i KERNELRELEASE?=$(shell uname -r)' \ -i 'driver/Makefile' + test ! -s 'driver/Makefile.Arch' local _lines=' set -u @@ -175,7 +292,7 @@ fi -i 'initd/advttyd.c' # Cosmetic correction of spaces - sed -e 's:\s\+$::g' -i 'readme.txt' script/* inotify/* initd/adv* driver/adv* daemon/* + sed -e 's:\s\+$::g' -i 'readme.txt' script/* initd/adv* driver/adv* daemon/* inotify/* || : # Add device table to config sed -n -e '/Device-Type Table/,/install/ p' 'readme.txt' | \ @@ -187,22 +304,45 @@ fi sed -e 's:^[0-9]:# Sample &:g' \ -e '/Minor/ s:^#:&00:g' \ 'config/advttyd.conf' > 'config/advttyd.conf.Arch' - sort -g 'config/advttyd.conf.Arch' > 'config/advttyd.conf' + cat <(tail +4 'config/advttyd.conf.Arch') <(head -3 'config/advttyd.conf.Arch') > 'config/advttyd.conf' rm 'config/advttyd.conf.Arch' # Make a less noisy start/stop to not clog up the systemd logs sed -e 's@^\(\s*\)echo@\1: # echo@g' 'script/advman' > 'script/advman.quiet' - # Change original advman to systemd - #cp -p script/advman{,.orig}; false - #diff -pNau10 script/advman{.orig,} > '../0000-advman.systemd.patch' - patch -Nbup0 -i "${srcdir}/0000-advman.systemd.patch" + if [ "$(vercmp "${pkgver}" "2.2.1")" -le 0 ]; then + # Change original advman to systemd + #cp -p script/advman{,.orig}; false + #diff -pNau10 script/advman{.orig,} > '../0000-advman.systemd.patch' + patch -Nup0 -i "${srcdir}/0000-advman.systemd.patch" + elif [ "$(vercmp "${pkgver}" "2.2.3")" -le 0 ]; then + #cd '..'; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false + #diff -pNaru10 'a' 'b' > '0000a-advman.systemd.patch' + patch -Nup1 -i "${srcdir}/0000a-advman.systemd.patch" + elif [ "$(vercmp "${pkgver}" "2.2.5")" -le 0 ]; then + #cd '..'; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false + #diff -pNaru10 'a' 'b' > '0000b-advman.systemd.patch' + patch -Nup1 -i "${srcdir}/0000b-advman.systemd.patch" + elif [ "$(vercmp "${pkgver}" "2.3.0")" -le 0 ]; then + #cd '..'; cp -pr "${_srcdir}" 'a'; ln -s "${_srcdir}" 'b'; false + #diff -pNaru10 'a' 'b' > '0000c-advman.systemd.patch' + patch -Nup1 -i "${srcdir}/0000c-advman.systemd.patch" + fi # Tame the port count sed -e 's:^\(#define VCOM_PORTS\)\s.*$:'"\1 ${_opt_MAXINSTPORTS}:g" -i 'driver/advconf.h' + # Get rid of dmesg spam that looks like crashes but aren't. + sed -e 's:dump_stack():// &:g' -i 'driver/adv_uart.c' + # The compiled files should not have been included 'ma'ke -s -j1 clean # keep git-aurcheck quiet + + find -type 'f' -name '*.orig' -delete + + if [ "${pkgver}" = '2.2.3' ] || [ "${pkgver}" = '2.2.5' ]; then + sed -e 's:-Werror::g' -i $(grep --include='Makefile' -rle '-Werror' .) + fi set +u } @@ -288,18 +428,10 @@ DEST_MODULE_LOCATION[0]="/kernel/drivers/misc" EOF ) "${_dkms}/dkms.conf" - install -Dm644 driver/* -t "${_dkms}/driver/" + install -d "${_dkms}/driver/" + cp -pr driver/* "${_dkms}/driver/" make -C "${_dkms}/driver/" clean rm "${_dkms}/driver/dkms.conf" - sed -e '# No DKMS instructions say to do this but it works and keeps the MAKE line real simple' \ - -e 's:$(shell uname -r):$(KERNELRELEASE):g' \ - -e 's:`uname -r`:$(KERNELRELEASE):g' \ - -e '# DKMS sets KERNELRELEASE which accidentally launches phase 2 of this Makefile' \ - -e '# Fix by changing the detection var.' \ - -e 's:^ifneq ($(KERNELRELEASE),):ifneq ($(ARCHLINUX),):g' \ - -e '# Put the detection var in' \ - -e 's:^\s\+\$(MAKE)\s-C\s\$(KERNELDIR):& ARCHLINUX=1:g' \ - -i "${_dkms}/driver/Makefile" fi set +u } |