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