Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[spdk] Build error on x64-linux #41096

Open
IsaacKhor opened this issue Sep 20, 2024 · 3 comments
Open

[spdk] Build error on x64-linux #41096

IsaacKhor opened this issue Sep 20, 2024 · 3 comments
Assignees
Labels
category:port-bug The issue is with a library, which is something the port should already support

Comments

@IsaacKhor
Copy link

IsaacKhor commented Sep 20, 2024

Looks like the main issue is that spdk no longer supports the without-isal option in its ./configure script.

Package: spdk:x64-linux@24.01

Host Environment

  • Host: x64-linux
  • Compiler: GNU 13.2.0
  • vcpkg-tool version: 2024-08-01-fd884a0d390d12783076341bd43d77c3a6a15658
    vcpkg-scripts version: ab67d63 2024-09-19 (20 hours ago)

To Reproduce

vcpkg install

Failure logs

-- Using cached spdk-spdk-v24.01.tar.gz.
-- Cleaning sources at /home/isaackhor/.vcpkg/buildtrees/spdk/src/v24.01-7a9678f8c7.clean. Use --editable to skip cleaning for the packages you specify.
-- Extracting source /home/isaackhor/.vcpkg/downloads/spdk-spdk-v24.01.tar.gz
-- Using source at /home/isaackhor/.vcpkg/buildtrees/spdk/src/v24.01-7a9678f8c7.clean
-- Found external ninja('1.11.1.git.kitware.jobserver-1').
-- Configuring x64-linux
-- Building x64-linux-dbg
CMake Error at scripts/cmake/vcpkg_execute_build_process.cmake:134 (message):
    Command failed: /home/isaackhor/.vcpkg/downloads/tools/cmake-3.29.2-linux/cmake-3.29.2-linux-x86_64/bin/cmake --build . --config Debug --target install -- -v -j17
    Working Directory: /home/isaackhor/.vcpkg/buildtrees/spdk/x64-linux-dbg
    See logs for more information:
      /home/isaackhor/.vcpkg/buildtrees/spdk/install-x64-linux-dbg-out.log

Call Stack (most recent call first):
  /home/isaackhor/code/lsvd-rbd/vcpkg_installed/x64-linux/share/vcpkg-cmake/vcpkg_cmake_build.cmake:74 (vcpkg_execute_build_process)
  /home/isaackhor/code/lsvd-rbd/vcpkg_installed/x64-linux/share/vcpkg-cmake/vcpkg_cmake_install.cmake:16 (vcpkg_cmake_build)
  /home/isaackhor/.cache/vcpkg/registries/git-trees/fc1cfa8bc382740fae8e5155aca3b62bc033496a/portfile.cmake:27 (vcpkg_cmake_install)
  scripts/ports.cmake:192 (include)



/home/isaackhor/.vcpkg/buildtrees/spdk/install-x64-linux-dbg-out.log
Change Dir: '/home/isaackhor/.vcpkg/buildtrees/spdk/x64-linux-dbg'

Run Build Command(s): /usr/local/bin/ninja -v -v -j17 install
[1/3] cd /home/isaackhor/.vcpkg/buildtrees/spdk/src/v24.01-7a9678f8c7.clean && ./configure --disable-tests --with-rdma --without-isal --with-dpdk=/home/isaackhor/.vcpkg/buildtrees/spdk/src/v24.01-7a9678f8c7.clean/../../../spdk-dpdk/src/spdk-18.11-411c51fb97/build
FAILED: CMakeFiles/spdk-configure /home/isaackhor/.vcpkg/buildtrees/spdk/x64-linux-dbg/CMakeFiles/spdk-configure
cd /home/isaackhor/.vcpkg/buildtrees/spdk/src/v24.01-7a9678f8c7.clean && ./configure --disable-tests --with-rdma --without-isal --with-dpdk=/home/isaackhor/.vcpkg/buildtrees/spdk/src/v24.01-7a9678f8c7.clean/../../../spdk-dpdk/src/spdk-18.11-411c51fb97/build
Unrecognized option --without-isal
'configure' configures SPDK to compile on supported platforms.

Usage: ./configure [OPTION]...

Defaults for the options are specified in brackets.

General:
 -h, --help                Display this help and exit

 --prefix=path             Configure installation prefix (default: /usr/local)
 --target-arch=arch        Target build architecture. Must be a valid GNU arch. Default: native

 --cross-prefix=prefix     Prefix for cross compilation (default: none)
                           example: aarch64-linux-gnu
 --libdir=path             Configure installation path for the libraries (default: $prefix/lib)
 --max-lcores=VAL          DPDK configuration. VAL defines maximum number of lcores supported
                           by EAL, or enables autodetection if set to 'detect'. When 'detect'
                           is specified, DPDK will detect number of cores in the system during
                           compilation, and will set maximum number of lcores to this value
...skipping...
                           libufc.a and fc_lld.h. Otherwise the regular system paths will
                           be searched.
 --with-daos[=DIR]         Build DAOS bdev module.
 --without-daos            No path required.
 --with-shared             Build spdk shared libraries.
 --without-shared          No path required.
 --with-iscsi-initiator    Build with iscsi bdev module.
 --without-iscsi-initiator No path required.
 --with-vtune=DIR          Required to profile I/O under Intel VTune Profiler.
                           example: /opt/intel/oneapi/vtune/version
 --without-vtune           Support for Intel VTune Profiler will not be provided.
 --with-ocf[=DIR]          Build OCF library and bdev module.
 --without-ocf             If argument is directory, interpret it as root of OCF repo
                           If argument is file, interpret it as compiled OCF lib
                           If no argument is specified, OCF git submodule is used by default
                           example: /usr/src/ocf/
 --with-uring[=DIR]        Build I/O uring bdev or socket module.
 --without-uring           If an argument is provided, it is considered a directory containing
                           liburing.a and io_uring.h. Otherwise the regular system paths will
                           be searched.
 --without-uring-zns       Build I/O uring module without ZNS (zoned namespaces) support.
 --with-openssl[=DIR]      Build OPENSSL with custom path. Otherwise the regular system paths will
                           be searched.
 --with-fuse               Build FUSE components for mounting a blobfs filesystem.
 --without-fuse            No path required.
 --with-nvme-cuse          Build NVMe driver with support for CUSE-based character devices.
 --without-nvme-cuse       No path required.
 --with-raid5f             Build with bdev_raid module RAID5f support.
 --without-raid5f          No path required.
 --with-wpdk=DIR           Build using WPDK to provide support for Windows (experimental).
 --without-wpdk            The argument must be a directory containing lib and include.
 --with-usdt               Build with userspace DTrace probes enabled.
 --without-usdt            No path required.
 --with-fuzzer             Build with LLVM fuzzing enabled.
                           Path to clang_rt.fuzzer_no_main library required.
                           Requires setting CC and CXX to clang.
                           (Typically /usr/lib/llvm-VER/lib/clang/VER/lib/linux/libclang_rt.fuzzer_no_main-ARCH.a)
 --with-sma                Generate Storage Management Agent's protobuf interface
 --without-sma             No path required.
 --with-avahi              Build with Avahi mDNS discovery client service enabled in bdev-nvme module.
 --without-avahi           No path required.
 --with-golang             Build with components written in Go
 --without-golang          No path required.

Environment variables:

CC                         C compiler
CFLAGS                     C compiler flags
CXX                        C++ compiler
CXXFLAGS                   C++ compiler flags
LD                         Linker
LDFLAGS                    Linker flags
DESTDIR                    Destination for 'make install'

ninja: build stopped: subcommand failed.

Additional context

vcpkg.json
{
  "dependencies": [
    "cachelib",
    "fmt",
    "jemalloc",
    "liburing",
    "spdk",
    "zpp-bits",
    "pkgconf"
  ]
}

@IsaacKhor IsaacKhor mentioned this issue Sep 20, 2024
8 tasks
@IsaacKhor
Copy link
Author

To reiterate my comment on the PR updating the spdk version, the --without-isal option which the port used to separate out isal into its own port has been explicitly disabled in this commit.

I think this means that there's two ways of resolving this:

  1. Give up on splitting spdk-isal into its own project and just let the usual spdk configure script handle it.
  2. Patch the spdk configure script to allow a missing isal and to grab it from the dependency. Seems like a lot of work for not much benefit.

I'll try option 1 in my project and see how it goes.

@BillyONeal
Copy link
Member

The problem is that spdk-isal conflicts with isal. It would be fine to remove spdk-isal but then spdk needs to be fixed to work with real isal.

@Cheney-W Cheney-W added the category:port-bug The issue is with a library, which is something the port should already support label Sep 23, 2024
@IsaacKhor
Copy link
Author

Reporting that putting just cloning all the submodules in portfile.cmake worked in my overlay port (and removing them from vcpkg.json):

VCPKG_FROM_GITHUB(
    OUT_SOURCE_PATH SPDK_ISAL_SOURCE_PATH
    REPO spdk/isa-l
    REF 6f420b14a1e3e091bc9d15f508a54f82c007483c
    SHA512 07c64332fe279605732e2360e97fa622ffc5cf40763e3e482e7193f68f4c8ace38e3b5c14ef5d542ee86515bd7f610ed218745e6b8ae1c24c894cacd6a7d6325
    HEAD_REF master
)

file(REMOVE_RECURSE "${SOURCE_PATH}/isa-l")
file(COPY "${SPDK_ISAL_SOURCE_PATH}/" DESTINATION "${SOURCE_PATH}/isa-l")

VCPKG_FROM_GITHUB(
    OUT_SOURCE_PATH SPDK_ISAL_CRYPTO_SOURCE_PATH
    REPO intel/isa-l_crypto
    REF 9b7a2b842c9f4e54b8dc1c82899e5a5520c53301
    SHA512 9d8895e092604776ac1d6d961670e43a882a2fbdad9b75c8312157e12ed0cc2feb1a6a0525839d1a927a168a49cf04b0944692e327cd3c03bf1d9f99c924e342
    HEAD_REF master
)

file(REMOVE_RECURSE "${SOURCE_PATH}/isa-l-crypto")
file(COPY "${SPDK_ISAL_CRYPTO_SOURCE_PATH}/" DESTINATION "${SOURCE_PATH}/isa-l-crypto")

VCPKG_FROM_GITHUB(
    OUT_SOURCE_PATH SPDK_DPDK_SOURCE_PATH
    REPO spdk/dpdk
    REF 821c2fed1625304101d786ca13f976ed185f10ef
    SHA512 0c7dbd875462e2a00404bf5fdad32cc3f4d23ce29885a19613e73575e557bac5ceb0c8d2be70fe3340d59fc16f21e40398fba06c614eb6dc96b1b86d8f84a90f
    HEAD_REF master
)

file(REMOVE_RECURSE "${SOURCE_PATH}/dpdk")
file(COPY "${SPDK_DPDK_SOURCE_PATH}/" DESTINATION "${SOURCE_PATH}/dpdk")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category:port-bug The issue is with a library, which is something the port should already support
Projects
None yet
Development

No branches or pull requests

3 participants