From 14800786a98bdf128daab60483afa3be51099361 Mon Sep 17 00:00:00 2001 From: Sergei Zimmerman Date: Thu, 23 May 2024 01:28:43 +0300 Subject: [PATCH] inja: init at 3.4.0 (#312868) Includes a packaging test with a simple cmake project. --- pkgs/by-name/in/inja/package.nix | 46 +++++++++++++++++++ .../in/inja/simple-cmake-test/CMakeLists.txt | 5 ++ .../in/inja/simple-cmake-test/default.nix | 27 +++++++++++ .../in/inja/simple-cmake-test/main.cpp | 8 ++++ 4 files changed, 86 insertions(+) create mode 100644 pkgs/by-name/in/inja/package.nix create mode 100644 pkgs/by-name/in/inja/simple-cmake-test/CMakeLists.txt create mode 100644 pkgs/by-name/in/inja/simple-cmake-test/default.nix create mode 100644 pkgs/by-name/in/inja/simple-cmake-test/main.cpp diff --git a/pkgs/by-name/in/inja/package.nix b/pkgs/by-name/in/inja/package.nix new file mode 100644 index 000000000000..01310b2aac14 --- /dev/null +++ b/pkgs/by-name/in/inja/package.nix @@ -0,0 +1,46 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + nlohmann_json, + doctest, + callPackage, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "inja"; + version = "3.4.0"; + + src = fetchFromGitHub { + owner = "pantor"; + repo = "inja"; + rev = "v${finalAttrs.version}"; + hash = "sha256-B1EaR+qN32nLm3rdnlZvXQ/dlSd5XSc+5+gzBTPzUZU="; + }; + + nativeBuildInputs = [ cmake ]; + propagatedBuildInputs = [ nlohmann_json ]; + + cmakeFlags = [ + (lib.cmakeBool "INJA_BUILD_TESTS" finalAttrs.finalPackage.doCheck) + (lib.cmakeBool "INJA_USE_EMBEDDED_JSON" false) + (lib.cmakeBool "BUILD_BENCHMARK" false) + ]; + + checkInputs = [ doctest ]; + doCheck = true; + + passthru.tests = { + simple-cmake = callPackage ./simple-cmake-test { }; + }; + + meta = { + changelog = "https://github.com/pantor/inja/releases/tag/v${finalAttrs.version}"; + description = "Template engine for modern C++, loosely inspired by jinja for python"; + homepage = "https://github.com/pantor/inja"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ xokdvium ]; + platforms = lib.platforms.all; + }; +}) diff --git a/pkgs/by-name/in/inja/simple-cmake-test/CMakeLists.txt b/pkgs/by-name/in/inja/simple-cmake-test/CMakeLists.txt new file mode 100644 index 000000000000..68018e113924 --- /dev/null +++ b/pkgs/by-name/in/inja/simple-cmake-test/CMakeLists.txt @@ -0,0 +1,5 @@ +project(inja-simple-cmake-test LANGUAGES CXX) +find_package(inja REQUIRED) +add_executable(simple-cmake-test main.cpp) +target_link_libraries(simple-cmake-test PRIVATE pantor::inja) +install(TARGETS simple-cmake-test DESTINATION bin) diff --git a/pkgs/by-name/in/inja/simple-cmake-test/default.nix b/pkgs/by-name/in/inja/simple-cmake-test/default.nix new file mode 100644 index 000000000000..347563d471a6 --- /dev/null +++ b/pkgs/by-name/in/inja/simple-cmake-test/default.nix @@ -0,0 +1,27 @@ +{ + stdenv, + cmake, + inja, + lib, +}: + +stdenv.mkDerivation { + name = "inja-simple-cmake-test"; + src = lib.fileset.toSource { + root = ./.; + fileset = lib.fileset.unions [ + ./main.cpp + ./CMakeLists.txt + ]; + }; + nativeBuildInputs = [ cmake ]; + buildInputs = [ inja ]; + doInstallCheck = true; + installCheckPhase = '' + if [[ `$out/bin/simple-cmake-test` != "Hello world!" ]]; then + echo "ERROR: $out/bin/simple-cmake-test does not output 'Hello world!'" + exit 1 + fi + ''; + meta.timeout = 30; +} diff --git a/pkgs/by-name/in/inja/simple-cmake-test/main.cpp b/pkgs/by-name/in/inja/simple-cmake-test/main.cpp new file mode 100644 index 000000000000..4ec66678d2b7 --- /dev/null +++ b/pkgs/by-name/in/inja/simple-cmake-test/main.cpp @@ -0,0 +1,8 @@ +#include +#include +#include + +int main() { + nlohmann::json data = {{"name", "world"}}; + inja::render_to(std::cout, "Hello {{ name }}!", data); +}