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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
# Maintainer: Danny Waser (Waser Technologies) <waser@waser.tech>
export PIP_CONFIG_FILE=/dev/null
export PIP_DISABLE_PIP_VERSION_CHECK=true
pkgname=python-gruut-ipa
epoch=
pkgver=0.13.0
pkgrel=01
pkgdesc='Library for manipulating pronunciations using the International Phonetic Alphabet (IPA)'
arch=(any)
url=https://github.com/rhasspy/gruut-ipa
license=(MIT)
depends=(python )
depends+=(python-scikit-learn)
makedepends=()
checkdepends=()
provides=()
conflicts=(${provides%=*}) # No quotes, to avoid an empty entry.
source=(PKGBUILD_EXTRAS)
md5sums=(SKIP)
noextract=()
source+=(https://files.pythonhosted.org/packages/51/9f/7eff478e38913cc9930527ff40c9ebcb04744dfcd0ddd43bd5a1eb9565b7/gruut-ipa-0.13.0.tar.gz)
md5sums+=(e2b33af3c4c79dc9e39f9cf2384d0382)
source+=(LICENSE)
md5sums+=(e18d31df63b289d2da1347a16b85d383)
_first_source() {
echo " ${source_i686[@]} ${source_x86_64[@]} ${source[@]}" |
tr ' ' '\n' | grep -Pv '^(PKGBUILD_EXTRAS)?$' | head -1
}
_vcs="$(grep -Po '^[a-z]+(?=\+)' <<< "$(_first_source)")"
if [[ "$_vcs" ]]; then
makedepends+=("$(pkgfile --quiet /usr/bin/$_vcs)")
provides+=("${pkgname%-$_vcs}")
conflicts+=("${pkgname%-$_vcs}")
fi
_is_wheel() {
[[ $(_first_source) =~ \.whl$ ]]
}
if [[ _is_wheel &&
$(basename "$(_first_source)" | rev | cut -d- -f1 | rev) =~ ^manylinux ]]; then
options=(!strip) # https://github.com/pypa/manylinux/issues/119
fi
_dist_name() {
find "$srcdir" -mindepth 1 -maxdepth 1 -type d -printf '%f
' |
grep -v '^_tmpenv$'
}
if [[ $(_first_source) =~ ^git+ ]]; then
_pkgver() {
( set -o pipefail
cd "$srcdir/$(_dist_name)"
git describe --long --tags 2>/dev/null |
sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' ||
printf "r%s.%s" \
"$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
)
}
pkgver() { _pkgver; }
fi
_build() {
if _is_wheel; then return; fi
cd "$srcdir"
# See Arch Wiki/PKGBUILD/license.
# Get the first filename that matches.
local test_name
if [[ ${license[0]} =~ ^(BSD|MIT|ZLIB|Python)$ ]]; then
for test_name in LICENSE LICENSE.txt license.txt COPYING COPYING.md COPYING.rst COPYING.txt COPYRIGHT; do
if cp "$srcdir/$(_dist_name)/$test_name" "$srcdir/LICENSE" 2>/dev/null; then
break
fi
done
fi
# Use the latest version of pip, as Arch's version is historically out of
# date(!) and newer versions do fix bugs (sometimes).
python -mvenv --clear --system-site-packages _tmpenv
_tmpenv/bin/pip --quiet install -U pip
# Build the wheel (which we allow to fail) only after fetching the license.
# In order to isolate from ~/.pydistutils.cfg, we need to set $HOME to a
# temporary directory, and thus first $XDG_CACHE_HOME back to its real
# location, so that pip inserts the wheel in the wheel cache. We cannot
# use --global-option=--no-user-cfg instead because that fully disables
# wheels, causing a from-source build of build dependencies such as
# numpy/scipy.
XDG_CACHE_HOME="${XDG_CACHE_HOME:-"$HOME/.cache"}" HOME=_tmpenv \
_tmpenv/bin/pip wheel -v --no-deps --wheel-dir="$srcdir" \
"./$(_dist_name)" || true
}
build() { _build; }
_check() {
# Define check(), possibly using _check as a helper, to run the tests.
# You may need to call `python setup.py build_ext -i` first.
if _is_wheel; then return; fi
cd "$srcdir/$(_dist_name)"
/usr/bin/python setup.py -q test
}
_package() {
cd "$srcdir"
# pypa/pip#3063: pip always checks for a globally installed version.
python -mvenv --clear --system-site-packages _tmpenv
_tmpenv/bin/pip install --prefix="$pkgdir/usr" \
--no-deps --ignore-installed --no-warn-script-location \
"$(ls ./*.whl 2>/dev/null || echo ./"$(_dist_name)")"
if [[ -d "$pkgdir/usr/bin" ]]; then # Fix entry points.
python="#!$(readlink -f _tmpenv)/bin/python"
for f in "$pkgdir/usr/bin/"*; do
# Like [[ "$(head -n1 "$f")" = "#!$(readlink -f _tmpenv)/bin/python" ]]
# but without bash warning on null bytes in "$f" (if it is actually
# a compiled executable, not an entry point).
if python -c 'import os, sys; sys.exit(not open(sys.argv[1], "rb").read().startswith(os.fsencode(sys.argv[2]) + b"\n"))' "$f" "$python"; then
sed -i '1c#!/usr/bin/python' "$f"
fi
done
fi
if [[ -d "$pkgdir/usr/etc" ]]; then
mv "$pkgdir/usr/etc" "$pkgdir/etc"
fi
if [[ -f LICENSE ]]; then
install -D -m644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
fi
rm -rf $pkgdir/usr/lib/python3.*/site-packages/tests
}
package() { _package; }
. "$(dirname "$BASH_SOURCE")/PKGBUILD_EXTRAS"
# Remove makedepends already in depends (which may have been listed for the
# first build, but autodetected on the second.
makedepends=($(printf '%s\n' "${makedepends[@]}" |
grep -Pwv "^($(IFS='|'; echo "${depends[*]}"))$"))
: # Apparently ending with makedepends assignment sometimes fails.
|