From db5d87277da3371f08bde7aea4877f710f2acfe4 Mon Sep 17 00:00:00 2001 From: Jeff Olivier Date: Tue, 24 Mar 2026 11:24:57 -0600 Subject: [PATCH 1/8] DAOS-18222 build: Update to latest tag of fuse * Patch upstream libfuse directly * Update to v3.18.2 Features: dfuse Change-Id: I4cb7ef6ae9056c5183139f90c25350280d80183e Signed-off-by: Jeff Olivier --- site_scons/components/__init__.py | 6 ++-- utils/build.config | 4 +-- utils/docker/Dockerfile.el.8 | 3 +- utils/docker/Dockerfile.el.9 | 3 +- utils/docker/Dockerfile.leap.15 | 3 +- utils/docker/Dockerfile.ubuntu | 3 +- utils/rpms/fused.changelog | 12 ++++++++ utils/rpms/fused.sh | 3 +- utils/rpms/package_info.sh | 6 ++-- utils/scripts/fix_fused.sh | 51 +++++++++++++++++++++++++++++++ 10 files changed, 82 insertions(+), 12 deletions(-) create mode 100644 utils/rpms/fused.changelog create mode 100755 utils/scripts/fix_fused.sh diff --git a/site_scons/components/__init__.py b/site_scons/components/__init__.py index f6ab99d6245..1d1f9726cef 100644 --- a/site_scons/components/__init__.py +++ b/site_scons/components/__init__.py @@ -1,5 +1,5 @@ # Copyright 2016-2024 Intel Corporation -# Copyright 2025 Google LLC +# Copyright 2025-2026 Google LLC # Copyright 2025-2026 Hewlett Packard Enterprise Development LP # # Permission is hereby granted, free of charge, to any person obtaining a copy @@ -331,13 +331,15 @@ def define_components(reqs): libs=['abt'], headers=['abt.h']) + fix_fused = os.path.join(Dir('#').abspath, 'utils/scripts/fix_fused.sh') reqs.define('fused', libs=['fused'], defines=['FUSE_USE_VERSION=35'], retriever=GitRepoRetriever(), commands=[['meson', 'setup', '--prefix=$FUSED_PREFIX', '-Ddisable-mtab=True', '-Dudevrulesdir=$FUSED_PREFIX/udev', '-Dutils=False', '--default-library', 'static', '../fused'], ['meson', 'setup', '--reconfigure', '../fused'], - ['ninja', 'install']], + ['ninja', 'install'], + [fix_fused, '$FUSED_PREFIX']], pkgconfig='fused', headers=['fused/fuse.h'], required_progs=['libtoolize', 'ninja', 'meson'], diff --git a/utils/build.config b/utils/build.config index 76f5c0f6fcb..d950b42c396 100644 --- a/utils/build.config +++ b/utils/build.config @@ -3,7 +3,7 @@ component=daos [commit_versions] argobots=v1.2 -fused=v1.0.0 +fused=fuse-3.18.2 pmdk=2.1.3 isal=v2.31.1 isal_crypto=v2.25.0 @@ -15,7 +15,7 @@ ucx=v1.14.1 [repos] argobots=https://github.com/pmodels/argobots.git -fused=https://github.com/daos-stack/fused.git +fused=https://github.com/libfuse/libfuse.git pmdk=https://github.com/daos-stack/pmdk.git isal=https://github.com/intel/isa-l.git isal_crypto=https://github.com/intel/isa-l_crypto.git diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index bf80f3fc122..927d3889a70 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -1,5 +1,5 @@ # Copyright 2018-2024 Intel Corporation -# Copyright 2025 Google LLC +# Copyright 2025-2026 Google LLC # Copyright 2025 Hewlett Packard Enterprise Development LP # All rights reserved. # @@ -88,6 +88,7 @@ COPY --chown=daos_server:daos_server site_scons/components site_scons/components COPY --chown=daos_server:daos_server utils/build.config utils/ COPY --chown=daos_server:daos_server utils/scripts/copy_files.sh utils/scripts/copy_files.sh COPY --chown=daos_server:daos_server utils/scripts/create_spdk_pkgconfig.sh utils/scripts/create_spdk_pkgconfig.sh +COPY --chown=daos_server:daos_server utils/scripts/fix_fused.sh utils/scripts/fix_fused.sh # Control what to build. By default Dockerfiles build everything to allow for # ease-of-use for users, however in CI everything is turned off and then diff --git a/utils/docker/Dockerfile.el.9 b/utils/docker/Dockerfile.el.9 index 82c5287ff26..3cd9d7e9155 100644 --- a/utils/docker/Dockerfile.el.9 +++ b/utils/docker/Dockerfile.el.9 @@ -1,5 +1,5 @@ # Copyright 2022-2024 Intel Corporation -# Copyright 2025 Google LLC +# Copyright 2025-2026 Google LLC # Copyright 2025 Hewlett Packard Enterprise Development LP # All rights reserved. # @@ -84,6 +84,7 @@ COPY --chown=daos_server:daos_server site_scons/components site_scons/components COPY --chown=daos_server:daos_server utils/build.config utils/ COPY --chown=daos_server:daos_server utils/scripts/copy_files.sh utils/scripts/copy_files.sh COPY --chown=daos_server:daos_server utils/scripts/create_spdk_pkgconfig.sh utils/scripts/create_spdk_pkgconfig.sh +COPY --chown=daos_server:daos_server utils/scripts/fix_fused.sh utils/scripts/fix_fused.sh # Control what to build. By default Dockerfiles build everything to allow for # ease-of-use for users, however in CI everything is turned off and then diff --git a/utils/docker/Dockerfile.leap.15 b/utils/docker/Dockerfile.leap.15 index a946ee1bfba..9a7f7d94b77 100644 --- a/utils/docker/Dockerfile.leap.15 +++ b/utils/docker/Dockerfile.leap.15 @@ -1,5 +1,5 @@ # Copyright 2018-2024 Intel Corporation -# Copyright 2025 Google LLC +# Copyright 2025-2026 Google LLC # Copyright 2025-2026 Hewlett Packard Enterprise Development LP # All rights reserved. # @@ -89,6 +89,7 @@ COPY --chown=daos_server:daos_server site_scons/components site_scons/components COPY --chown=daos_server:daos_server utils/build.config utils/ COPY --chown=daos_server:daos_server utils/scripts/copy_files.sh utils/scripts/copy_files.sh COPY --chown=daos_server:daos_server utils/scripts/create_spdk_pkgconfig.sh utils/scripts/create_spdk_pkgconfig.sh +COPY --chown=daos_server:daos_server utils/scripts/fix_fused.sh utils/scripts/fix_fused.sh # Control what to build. By default Dockerfiles build everything to allow for # ease-of-use for users, however in CI everything is turned off and then diff --git a/utils/docker/Dockerfile.ubuntu b/utils/docker/Dockerfile.ubuntu index 589c3f3dd9d..626f38ac6b8 100644 --- a/utils/docker/Dockerfile.ubuntu +++ b/utils/docker/Dockerfile.ubuntu @@ -1,5 +1,5 @@ # Copyright 2018-2024 Intel Corporation -# Copyright 2025 Google LLC +# Copyright 2025-2026 Google LLC # Copyright 2025 Hewlett Packard Enterprise Development LP # All rights reserved. # @@ -82,6 +82,7 @@ COPY --chown=daos_server:daos_server site_scons/components site_scons/components COPY --chown=daos_server:daos_server utils/build.config utils/ COPY --chown=daos_server:daos_server utils/scripts/copy_files.sh utils/scripts/copy_files.sh COPY --chown=daos_server:daos_server utils/scripts/create_spdk_pkgconfig.sh utils/scripts/create_spdk_pkgconfig.sh +COPY --chown=daos_server:daos_server utils/scripts/fix_fused.sh utils/scripts/fix_fused.sh # Control what to build. By default Dockerfiles build everything to allow for # ease-of-use for users, however in CI everything is turned off and then diff --git a/utils/rpms/fused.changelog b/utils/rpms/fused.changelog new file mode 100644 index 00000000000..d8a56aacc14 --- /dev/null +++ b/utils/rpms/fused.changelog @@ -0,0 +1,12 @@ +* Mon Dec 1 2025 Jeff Olivier - 1.1.0-1.0 +- Update to fuse-3.17.4 +- Use upstream tag directly + +* Sun Jan 12 2025 Jeff Olivier - 1.0.0-3.0 +- Remove dependence on fused + +* Sat Jan 11 2025 Jeff Olivier - 1.0.0-2.0 +- Only build static lib + +* Mon Feb 12 2024 Jeff Olivier - 1.0.0-1.0 +- Initial packaging for fused, a DAOS file system adaptation of libfused diff --git a/utils/rpms/fused.sh b/utils/rpms/fused.sh index 2b818d727cc..c0a2f2f7fbe 100755 --- a/utils/rpms/fused.sh +++ b/utils/rpms/fused.sh @@ -1,5 +1,5 @@ #!/bin/bash -# (C) Copyright 2025 Google LLC +# Copyright 2025-2026 Google LLC set -eEuo pipefail root="$(realpath "$(dirname "${BASH_SOURCE[0]}")")" . "${root}/fpm_common.sh" @@ -15,6 +15,7 @@ LICENSE="BSD" ARCH=${isa} DESCRIPTION="DAOS version of libfuse" URL="https://github.com/daos-stack/fused.git" +RPM_CHANGELOG="fused.changelog" files=() TARGET_PATH="${includedir}/fused" diff --git a/utils/rpms/package_info.sh b/utils/rpms/package_info.sh index 5be9fb49ac8..b9a878413b4 100644 --- a/utils/rpms/package_info.sh +++ b/utils/rpms/package_info.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# (C) Copyright 2025 Google LLC +# Copyright 2025-2026 Google LLC # Copyright 2025-2026 Hewlett Packard Enterprise Development LP # # SPDX-License-Identifier: BSD-2-Clause-Patent @@ -62,8 +62,8 @@ export isal_crypto_full="${isal_crypto_version}-${isal_crypto_release}" export daos_spdk_version="2.0.0" export daos_spdk_release="1${distro_name}" export daos_spdk_full="${daos_spdk_version}-${daos_spdk_release}" -export fused_version="1.0.0" -export fused_release="3${distro_name}" +export fused_version="1.1.0" +export fused_release="1${distro_name}" export fused_full="${fused_version}-${fused_release}" set_lib_name openmpi lib openmpi openmpi3 openmpi diff --git a/utils/scripts/fix_fused.sh b/utils/scripts/fix_fused.sh new file mode 100755 index 00000000000..1f36a555560 --- /dev/null +++ b/utils/scripts/fix_fused.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +set -e + +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +prefix=$1 + +if [ ! -d "$prefix" ]; then + echo "Error: Directory '$prefix' not found." + exit 1 +fi + +# Move prefix/include/fuse3 to prefix/include/fused +if [ -d "$prefix/include/fuse3" ]; then + mv "$prefix/include/fuse3" "$prefix/include/fused" + echo "Moved $prefix/include/fuse3 to $prefix/include/fused" +else + echo "Error: $prefix/include/fuse3 not found." + exit 1 +fi + +# Find libfuse3.a and rename it to libfused.a +libfuse_path=$(find "$prefix" -name "libfuse3.a" | head -n 1) + +if [ -n "$libfuse_path" ]; then + libfused_path="$(dirname "$libfuse_path")/libfused.a" + mv "$libfuse_path" "$libfused_path" + echo "Renamed $libfuse_path to $libfused_path" + + # find pkgconfig/fuse3.pc in the same folder as libfuse3.a and rename it to fused.pc + pkgconfig_dir=$(dirname "$libfuse_path")/pkgconfig + if [ -f "$pkgconfig_dir/fuse3.pc" ]; then + mv "$pkgconfig_dir/fuse3.pc" "$pkgconfig_dir/fused.pc" + echo "Renamed $pkgconfig_dir/fuse3.pc to $pkgconfig_dir/fused.pc" + + # replace fuse3 with fused + sed -i 's/fuse3/fused/' "$pkgconfig_dir/fused.pc" + echo "Updated $pkgconfig_dir/fused.pc" + else + echo "Error: fuse3.pc not found in $pkgconfig_dir" + exit 1 + fi + exit 0 +fi + +echo "Error: libfuse3.a not found in $prefix." +exit 1 From 2c5edbb0a94932f9bd95456c9b81e886117da12c Mon Sep 17 00:00:00 2001 From: Jeff Olivier Date: Wed, 25 Mar 2026 09:21:09 -0600 Subject: [PATCH 2/8] Fuse needs c++20 support Change-Id: I6eb1b877f039713f07c08dfd1ae60c8d3e53e33e Signed-off-by: Jeff Olivier --- utils/scripts/install-el8.sh | 3 ++- utils/scripts/install-leap15.sh | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/utils/scripts/install-el8.sh b/utils/scripts/install-el8.sh index 670ef8f6eef..00e0b393cbd 100755 --- a/utils/scripts/install-el8.sh +++ b/utils/scripts/install-el8.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# (C) Copyright 2025 Google LLC +# Copyright 2025-2026 Google LLC # Install OS updates and packages as required for building DAOS on EL 8 and # derivatives. Include basic tools and daos dependencies that come from the core repos. @@ -34,6 +34,7 @@ dnf --nodocs install ${dnf_install_args} \ fuse3 \ gcc \ gcc-c++ \ + gcc-toolset-12 \ git \ glibc-langpack-en \ golang \ diff --git a/utils/scripts/install-leap15.sh b/utils/scripts/install-leap15.sh index 5029eb1000a..b71c4cfcb98 100755 --- a/utils/scripts/install-leap15.sh +++ b/utils/scripts/install-leap15.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# (C) Copyright 2025 Google LLC +# Copyright 2025-2026 Google LLC # Install OS updates and package. Include basic tools and daos dependencies # that come from the core repo. @@ -29,6 +29,7 @@ dnf --nodocs install ${dnf_install_args} \ fuse3 \ gcc \ gcc-c++ \ + gcc-toolset-12 \ git \ go \ go-race \ From 2644d28399a818f165cafdd8ef1694e683698b21 Mon Sep 17 00:00:00 2001 From: Jeff Olivier Date: Wed, 25 Mar 2026 13:25:34 -0600 Subject: [PATCH 3/8] Try again Change-Id: I19b8f553a4d6f36dd882f2e675955a9463d6b77b Signed-off-by: Jeff Olivier --- utils/scripts/install-el8.sh | 4 +++- utils/scripts/install-leap15.sh | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/utils/scripts/install-el8.sh b/utils/scripts/install-el8.sh index 00e0b393cbd..23ff5653f7e 100755 --- a/utils/scripts/install-el8.sh +++ b/utils/scripts/install-el8.sh @@ -34,7 +34,6 @@ dnf --nodocs install ${dnf_install_args} \ fuse3 \ gcc \ gcc-c++ \ - gcc-toolset-12 \ git \ glibc-langpack-en \ golang \ @@ -118,4 +117,7 @@ else dnf install ${dnf_install_args} maven fi +# if available, install to get c++20 support +dnf install -y gcc-toolset-12 || true + gem install fpm diff --git a/utils/scripts/install-leap15.sh b/utils/scripts/install-leap15.sh index b71c4cfcb98..65d8a74c9b5 100755 --- a/utils/scripts/install-leap15.sh +++ b/utils/scripts/install-leap15.sh @@ -28,8 +28,7 @@ dnf --nodocs install ${dnf_install_args} \ flex \ fuse3 \ gcc \ - gcc-c++ \ - gcc-toolset-12 \ + gcc11-c++ \ git \ go \ go-race \ @@ -79,6 +78,9 @@ dnf --nodocs install ${dnf_install_args} \ which \ yasm +update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 +update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 + # shellcheck disable=SC2086 dnf install ${dnf_install_args} ruby-devel gem install json -v 2.7.6 From 83060f64458a0b6ec8fab38c4c72859babccc1ef Mon Sep 17 00:00:00 2001 From: Jeff Olivier Date: Wed, 25 Mar 2026 13:28:04 -0600 Subject: [PATCH 4/8] Extra post merge commit Features: dfuse Change-Id: I3bd8b9602af600fd7a167080ec81e6b576a34a3b Signed-off-by: Jeff Olivier From 347575ebad7967b47e06d95c95e3ce9ec13eb4af Mon Sep 17 00:00:00 2001 From: Jeff Olivier Date: Wed, 25 Mar 2026 14:34:02 -0600 Subject: [PATCH 5/8] Try again Features: dfuse Change-Id: I42fcd98be388b91ca41ff1bad1f46273953e2e8d Signed-off-by: Jeff Olivier --- utils/scripts/install-leap15.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/scripts/install-leap15.sh b/utils/scripts/install-leap15.sh index 65d8a74c9b5..a20ba078490 100755 --- a/utils/scripts/install-leap15.sh +++ b/utils/scripts/install-leap15.sh @@ -78,8 +78,8 @@ dnf --nodocs install ${dnf_install_args} \ which \ yasm -update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 -update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 +update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 +update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 110 # shellcheck disable=SC2086 dnf install ${dnf_install_args} ruby-devel From c5c9b5c37d79d57d274cd9de5bb5387e74065427 Mon Sep 17 00:00:00 2001 From: Jeff Olivier Date: Thu, 26 Mar 2026 13:10:52 -0600 Subject: [PATCH 6/8] Fix the issue with leap Features: dfuse Change-Id: If2ce1c0bdb85caa85044dec9a9df56a27a142270 Signed-off-by: Jeff Olivier --- utils/scripts/install-leap15.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/utils/scripts/install-leap15.sh b/utils/scripts/install-leap15.sh index a20ba078490..fa4b2a06cf7 100755 --- a/utils/scripts/install-leap15.sh +++ b/utils/scripts/install-leap15.sh @@ -15,6 +15,12 @@ arch=$(uname -i) dnf_install_args="${1:-}" +dnf --nodocs install ${dnf_isntall_args} gcc11-c++ gcc + +update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 +update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 110 +update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-11 110 + # shellcheck disable=SC2086 dnf --nodocs install ${dnf_install_args} \ boost-devel \ @@ -27,8 +33,6 @@ dnf --nodocs install ${dnf_install_args} \ fdupes \ flex \ fuse3 \ - gcc \ - gcc11-c++ \ git \ go \ go-race \ @@ -78,9 +82,6 @@ dnf --nodocs install ${dnf_install_args} \ which \ yasm -update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 -update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 110 - # shellcheck disable=SC2086 dnf install ${dnf_install_args} ruby-devel gem install json -v 2.7.6 From b76478f72dd45703ab6e2c8c45dd8c26cd7ebcef Mon Sep 17 00:00:00 2001 From: Jeff Olivier Date: Thu, 26 Mar 2026 15:23:30 -0600 Subject: [PATCH 7/8] again fix leap15 Features: dfuse Change-Id: I1c8e94fa33d2927bbc2ae8d1e99193356c2eadab Signed-off-by: Jeff Olivier --- utils/scripts/install-leap15.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/utils/scripts/install-leap15.sh b/utils/scripts/install-leap15.sh index fa4b2a06cf7..100a0cda685 100755 --- a/utils/scripts/install-leap15.sh +++ b/utils/scripts/install-leap15.sh @@ -15,12 +15,6 @@ arch=$(uname -i) dnf_install_args="${1:-}" -dnf --nodocs install ${dnf_isntall_args} gcc11-c++ gcc - -update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 -update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 110 -update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-11 110 - # shellcheck disable=SC2086 dnf --nodocs install ${dnf_install_args} \ boost-devel \ @@ -33,6 +27,8 @@ dnf --nodocs install ${dnf_install_args} \ fdupes \ flex \ fuse3 \ + gcc \ + gcc11-c++ \ git \ go \ go-race \ @@ -82,6 +78,10 @@ dnf --nodocs install ${dnf_install_args} \ which \ yasm +update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 +update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 110 +update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-11 110 + # shellcheck disable=SC2086 dnf install ${dnf_install_args} ruby-devel gem install json -v 2.7.6 From 73d71b84e18161cfcd11473cb7536ea5e95f5341 Mon Sep 17 00:00:00 2001 From: Jeff Olivier Date: Fri, 27 Mar 2026 16:32:26 -0600 Subject: [PATCH 8/8] Use gcc 12 in docker Features: dfuse Change-Id: Ief7702e227e23784f544d5dcb1b8afd947f4dc4c Signed-off-by: Jeff Olivier --- utils/docker/Dockerfile.el.8 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/utils/docker/Dockerfile.el.8 b/utils/docker/Dockerfile.el.8 index 927d3889a70..c135f9b5927 100644 --- a/utils/docker/Dockerfile.el.8 +++ b/utils/docker/Dockerfile.el.8 @@ -110,6 +110,13 @@ USER daos_server:daos_server ARG DEPS_JOBS=1 +# Enable globally for all subsequent RUN commands +ENV PATH="/opt/rh/gcc-toolset-12/root/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="/opt/rh/gcc-toolset-12/root/usr/lib64:${LD_LIBRARY_PATH}" + +# Verify the GCC version (will show GCC 12.x) +RUN gcc --version + RUN [ "$DAOS_DEPS_BUILD" != "yes" ] || { \ scons --build-deps=only --jobs $DEPS_JOBS PREFIX=/opt/daos \ TARGET_TYPE=$DAOS_TARGET_TYPE && \