summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 80ac6aede1dc423dad69a0aadcfa6d61d438388e (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
# Maintainer: taotieren <admin@taotieren.com>

pkgbase=ch343ser-git
pkgname=ch343ser-dkms-git
pkgver=r21.ad5828d
pkgrel=10
pkgdesc="USB serial driver for ch342/ch343/ch344/ch347/ch347f/ch9101/ch9102/ch9103/ch9104, etc (dkms)."
arch=('x86_64' 'i686' 'aarch64')
url="https://github.com/WCHSoftGroup/ch343ser_linux"
license=('GPL')
provides=(${pkgname%-git})
conflicts=(${pkgname%-git})
depends=(dkms)
makedepends=('git')
optdepends=('linux-headers: build the module against Arch kernel'
  'linux-ck-headers: build the module against Linux-ck kernel'
  'linux-lts-headers: build the module against LTS Arch kernel')
source=("${pkgbase}::git+${url}.git")
md5sums=('SKIP')

pkgver() {
    cd "$srcdir/${pkgbase}"
#   git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g'
    printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short=7 HEAD)"
}

prepare()
{
    git -C "${srcdir}/${pkgbase}" clean -dfx
}

package() {
    cd "$srcdir/${pkgbase}/driver"
    rm -rf Makefile
    install -Dm755 /dev/stdin  Makefile <<EOF
KERNELDIR := /lib/modules/\$(shell uname -r)/build
obj-m := ch343.o

ifdef KERNELDIR
all:
	\$(MAKE) -C \$(KERNELDIR) M=\$(PWD) modules
else
all:
	@echo "Error: KERNELDIR is undefined. Please specify KERNELDIR=\$(KERNELDIR)"
	@exit 1
endif

clean:
	\$(MAKE) -C \$(KERNELDIR) M=\$(PWD) clean
EOF
    install -dm755 "${pkgdir}/usr/src/${pkgbase%-git}-${pkgver#r}/"
    for i in "${srcdir}/${pkgbase}/driver/"{Makefile,*.c,*.h}; do
        install -D -m644 "${i}" "${pkgdir}/usr/src/${pkgbase%-git}-${pkgver#r}/"
    done

    install -Dm0644 /dev/stdin "${pkgdir}/usr/src/${pkgbase%-git}-${pkgver#r}/dkms.conf" <<EOF
PACKAGE_NAME="ch343ser"
PACKAGE_VERSION="${pkgver}"
MAKE[0]="make"
BUILT_MODULE_NAME[0]="ch343"
MAKEFILE="Makefile"
DEST_MODULE_LOCATION[0]="/kernel/drivers/usb/serial"
AUTOINSTALL="yes"
EOF
    # autoload
    install -Dm644 /dev/stdin "${pkgdir}/etc/modules-load.d/ch343.conf" <<EOF
ch343
EOF

    # Blacklists conflicting module
    install -Dm644 /dev/stdin "${pkgdir}/usr/lib/modprobe.d/cdc_acm.conf" <<EOF
blacklist cdc_acm
EOF
}