summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD180
1 files changed, 156 insertions, 24 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 1be944397a3c..d1203ace6056 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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
}