Skip to content

Commit

Permalink
(#14958) add mbits-diags/0.9.4
Browse files Browse the repository at this point in the history
* add mbits-diags/0.9.4

* fix linter comments
  • Loading branch information
mzdun authored Jan 19, 2023
1 parent 8bacb0b commit 7abea08
Show file tree
Hide file tree
Showing 8 changed files with 243 additions and 0 deletions.
4 changes: 4 additions & 0 deletions recipes/mbits-diags/all/conandata.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
sources:
"0.9.4":
url: "https://github.com/mbits-libs/diags/archive/v0.9.4.tar.gz"
sha256: "4fa47e416fa9521c1d268765faf8b313f8e38de249049bc09950a303e11571bf"
117 changes: 117 additions & 0 deletions recipes/mbits-diags/all/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
from conan import ConanFile
from conan.errors import ConanInvalidConfiguration
from conan.tools.microsoft import check_min_vs, is_msvc
from conan.tools.files import export_conandata_patches, get, copy, rmdir
from conan.tools.build import check_min_cppstd
from conan.tools.scm import Version
from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout
import os


required_conan_version = ">=1.53.0"


class MBitsDiagsConan(ConanFile):
name = "mbits-diags"
description = "Diagnostic library with source positions, ranges and hints."
license = "MIT"
url = "https://github.com/conan-io/conan-center-index"
homepage = "https://github.com/mbits-libs/diags"
topics = ("diagnostics", "cli", "logging", "errors")
settings = "os", "arch", "compiler", "build_type"
options = {
"fPIC": [True, False],
}
default_options = {
"fPIC": True,
}

@property
def _min_cppstd(self):
return 17

@property
def _compilers_minimum_version(self):
return {
"gcc": "11",
"clang": "12",
"Visual Studio": "16",
"msvc": "192",
"apple-clang": "11.0.3",
}

def export_sources(self):
export_conandata_patches(self)

def config_options(self):
if self.settings.os == "Windows":
del self.options.fPIC

def layout(self):
cmake_layout(self, src_folder="src")

def requirements(self):
self.requires("fmt/9.1.0")
self.requires("mbits-semver/0.1.1")

def validate(self):
if self.settings.compiler.cppstd:
check_min_cppstd(self, self._min_cppstd)
check_min_vs(self, 192)
if not is_msvc(self):
minimum_version = self._compilers_minimum_version.get(
str(self.settings.compiler), False
)
if (
minimum_version
and Version(self.settings.compiler.version) < minimum_version
):
raise ConanInvalidConfiguration(
f"{self.ref} requires C++{self._min_cppstd}, which your compiler does not support."
)

def source(self):
get(self, **self.conan_data["sources"][self.version], strip_root=True)

def generate(self):
tc = CMakeToolchain(self)
tc.variables["DIAGS_TESTING"] = False
tc.generate()
tc = CMakeDeps(self)
tc.generate()

def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()

def package(self):
copy(
self,
pattern="LICENSE",
dst=os.path.join(self.package_folder, "licenses"),
src=self.source_folder,
)
cmake = CMake(self)
cmake.install()

rmdir(self, os.path.join(self.package_folder, "lib", "cmake"))

def package_info(self):
self.cpp_info.libs = ["diags"]

self.cpp_info.set_property("cmake_file_name", "mbits-diags")
self.cpp_info.set_property("cmake_target_name", "mbits::diags")

self.cpp_info.filenames["cmake_find_package"] = "mbits-diags"
self.cpp_info.filenames["cmake_find_package_multi"] = "mbits-diags"
self.cpp_info.names["cmake_find_package"] = "mbits"
self.cpp_info.names["cmake_find_package_multi"] = "mbits"
self.cpp_info.components["diags"].set_property(
"cmake_target_name", "mbits::diags"
)
self.cpp_info.components["diags"].libs = ["diags"]
self.cpp_info.components["diags"].requires = [
"fmt::fmt",
"mbits-semver::semver",
]
8 changes: 8 additions & 0 deletions recipes/mbits-diags/all/test_package/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
cmake_minimum_required(VERSION 3.8)
project(test_package CXX)

find_package(mbits-diags REQUIRED CONFIG)

add_executable(${PROJECT_NAME} test_package.cpp)
target_link_libraries(${PROJECT_NAME} PRIVATE mbits::diags)
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)
26 changes: 26 additions & 0 deletions recipes/mbits-diags/all/test_package/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from conan import ConanFile
from conan.tools.build import can_run
from conan.tools.cmake import cmake_layout, CMake
import os


class TestPackageConan(ConanFile):
settings = "os", "arch", "compiler", "build_type"
generators = "CMakeDeps", "CMakeToolchain", "VirtualRunEnv"
test_type = "explicit"

def requirements(self):
self.requires(self.tested_reference_str)

def layout(self):
cmake_layout(self)

def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()

def test(self):
if can_run(self):
bin_path = os.path.join(self.cpp.build.bindirs[0], "test_package")
self.run(bin_path, env="conanrun")
59 changes: 59 additions & 0 deletions recipes/mbits-diags/all/test_package/test_package.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#include <cstdio>
#include <diags/sources.hpp>
#include <diags/version.hpp>

using namespace diags;
using namespace std::literals;

namespace app {
enum class str { in_use };
UNPACK_DIAGS_TYPES(diags::string::singular<str>);
SINGLE_FORM_DIAGS_SUPPORT(str)

struct strings : translator_type {
std::string_view get(str id) const noexcept final {
switch (id) {
case str::in_use:
return "Library is in use"sv;
}
return {};
}
std::string_view get(severity sev) const noexcept final {
switch (sev) {
case severity::note:
return "note"sv;
case severity::warning:
return "warning"sv;
case severity::error:
return "error"sv;
case severity::fatal:
return "fatal"sv;
default:
break;
}
return {};
}
};

location_range_severity pos_from(source_code &source,
severity sev = severity::note) {
auto const start = source.position(1, 13);
auto const stop = start.moved_by(0, 7);
return start - stop[sev];
}
} // namespace app

int main() {
app::strings strings{};
sources host{};
auto src = host.source("use-diags.cpp");

host.set_contents("use-diags.cpp", "- underline [range] in brackets"sv);
auto msg = app::pos_from(src)
<< format("{}: {}", app::str::in_use, version.to_string());
host.push_back(msg);

auto tr = strings.make();
host.set_printer<printer>(&get_stdout(), tr, color::always, link_type::gcc);
host.print_diagnostics();
}
8 changes: 8 additions & 0 deletions recipes/mbits-diags/all/test_v1_package/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
cmake_minimum_required(VERSION 3.1)
project(test_package)

include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup(TARGETS)

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../test_package/
${CMAKE_CURRENT_BINARY_DIR}/test_package/)
18 changes: 18 additions & 0 deletions recipes/mbits-diags/all/test_v1_package/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from conans import ConanFile, CMake
from conan.tools.build import cross_building
import os


class TestPackageV1Conan(ConanFile):
settings = "os", "arch", "compiler", "build_type"
generators = "cmake", "cmake_find_package_multi"

def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()

def test(self):
if not cross_building(self):
bin_path = os.path.join("bin", "test_package")
self.run(bin_path, run_environment=True)
3 changes: 3 additions & 0 deletions recipes/mbits-diags/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
versions:
"0.9.4":
folder: all

0 comments on commit 7abea08

Please sign in to comment.