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