xref: /spdk/test/common/config/pkgdep/git (revision 496d6e76a6bf8a7c9d21170795bb2590e2bfdebf)
1function install_qat() {
2	if ! hash yasm; then
3		install yasm
4	fi
5
6	install libnl3 libnl3-devel || install libnl-3-200 libnl-3-dev libnl-genl-3-dev
7
8	in_syms() {
9		local syms
10		if [[ -e /proc/kallsyms ]]; then
11			syms=/proc/kallsyms
12		elif [[ -e /boot/System.map-$kernel_ver ]]; then
13			syms=/boot/System.map-$kernel_ver
14		else
15			return 0
16		fi
17
18		grep -q "$1" "$syms"
19	}
20
21	if [[ -e /sys/module/qat_c62x ]]; then
22		sudo modprobe -r qat_c62x || :
23	fi
24	if [[ -d $GIT_REPOS/QAT ]]; then
25		sudo rm -rf "$GIT_REPOS/QAT"
26	fi
27
28	mkdir "$GIT_REPOS/QAT"
29
30	tar -C "$GIT_REPOS/QAT" -xzof - < <(wget -O- "$DRIVER_LOCATION_QAT")
31
32	patch --dir="$GIT_REPOS/QAT" -p1 \
33		< "$rootdir/test/common/config/pkgdep/patches/qat/0001-old-style-declaration.patch"
34	patch --dir="$GIT_REPOS/QAT" -p1 \
35		< "$rootdir/test/common/config/pkgdep/patches/qat/0001-empty-body.patch"
36
37	if [[ $ID == ubuntu ]] && ge "$kernel_ver" 5.15.0-118 && lt "$kernel_ver" 6.3; then
38		patch --dir="$GIT_REPOS/QAT" -p1
39	fi < "$rootdir/test/common/config/pkgdep/patches/qat/0001-ubuntu-algapi.patch"
40
41	(cd "$GIT_REPOS/QAT" && sudo ./configure --enable-icp-sriov=host && sudo make install)
42
43	if ! sudo service qat_service start; then
44		echo "failed to start the qat service. Something may be wrong with your device or package."
45	fi
46}
47
48function install_rocksdb() {
49	# Rocksdb is installed for use with the blobfs tests.
50	if [ ! -d /usr/src/rocksdb ]; then
51		git clone "${GIT_REPO_ROCKSDB}" "$GIT_REPOS/rocksdb"
52		git -C "$GIT_REPOS/rocksdb" checkout 6.15.fb
53		sudo mv "$GIT_REPOS/rocksdb" /usr/src/
54	else
55		sudo git -C /usr/src/rocksdb checkout spdk-v8.1.1
56		echo "rocksdb already in /usr/src. Not checking out again"
57	fi
58}
59
60function install_ittapi() {
61	# Install Intel Instrumentation and Trace API
62	local ittapi_version=v3.24.5 ittapi_dir=/usr/src/ittapi
63
64	rm -rf "$ittapi_dir"
65	git clone "${GIT_REPO_ITTAPI}" --branch "$ittapi_version" "$GIT_REPOS/ittapi"
66	make -C "$GIT_REPOS/ittapi/src/ittnotify_refcol"
67
68	mv "$GIT_REPOS/ittapi" "$ittapi_dir"
69	ln -s . "$ittapi_dir/sdk"
70}
71
72function install_fio() {
73	# This version of fio is installed in /usr/src/fio to enable
74	# building the spdk fio plugin.
75	local fio_version="fio-3.35"
76
77	if [ ! -d /usr/src/fio ]; then
78		if [ ! -d fio ]; then
79			git clone "${GIT_REPO_FIO}" "$GIT_REPOS/fio"
80			sudo mv "$GIT_REPOS/fio" /usr/src/
81		else
82			sudo mv "$GIT_REPOS/fio" /usr/src/
83		fi
84		(
85			git -C /usr/src/fio checkout master \
86				&& git -C /usr/src/fio pull \
87				&& git -C /usr/src/fio checkout $fio_version \
88				&& if [ $OSID == 'freebsd' ]; then
89					gmake -C /usr/src/fio -j${jobs} \
90						&& sudo gmake -C /usr/src/fio install
91				else
92					make -C /usr/src/fio -j${jobs} \
93						&& sudo make -C /usr/src/fio install
94				fi
95		)
96	else
97		echo "fio already in /usr/src/fio. Not installing"
98	fi
99}
100
101function install_flamegraph() {
102	# Flamegraph is used when printing out timing graphs for the tests.
103	if [ ! -d /usr/local/FlameGraph ]; then
104		git clone "${GIT_REPO_FLAMEGRAPH}" "$GIT_REPOS/FlameGraph"
105		mkdir -p /usr/local
106		sudo mv "$GIT_REPOS/FlameGraph" /usr/local/FlameGraph
107	else
108		echo "flamegraph already installed. Skipping"
109	fi
110}
111
112function _install_qemu() {
113	local repo=$1
114	local branch=$2
115	local prefix=${3:-}
116	local name=${4:-}
117
118	mkdir -p "$GIT_REPOS/qemu"
119
120	local repo_dir=$GIT_REPOS/qemu/$branch
121	if [[ -n $prefix ]]; then
122		repo_dir=$GIT_REPOS/qemu/$prefix-$branch
123	fi
124
125	if [[ ! -d $repo_dir ]]; then
126		git clone "$repo" -b "$branch" "$repo_dir"
127	else
128		echo "qemu already checked out. Skipping"
129	fi
130
131	declare -a opt_params=("--prefix=/usr/local/qemu/${repo_dir##*/}")
132	declare -a extra_cflags=()
133
134	opt_params+=("--disable-docs")
135	if ((gcc_version >= 9)); then
136		opt_params+=("--disable-glusterfs")
137	fi
138
139	extra_cflags+=("-Wno-error")
140
141	# Most tsocks proxies rely on a configuration file in /etc/tsocks.conf.
142	# If using tsocks, please make sure to complete this config before trying to build qemu.
143	if [[ $INSTALL_TSOCKS == true && $NO_TSOCKS != true ]]; then
144		if hash tsocks 2> /dev/null; then
145			opt_params+=("--with-git='tsocks git'")
146		fi
147	fi
148	opt_params+=("--extra-cflags=${extra_cflags[*]}")
149
150	if [[ $prefix == vanilla ]]; then
151		# Latest qemu seems to take sysconfdir from the prefix and instead of checking /etc
152		# it looks under /usr/local/qemu/vanilla*/bin/../etc which is a bit peculiar. Fix it.
153		opt_params+=("--sysconfdir=/etc/")
154	fi
155
156	# The qemu configure script places several output files in the CWD.
157	(cd "$repo_dir" && ./configure "${opt_params[@]}" --target-list="x86_64-softmmu" --enable-kvm --enable-linux-aio --enable-numa)
158
159	make -C "$repo_dir" -j${jobs}
160	sudo make -C "$repo_dir" install
161
162	# Add a symlink to point at a latest build - this is useful to easily track QEMU flavors for which
163	# branches change quite often (e.g. vfio-user's).
164	[[ -n $name ]] || return 0
165	[[ -L /usr/local/qemu/$name-latest ]] && sudo rm "/usr/local/qemu/$name-latest"
166	sudo ln -s "/usr/local/qemu/${repo_dir##*/}" "/usr/local/qemu/$name-latest"
167}
168
169function install_qemu() {
170	# Four versions of QEMU are used in the tests, three are installed
171	# directly from the source. Each QEMU is dedicated for different
172	# use-cases:
173	#  - Packed QEMU: version provided by given distro. Used to boot VMs
174	#    from within vhost tests.
175	#  - vfio-user QEMU: A special fork to test libvfio-user components.
176	#  - Vanilla QEMU: Used by the CI to boot the testing VMs.
177
178	_install_qemu $GIT_REPO_QEMU_VFIO $VFIO_QEMU_BRANCH "" vfio-user
179	_install_qemu "$GIT_REPO_QEMU" "$VANILLA_QEMU_BRANCH" vanilla vanilla
180}
181
182function install_nvmecli() {
183	# nvme-cli >1.11.1 should be used.
184	rm -rf "$GIT_REPOS/nvme-cli-cuse"
185	git clone "https://github.com/linux-nvme/nvme-cli.git" "$GIT_REPOS/nvme-cli-cuse"
186	git -C "$GIT_REPOS/nvme-cli-cuse" checkout v2.5
187
188	meson setup --force-fallback-for=libnvme \
189		"$GIT_REPOS/nvme-cli-cuse/.build" \
190		"$GIT_REPOS/nvme-cli-cuse"
191	meson compile -C "$GIT_REPOS/nvme-cli-cuse/.build"
192
193	rm -rf /usr/local/src/nvme-cli
194	mv "$GIT_REPOS/nvme-cli-cuse" /usr/local/src/nvme-cli
195
196	# Make sure binary is available for the cuse tests
197	if [[ -e /usr/local/src/nvme-cli/.build/nvme ]]; then
198		sudo ln -s .build/nvme /usr/local/src/nvme-cli/
199	fi
200}
201
202# This function install version of nvme-cli, that support listing spdk nvme
203# devices, should be remove after changes present in nvme-cli upstream.
204function install_nvmecli_plugin() {
205	rm -rf "$GIT_REPOS/nvme-cli-plugin"
206
207	git clone $GIT_REPO_NVME_CLI "$GIT_REPOS/nvme-cli-plugin"
208	git -C "$GIT_REPOS/nvme-cli-plugin" fetch $GIT_REPO_NVME_CLI refs/changes/95/16795/12
209	git -C "$GIT_REPOS/nvme-cli-plugin" checkout FETCH_HEAD
210
211	meson setup --force-fallback-for=libnvme,json-c \
212		"$GIT_REPOS/nvme-cli-plugin/.build" \
213		"$GIT_REPOS/nvme-cli-plugin"
214	meson compile -C "$GIT_REPOS/nvme-cli-plugin/.build"
215
216	rm -rf /usr/local/src/nvme-cli-plugin
217	mv "$GIT_REPOS/nvme-cli-plugin" /usr/local/src/nvme-cli-plugin
218
219	# Make sure binary is available for the plugin tests
220	if [[ -e /usr/local/src/nvme-cli-plugin/.build/nvme ]]; then
221		sudo ln -s .build/nvme /usr/local/src/nvme-cli-plugin/
222	fi
223}
224
225function install_libiscsi() {
226	# We currently don't make any changes to the libiscsi repository for our tests, but it is possible that we will need
227	# to later. Cloning from git is just future proofing the machines.
228	if [[ ! -d $GIT_REPOS/libiscsi ]]; then
229		git clone "${GIT_REPO_LIBISCSI}" "$GIT_REPOS/libiscsi"
230	else
231		echo "libiscsi already checked out. Skipping"
232	fi
233	(cd "$GIT_REPOS/libiscsi" && ./autogen.sh && ./configure --prefix=/usr/local/libiscsi)
234	make -C "$GIT_REPOS/libiscsi" -j${jobs} WARN_CFLAGS=
235	sudo make -C "$GIT_REPOS/libiscsi" install
236}
237
238function install_git() {
239	if type -P git; then
240		if ge "$(git --version | awk '{print $3}')" "$GIT_VERSION"; then
241			return 0
242		fi
243	fi >/dev/null
244
245	install zlib-devel curl-devel
246	tar -C "$GIT_REPOS" -xzof <(wget -qO- "$GIT_REPO_GIT")
247	(cd "$GIT_REPOS/git-$GIT_VERSION" \
248		&& make configure \
249		&& ./configure \
250		&& sudo make -j${jobs} install)
251}
252
253function install_extra_pkgs() {
254	if [[ $INSTALL_QAT == true ]]; then
255		install libudev-devel || install libudev-dev || :
256	fi
257
258	if [[ $INSTALL_QEMU == true ]]; then
259		install qemu-system-x86 qemu-img \
260			|| install qemu-system-x86 qemu-utils \
261			|| install qemu
262
263		# Install extra dependency which was removed from Qemu 7.2 source tree
264		install libslirp-devel \
265			|| install libslirp-dev
266	fi || :
267}
268
269function install_vagrant() {
270	local vagrant_version="2.2.7"
271	local vagrant_installer="vagrant_${vagrant_version}_x86_64.deb"
272	local vagrant_plugins=(vagrant-libvirt vagrant-sshfs vagrant-cachier vagrant-proxyconf)
273
274	if [[ $OSID != ubuntu ]]; then
275		echo "Currently, Vagrant installation is supported only on ubuntu"
276		return 0
277	fi
278
279	# Install vagrant and it's plugins dependencies
280	# function should be defined in pkgdep/$package_manager file
281	install_vagrant_dependencies
282
283	# Download and install vagrant
284	if hash vagrant &> /dev/null; then
285		echo "Vagrant is already installed"
286	else
287		wget "https://releases.hashicorp.com/vagrant/${vagrant_version}/${vagrant_installer}"
288		sudo dpkg -i "${vagrant_installer}"
289	fi
290	vagrant --version
291
292	# Install vagrant plugins
293	local vagrant_plugin_list
294	vagrant_plugin_list=$(vagrant plugin list)
295
296	local plugin
297	for plugin in "${vagrant_plugins[@]}"; do
298		if grep -Fq "$plugin" <<< "$vagrant_plugin_list"; then
299			echo "$plugin already installed"
300		else
301			vagrant plugin install "$plugin"
302		fi
303	done
304}
305
306function install_igb_uio() {
307	git clone "${GIT_REPO_DPDK_KMODS}" "$GIT_REPOS/dpdk-kmods"
308
309	(cd "$GIT_REPOS/dpdk-kmods/linux/igb_uio" && make -j ${jobs})
310	sudo mkdir -p "/lib/modules/$(uname -r)/extra/dpdk"
311	sudo cp "$GIT_REPOS/dpdk-kmods/linux/igb_uio/igb_uio.ko" "/lib/modules/$(uname -r)/extra/dpdk"
312	sudo depmod
313}
314
315function install_irdma() {
316	local RDMA_CORE_VERSION=51.0
317	local RDMA_CORE=https://github.com/linux-rdma/rdma-core/releases/download/v$RDMA_CORE_VERSION/rdma-core-$RDMA_CORE_VERSION.tar.gz
318
319	if [[ $ID != fedora ]]; then
320		echo "Installation of the irdma can be attempted only on Fedora"
321		return 0
322	fi
323
324	# Install extra dependencies needed by the rdma-core
325	install ninja-build pandoc perl-generators valgrind-devel python-docutils libnl3 libnl3-devel python3-Cython
326
327	rm -rf "$GIT_REPOS/irdma-$IRDMA_VERSION"
328	rm -rf "$GIT_REPOS/rdma-core-$RDMA_CORE_VERSION"
329
330	curl -L -o- "$IRDMA_DRIVER" | tar -C "$GIT_REPOS" -xzf -
331
332	if ge "$kernel_ver" 6.10; then
333		patch --dir="$GIT_REPOS/irdma-$IRDMA_VERSION" -p1  \
334			< "$rootdir/test/common/config/pkgdep/patches/irdma/0001-ip_route_output.patch"
335	fi
336
337	[[ -e $GIT_REPOS/irdma-$IRDMA_VERSION/build.sh ]]
338
339	(
340		cd "$GIT_REPOS/irdma-$IRDMA_VERSION"
341		sed -i "s/IRDMA_FLUSH_DELAY_MS 1500/IRDMA_FLUSH_DELAY_MS 50/" \
342			"$GIT_REPOS/irdma-$IRDMA_VERSION/src/irdma/verbs.h"
343		"$GIT_REPOS/irdma-$IRDMA_VERSION/build.sh"
344	)
345
346	# Fetch and build the rdma-core irdma depends on
347	curl -L -o- "$RDMA_CORE" | tar -C "$GIT_REPOS" -xzf -
348	[[ -e $GIT_REPOS/irdma-$IRDMA_VERSION/libirdma-$RDMA_CORE_VERSION.patch ]]
349
350	patch --dir="$GIT_REPOS/rdma-core-$RDMA_CORE_VERSION" -p2 \
351		< "$GIT_REPOS/irdma-$IRDMA_VERSION/libirdma-$RDMA_CORE_VERSION.patch"
352
353	# Note that paths and the name of the package are hardcoded into .spec, hence they need to stay like this.
354	[[ -e $GIT_REPOS/rdma-core-$RDMA_CORE_VERSION/redhat/rdma-core.spec ]]
355	mkdir -p "$HOME/rpmbuild/"{SOURCES,SPECS}
356	cp "$GIT_REPOS/rdma-core-$RDMA_CORE_VERSION/redhat/rdma-core.spec" "$HOME/rpmbuild/SPECS"
357
358	# Re-package the source
359	tar -czf "$HOME/rpmbuild/SOURCES/rdma-core-$RDMA_CORE_VERSION.tar.gz" -C "$GIT_REPOS" "rdma-core-$RDMA_CORE_VERSION"
360
361	# Build the rpms
362	(
363		cd "$HOME/rpmbuild/SPECS"
364		# Make sure stock ninja-build is used
365		PATH="/usr/bin:$PATH" rpmbuild -ba rdma-core.spec
366	)
367
368	# Now, don't install the packages since this will, most likely, conflict with packages already installed
369	# in the system. Instead, simply inform user what the next step is and note what potential issues it may
370	# have with the installation.
371
372	shopt -s nullglob
373	local rpms=("$HOME/rpmbuild/RPMS/x86_64/"*.rpm)
374	shopt -u nullglob
375	((${#rpms[@]} > 0))
376
377	cat <<-EOF
378
379		INFO: rdma-core-$RDMA_CORE_VERSION was successfully built, following packages are
380		available for installation:
381
382		$(printf '  - %s\n' "${rpms[@]##*/}")
383
384		Note that installing the above packages may raise conflicts with their
385		potentially newer versions already installed on the system. Dependent
386		packages may be uninstalled during the process as well. Please, run the
387		following command to finish the installation:
388
389		  $package_manager install [--allowerasing] $HOME/rpmbuild/RPMS/x86_64/*.rpm
390
391	EOF
392}
393
394function install_ice() {
395	rm -rf "$GIT_REPOS/ice-$ICE_VERSION"
396
397	curl -L -o- "$ICE_DRIVER" | tar -C "$GIT_REPOS" -xzf -
398
399	if ge "$kernel_ver" 6.10; then
400		patch --dir="$GIT_REPOS/ice-$ICE_VERSION" -p1  \
401			< "$rootdir/test/common/config/pkgdep/patches/ice/0001-__assign_str.patch"
402		patch --dir="$GIT_REPOS/ice-$ICE_VERSION" -p1  \
403			< "$rootdir/test/common/config/pkgdep/patches/ice/0001-napi_alloc_skb.patch"
404		patch --dir="$GIT_REPOS/ice-$ICE_VERSION" -p1  \
405			< "$rootdir/test/common/config/pkgdep/patches/ice/0001-devlink_param.patch"
406		patch --dir="$GIT_REPOS/ice-$ICE_VERSION" -p1  \
407			< "$rootdir/test/common/config/pkgdep/patches/ice/0001-xsk_buff_dma.patch"
408	fi
409
410	(
411		cd "$GIT_REPOS/ice-$ICE_VERSION/src"
412		sudo make -j"$(nproc)" install
413	)
414}
415
416function install_lcov() {
417	local lcov_version=v1.15
418
419	install perl-IO-Compress || install perl-modules
420
421	rm -rf /usr/src/lcov
422	sudo git clone "$GIT_REPO_LCOV" --branch "$lcov_version" /usr/src/lcov
423	(cd /usr/src/lcov; sudo make install)
424}
425
426function install_libbpf() {
427	local libbpf_version=v1.4.5
428
429	rm -rf "$GIT_REPOS/libbpf"
430	git clone "$GIT_REPO_LIBBPF" --branch "$libbpf_version" "$GIT_REPOS/libbpf"
431
432	make -C "$GIT_REPOS/libbpf/src" -j install
433	# install target doesn't include the kernel header files
434	make -C "$GIT_REPOS/libbpf/src" install_uapi_headers
435}
436
437function install_bpftrace() {
438	local deps_fedora=() deps_ubuntu=() bcc_rev
439
440	deps_fedora+=(cereal-devel)
441	deps_fedora+=(clang-devel)
442	deps_fedora+=(dwarves)
443	deps_fedora+=(gmock-devel)
444	deps_fedora+=(gtest-devel)
445	deps_fedora+=(llvm-devel)
446	deps_fedora+=(bcc-devel)
447	deps_fedora+=(libbpf-devel)
448
449	deps_ubuntu+=(libcereal-dev)
450	deps_ubuntu+=(libclang-dev)
451	deps_ubuntu+=(llvm-dev)
452	# Under jammy (2204) the libbpf version is not compatible with the version of
453	# bpftrace that we are using. Instead, we are going to provide our own build
454	# of libbpf, including both up-to-date bpf.h and linux/bpf.h.
455	[[ $VERSION_CODENAME == jammy ]] || deps_ubuntu+=(libbpf-dev)
456	deps_ubuntu+=(libbpfcc-dev)
457	deps_ubuntu+=(libelf-dev)
458	deps_ubuntu+=(binutils-dev)
459
460	local -n deps="deps_$ID"
461
462	((${#deps[@]} > 0)) || return 1
463
464	deps+=(clang cmake)
465
466	install "${deps[@]}"
467
468	if [[ $VERSION_CODENAME == jammy ]]; then
469		install_libbpf
470	fi
471
472	rm -rf $GIT_REPOS/bpftrace
473
474	git clone "$GIT_REPO_BPFTRACE" "$GIT_REPOS/bpftrace"
475	git -C $GIT_REPOS/bpftrace checkout $BPFTRACE_VERSION
476
477	mkdir -p "$GIT_REPOS/bpftrace/build"
478	cmake \
479		-DCMAKE_BUILD_TYPE=Release \
480		-DBUILD_TESTING=OFF \
481		-B "$GIT_REPOS/bpftrace/build" \
482		-S "$GIT_REPOS/bpftrace"
483
484	make -C $GIT_REPOS/bpftrace/build -j$(nproc)
485	sudo make -C $GIT_REPOS/bpftrace/build install
486}
487
488function install_doxygen() {
489	# Stable, 1.10 commit that works for our docs
490	local release=78422d3905e57acebf0374feefafa6578dbe86aa
491
492	rm -rf "$GIT_REPOS/doxygen"
493
494	git clone "$GIT_REPO_DOXYGEN" "$GIT_REPOS/doxygen"
495	git -C "$GIT_REPOS/doxygen" checkout "$release"
496
497	mkdir -p "$GIT_REPOS/doxygen/build"
498
499	cmake -G "Unix Makefiles" \
500		-B "$GIT_REPOS/doxygen/build" \
501		-S "$GIT_REPOS/doxygen"
502
503	# This build is quite heavy, so let's not go crazy with -j here
504	make -C "$GIT_REPOS/doxygen/build" -j$(($(nproc) / 2))
505	make -C "$GIT_REPOS/doxygen/build" install
506}
507
508function install_sources() {
509	if [[ $ID == centos ]] && (( VERSION_ID == 7 )); then
510		# install proper version of the git first
511		install_git
512	fi
513
514	IFS="," read -ra conf_env <<< "$CONF"
515	for conf in "${conf_env[@]}"; do
516		export "INSTALL_${conf^^}=true"
517	done
518
519	if [[ $OSID == freebsd ]]; then
520		jobs=$(($(sysctl -n hw.ncpu) * 2))
521	else
522		jobs=$(($(nproc) * 2))
523		sources+=(
524			install_irdma
525			install_libiscsi
526			install_nvmecli
527			install_nvmecli_plugin
528			install_qat
529			install_rocksdb
530			install_flamegraph
531			install_qemu
532			install_igb_uio
533			install_ice
534			install_lcov
535			install_bpftrace
536			install_doxygen
537		)
538		install_extra_pkgs
539	fi
540	sources+=(install_fio)
541	sources+=(install_vagrant)
542	sources+=(install_ittapi)
543
544	sudo mkdir -p /usr/{,local}/src
545	sudo mkdir -p "$GIT_REPOS"
546
547	for source in "${sources[@]}"; do
548		source_conf=${source^^}
549		if [[ ${!source_conf} == true ]]; then
550			"$source"
551		fi
552	done
553}
554
555GIT_VERSION=2.25.1
556IRDMA_VERSION=1.14.31
557ICE_VERSION=1.14.9
558
559BPFTRACE_VERSION=${BPFTRACE_VERSION:-f7bdfb44}
560VFIO_QEMU_BRANCH=${VFIO_QEMU_BRANCH:-vfio-user-p3.0}
561VANILLA_QEMU_BRANCH=${VANILLA_QEMU_BRANCH:-v8.0.0}
562
563: ${GIT_REPO_ROCKSDB=https://review.spdk.io/spdk/rocksdb}
564export GIT_REPO_ROCKSDB
565: ${GIT_REPO_FIO=https://github.com/axboe/fio.git}
566export GIT_REPO_FIO
567: ${GIT_REPO_FLAMEGRAPH=https://github.com/brendangregg/FlameGraph.git}
568export GIT_REPO_FLAMEGRAPH
569: ${GIT_REPO_QEMU=https://github.com/qemu/qemu}
570export GIT_REPO_QEMU
571: ${GIT_REPO_QEMU_VFIO=https://github.com/oracle/qemu}
572export GIT_REPO_QEMU_VFIO
573: ${GIT_REPO_LIBISCSI=https://github.com/sahlberg/libiscsi}
574export GIT_REPO_LIBISCSI
575: ${DRIVER_LOCATION_QAT=https://downloadmirror.intel.com/828487/QAT.L.4.26.0-00008.tar.gz}
576export DRIVER_LOCATION_QAT
577: ${GIT_REPO_GIT=https://github.com/git/git/archive/v${GIT_VERSION}.tar.gz}
578export GIT_REPO_GIT
579: ${GIT_REPO_DPDK_KMODS=http://dpdk.org/git/dpdk-kmods}
580export GIT_REPO_DPDK_KMODS
581: ${IRDMA_DRIVER=https://downloadmirror.intel.com/823677/irdma-$IRDMA_VERSION.tgz}
582export IRDMA_DRIVER
583: ${ICE_DRIVER="https://sourceforge.net/projects/e1000/files/ice%20stable/$ICE_VERSION/ice-$ICE_VERSION.tar.gz"}
584export ICE_DRIVER
585: ${GIT_REPO_LCOV=https://github.com/linux-test-project/lcov}
586export GIT_REPO_LCOV
587: ${GIT_REPO_BCC=https://github.com/iovisor/bcc.git}
588export GIT_REPO_BCC
589: ${GIT_REPO_BPFTRACE=https://github.com/iovisor/bpftrace.git}
590export GIT_REPO_BPFTRACE
591: ${GIT_REPO_NVME_CLI=https://review.spdk.io/gerrit/spdk/nvme-cli}
592export GIT_REPO_NVME_CLI
593: ${GIT_REPO_ITTAPI=https://github.com/intel/ittapi.git}
594export GIT_REPO_ITTAPI
595: ${GIT_REPO_DOXYGEN="https://github.com/doxygen/doxygen"}
596export GIT_REPO_DOXYGEN
597: ${GIT_REPO_LIBBPF="https://github.com/libbpf/libbpf"}
598export GIT_REPO_LIBBPF
599
600GIT_REPOS=${GIT_REPOS:-$HOME}
601
602gcc_version=$(gcc -dumpversion) gcc_version=${gcc_version%%.*}
603if [[ -e /proc/sys/kernel/osrelease ]]; then
604	kernel_ver=$(< /proc/sys/kernel/osrelease)
605fi
606