blob: e9fda4a8c11a8504b786926e134f972025209517 (
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
# Maintainer: enihcam <nanericwang at the google email domain which is .com>
pkgbase=tensorflow-computecpp
pkgname=(tensorflow-computecpp python-tensorflow-computecpp)
pkgver=1.9
pkgrel=8
pkgdesc="Library for computation using data flow graphs for scalable machine learning (backend with ComputeCpp)"
url="https://github.com/codeplaysoftware/tensorflow"
epoch=1
license=('APACHE')
arch=('x86_64')
depends=(opencl-icd-loader computecpp)
makedepends=(git opencl-icd-loader computecpp cmake opencl-headers
python-numpy python-pip python-wheel python-setuptools java-environment=8)
options=(!ccache)
source=("git+${url}"
#"https://github.com/bazelbuild/bazel/releases/download/0.17.2/bazel-0.17.2-dist.zip"
"https://archive.org/download/archlinux_pkg_bazel/bazel-0.17.2-1-x86_64.pkg.tar.xz"
python37.patch
py37.diff
gcc1.diff
gcc2.diff
gcc3.diff
python38.patch
gcc10.patch
numpy.diff
python310.diff
python310or.patch)
sha256sums=('SKIP'
'758e10caff4c1cb496d1cf49d6f4da2969b610b174276fb734b8502686d07ddd'
'ef54b3783a05b5604cd8f448136567686806ad3a5759978f48549256807a8394'
'b3997091bc7a32f9e8c062a88e9148273090ebf66aeebb5dc055baa41b7aae7e'
'7d9f32a46cac83ec1a7308ac380226cdf40f98830c869bcdf5feb7bf110abf9a'
'10de738141852cfebae9847b746ae9b58f3b3985561cccede929d8fbdba93551'
'742abe5d8bfd3f7ce33778a08cbb233337db56238d11ac2ad07171b0d6097bfb'
'b69895cfd098efacc95b1d1fffd471afa05c449f8d42964ee10b1a6fd9a75689'
'15c20b31394537051f8756707819e13f3c12da24d8aa63d3ba47e6fce4d19d95'
'fe4c34a66000ba3a24d7c35914dc22e95adb5efa60a58d1f0b3d3cad77fd722d'
'16bbc9d5cfd7e3888a7bda73ac4ebaab5c9c2588632eac342917f7cec745db9a'
'7fe63476cb7b2dfe359f8ae3d894869f2329c399c6611a52449cd5dcd6f67098')
prepare() {
# These environment variables influence the behavior of the configure call below.
export PYTHON_BIN_PATH=/usr/bin/python
export USE_DEFAULT_PYTHON_LIB_PATH=1
export TF_DOWNLOAD_CLANG=0
export TF_CUDA_CLANG=0
export TF_NEED_CUDA=0
export TF_NEED_JEMALLOC=0
export TF_NEED_GCP=0
export TF_NEED_HDFS=0
export TF_ENABLE_XLA=0
export TF_NEED_GDR=0
export TF_NEED_VERBS=0
export TF_NEED_MPI=0
export TF_NEED_S3=0
export TF_NEED_KAFKA=0
export TF_NEED_TENSORRT=0
export TF_SET_ANDROID_WORKSPACE=0
export TF_NEED_OPENCL=1
export TF_NEED_OPENCL_SYCL=1
export TF_NEED_COMPUTECPP=1
export COMPUTECPP_TOOLKIT_PATH=/opt/ComputeCpp-CE
export COMPUTE=:0
# Device-sensitive magic, these should work on as much hardware as possible
export TF_USE_HALF_SYCL=0
export TF_USE_DOUBLE_SYCL=0
export TF_SYCL_BITCODE_TARGET=spir64
export CC_OPT_FLAGS="-march=native -mfpmath=sse -O2 -pipe" # -sycl-compress-name for some amd cards
# make sure the proxy variables are in all caps, otherwise bazel ignores them
export HTTP_PROXY=`echo $http_proxy | sed -e 's/\/$//'`
export HTTPS_PROXY=`echo $https_proxy | sed -e 's/\/$//'`
cd "${srcdir}"/tensorflow
git apply --index ../python37.patch
git apply --index --whitespace=nowarn ../py37.diff
git apply --index --whitespace=nowarn ../gcc1.diff
git apply --index --whitespace=fix ../gcc2.diff
git apply --index --whitespace=nowarn ../gcc3.diff
git apply --index ../python38.patch
git apply --index ../gcc10.patch
git apply --index ../numpy.diff
git apply --index ../python310.diff
git apply --index ../python310or.patch
}
build() {
# Build bazel
echo "Please note: currently, bazel version <0.18 is required to build this package."
echo "Fixing that for you" # "Building it temporarily..."
echo "Make sure there are no spaces in PATH"
cd "$srcdir"
# ./compile.sh
export PATH="${srcdir}/usr/bin:$PATH"
cd "${srcdir}"/tensorflow
if [ ! -f .bazelrc ]; then # configure should be in prepare, but bazel has to be built first atm
./configure
fi
# Please take notice this requires at least 8GB of swap/disk space and 0.7+(3.2*threads)GB of RAM to build
bazel build -c opt --config=sycl //tensorflow:libtensorflow.so \
//tensorflow/tools/pip_package:build_pip_package # --jobs 1 --verbose_failures
bazel-bin/tensorflow/tools/pip_package/build_pip_package "${srcdir}"/tmp
}
package_tensorflow-computecpp() {
conflicts=(tensorflow)
provides=(tensorflow)
cd "${srcdir}"/tensorflow
tensorflow/c/generate-pc.sh --prefix=/usr --version=${pkgver}
install -Dm644 tensorflow.pc "${pkgdir}"/usr/lib/pkgconfig/tensorflow.pc
install -Dm755 bazel-bin/tensorflow/libtensorflow.so "${pkgdir}"/usr/lib/libtensorflow.so
install -Dm755 bazel-bin/tensorflow/libtensorflow_framework.so "${pkgdir}"/usr/lib/libtensorflow_framework.so
install -Dm644 tensorflow/c/c_api.h "${pkgdir}"/usr/include/tensorflow/c/c_api.h
install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
}
package_python-tensorflow-computecpp() {
conflicts=(python-tensorflow)
provides=(python-tensorflow)
depends=(python-numpy python-protobuf absl-py)
optdepends=('python-werkzeug: for using tensorboard')
cd "${srcdir}"/tensorflow
WHEEL_PACKAGE=$(find "${srcdir}"/tmp -name "tensor*.whl")
pip install --ignore-installed --upgrade --root "$pkgdir" $WHEEL_PACKAGE --no-dependencies --no-warn-script-location
# tensorboard has been separated from upstream but they still install it with
# tensorflow. I don't know what kind of sense that makes but we have to clean
# it out from this pacakge.
rm -rf "${pkgdir}"/usr/bin/tensorboard
install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
}
|