diff --git a/.clang-format b/.clang-format index 6a6c06f..3b85ccc 100644 --- a/.clang-format +++ b/.clang-format @@ -1,6 +1,7 @@ BasedOnStyle: Google ColumnLimit: 100 +Standard: c++20 AlignEscapedNewlines: Right AllowAllArgumentsOnNextLine: false diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5616bad..aed45ce 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -27,9 +27,6 @@ jobs: #----- --- -- - - - - - name: Build and test env: - CACHE_CONAN_REMOTE: ${{ vars.CACHE_CONAN_REMOTE }} - CACHE_CONAN_LOGIN_USERNAME: ${{ vars.CACHE_CONAN_LOGIN_USERNAME }} - CACHE_CONAN_PASSWORD: ${{ secrets.CACHE_CONAN_PASSWORD }} CI_JOB_NAME: build_and_test run: scripts/ci-job-with-docker.sh #+++++++++++-+-+--+----- --- -- - - - - @@ -44,9 +41,6 @@ jobs: steps: - name: Release env: - CACHE_CONAN_REMOTE: ${{ vars.CACHE_CONAN_REMOTE }} - CACHE_CONAN_LOGIN_USERNAME: ${{ vars.CACHE_CONAN_LOGIN_USERNAME }} - CACHE_CONAN_PASSWORD: ${{ secrets.CACHE_CONAN_PASSWORD }} RELEASE_CONAN_REMOTE: ${{ vars.RELEASE_CONAN_REMOTE }} RELEASE_CONAN_LOGIN_USERNAME: ${{ vars.RELEASE_CONAN_LOGIN_USERNAME }} RELEASE_CONAN_PASSWORD: ${{ secrets.RELEASE_CONAN_PASSWORD }} diff --git a/conanfile.py b/conanfile.py index a6a4818..d57f47c 100644 --- a/conanfile.py +++ b/conanfile.py @@ -7,8 +7,9 @@ #+++++++++++-+-+--+----- --- -- - - - - from conan import ConanFile +from conan.errors import ConanInvalidConfiguration -import platform +import io, os, platform, shlex, subprocess class LlfsConan(ConanFile): @@ -60,6 +61,8 @@ class LlfsConan(ConanFile): "ninja/[>=1.12.1 <2]", ] + _is_header_only = (platform.system() != "Linux") + #+++++++++++-+-+--+----- --- -- - - - - def configure(self): @@ -96,7 +99,10 @@ def set_version(self): return self.cor.set_version_from_git_tags(self) def layout(self): - return self.cor.layout_cmake_unified_src(self) + self.cor.layout_cmake_unified_src(self) + self.cpp.build.libdirs += ['src'] + if not self._is_header_only: + self.cpp.build.libs += ['llfs'] def generate(self): return self.cor.generate_cmake_default(self) @@ -113,5 +119,23 @@ def package_info(self): def package_id(self): return self.cor.package_id_lib_default(self) + def validate_build(self): + if self.settings.compiler == "gcc": + out_capture = io.StringIO() + cc_name = ( + self.buildenv.vars(self).get('CC') or + self.buildenv.vars(self).get('CXX') or + os.getenv('CC') or + os.getenv('CXX') or + 'gcc' + ) + self.run(shlex.join([cc_name, '-dumpversion']), stdout=out_capture, shell=True) + actual_compiler_version = out_capture.getvalue().strip() + profile_compiler_version = str(self.settings.compiler.version) + if profile_compiler_version != actual_compiler_version: + raise ConanInvalidConfiguration(f"Compiler version mismatch: actual={actual_compiler_version}" + f", expected={profile_compiler_version}") + #+++++++++++-+-+--+----- --- -- - - - - + diff --git a/scripts/ci-job-with-docker.sh b/scripts/ci-job-with-docker.sh index c9860e9..b19cfe6 100755 --- a/scripts/ci-job-with-docker.sh +++ b/scripts/ci-job-with-docker.sh @@ -9,9 +9,14 @@ PROJECT_DIR=$(realpath $(dirname "${SCRIPT_DIR}")) # Run the ci-job.sh script using docker. # -ROOT_IMAGE=registry.gitlab.com/batteriescpp/batteries:v0.60.2-devel.linux_gcc11_amd64 +ROOT_IMAGE=registry.gitlab.com/batteriesincluded/batt-docker/batteries-debian12-build-tools:0.6.0 USER_IMAGE=$(cor docker user-image ${ROOT_IMAGE} --user-commands-file="${SCRIPT_DIR}/ci-job-setup.dockerfile") +VOLUMES= +if [ -f "${HOME}/conan-local-cache-server-config.sh" ]; then + VOLUMES+="--volume ${HOME}/conan-local-cache-server-config.sh:/conan-local-cache-server-config.sh" +fi + docker run \ --ulimit memlock=-1:-1 \ --cap-add SYS_ADMIN --device /dev/fuse \ @@ -26,6 +31,7 @@ docker run \ --env CI_JOB_NAME \ --volume "${HOME}/ci_conan_hosts:/etc/hosts:ro" \ --volume "${PROJECT_DIR}:${PROJECT_DIR}" \ + ${VOLUMES} \ --workdir "${PROJECT_DIR}" \ ${USER_IMAGE} \ "${BUILD_COMMAND:-${SCRIPT_DIR}/ci-job.sh}" diff --git a/scripts/ci-job.sh b/scripts/ci-job.sh index 34bdf68..b552299 100755 --- a/scripts/ci-job.sh +++ b/scripts/ci-job.sh @@ -11,6 +11,11 @@ cor conan config install --type git https://gitlab.com/batteriesincluded/conan-c # Enable the local cache server. # +if [ -f "/conan-local-cache-server-config.sh" ]; then + set +x + source "/conan-local-cache-server-config.sh" + set -x +fi "${SCRIPT_DIR}/ci-print-diagnostics.sh" "ci-job.sh" if [ "${CACHE_CONAN_REMOTE:-}" != "" ]; then cor conan remote enable "${CACHE_CONAN_REMOTE}" diff --git a/src/llfs/storage_context.hpp b/src/llfs/storage_context.hpp index 69d29fd..5ef8f1f 100644 --- a/src/llfs/storage_context.hpp +++ b/src/llfs/storage_context.hpp @@ -13,7 +13,19 @@ #include // -#ifndef LLFS_DISABLE_IO_URING +#include + +#ifdef LLFS_DISABLE_IO_URING + +namespace llfs { + +class StorageContext : public batt::RefCounted +{ +}; + +} // namespace llfs + +#else // !LLFS_DISABLE_IO_URING #include #include @@ -27,7 +39,6 @@ #include #include -#include #include