From 90df05a2b5321a42ba886e0a713279c45c4e88a0 Mon Sep 17 00:00:00 2001 From: JuanBC9 Date: Thu, 23 Jan 2025 09:55:31 +0100 Subject: [PATCH 01/11] add initial files --- recipes/libjwt/all/conanfile.py | 71 +++++++++++++++++++ .../libjwt/all/test_package/CMakeLists.txt | 9 +++ recipes/libjwt/all/test_package/conanfile.py | 26 +++++++ .../libjwt/all/test_package/src/example.cpp | 12 ++++ 4 files changed, 118 insertions(+) create mode 100644 recipes/libjwt/all/conanfile.py create mode 100644 recipes/libjwt/all/test_package/CMakeLists.txt create mode 100644 recipes/libjwt/all/test_package/conanfile.py create mode 100644 recipes/libjwt/all/test_package/src/example.cpp diff --git a/recipes/libjwt/all/conanfile.py b/recipes/libjwt/all/conanfile.py new file mode 100644 index 0000000000000..3d22f99846481 --- /dev/null +++ b/recipes/libjwt/all/conanfile.py @@ -0,0 +1,71 @@ +from conan import ConanFile +from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout, CMakeDeps +from conan.tools.files import get +from conan.tools.gnu import PkgConfigDeps + +class libjwtRecipe(ConanFile): + name = "libjwt" + version = "1.0" + package_type = "library" + + # Optional metadata + license = "" + author = " " + url = "" + description = "" + topics = ("", "", "") + + # Binary configuration + settings = "os", "compiler", "build_type", "arch" + options = {"shared": [True, False], "fPIC": [True, False]} + default_options = {"shared": False, "fPIC": True} + + def source(self): + get(self, 'https://github.com/benmcollins/libjwt/archive/refs/tags/v2.1.1.zip', strip_root=True) + + def requirements(self): + self.requires("jansson/2.14", transitive_headers=True) + + def config_options(self): + if self.settings.os == "Windows": + self.options.rm_safe("fPIC") + + def configure(self): + if self.options.shared: + self.options.rm_safe("fPIC") + + def layout(self): + cmake_layout(self) + + def generate(self): + deps = CMakeDeps(self) + # deps.set_property("jansson", "cmake_file_name", "Jansson") + # deps.set_property("jansson", "cmake_target_name", "Jansson::Jansson") + deps.generate() + + deps = PkgConfigDeps(self) + deps.generate() + + tc = CMakeToolchain(self) + tc.generate() + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def build_requirements(self): + self.tool_requires("pkgconf/[>=2.2 <3]") + + def package(self): + cmake = CMake(self) + cmake.install() + + def package_info(self): + self.cpp_info.libs = ["libjwt"] + self.cpp_info.requires = ["Jansson::Jansson"] + + + + + diff --git a/recipes/libjwt/all/test_package/CMakeLists.txt b/recipes/libjwt/all/test_package/CMakeLists.txt new file mode 100644 index 0000000000000..d6ce080112b0d --- /dev/null +++ b/recipes/libjwt/all/test_package/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.15) +project(PackageTest CXX) + +find_package(libjwt CONFIG REQUIRED) + + + +add_executable(example src/example.cpp) +target_link_libraries(example libjwt::libjwt) diff --git a/recipes/libjwt/all/test_package/conanfile.py b/recipes/libjwt/all/test_package/conanfile.py new file mode 100644 index 0000000000000..a0c84dcd8f60e --- /dev/null +++ b/recipes/libjwt/all/test_package/conanfile.py @@ -0,0 +1,26 @@ +import os + +from conan import ConanFile +from conan.tools.cmake import CMake, cmake_layout +from conan.tools.build import can_run + + +class libjwtTestConan(ConanFile): + settings = "os", "compiler", "build_type", "arch" + generators = "CMakeDeps", "CMakeToolchain" + + def requirements(self): + self.requires(self.tested_reference_str) + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def layout(self): + cmake_layout(self) + + def test(self): + if can_run(self): + cmd = os.path.join(self.cpp.build.bindir, "example") + self.run(cmd, env="conanrun") diff --git a/recipes/libjwt/all/test_package/src/example.cpp b/recipes/libjwt/all/test_package/src/example.cpp new file mode 100644 index 0000000000000..a152de6076245 --- /dev/null +++ b/recipes/libjwt/all/test_package/src/example.cpp @@ -0,0 +1,12 @@ +#include "libjwt.h" +#include +#include + +int main() { + libjwt(); + + std::vector vec; + vec.push_back("test_package"); + + libjwt_print_vector(vec); +} From 42d3e7eaf308a6c8d7728cafca88ded75ca4e527 Mon Sep 17 00:00:00 2001 From: Alberto Izquierdo Date: Thu, 23 Jan 2025 15:18:27 +0100 Subject: [PATCH 02/11] Switched to 1.18.3 --- recipes/libjwt/all/conanfile.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/recipes/libjwt/all/conanfile.py b/recipes/libjwt/all/conanfile.py index 3d22f99846481..81d02b6f99c4b 100644 --- a/recipes/libjwt/all/conanfile.py +++ b/recipes/libjwt/all/conanfile.py @@ -5,7 +5,7 @@ class libjwtRecipe(ConanFile): name = "libjwt" - version = "1.0" + version = "1.18.3" package_type = "library" # Optional metadata @@ -21,10 +21,10 @@ class libjwtRecipe(ConanFile): default_options = {"shared": False, "fPIC": True} def source(self): - get(self, 'https://github.com/benmcollins/libjwt/archive/refs/tags/v2.1.1.zip', strip_root=True) + get(self, 'https://github.com/benmcollins/libjwt/archive/refs/tags/v1.18.3.zip', strip_root=True) def requirements(self): - self.requires("jansson/2.14", transitive_headers=True) + self.requires("jansson/2.14") def config_options(self): if self.settings.os == "Windows": @@ -38,14 +38,15 @@ def layout(self): cmake_layout(self) def generate(self): - deps = CMakeDeps(self) - # deps.set_property("jansson", "cmake_file_name", "Jansson") - # deps.set_property("jansson", "cmake_target_name", "Jansson::Jansson") - deps.generate() + cmakeDeps = CMakeDeps(self) + # cmakeDeps.set_property("jansson", "pkg_config_name", "jansson") + # cmakeDeps.set_property("jansson", "cmake_file_name", "JANSSON") + # cmakeDeps.set_property("jansson", "cmake_target_name", "PkgConfig::JANSSON") + cmakeDeps.generate() deps = PkgConfigDeps(self) deps.generate() - + tc = CMakeToolchain(self) tc.generate() @@ -53,7 +54,7 @@ def build(self): cmake = CMake(self) cmake.configure() cmake.build() - + def build_requirements(self): self.tool_requires("pkgconf/[>=2.2 <3]") @@ -63,9 +64,10 @@ def package(self): def package_info(self): self.cpp_info.libs = ["libjwt"] - self.cpp_info.requires = ["Jansson::Jansson"] - - - - + self.cpp_info.set_property("cmake_file_name", "libjwt") + self.cpp_info.set_property("cmake_target_name", "libjwt::libjwt") + # self.cpp_info.requires = ["jansson::jansson"] + # self.cpp_info.components["jansson"].includedirs = ["include"] + # self.cpp_info.components["libjansson-dev"].set_property("pkg_config_name", "jansson") + # self.cpp_info.components["libjansson-dev"].set_property("pkg_config_aliases", ["jansson", "Jansson"]) From d5d2de6d518226e3acc1731343bcebd89b7b673e Mon Sep 17 00:00:00 2001 From: Alberto Izquierdo Date: Thu, 23 Jan 2025 15:31:13 +0100 Subject: [PATCH 03/11] Library correctly created --- recipes/libjwt/all/conanfile.py | 15 +-------------- recipes/libjwt/all/test_package/src/example.cpp | 13 +++---------- 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/recipes/libjwt/all/conanfile.py b/recipes/libjwt/all/conanfile.py index 81d02b6f99c4b..179d4aefb2c7a 100644 --- a/recipes/libjwt/all/conanfile.py +++ b/recipes/libjwt/all/conanfile.py @@ -1,7 +1,6 @@ from conan import ConanFile from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout, CMakeDeps from conan.tools.files import get -from conan.tools.gnu import PkgConfigDeps class libjwtRecipe(ConanFile): name = "libjwt" @@ -23,9 +22,6 @@ class libjwtRecipe(ConanFile): def source(self): get(self, 'https://github.com/benmcollins/libjwt/archive/refs/tags/v1.18.3.zip', strip_root=True) - def requirements(self): - self.requires("jansson/2.14") - def config_options(self): if self.settings.os == "Windows": self.options.rm_safe("fPIC") @@ -39,14 +35,8 @@ def layout(self): def generate(self): cmakeDeps = CMakeDeps(self) - # cmakeDeps.set_property("jansson", "pkg_config_name", "jansson") - # cmakeDeps.set_property("jansson", "cmake_file_name", "JANSSON") - # cmakeDeps.set_property("jansson", "cmake_target_name", "PkgConfig::JANSSON") cmakeDeps.generate() - deps = PkgConfigDeps(self) - deps.generate() - tc = CMakeToolchain(self) tc.generate() @@ -55,15 +45,12 @@ def build(self): cmake.configure() cmake.build() - def build_requirements(self): - self.tool_requires("pkgconf/[>=2.2 <3]") - def package(self): cmake = CMake(self) cmake.install() def package_info(self): - self.cpp_info.libs = ["libjwt"] + self.cpp_info.libs = ["jwt"] self.cpp_info.set_property("cmake_file_name", "libjwt") self.cpp_info.set_property("cmake_target_name", "libjwt::libjwt") # self.cpp_info.requires = ["jansson::jansson"] diff --git a/recipes/libjwt/all/test_package/src/example.cpp b/recipes/libjwt/all/test_package/src/example.cpp index a152de6076245..ec732c4ac2bac 100644 --- a/recipes/libjwt/all/test_package/src/example.cpp +++ b/recipes/libjwt/all/test_package/src/example.cpp @@ -1,12 +1,5 @@ -#include "libjwt.h" -#include +#include "jwt.h" #include +#include -int main() { - libjwt(); - - std::vector vec; - vec.push_back("test_package"); - - libjwt_print_vector(vec); -} +int main() { return 0; } From e7938ae84895e82457439ba30215e327c350c53c Mon Sep 17 00:00:00 2001 From: Alberto Izquierdo Date: Thu, 23 Jan 2025 15:42:19 +0100 Subject: [PATCH 04/11] Proper directory created. Updated package information --- recipes/libjwt/all/conandata.yml | 3 +++ recipes/libjwt/all/conanfile.py | 20 +++++++------------- recipes/libjwt/config.yml | 3 +++ 3 files changed, 13 insertions(+), 13 deletions(-) create mode 100644 recipes/libjwt/all/conandata.yml create mode 100644 recipes/libjwt/config.yml diff --git a/recipes/libjwt/all/conandata.yml b/recipes/libjwt/all/conandata.yml new file mode 100644 index 0000000000000..3b8d341727d2b --- /dev/null +++ b/recipes/libjwt/all/conandata.yml @@ -0,0 +1,3 @@ +sources: + "1.18.3": + url: "https://github.com/benmcollins/libjwt/archive/refs/tags/v1.18.3.zip" diff --git a/recipes/libjwt/all/conanfile.py b/recipes/libjwt/all/conanfile.py index 179d4aefb2c7a..c479c16aa30ef 100644 --- a/recipes/libjwt/all/conanfile.py +++ b/recipes/libjwt/all/conanfile.py @@ -2,17 +2,18 @@ from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout, CMakeDeps from conan.tools.files import get + class libjwtRecipe(ConanFile): name = "libjwt" version = "1.18.3" package_type = "library" # Optional metadata - license = "" - author = " " - url = "" - description = "" - topics = ("", "", "") + license = "Mozilla Public License Version 2.0" + author = "Ben Collins>" + url = "https://github.com/benmcollins/libjwt" + description = "The C JSON Web Token Library +JWK +JWKS" + topics = ("json", "jwt", "jwt-token") # Binary configuration settings = "os", "compiler", "build_type", "arch" @@ -20,7 +21,7 @@ class libjwtRecipe(ConanFile): default_options = {"shared": False, "fPIC": True} def source(self): - get(self, 'https://github.com/benmcollins/libjwt/archive/refs/tags/v1.18.3.zip', strip_root=True) + get(self, self.conan_data["sources"][self.version]["url"], strip_root=True) def config_options(self): if self.settings.os == "Windows": @@ -51,10 +52,3 @@ def package(self): def package_info(self): self.cpp_info.libs = ["jwt"] - self.cpp_info.set_property("cmake_file_name", "libjwt") - self.cpp_info.set_property("cmake_target_name", "libjwt::libjwt") - # self.cpp_info.requires = ["jansson::jansson"] - - # self.cpp_info.components["jansson"].includedirs = ["include"] - # self.cpp_info.components["libjansson-dev"].set_property("pkg_config_name", "jansson") - # self.cpp_info.components["libjansson-dev"].set_property("pkg_config_aliases", ["jansson", "Jansson"]) diff --git a/recipes/libjwt/config.yml b/recipes/libjwt/config.yml new file mode 100644 index 0000000000000..f40c8df617b63 --- /dev/null +++ b/recipes/libjwt/config.yml @@ -0,0 +1,3 @@ +versions: + "1.18.3": + folder: all From 90f4eada82cb7c722cfba5dbef6693b70ad261f7 Mon Sep 17 00:00:00 2001 From: JuanBC9 Date: Thu, 23 Jan 2025 15:48:23 +0100 Subject: [PATCH 05/11] added system_requirements --- recipes/libjwt/all/conanfile.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/recipes/libjwt/all/conanfile.py b/recipes/libjwt/all/conanfile.py index c479c16aa30ef..afa16bff9dafb 100644 --- a/recipes/libjwt/all/conanfile.py +++ b/recipes/libjwt/all/conanfile.py @@ -1,6 +1,7 @@ from conan import ConanFile from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout, CMakeDeps from conan.tools.files import get +from conan.tools.system.package_manager import Apt class libjwtRecipe(ConanFile): @@ -23,6 +24,10 @@ class libjwtRecipe(ConanFile): def source(self): get(self, self.conan_data["sources"][self.version]["url"], strip_root=True) + def system_requirements(self): + apt = Apt(self) + apt.install(["libjansson-dev"]) + def config_options(self): if self.settings.os == "Windows": self.options.rm_safe("fPIC") From a27e86274a801a4911c020a200aedcfce6023307 Mon Sep 17 00:00:00 2001 From: JuanBC9 Date: Thu, 23 Jan 2025 16:24:12 +0100 Subject: [PATCH 06/11] added update and check & import package manager --- recipes/libjwt/all/conanfile.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/recipes/libjwt/all/conanfile.py b/recipes/libjwt/all/conanfile.py index afa16bff9dafb..49b201d91e032 100644 --- a/recipes/libjwt/all/conanfile.py +++ b/recipes/libjwt/all/conanfile.py @@ -1,7 +1,7 @@ from conan import ConanFile from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout, CMakeDeps from conan.tools.files import get -from conan.tools.system.package_manager import Apt +from conan.tools.system import package_manager class libjwtRecipe(ConanFile): @@ -25,8 +25,8 @@ def source(self): get(self, self.conan_data["sources"][self.version]["url"], strip_root=True) def system_requirements(self): - apt = Apt(self) - apt.install(["libjansson-dev"]) + apt = package_manager.Apt(self) + apt.install(["libjansson-dev"], update=True, check=True) def config_options(self): if self.settings.os == "Windows": From 455c5f3000c3a4e0c2352719e312a474d6cfb4c5 Mon Sep 17 00:00:00 2001 From: JuanBC9 Date: Thu, 23 Jan 2025 16:49:37 +0100 Subject: [PATCH 07/11] added package manager for other distros --- recipes/libjwt/all/conanfile.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/recipes/libjwt/all/conanfile.py b/recipes/libjwt/all/conanfile.py index 49b201d91e032..0ef820776f520 100644 --- a/recipes/libjwt/all/conanfile.py +++ b/recipes/libjwt/all/conanfile.py @@ -1,7 +1,8 @@ -from conan import ConanFile +from conan import ConanFile, conan_version from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout, CMakeDeps from conan.tools.files import get from conan.tools.system import package_manager +from conan.tools.scm import Version class libjwtRecipe(ConanFile): @@ -27,6 +28,25 @@ def source(self): def system_requirements(self): apt = package_manager.Apt(self) apt.install(["libjansson-dev"], update=True, check=True) + + yum = package_manager.Yum(self) + yum.install(["jansson-devel"], update=True, check=True) + + dnf = package_manager.Dnf(self) + dnf.install(["jansson-devel"], update=True, check=True) + + zypper = package_manager.Zypper(self) + zypper.install(["libjansson-devel"], update=True, check=True) + + pacman = package_manager.PacMan(self) + pacman.install(["jansson"], update=True, check=True) + + pkg = package_manager.Pkg(self) + pkg.install(["jansson"], update=True, check=True) + + if Version(conan_version) >= "2.0.10": + alpine = package_manager.Apk(self) + alpine.install(["jansson"], update=True, check=True) def config_options(self): if self.settings.os == "Windows": From 4d1e626dbb64cd92311764b654ab26c0651c7364 Mon Sep 17 00:00:00 2001 From: JuanBC9 Date: Thu, 23 Jan 2025 16:53:26 +0100 Subject: [PATCH 08/11] remove version --- recipes/libjwt/all/conanfile.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/recipes/libjwt/all/conanfile.py b/recipes/libjwt/all/conanfile.py index 0ef820776f520..9b31f2f1b72bc 100644 --- a/recipes/libjwt/all/conanfile.py +++ b/recipes/libjwt/all/conanfile.py @@ -7,12 +7,11 @@ class libjwtRecipe(ConanFile): name = "libjwt" - version = "1.18.3" package_type = "library" # Optional metadata license = "Mozilla Public License Version 2.0" - author = "Ben Collins>" + author = "Ben Collins" url = "https://github.com/benmcollins/libjwt" description = "The C JSON Web Token Library +JWK +JWKS" topics = ("json", "jwt", "jwt-token") From 6948c2b574b4ac01c44ed8f089e12f498738f10d Mon Sep 17 00:00:00 2001 From: JuanBC9 Date: Thu, 23 Jan 2025 17:03:49 +0100 Subject: [PATCH 09/11] added test code --- recipes/libjwt/all/test_package/src/example.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/recipes/libjwt/all/test_package/src/example.cpp b/recipes/libjwt/all/test_package/src/example.cpp index ec732c4ac2bac..92096d39a94e1 100644 --- a/recipes/libjwt/all/test_package/src/example.cpp +++ b/recipes/libjwt/all/test_package/src/example.cpp @@ -1,5 +1,13 @@ #include "jwt.h" -#include -#include -int main() { return 0; } +int main() { + + jwt_t *jwt = NULL; + int ret = 0; + + ret = jwt_new(&jwt); + + jwt_free(jwt); + + return ret; +} From 9a9404639e2737242205956be2d18c4af528e52b Mon Sep 17 00:00:00 2001 From: JuanBC9 Date: Thu, 23 Jan 2025 17:13:47 +0100 Subject: [PATCH 10/11] added openssl requirement --- recipes/libjwt/all/conanfile.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/libjwt/all/conanfile.py b/recipes/libjwt/all/conanfile.py index 9b31f2f1b72bc..2f62eba1928c6 100644 --- a/recipes/libjwt/all/conanfile.py +++ b/recipes/libjwt/all/conanfile.py @@ -24,6 +24,9 @@ class libjwtRecipe(ConanFile): def source(self): get(self, self.conan_data["sources"][self.version]["url"], strip_root=True) + def requirements(self): + self.requires("openssl/3.3.2") + def system_requirements(self): apt = package_manager.Apt(self) apt.install(["libjansson-dev"], update=True, check=True) From d68b9da827bfb0ed4ddfb92e2419b44f6d34db79 Mon Sep 17 00:00:00 2001 From: JuanBC9 Date: Thu, 23 Jan 2025 17:16:41 +0100 Subject: [PATCH 11/11] added jansson as requirement --- recipes/libjwt/all/conanfile.py | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/libjwt/all/conanfile.py b/recipes/libjwt/all/conanfile.py index 2f62eba1928c6..baa553c84d535 100644 --- a/recipes/libjwt/all/conanfile.py +++ b/recipes/libjwt/all/conanfile.py @@ -26,6 +26,7 @@ def source(self): def requirements(self): self.requires("openssl/3.3.2") + self.requires("jansson/2.14") def system_requirements(self): apt = package_manager.Apt(self)