summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: f83741574b2bb02d85f19a3d9891958097da3bdb (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
# Maintainer: Emiliano Bovetti <emiliano.bovetti@gmail.com>
# Original Maintainer: Ivan Marquesi Lerner <ivanmlerner@protonmail.com>

pkgname=(lc0 lc0-network-sm lc0-network-md lc0-network-lg lc0-network-xl)
pkgver=0.32.1
pkgrel=3
arch=(x86_64)

url="https://lczero.org/"
license=("GPL-3.0-or-later")

makedepends=(meson eigen blas-openblas)
optdepends=("blas-openblas: Backend for use with CPUs"
      "cudnn: Backend for use with nvidia GPUs"
      "opencl-driver: Backend for use with OpenCL"
      "cuda")

# ref: https://github.com/LeelaChessZero/lc0/wiki/Networks
# ref: https://lczero.org/play/networks/bestnets
_url="https://storage.lczero.org/files/networks-contrib"
_sm="t1-256x10-distilled-swa-2432500.pb.gz"
_md="t3-512x15x16h-distill-swa-2767500.pb.gz"
_lg="BT3-768x15x24h-swa-2790000.pb.gz"
_xl="BT4-1024x15x32h-swa-6147500-policytune-332.pb.gz"
_lczero_common_sha="c47d3683972d9ef293b0c0bc7675f7c2c5ce2274"

source=("https://github.com/LeelaChessZero/lc0/archive/refs/tags/v${pkgver}.tar.gz"
        "https://github.com/LeelaChessZero/lczero-common/archive/${_lczero_common_sha}.tar.gz"
        "${_sm}::${_url}/${_sm}"
        "${_md}::${_url}/${_md}"
        "${_lg}::${_url}/${_lg}"
        "${_xl}::${_url}/${_xl}")

noextract=("${_sm}" "${_md}" "${_lg}" "${_xl}")

sha256sums=('78b17e8e8d29da30492c86fdac69c519816f4a9d9c3b787dc41a6f9e8d20fde3'
            '266fc540242ad74dace306e0567ad90fece7879714b4a352fe726a76b6668f65'
            'bc27a6cae8ad36f2b9a80a6ad9dabb0d6fda25b1e7f481a79bc359e14f563406'
            '78541c4abc0bc81e8145e1f9a4c35a934ebbefff70f11f33215751d55a886352'
            'e3067757d1fc2dfc66947b21d15ace0cedf4c54254fc1de83d77c378a3e8b8e1'
            'e6ada9d6c4a769bfab3aa0848d82caeb809aa45f83e6c605fc58a31d21bdd618')

prepare() {
  local cudnn=false

  cp -r \
    "${srcdir}/lczero-common-${_lczero_common_sha}/." \
    "${srcdir}/lc0-${pkgver}/libs/lczero-common/"

  if pacman -Q cudnn > /dev/null 2>&1; then
    cudnn=true
  fi

  meson setup \
    "${srcdir}/lc0-${pkgver}/build/release" \
    "${srcdir}/lc0-${pkgver}" \
    --reconfigure \
    -Dcudnn="${cudnn}" \
    -Dcpp_args=-I/usr/include/eigen3 \
    --buildtype release \
    --prefix /usr
}

build() {
  meson compile -C "${srcdir}/lc0-${pkgver}/build/release"
}

check() {
  "${srcdir}/lc0-${pkgver}/build/release/chessboard_test"
  "${srcdir}/lc0-${pkgver}/build/release/encoder_test"
  "${srcdir}/lc0-${pkgver}/build/release/hashcat_test"
  "${srcdir}/lc0-${pkgver}/build/release/optionsparser_test"
  "${srcdir}/lc0-${pkgver}/build/release/position_test"
  "${srcdir}/lc0-${pkgver}/build/release/syzygy_test"
}

package_lc0() {
  depends=(openblas zlib lc0-network)
  pkgdesc="UCI-compliant chess engine designed to play chess via neural network, \
           specifically those of the LeelaChessZero project."

  install -Dm755 \
    "${srcdir}/lc0-${pkgver}/build/release/lc0" \
    "${pkgdir}/usr/bin/lc0"
}

package_lc0-network-sm() {
  provides=(lc0-network)
  pkgdesc="Small network for lc0 chess engine, requires ~1.6 GB of memory, recommended for CPU usage."

  install -Dm644 "${srcdir}/${_sm}" "${pkgdir}/usr/share/lc0/${_sm}"
}

package_lc0-network-md() {
  provides=(lc0-network)
  pkgdesc="Medium network for lc0 chess engine, requires ~1.8 GB of memory, recommended for CPU usage."

  install -Dm644 "${srcdir}/${_md}" "${pkgdir}/usr/share/lc0/${_md}"
}

package_lc0-network-lg() {
  provides=(lc0-network)
  pkgdesc="Large network for lc0 chess engine, requires ~2.6 GB of memory, recommended for GPU usage."

  install -Dm644 "${srcdir}/${_lg}" "${pkgdir}/usr/share/lc0/${_lg}"
}

package_lc0-network-xl() {
  provides=(lc0-network)
  pkgdesc="Large network for lc0 chess engine, requires ~4 GB of memory, recommended for large GPUs. \
    This is currently being sent to engine competitions like the TCEC and CCC."

  install -Dm644 "${srcdir}/${_xl}" "${pkgdir}/usr/share/lc0/${_xl}"
}