summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: dccf7cb226dd5b06784cb1e16486ff8bd8f377af (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
103
104
105
106
107
108
109
110
111
112
113
114
115
# Maintainer: Vitrum <wqdxosty1yhj@bk.ru>

pkgname=keyman
pkgver=18.0.236
pkgrel=1
pkgdesc="IBus engine supporting over 2000 languages"
arch=('i686' 'x86_64')
url="https://keyman.com/linux/"
license=('GPL')
depends=('ibus' 'libevdev'
        # the following dependences are only needed for keyman-config
        'python-qrcode' 'python-sentry_sdk' 'python-fonttools'
        'python-pyxdg' 'python-dbus' 'python-requests' 'python-requests-cache'
        'python-numpy' 'python-pillow' 'python-magic' 'python-lxml')
makedepends=('cmake' 'meson'
        # the following dependences are only needed for keyman-config
        'python-build' 'python-installer' 'python-setuptools' 'help2man')
optdepends=('keyman-onboard: on-screen keyboard')
source=("https://downloads.keyman.com/linux/stable/$pkgver/keyman-$pkgver.tar.gz"
    https://downloads.keyman.com/linux/stable/$pkgver/keyman-$pkgver.tar.gz.asc)
sha256sums=('b3ce70a5a59602674812e1a06dc6701bbb08d9115f7cedeb70b0bd6ff8d71355'
            'SKIP')
validpgpkeys=('6C8EEADE607D434C74FD34FDC8E614F58F1B65E0')

prepare(){
    cd "$srcdir/keyman/linux"

    # GCC 15 warning
    sed -i 's/^#define __ORDEROUTPUTDEVICE_H__/#define __ORDEREDOUTPUTDEVICE_H__/' \
        keyman-system-service/src/OrderedOutputDevice.h

    # avoid adding `dpkg` dependency
    sed -i 's/if dpkg --compare-versions .*; then/if false; then/' \
        keyman-config/build.sh
}

build() {
    
    # build and config are based on the project's DEB packaging
    # https://github.com/keymanapp/keyman/blob/master/linux/debian/rules

    cd "$srcdir/keyman"

    linux/keyman-system-service/build.sh configure -- \
        --wrap-mode=nodownload \
        --prefix=/usr \
        --sysconfdir=/etc \
        --localstatedir=/var

    core/build.sh --no-tests configure:arch build:arch -- \
        --wrap-mode=nodownload \
        --prefix=/usr \
        --sysconfdir=/etc \
        --localstatedir=/var \
        --libdir=lib \
        --libexecdir=lib

    linux/ibus-keyman/build.sh configure build -- \
        --wrap-mode=nodownload \
        --prefix=/usr \
        --sysconfdir=/etc \
        --localstatedir=/var \
        -Dkeyman_deb_pkg_build=false

    linux/keyman-config/build.sh configure build
    cd "$srcdir/keyman/linux/keyman-config"
    sed -i -e "s/^__pkgversion__ = \"[^\"]*\"/__pkgversion__ = \"$pkgver\"/g" \
        keyman_config/version.py
    make compile-po
}

package() {
    cd "$srcdir/keyman"
    DESTDIR=$pkgdir core/build.sh --no-tests install:arch
    DESTDIR=$pkgdir linux/keyman-system-service/build.sh install
    DESTDIR=$pkgdir linux/ibus-keyman/build.sh install

    # keyman-config

    cd "$srcdir/keyman/linux/keyman-config"
    python -m installer --destdir="$pkgdir" build/*.whl
    # icons
    install -d "$pkgdir/usr/share/keyman/icons"
    cp keyman_config/icons/* "$pkgdir/usr/share/keyman/icons"
    # man pages
    install -d "$pkgdir/usr/share/man/man1"
    cp ../../debian/man/*.1 "$pkgdir/usr/share/man/man1"
    # locales
    install -d "$pkgdir/usr/share/"
    cp -r locale/ "$pkgdir/usr/share/"
    rm "$pkgdir/usr/share/locale/"*.po*
    # desktop
    install -Dm644 --target-directory="$pkgdir/usr/share/applications" resources/km-config.desktop
    # mime
    install -Dm644 resources/keyman.sharedmimeinfo "$pkgdir/usr/share/mime/packages/keyman.xml"
    # app icons
    install -Dm644 --target-directory="$pkgdir/usr/share/icons/hicolor/24x24/apps" icons/24/km-config.png
    install -Dm644 --target-directory="$pkgdir/usr/share/icons/hicolor/32x32/apps" icons/32/km-config.png
    install -Dm644 --target-directory="$pkgdir/usr/share/icons/hicolor/48x48/apps" icons/48/km-config.png
    install -Dm644 --target-directory="$pkgdir/usr/share/icons/hicolor/64x64/apps" icons/64/km-config.png
    install -Dm644 --target-directory="$pkgdir/usr/share/icons/hicolor/128x128/apps" icons/128/km-config.png
    # mime icons
    install -Dm644 --target-directory="$pkgdir/usr/share/icons/hicolor/16x16/mimetypes" icons/16/application-x-kmp.png
    install -Dm644 --target-directory="$pkgdir/usr/share/icons/hicolor/24x24/mimetypes" icons/24/application-x-kmp.png
    install -Dm644 --target-directory="$pkgdir/usr/share/icons/hicolor/32x32/mimetypes" icons/32/application-x-kmp.png
    install -Dm644 --target-directory="$pkgdir/usr/share/icons/hicolor/48x48/mimetypes" icons/48/application-x-kmp.png
    install -Dm644 --target-directory="$pkgdir/usr/share/icons/hicolor/64x64/mimetypes" icons/64/application-x-kmp.png
    # glib schemas
    install -Dm644 --target-directory="$pkgdir/usr/share/glib-2.0/schemas" resources/com.keyman.gschema.xml
    # bash completions
    install -Dm644 --target-directory="$pkgdir/usr/share/bash-completion/completions/" *.bash-completion
    for file in $pkgdir/usr/share/bash-completion/completions/*; do
        mv -- "$file" "${file%%.bash-completion}"
    done
}