Loading .dockerignore +18 −4 Original line number Diff line number Diff line .git .gitignore build /archive_old_fs_versions build/ .git/ .vscode/ .idea/ cmake-build-*/ *.o *.a *.so GKFS_DATA/ GKFS_METADATA/ builds/ .gitlab-ci-local/ install/ gkfs ci_output.txt log/ logs/ .cache/ CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Dirents buffer size control (`LIBGKFS_DIRENTS_BUFF_SIZE`). - New sfind filtering in the server side - Added new tests (and enabling failing ones) to increase coverage - Added docker image (release) for 0.9.6 ([!279](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/279)) ### Changed Loading CMakeLists.txt +13 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,19 @@ endif () if (GKFS_ENABLE_ROCKSDB) message(STATUS "[${PROJECT_NAME}] Checking for RocksDB") add_compile_definitions(GKFS_ENABLE_ROCKSDB) # If liburing is available in the system, RocksDB will have been built # with liburing support. If so, its native CMake configuration will # expect a uring::uring target. # Since liburing exports a pkg-config .pc file, we can use it # to retrieve its details and create the target if it's missing. find_package(PkgConfig REQUIRED) pkg_check_modules(liburing IMPORTED_TARGET liburing) if (liburing_FOUND AND NOT TARGET uring::uring) add_library(uring::uring INTERFACE IMPORTED) target_link_libraries(uring::uring INTERFACE PkgConfig::liburing) endif () find_package(RocksDB REQUIRED) message(STATUS "[${PROJECT_NAME}] RocksDB version ${RocksDB_VERSION}") message(STATUS "[${PROJECT_NAME}] RocksDB location ${RocksDB_DIR}") Loading docker/0.9.6/release/Dockerfile 0 → 100644 +108 −0 Original line number Diff line number Diff line # syntax=docker/dockerfile:1 # Builder stage FROM debian:bookworm-slim AS builder # Install build dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ cmake \ git \ curl \ ca-certificates \ libtool \ autoconf \ automake \ pkg-config \ bison \ flex \ libzstd-dev \ liblz4-dev \ libcap-dev \ libzmq3-dev \ liburing-dev \ libssl-dev \ libcurl4-openssl-dev \ libffi-dev \ zlib1g-dev \ python3 \ perl \ patch \ && rm -rf /var/lib/apt/lists/* # Set up environment variables for the build ENV GKFS_PATH=/usr/local/gekkofs ENV GKFS_DEPS_PATH=/usr/local/gekkofs_deps ENV GKFS_SRC=/usr/src/gekkofs ENV LD_LIBRARY_PATH=${GKFS_DEPS_PATH}/lib:${GKFS_DEPS_PATH}/lib64:${LD_LIBRARY_PATH:-} ENV LIBRARY_PATH=${GKFS_DEPS_PATH}/lib:${GKFS_DEPS_PATH}/lib64:${LIBRARY_PATH:-} # Create directories RUN mkdir -p ${GKFS_DEPS_PATH} ${GKFS_SRC} # Copy scripts and source COPY scripts ${GKFS_SRC}/scripts # Build dependencies # We use the default profile but might need to adjust if specific versions are required. # Assuming compile_dep.sh handles downloading/building dependencies. WORKDIR ${GKFS_SRC} RUN scripts/dl_dep.sh \ -P ${GKFS_SRC}/scripts/profiles \ -p docker:latest \ /usr/src/gekkofs_deps_src RUN scripts/compile_dep.sh \ -P ${GKFS_SRC}/scripts/profiles \ -p docker:latest \ -j $(nproc) \ /usr/src/gekkofs_deps_src \ ${GKFS_DEPS_PATH} # Copy rest of source (invalidates cache for GekkoFS build only) COPY . ${GKFS_SRC} # Build GekkoFS WORKDIR ${GKFS_SRC}/build RUN cmake \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=${GKFS_DEPS_PATH} \ -DCMAKE_INSTALL_PREFIX=${GKFS_PATH} \ -DGKFS_RENAME_SUPPORT=ON \ -DGKFS_SYMLINK_SUPPORT=ON \ -DGKFS_ENABLE_ROCKSDB=ON \ -DGKFS_ENABLE_PROMETHEUS=ON \ -DGKFS_ENABLE_CLIENT_METRICS=ON \ -DGKFS_BUILD_TESTS=OFF \ -DGKFS_INSTALL_TESTS=OFF \ -DGKFS_BUILD_EXAMPLES=OFF \ .. && \ make -j$(nproc) && \ make install # Runtime stage FROM debian:bookworm-slim # Install runtime dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ libstdc++6 \ libgcc-s1 \ libcurl4 \ liblz4-1 \ libzstd1 \ libcap2 \ libzmq5 \ liburing2 \ && rm -rf /var/lib/apt/lists/* # Copy GekkoFS artifacts COPY --from=builder /usr/local/gekkofs /usr/local/gekkofs COPY --from=builder /usr/local/gekkofs_deps/lib /usr/local/gekkofs_deps/lib # Set up environment variables ENV LD_LIBRARY_PATH=/usr/local/gekkofs/lib:/usr/local/gekkofs_deps/lib:/usr/local/lib ENV PATH=/usr/local/gekkofs/bin:${PATH} # Default command CMD ["gkfs_daemon", "--help"] docker/0.9.6/release/Makefile 0 → 100644 +10 −0 Original line number Diff line number Diff line .PHONY: all amd64: docker build --platform amd64 -t gekkofs/release:0.9.6 -f Dockerfile ../../.. aarch64: docker build --platform aarch64 -t gekkofs/release:0.9.6 -f Dockerfile ../../.. all: docker build -t gekkofs/release:0.9.6 -f Dockerfile ../../.. Loading
.dockerignore +18 −4 Original line number Diff line number Diff line .git .gitignore build /archive_old_fs_versions build/ .git/ .vscode/ .idea/ cmake-build-*/ *.o *.a *.so GKFS_DATA/ GKFS_METADATA/ builds/ .gitlab-ci-local/ install/ gkfs ci_output.txt log/ logs/ .cache/
CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Dirents buffer size control (`LIBGKFS_DIRENTS_BUFF_SIZE`). - New sfind filtering in the server side - Added new tests (and enabling failing ones) to increase coverage - Added docker image (release) for 0.9.6 ([!279](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/279)) ### Changed Loading
CMakeLists.txt +13 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,19 @@ endif () if (GKFS_ENABLE_ROCKSDB) message(STATUS "[${PROJECT_NAME}] Checking for RocksDB") add_compile_definitions(GKFS_ENABLE_ROCKSDB) # If liburing is available in the system, RocksDB will have been built # with liburing support. If so, its native CMake configuration will # expect a uring::uring target. # Since liburing exports a pkg-config .pc file, we can use it # to retrieve its details and create the target if it's missing. find_package(PkgConfig REQUIRED) pkg_check_modules(liburing IMPORTED_TARGET liburing) if (liburing_FOUND AND NOT TARGET uring::uring) add_library(uring::uring INTERFACE IMPORTED) target_link_libraries(uring::uring INTERFACE PkgConfig::liburing) endif () find_package(RocksDB REQUIRED) message(STATUS "[${PROJECT_NAME}] RocksDB version ${RocksDB_VERSION}") message(STATUS "[${PROJECT_NAME}] RocksDB location ${RocksDB_DIR}") Loading
docker/0.9.6/release/Dockerfile 0 → 100644 +108 −0 Original line number Diff line number Diff line # syntax=docker/dockerfile:1 # Builder stage FROM debian:bookworm-slim AS builder # Install build dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ cmake \ git \ curl \ ca-certificates \ libtool \ autoconf \ automake \ pkg-config \ bison \ flex \ libzstd-dev \ liblz4-dev \ libcap-dev \ libzmq3-dev \ liburing-dev \ libssl-dev \ libcurl4-openssl-dev \ libffi-dev \ zlib1g-dev \ python3 \ perl \ patch \ && rm -rf /var/lib/apt/lists/* # Set up environment variables for the build ENV GKFS_PATH=/usr/local/gekkofs ENV GKFS_DEPS_PATH=/usr/local/gekkofs_deps ENV GKFS_SRC=/usr/src/gekkofs ENV LD_LIBRARY_PATH=${GKFS_DEPS_PATH}/lib:${GKFS_DEPS_PATH}/lib64:${LD_LIBRARY_PATH:-} ENV LIBRARY_PATH=${GKFS_DEPS_PATH}/lib:${GKFS_DEPS_PATH}/lib64:${LIBRARY_PATH:-} # Create directories RUN mkdir -p ${GKFS_DEPS_PATH} ${GKFS_SRC} # Copy scripts and source COPY scripts ${GKFS_SRC}/scripts # Build dependencies # We use the default profile but might need to adjust if specific versions are required. # Assuming compile_dep.sh handles downloading/building dependencies. WORKDIR ${GKFS_SRC} RUN scripts/dl_dep.sh \ -P ${GKFS_SRC}/scripts/profiles \ -p docker:latest \ /usr/src/gekkofs_deps_src RUN scripts/compile_dep.sh \ -P ${GKFS_SRC}/scripts/profiles \ -p docker:latest \ -j $(nproc) \ /usr/src/gekkofs_deps_src \ ${GKFS_DEPS_PATH} # Copy rest of source (invalidates cache for GekkoFS build only) COPY . ${GKFS_SRC} # Build GekkoFS WORKDIR ${GKFS_SRC}/build RUN cmake \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=${GKFS_DEPS_PATH} \ -DCMAKE_INSTALL_PREFIX=${GKFS_PATH} \ -DGKFS_RENAME_SUPPORT=ON \ -DGKFS_SYMLINK_SUPPORT=ON \ -DGKFS_ENABLE_ROCKSDB=ON \ -DGKFS_ENABLE_PROMETHEUS=ON \ -DGKFS_ENABLE_CLIENT_METRICS=ON \ -DGKFS_BUILD_TESTS=OFF \ -DGKFS_INSTALL_TESTS=OFF \ -DGKFS_BUILD_EXAMPLES=OFF \ .. && \ make -j$(nproc) && \ make install # Runtime stage FROM debian:bookworm-slim # Install runtime dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ libstdc++6 \ libgcc-s1 \ libcurl4 \ liblz4-1 \ libzstd1 \ libcap2 \ libzmq5 \ liburing2 \ && rm -rf /var/lib/apt/lists/* # Copy GekkoFS artifacts COPY --from=builder /usr/local/gekkofs /usr/local/gekkofs COPY --from=builder /usr/local/gekkofs_deps/lib /usr/local/gekkofs_deps/lib # Set up environment variables ENV LD_LIBRARY_PATH=/usr/local/gekkofs/lib:/usr/local/gekkofs_deps/lib:/usr/local/lib ENV PATH=/usr/local/gekkofs/bin:${PATH} # Default command CMD ["gkfs_daemon", "--help"]
docker/0.9.6/release/Makefile 0 → 100644 +10 −0 Original line number Diff line number Diff line .PHONY: all amd64: docker build --platform amd64 -t gekkofs/release:0.9.6 -f Dockerfile ../../.. aarch64: docker build --platform aarch64 -t gekkofs/release:0.9.6 -f Dockerfile ../../.. all: docker build -t gekkofs/release:0.9.6 -f Dockerfile ../../..