blob: 619fcad9c2e436c5b90a0ac0c9c692211f7fd318 (
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
|
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit check-reqs
DESCRIPTION="Syzygy chess endgame tablebases for up to 6 pieces"
HOMEPAGE="http://tablebase.sesse.net/
https://kirill-kryukov.com/chess/tablebases-online/"
tb345=()
tb6=()
m=(P N B R Q K)
for ((i=4; i>=0; i--)); do
tb345+=(K${m[i]}vK) # 2+1
for ((j=i; j>=0; j--)); do
tb345+=(K${m[i]}vK${m[j]} K${m[i]}${m[j]}vK) # 2+2, 3+1
for ((k=4; k>=0; k--)); do
tb345+=(K${m[i]}${m[j]}vK${m[k]}) # 3+2
((k<=i)) || continue
for ((l=k; l>=0; l--)); do
((k<i || l<=j)) && tb6+=(K${m[i]}${m[j]}vK${m[k]}${m[l]}) # 3+3
done
((k<=j)) || continue
tb345+=(K${m[i]}${m[j]}${m[k]}vK) # 4+1
for ((l=4; l>=0; l--)); do
tb6+=(K${m[i]}${m[j]}${m[k]}vK${m[l]}) # 4+2
((l<=k)) && tb6+=(K${m[i]}${m[j]}${m[k]}${m[l]}vK) # 5+1
done
done
done
done
tb345=("${tb345[@]/#/mirror+http://tablebase.sesse.net/syzygy/3-4-5/}")
SRC_URI="${tb345[@]/%/.rtbw} ${tb345[@]/%/.rtbz}
6-pieces? ( ${tb6[@]/%/.rtbw} ${tb6[@]/%/.rtbz} )"
unset i j k l m tb345 tb6
LICENSE="public-domain" # machine-generated tables
SLOT="0"
KEYWORDS="amd64 x86"
IUSE="6-pieces"
RESTRICT="fetch"
RDEPEND="!${CATEGORY}/${PN}:nofetch"
S="${WORKDIR}"
pkg_nofetch() {
einfo "Due to their large size, fetching the Syzygy Endgame Tablebases via"
einfo "BitTorrent is recommended: https://oics.olympuschess.com/tracker/"
einfo "After downloading, place all K*.rtbw and K*.rtbz files in your"
einfo "DISTDIR directory."
einfo "(For the tablebases with up to 6 pieces, there should be"
einfo "$(echo ${A} | wc -w) files in total.)"
}
pkg_pretend() {
CHECKREQS_DISK_USR="$(usex 6-pieces 151G 939M)"
CHECKREQS_DISK_BUILD="${CHECKREQS_DISK_USR}"
check-reqs_pkg_pretend
}
pkg_setup() {
CHECKREQS_DISK_USR="$(usex 6-pieces 151G 939M)"
CHECKREQS_DISK_BUILD="${CHECKREQS_DISK_USR}"
check-reqs_pkg_setup
}
src_unpack() { :; }
src_install() {
local f
insinto /usr/share/${PN}
for f in ${A}; do
[[ ${f} == *.rtb[wz] ]] && echo "${DISTDIR}"/${f}
done | xargs doins
}
|