From 7413aa2c47bc1e994cd9a5317c5dd4723c056b33 Mon Sep 17 00:00:00 2001 From: SpaceIm <30052553+SpaceIm@users.noreply.github.com> Date: Sun, 19 Nov 2023 17:51:09 +0300 Subject: [PATCH 1/3] move hwdata to build requirements unconditionally --- recipes/libdisplay-info/all/conanfile.py | 38 ++++++++++++++++-------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/recipes/libdisplay-info/all/conanfile.py b/recipes/libdisplay-info/all/conanfile.py index 4bb6e6e322b36..79102c89fbab9 100644 --- a/recipes/libdisplay-info/all/conanfile.py +++ b/recipes/libdisplay-info/all/conanfile.py @@ -2,11 +2,12 @@ from conan.errors import ConanInvalidConfiguration from conan.tools.build import cross_building from conan.tools.env import VirtualBuildEnv -from conan.tools.files import copy, get, replace_in_file, rm, rmdir +from conan.tools.files import copy, get, replace_in_file, rm, rmdir, save from conan.tools.gnu import PkgConfigDeps from conan.tools.layout import basic_layout from conan.tools.meson import Meson, MesonToolchain import os +import textwrap required_conan_version = ">=1.53.0" @@ -47,35 +48,48 @@ def configure(self): def layout(self): basic_layout(self, src_folder="src") - def requirements(self): - if not self._has_build_profile: - self.requires("hwdata/0.374") - def validate(self): if not self.settings.os in ["FreeBSD", "Linux"]: raise ConanInvalidConfiguration(f"{self.ref} is not supported on {self.settings.os}") def build_requirements(self): - if self._has_build_profile: - self.tool_requires("hwdata/0.374") + self.tool_requires("hwdata/0.376") self.tool_requires("meson/1.2.3") - if not self.conf.get("tools.gnu:pkg_config", default=False, check_type=str): + if not self.conf.get("tools.gnu:pkg_config", check_type=str): self.tool_requires("pkgconf/2.0.3") def source(self): get(self, **self.conan_data["sources"][self.version], strip_root=True) def generate(self): + env = VirtualBuildEnv(self) + env.generate() tc = MesonToolchain(self) if cross_building(self): + # https://mesonbuild.com/Builtin-options.html#specifying-options-per-machine tc.project_options["build.pkg_config_path"] = self.generators_folder tc.generate() - pkg_config_deps = PkgConfigDeps(self) + if self._has_build_profile: + pkg_config_deps = PkgConfigDeps(self) pkg_config_deps.build_context_activated = ["hwdata"] - pkg_config_deps.generate() - virtual_build_env = VirtualBuildEnv(self) - virtual_build_env.generate() + pkg_config_deps.generate() + else: + # Manually generate pkgconfig file of hwdata since + # PkgConfigDeps.build_context_activated can't work with legacy 1 profile. + # We must use legacy conan v1 deps_cpp_info because self.dependencies doesn't + # contain build requirements when using 1 profile. + hwdata_prefix = self.deps_cpp_info["hwdata"].rootpath + hwdata_version = self.deps_cpp_info["hwdata"].version + hwdata_pkg_content = textwrap.dedent(f"""\ + prefix={hwdata_prefix} + datadir=${{prefix}}/res + pkgdatadir=${{datadir}}/hwdata + Name: hwdata + Description: Hardware identification and configuration data + Version: {hwdata_version} + """) + save(self, os.path.join(self.generators_folder, "hwdata.pc"), hwdata_pkg_content) def _patch_sources(self): replace_in_file(self, os.path.join(self.source_folder, "meson.build"), "subdir('test')", "# subdir('test')") From 4c925ccd5f6d179d3ebce513fd9bba30d9987e56 Mon Sep 17 00:00:00 2001 From: SpaceIm <30052553+SpaceIm@users.noreply.github.com> Date: Sun, 19 Nov 2023 18:37:55 +0300 Subject: [PATCH 2/3] simplify _has_build_profile --- recipes/libdisplay-info/all/conanfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libdisplay-info/all/conanfile.py b/recipes/libdisplay-info/all/conanfile.py index 79102c89fbab9..b9babe522a834 100644 --- a/recipes/libdisplay-info/all/conanfile.py +++ b/recipes/libdisplay-info/all/conanfile.py @@ -33,7 +33,7 @@ class LibdisplayInfoConan(ConanFile): @property def _has_build_profile(self): - return getattr(self, "settings_build", None) + return hasattr(self, "settings_build") def config_options(self): if self.settings.os == "Windows": From c48fe138e81378ecbcf6cb443bb4315edfdf2ed7 Mon Sep 17 00:00:00 2001 From: PerseoGI Date: Wed, 20 Nov 2024 16:43:19 +0100 Subject: [PATCH 3/3] Some updates --- recipes/libdisplay-info/all/conanfile.py | 45 ++++++------------------ 1 file changed, 10 insertions(+), 35 deletions(-) diff --git a/recipes/libdisplay-info/all/conanfile.py b/recipes/libdisplay-info/all/conanfile.py index b9babe522a834..45fbfde532ed8 100644 --- a/recipes/libdisplay-info/all/conanfile.py +++ b/recipes/libdisplay-info/all/conanfile.py @@ -2,20 +2,19 @@ from conan.errors import ConanInvalidConfiguration from conan.tools.build import cross_building from conan.tools.env import VirtualBuildEnv -from conan.tools.files import copy, get, replace_in_file, rm, rmdir, save +from conan.tools.files import copy, get, replace_in_file, rm, rmdir from conan.tools.gnu import PkgConfigDeps from conan.tools.layout import basic_layout from conan.tools.meson import Meson, MesonToolchain import os -import textwrap -required_conan_version = ">=1.53.0" +required_conan_version = ">=2.0.9" class LibdisplayInfoConan(ConanFile): name = "libdisplay-info" - description = "EDID and DisplayID library." + description = "EDID and DisplayID library" license = "MIT" url = "https://github.com/conan-io/conan-center-index" homepage = "https://gitlab.freedesktop.org/emersion/libdisplay-info" @@ -30,14 +29,7 @@ class LibdisplayInfoConan(ConanFile): "shared": False, "fPIC": True, } - - @property - def _has_build_profile(self): - return hasattr(self, "settings_build") - - def config_options(self): - if self.settings.os == "Windows": - del self.options.fPIC + implements = ["auto_shared_fpic"] def configure(self): if self.options.shared: @@ -54,9 +46,9 @@ def validate(self): def build_requirements(self): self.tool_requires("hwdata/0.376") - self.tool_requires("meson/1.2.3") - if not self.conf.get("tools.gnu:pkg_config", check_type=str): - self.tool_requires("pkgconf/2.0.3") + self.tool_requires("meson/[>=1.2.3 <2]") + if not self.conf.get("tools.gnu:pkg_config", default=False, check_type=str): + self.tool_requires("pkgconf/[>=2.2 <3]") def source(self): get(self, **self.conan_data["sources"][self.version], strip_root=True) @@ -70,26 +62,9 @@ def generate(self): tc.project_options["build.pkg_config_path"] = self.generators_folder tc.generate() - if self._has_build_profile: - pkg_config_deps = PkgConfigDeps(self) - pkg_config_deps.build_context_activated = ["hwdata"] - pkg_config_deps.generate() - else: - # Manually generate pkgconfig file of hwdata since - # PkgConfigDeps.build_context_activated can't work with legacy 1 profile. - # We must use legacy conan v1 deps_cpp_info because self.dependencies doesn't - # contain build requirements when using 1 profile. - hwdata_prefix = self.deps_cpp_info["hwdata"].rootpath - hwdata_version = self.deps_cpp_info["hwdata"].version - hwdata_pkg_content = textwrap.dedent(f"""\ - prefix={hwdata_prefix} - datadir=${{prefix}}/res - pkgdatadir=${{datadir}}/hwdata - Name: hwdata - Description: Hardware identification and configuration data - Version: {hwdata_version} - """) - save(self, os.path.join(self.generators_folder, "hwdata.pc"), hwdata_pkg_content) + pkg_config_deps = PkgConfigDeps(self) + pkg_config_deps.build_context_activated = ["hwdata"] + pkg_config_deps.generate() def _patch_sources(self): replace_in_file(self, os.path.join(self.source_folder, "meson.build"), "subdir('test')", "# subdir('test')")