You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by sz...@apache.org on 2022/08/19 10:20:16 UTC
[nifi-minifi-cpp] 02/03: MINIFICPP-1888 Move all extension builds to CentOS job
This is an automated email from the ASF dual-hosted git repository.
szaszm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
commit a8a4278363bb9b5536f58688a8484732561b158b
Author: Gabor Gyimesi <ga...@gmail.com>
AuthorDate: Thu Aug 18 18:28:05 2022 +0200
MINIFICPP-1888 Move all extension builds to CentOS job
With more extensions added to be turned on by default, the centos build
targeting the default extensions takes longer to finish. To make sure we
can build on both ubuntu/gcc and CentOS and to minimize the CI resources
used, all extension builds that are available in the CentOS docker build
are moved to the CentOS job and tests are run on CentOS and in the clang
Ubuntu build.
Closes #1374
Signed-off-by: Marton Szasz <sz...@apache.org>
---
.github/workflows/ci.yml | 38 +++++++++++++++-----------
cmake/DockerConfig.cmake | 4 +++
cmake/MiNiFiOptions.cmake | 3 ++-
docker/DockerBuild.sh | 36 ++++++++++++++++++-------
docker/Dockerfile | 3 ++-
docker/centos/Dockerfile | 40 +++++++++++++++++++---------
extensions/sftp/tests/ListSFTPTests.cpp | 4 +--
libminifi/include/core/extension/Utils.h | 7 +++--
libminifi/test/unit/CollectionUtilsTests.cpp | 2 +-
9 files changed, 92 insertions(+), 45 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 188cb7eda..50ca97b76 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -4,7 +4,7 @@ jobs:
macos_xcode:
name: "macos-xcode"
runs-on: macos-11
- timeout-minutes: 90
+ timeout-minutes: 180
env:
CCACHE_BASEDIR: ${{ GITHUB.WORKSPACE }}
CCACHE_DIR: ${{ GITHUB.WORKSPACE }}/.ccache
@@ -107,7 +107,7 @@ jobs:
- id: install_deps
run: |
sudo apt update
- sudo apt install -y ccache libfl-dev libpcap-dev libboost-all-dev openjdk-8-jdk maven libusb-1.0-0-dev libpng-dev libgps-dev libsqliteodbc flake8 lua5.3 liblua5.3-dev
+ sudo apt install -y ccache libfl-dev libboost-all-dev libpcap-dev
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
echo -e "127.0.0.1\t$HOSTNAME" | sudo tee -a /etc/hosts > /dev/null
- name: build
@@ -116,19 +116,11 @@ jobs:
cd build
export CC=gcc-11
export CXX=g++-11
- cmake -DUSE_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCI_BUILD=ON -DSTRICT_GSL_CHECKS=AUDIT -DFAIL_ON_WARNINGS=ON -DENABLE_AWS=ON -DENABLE_AZURE=ON -DENABLE_BUSTACHE=ON -DENABLE_COAP=ON \
- -DENABLE_ENCRYPT_CONFIG=ON -DENABLE_GPS=ON -DENABLE_JNI=ON -DENABLE_LIBRDKAFKA=ON -DENABLE_LINTER=ON -DENABLE_MQTT=ON -DENABLE_NANOFI=ON -DENABLE_OPC=ON -DENABLE_OPENCV=ON \
- -DENABLE_OPENWSMAN=ON -DENABLE_OPS=ON -DENABLE_PCAP=ON -DENABLE_PYTHON=ON -DENABLE_SENSORS=ON -DENABLE_SFTP=ON -DENABLE_SQL=ON -DENABLE_SYSTEMD=ON -DENABLE_TENSORFLOW=OFF \
- -DENABLE_USB_CAMERA=ON -DENABLE_SCRIPTING=ON -DENABLE_LUA_SCRIPTING=ON -DENABLE_KUBERNETES=ON -DENABLE_GCP=ON -DENABLE_PROCFS=ON -DENABLE_PROMETHEUS=ON -DENABLE_ELASTICSEARCH=ON ..
+ cmake -DUSE_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DCI_BUILD=ON -DSTRICT_GSL_CHECKS=AUDIT -DFAIL_ON_WARNINGS=ON -DENABLE_SQL=OFF -DENABLE_LIBRDKAFKA=OFF -DENABLE_AWS=OFF \
+ -DENABLE_AZURE=OFF -DENABLE_SPLUNK=OFF -DENABLE_GCP=OFF -DENABLE_PROCFS=OFF -DENABLE_BUSTACHE=ON -DENABLE_PCAP=ON ..
make -j$(nproc) VERBOSE=1
- name: test
run: cd build && make test ARGS="--timeout 300 -j2 --output-on-failure"
- - name: linter
- run: cd build && make -j$(nproc) linter
- - name: shellcheck
- run: cd build && make shellcheck
- - id: flake8_check
- run: cd build && make flake8
ubuntu_20_04_clang:
name: "ubuntu-20.04-clang"
runs-on: ubuntu-20.04
@@ -152,7 +144,7 @@ jobs:
echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main" | sudo tee -a /etc/apt/sources.list
echo "deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main" | sudo tee -a /etc/apt/sources.list
sudo apt update
- sudo apt install -y ccache libfl-dev libpcap-dev libboost-all-dev openjdk-8-jdk maven libusb-1.0-0-dev libpng-dev libgps-dev clang-14 clang-tidy-14 libc++-14-dev libc++abi-14-dev libsqliteodbc lua5.3 liblua5.3-dev
+ sudo apt install -y ccache libfl-dev libpcap-dev libboost-all-dev openjdk-8-jdk maven libusb-1.0-0-dev libpng-dev libgps-dev clang-14 clang-tidy-14 libc++-14-dev libc++abi-14-dev libsqliteodbc lua5.3 liblua5.3-dev flake8
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
echo -e "127.0.0.1\t$HOSTNAME" | sudo tee -a /etc/hosts > /dev/null
- name: build
@@ -171,6 +163,12 @@ jobs:
cmake --build . --parallel $(nproc)
- name: test
run: cd build && make test ARGS="--timeout 300 -j8 --output-on-failure"
+ - name: linter
+ run: cd build && make -j$(nproc) linter
+ - name: shellcheck
+ run: cd build && make shellcheck
+ - id: flake8_check
+ run: cd build && make flake8
- id: files
uses: Ana06/get-changed-files@v2.1.0
- name: clang-tidy
@@ -183,7 +181,7 @@ jobs:
centos:
name: "centos"
runs-on: ubuntu-20.04
- timeout-minutes: 60
+ timeout-minutes: 180
steps:
- id: checkout
uses: actions/checkout@v2
@@ -201,11 +199,19 @@ jobs:
sudo apt install -y ccache
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
- id: build
- run: mkdir build && cd build && cmake -DSTRICT_GSL_CHECKS=AUDIT -DENABLE_KUBERNETES=ON .. && make centos
+ run: |
+ if [ -d ~/.ccache ]; then mv ~/.ccache .; fi
+ mkdir build && cd build && cmake -DUSE_SHARED_LIBS=ON -DCI_BUILD=ON -DSTRICT_GSL_CHECKS=AUDIT -DFAIL_ON_WARNINGS=ON -DENABLE_AWS=ON -DENABLE_AZURE=ON -DENABLE_COAP=ON \
+ -DENABLE_ENCRYPT_CONFIG=ON -DENABLE_GPS=ON -DENABLE_JNI=ON -DENABLE_LIBRDKAFKA=ON -DENABLE_LINTER=ON -DENABLE_MQTT=ON -DENABLE_NANOFI=ON -DENABLE_OPC=ON -DENABLE_OPENCV=ON \
+ -DENABLE_OPENWSMAN=ON -DENABLE_OPS=ON -DENABLE_PYTHON=ON -DENABLE_SENSORS=ON -DENABLE_SFTP=ON -DENABLE_SQL=ON -DENABLE_SYSTEMD=ON -DENABLE_TENSORFLOW=OFF \
+ -DENABLE_USB_CAMERA=ON -DENABLE_SCRIPTING=ON -DENABLE_LUA_SCRIPTING=ON -DENABLE_KUBERNETES=ON -DENABLE_GCP=ON -DENABLE_PROCFS=ON -DENABLE_PROMETHEUS=ON -DENABLE_ELASTICSEARCH=ON \
+ -DDOCKER_SKIP_TESTS=OFF -DDOCKER_BUILD_ONLY=ON -DDOCKER_CCACHE_DUMP_LOCATION=$HOME/.ccache .. && make centos
+ - id: test
+ run: docker run --rm apacheminificpp:$(docker images | grep apacheminificpp | grep centos | awk '{print $2}') bash -c 'cd /opt/minifi/build && make test ARGS="--timeout 300 -j8 --output-on-failure"'
docker_integration_tests:
name: "Docker integration tests"
runs-on: ubuntu-20.04
- timeout-minutes: 120
+ timeout-minutes: 180
steps:
- id: checkout
uses: actions/checkout@v2
diff --git a/cmake/DockerConfig.cmake b/cmake/DockerConfig.cmake
index b6c21d85c..04b9bb92d 100644
--- a/cmake/DockerConfig.cmake
+++ b/cmake/DockerConfig.cmake
@@ -25,6 +25,7 @@ add_custom_target(
-o ${MINIFI_DOCKER_OPTIONS_STR}
-c DOCKER_BASE_IMAGE=${DOCKER_BASE_IMAGE}
-c DOCKER_CCACHE_DUMP_LOCATION=${DOCKER_CCACHE_DUMP_LOCATION}
+ -c DOCKER_SKIP_TESTS=${DOCKER_SKIP_TESTS}
-c BUILD_NUMBER=${BUILD_NUMBER}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/docker/)
@@ -45,6 +46,7 @@ add_custom_target(
-DDISABLE_PYTHON_SCRIPTING=ON
-DENABLE_ENCRYPT_CONFIG=OFF \"
-c DOCKER_BASE_IMAGE=${DOCKER_BASE_IMAGE}
+ -c DOCKER_SKIP_TESTS=${DOCKER_SKIP_TESTS}
-c BUILD_NUMBER=${BUILD_NUMBER}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/docker/)
@@ -58,6 +60,8 @@ add_custom_target(
-l ${CMAKE_BINARY_DIR}
-d centos
-c BUILD_NUMBER=${BUILD_NUMBER}
+ -c DOCKER_CCACHE_DUMP_LOCATION=${DOCKER_CCACHE_DUMP_LOCATION}
+ -c DOCKER_SKIP_TESTS=${DOCKER_SKIP_TESTS}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/docker/)
add_custom_target(
diff --git a/cmake/MiNiFiOptions.cmake b/cmake/MiNiFiOptions.cmake
index 9ef856893..a4429e499 100644
--- a/cmake/MiNiFiOptions.cmake
+++ b/cmake/MiNiFiOptions.cmake
@@ -32,6 +32,7 @@ add_minifi_option(CI_BUILD "Build is used for CI." OFF)
add_minifi_option(ENABLE_LINTER "Create linter components" ON)
add_minifi_option(SKIP_TESTS "Skips building all tests." OFF)
add_minifi_option(DOCKER_BUILD_ONLY "Disables all targets except docker build scripts. Ideal for systems without an up-to-date compiler." OFF)
+add_minifi_option(DOCKER_SKIP_TESTS "Skip building tests in docker image targets." ON)
add_minifi_option(PORTABLE "Instructs the compiler to remove architecture specific optimizations" ON)
add_minifi_option(USE_SHARED_LIBS "Builds using shared libraries" ON)
@@ -127,7 +128,7 @@ endif()
function(get_minifi_docker_options RET_VALUE)
set(MINIFI_DOCKER_OPTIONS_STR ${MINIFI_EXTERNAL_DOCKER_OPTIONS_STR})
foreach(MINIFI_OPTION ${MINIFI_OPTIONS})
- if (MINIFI_OPTION STREQUAL "CI_BUILD" OR MINIFI_OPTION STREQUAL "ENABLE_LINTER" OR MINIFI_OPTION STREQUAL "SKIP_TESTS" OR MINIFI_OPTION STREQUAL "DOCKER_BUILD_ONLY")
+ if (MINIFI_OPTION STREQUAL "CI_BUILD" OR MINIFI_OPTION STREQUAL "ENABLE_LINTER" OR MINIFI_OPTION STREQUAL "SKIP_TESTS" OR MINIFI_OPTION STREQUAL "DOCKER_BUILD_ONLY" OR MINIFI_OPTION STREQUAL "DOCKER_SKIP_TESTS")
continue()
endif()
set(MINIFI_DOCKER_OPTIONS_STR "${MINIFI_DOCKER_OPTIONS_STR} -D${MINIFI_OPTION}=${${MINIFI_OPTION}}")
diff --git a/docker/DockerBuild.sh b/docker/DockerBuild.sh
index 82b093917..3f6ed54b3 100755
--- a/docker/DockerBuild.sh
+++ b/docker/DockerBuild.sh
@@ -29,6 +29,7 @@ DUMP_LOCATION=
DISTRO_NAME=
BUILD_NUMBER=
DOCKER_CCACHE_DUMP_LOCATION=
+DOCKER_SKIP_TESTS=ON
function usage {
echo "Usage: ./DockerBuild.sh -v <MINIFI_VERSION> [additional options]"
@@ -45,6 +46,15 @@ function usage {
exit 1
}
+function dump_ccache() {
+ ccache_source_image=$1
+ docker_ccache_dump_location=$2
+ container_id=$(docker run --rm -d "${ccache_source_image}" sh -c "while true; do sleep 1; done")
+ mkdir -p "${docker_ccache_dump_location}"
+ docker cp "${container_id}:/home/minificpp/.ccache/." "${docker_ccache_dump_location}"
+ docker rm -f "${container_id}"
+}
+
BUILD_ARGS=()
while [[ $# -gt 0 ]]; do
key="$1"
@@ -88,6 +98,8 @@ while [[ $# -gt 0 ]]; do
BUILD_ARGS+=("--build-arg" "BASE_ALPINE_IMAGE=${ARR[1]}")
elif [ "${ARR[0]}" == "DOCKER_CCACHE_DUMP_LOCATION" ]; then
DOCKER_CCACHE_DUMP_LOCATION="${ARR[1]}"
+ elif [ "${ARR[0]}" == "DOCKER_SKIP_TESTS" ]; then
+ DOCKER_SKIP_TESTS="${ARR[1]}"
else
BUILD_ARGS+=("--build-arg" "${ARR[0]}=${ARR[1]}")
fi
@@ -146,19 +158,25 @@ BUILD_ARGS+=("--build-arg" "UID=${UID_ARG}"
"--build-arg" "GID=${GID_ARG}"
"--build-arg" "MINIFI_VERSION=${MINIFI_VERSION}"
"--build-arg" "DUMP_LOCATION=${DUMP_LOCATION}"
- "--build-arg" "DISTRO_NAME=${DISTRO_NAME}")
+ "--build-arg" "DISTRO_NAME=${DISTRO_NAME}"
+ "--build-arg" "DOCKER_SKIP_TESTS=${DOCKER_SKIP_TESTS}")
-if [ -n "${DOCKER_CCACHE_DUMP_LOCATION}" ]; then
- DOCKER_BUILDKIT=1 docker build "${BUILD_ARGS[@]}" -f ${DOCKERFILE} --target build -t minifi_build ..
+if [ -n "${DISTRO_NAME}" ]; then
+ echo DOCKER_BUILDKIT=0 docker build "${BUILD_ARGS[@]}" -f "${DOCKERFILE}" -t apacheminificpp:"${TAG}" ..
+ DOCKER_BUILDKIT=0 docker build "${BUILD_ARGS[@]}" -f "${DOCKERFILE}" -t apacheminificpp:"${TAG}" ..
- container_id=$(docker run --rm -d minifi_build sh -c "while true; do sleep 1; done")
- mkdir -p "${DOCKER_CCACHE_DUMP_LOCATION}"
- docker cp "${container_id}:/home/minificpp/.ccache/." "${DOCKER_CCACHE_DUMP_LOCATION}"
- docker rm -f "${container_id}"
+ if [ -n "${DOCKER_CCACHE_DUMP_LOCATION}" ]; then
+ dump_ccache "apacheminificpp:${TAG}" "${DOCKER_CCACHE_DUMP_LOCATION}"
+ fi
+else
+ if [ -n "${DOCKER_CCACHE_DUMP_LOCATION}" ]; then
+ DOCKER_BUILDKIT=1 docker build "${BUILD_ARGS[@]}" -f "${DOCKERFILE}" --target build -t minifi_build ..
+ dump_ccache "minifi_build" "${DOCKER_CCACHE_DUMP_LOCATION}"
+ fi
+ echo DOCKER_BUILDKIT=1 docker build "${BUILD_ARGS[@]}" -f "${DOCKERFILE}" -t apacheminificpp:"${TAG}" ..
+ DOCKER_BUILDKIT=1 docker build "${BUILD_ARGS[@]}" -f "${DOCKERFILE}" -t apacheminificpp:"${TAG}" ..
fi
-DOCKER_BUILDKIT=0 docker build "${BUILD_ARGS[@]}" -f ${DOCKERFILE} -t apacheminificpp:"${TAG}" ..
-
if [ -n "${DUMP_LOCATION}" ]; then
docker run --rm --entrypoint cat "apacheminificpp:${TAG}" "/opt/minifi/build/nifi-minifi-cpp-${MINIFI_VERSION}.tar.gz" >"${DUMP_LOCATION}/nifi-minifi-cpp-${MINIFI_VERSION}-${TARGZ_TAG}.tar.gz"
fi
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 305e6ef9b..1eb88f757 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -30,6 +30,7 @@ ARG GID=1000
# use it to define cmake options (e.g. -DENABLE_AWS=ON -DENABLE_AZURE=ON)
ARG MINIFI_OPTIONS=""
ARG CMAKE_BUILD_TYPE=Release
+ARG DOCKER_SKIP_TESTS=ON
# Install the system dependencies needed for a build
RUN apk --no-cache add gcc \
@@ -77,7 +78,7 @@ USER ${USER}
ENV PATH /usr/lib/ccache/bin:${PATH}
RUN mkdir ${MINIFI_BASE_DIR}/build
WORKDIR ${MINIFI_BASE_DIR}/build
-RUN cmake -DSTATIC_BUILD= -DSKIP_TESTS=true ${MINIFI_OPTIONS} -DAWS_ENABLE_UNITY_BUILD=OFF -DEXCLUDE_BOOST=ON -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" .. && \
+RUN cmake -DSTATIC_BUILD= -DSKIP_TESTS=${DOCKER_SKIP_TESTS} ${MINIFI_OPTIONS} -DAWS_ENABLE_UNITY_BUILD=OFF -DEXCLUDE_BOOST=ON -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" .. && \
make -j "$(nproc)" package && \
tar -xzvf "${MINIFI_BASE_DIR}/build/nifi-minifi-cpp-${MINIFI_VERSION}.tar.gz" -C "${MINIFI_BASE_DIR}"
diff --git a/docker/centos/Dockerfile b/docker/centos/Dockerfile
index 285b567e6..830857323 100644
--- a/docker/centos/Dockerfile
+++ b/docker/centos/Dockerfile
@@ -17,33 +17,47 @@
#
# First stage: the build environment
-FROM centos:7 AS build_deps
+FROM centos:7
LABEL maintainer="Apache NiFi <de...@nifi.apache.org>"
ARG MINIFI_VERSION
+ARG UID=1000
+ARG GID=1000
+
+# MINIFI_OPTIONS will be passed directly to cmake
+# use it to define cmake options (e.g. -DENABLE_AWS=ON -DENABLE_AZURE=ON)
+ARG MINIFI_OPTIONS=""
+ARG CMAKE_BUILD_TYPE=Release
+ARG DOCKER_SKIP_TESTS=ON
# Install the system dependencies needed for a build
ENV MINIFI_BASE_DIR /opt/minifi
ENV MINIFI_HOME $MINIFI_BASE_DIR/nifi-minifi-cpp-$MINIFI_VERSION
+ENV USER minificpp
# gpsd-devel is in EPEL
RUN yum -y install epel-release && yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel python36-devel sudo git which maven make libarchive boost-devel lua-devel libusbx-devel libpng-devel \
- gpsd-devel libpcap-devel
+ gpsd-devel libpcap-devel ccache
RUN mkdir -p $MINIFI_BASE_DIR
COPY . ${MINIFI_BASE_DIR}
-FROM build_deps AS release
+RUN cd $MINIFI_BASE_DIR && \
+ ./bootstrap.sh -t && \
+ ln -s /usr/bin/ccache /usr/lib64/ccache/c++
-# MINIFI_OPTIONS will be passed directly to cmake
-# use it to define cmake options (e.g. -DENABLE_AWS=ON -DENABLE_AZURE=ON)
-ARG MINIFI_OPTIONS=""
-ARG CMAKE_BUILD_TYPE=Release
-# Perform the build
-RUN cd $MINIFI_BASE_DIR \
- && ./bootstrap.sh -t \
- && cd build \
- && scl enable devtoolset-10 -- cmake3 -DSTATIC_BUILD= -DSKIP_TESTS=true ${MINIFI_OPTIONS} -DAWS_ENABLE_UNITY_BUILD=OFF -DEXCLUDE_BOOST=ON -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" .. \
- && scl enable devtoolset-10 -- make -j "$(nproc)" package
+# Setup minificpp user
+RUN groupadd -g ${GID} ${USER} && useradd -g ${GID} ${USER} && \
+ chown -R ${USER}:${USER} ${MINIFI_BASE_DIR} && \
+ if [ -d "${MINIFI_BASE_DIR}/.ccache" ]; then mv ${MINIFI_BASE_DIR}/.ccache /home/${USER}/.ccache; fi
+
+USER ${USER}
+# Perform the build
+RUN cd $MINIFI_BASE_DIR && \
+ cd build && \
+ source /opt/rh/devtoolset-10/enable && \
+ export PATH=/usr/lib64/ccache${PATH:+:${PATH}} && \
+ cmake3 -DSTATIC_BUILD= -DSKIP_TESTS=${DOCKER_SKIP_TESTS} ${MINIFI_OPTIONS} -DAWS_ENABLE_UNITY_BUILD=OFF -DEXCLUDE_BOOST=ON -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" .. && \
+ make -j "$(nproc)" package
diff --git a/extensions/sftp/tests/ListSFTPTests.cpp b/extensions/sftp/tests/ListSFTPTests.cpp
index 5baa407cf..f98a51d40 100644
--- a/extensions/sftp/tests/ListSFTPTests.cpp
+++ b/extensions/sftp/tests/ListSFTPTests.cpp
@@ -235,8 +235,8 @@ TEST_CASE_METHOD(ListSFTPTestsFixture, "ListSFTP list one file writes attributes
auto file = src_dir + "/vfs/nifi_test/tstFile.ext";
auto mtime_str = utils::timeutils::getDateTimeStr(std::chrono::time_point_cast<std::chrono::seconds>(utils::file::to_sys(utils::file::last_write_time(file).value())));
- uint64_t uid;
- uint64_t gid;
+ uint64_t uid = 0;
+ uint64_t gid = 0;
REQUIRE(true == utils::file::FileUtils::get_uid_gid(file, uid, gid));
uint32_t permissions;
REQUIRE(true == utils::file::FileUtils::get_permissions(file, permissions));
diff --git a/libminifi/include/core/extension/Utils.h b/libminifi/include/core/extension/Utils.h
index 693844ec3..53d915538 100644
--- a/libminifi/include/core/extension/Utils.h
+++ b/libminifi/include/core/extension/Utils.h
@@ -29,6 +29,7 @@
#include "utils/gsl.h"
#include "utils/StringUtils.h"
#include "utils/file/FileUtils.h"
+#include "utils/file/PathUtils.h"
namespace org::apache::nifi::minifi::core::extension::internal {
@@ -84,13 +85,15 @@ std::optional<LibraryDescriptor> asDynamicLibrary(const std::filesystem::path& p
#else
static const std::string_view prefix = "lib";
#endif
- const std::string filename = path.filename().string();
+ std::string filepath;
+ std::string filename;
+ utils::file::getFileNameAndPath(path.string(), filepath, filename);
if (!utils::StringUtils::startsWith(filename, prefix) || !utils::StringUtils::endsWith(filename, extension)) {
return {};
}
return LibraryDescriptor{
filename.substr(prefix.length(), filename.length() - extension.length() - prefix.length()),
- path.parent_path(),
+ filepath,
filename
};
}
diff --git a/libminifi/test/unit/CollectionUtilsTests.cpp b/libminifi/test/unit/CollectionUtilsTests.cpp
index 870f06209..cf487cf60 100644
--- a/libminifi/test/unit/CollectionUtilsTests.cpp
+++ b/libminifi/test/unit/CollectionUtilsTests.cpp
@@ -46,7 +46,7 @@ TEST_CASE("TestHaveCommonItem", "[haveCommonItem]") {
template<typename T>
struct MockSet : std::set<T> {
using std::set<T>::set;
- [[nodiscard]] auto find(const T& item) const -> decltype(this->std::set<T>::find(item)) {
+ auto find(const T& item) const -> decltype(this->std::set<T>::find(item)) { // NOLINT(modernize-use-nodiscard)
on_find_();
return std::set<T>::find(item);
}