diff --git a/pkgs/by-name/db/dbc-parser-cpp/0001-fix-pkg-config-file.patch b/pkgs/by-name/db/dbc-parser-cpp/0001-fix-pkg-config-file.patch new file mode 100644 index 000000000000..8fc163f2893b --- /dev/null +++ b/pkgs/by-name/db/dbc-parser-cpp/0001-fix-pkg-config-file.patch @@ -0,0 +1,12 @@ +--- a/dbc.pc.in ++++ b/dbc.pc.in +@@ -1,7 +1,7 @@ + prefix=@CMAKE_INSTALL_PREFIX@ + exec_prefix=${prefix} +-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ +-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ ++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ ++libdir=@CMAKE_INSTALL_FULL_LIBDIR@ + + Name: @PROJECT_NAME@ + Description: @CPACK_PACKAGE_DESCRIPTION_SUMMARY@ \ No newline at end of file diff --git a/pkgs/by-name/db/dbc-parser-cpp/0002-fix-testcase-aarch64.patch b/pkgs/by-name/db/dbc-parser-cpp/0002-fix-testcase-aarch64.patch new file mode 100644 index 000000000000..896e91b790cf --- /dev/null +++ b/pkgs/by-name/db/dbc-parser-cpp/0002-fix-testcase-aarch64.patch @@ -0,0 +1,29 @@ +--- a/test/test_parse_message.cpp ++++ b/test/test_parse_message.cpp +@@ -50,7 +50,7 @@ TEST_CASE("Parse Message Big Number not aligned little endian") { + CHECK(refData.size() == 7); + CHECK(out_values.size() == refData.size()); + for (size_t i = 0; i < refData.size(); i++) { +- CHECK(out_values.at(i) == refData.at(i)); ++ CHECK(out_values.at(i) == Catch::Approx(refData.at(i)).margin(1e-9)); + } + } + +@@ -61,7 +61,7 @@ TEST_CASE("Parse Message Big Number not aligned little endian") { + CHECK(refData.size() == 7); + CHECK(out_values.size() == refData.size()); + for (size_t i = 0; i < refData.size(); i++) { +- CHECK(out_values.at(i) == refData.at(i)); ++ CHECK(out_values.at(i) == Catch::Approx(refData.at(i)).margin(1e-9)); + } + } + +@@ -72,7 +72,7 @@ TEST_CASE("Parse Message Big Number not aligned little endian") { + CHECK(refData.size() == 7); + CHECK(out_values.size() == refData.size()); + for (size_t i = 0; i < refData.size(); i++) { +- CHECK(out_values.at(i) == refData.at(i)); ++ CHECK(out_values.at(i) == Catch::Approx(refData.at(i)).margin(1e-9)); + } + } + } \ No newline at end of file diff --git a/pkgs/by-name/db/dbc-parser-cpp/package.nix b/pkgs/by-name/db/dbc-parser-cpp/package.nix new file mode 100644 index 000000000000..261dc614fc5f --- /dev/null +++ b/pkgs/by-name/db/dbc-parser-cpp/package.nix @@ -0,0 +1,64 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + pkg-config, + fast-float, + catch2_3, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "dbc-parser-cpp"; + version = "0.5.0"; + + src = fetchFromGitHub { + owner = "LinuxDevon"; + repo = "dbc_parser_cpp"; + tag = "v${finalAttrs.version}"; + hash = "sha256-oyC7NihrlYvoR3CH07FeZcXfQ1JH2Ymsb7ocgim4dZ8="; + }; + + patches = [ + # Submitted upstream: https://github.com/LinuxDevon/dbc_parser_cpp/pull/37 + # Remove when upstream merges the PR + ./0001-fix-pkg-config-file.patch + ] + # Submitted upstream: https://github.com/LinuxDevon/dbc_parser_cpp/pull/36 + # Remove when upstream merges the PR + ++ lib.optional stdenv.hostPlatform.isAarch64 ./0002-fix-testcase-aarch64.patch; + + nativeBuildInputs = [ + cmake + pkg-config + ]; + + buildInputs = [ + fast-float + ]; + + checkInputs = [ + catch2_3 + ]; + + cmakeFlags = [ + (lib.cmakeBool "DBC_ENABLE_TESTS" finalAttrs.finalPackage.doCheck) + # Cmake test file doesn't check for system installed Catch2 and directly uses FetchContent to download Catch2 + (lib.cmakeFeature "FETCHCONTENT_TRY_FIND_PACKAGE_MODE" "ALWAYS") + ]; + + doCheck = true; + + __structuredAttrs = true; + strictDeps = true; + + meta = { + description = "DBC file parsing library written in C++"; + homepage = "https://github.com/LinuxDevon/dbc_parser_cpp"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ + AhmedAmr + ]; + teams = with lib.teams; [ ngi ]; + platforms = lib.platforms.all; + }; +})