From acee36b9c1557eab9d04fa4f07f4a1034d5d88c2 Mon Sep 17 00:00:00 2001 From: Eric Lemanissier Date: Wed, 4 Nov 2020 17:25:20 +0100 Subject: [PATCH 1/8] add pango/1.47.0 --- recipes/pango/all/conandata.yml | 4 + recipes/pango/all/conanfile.py | 139 ++++++++++++++++++ recipes/pango/all/test_package/CMakeLists.txt | 9 ++ recipes/pango/all/test_package/conanfile.py | 17 +++ .../pango/all/test_package/test_package.cpp | 8 + recipes/pango/config.yml | 3 + 6 files changed, 180 insertions(+) create mode 100644 recipes/pango/all/conandata.yml create mode 100644 recipes/pango/all/conanfile.py create mode 100644 recipes/pango/all/test_package/CMakeLists.txt create mode 100644 recipes/pango/all/test_package/conanfile.py create mode 100644 recipes/pango/all/test_package/test_package.cpp create mode 100644 recipes/pango/config.yml diff --git a/recipes/pango/all/conandata.yml b/recipes/pango/all/conandata.yml new file mode 100644 index 0000000000000..2a7f162703827 --- /dev/null +++ b/recipes/pango/all/conandata.yml @@ -0,0 +1,4 @@ +sources: + "1.47.0": + sha256: "d624f9701f2e59a8283ebc01f3adcaed892a09d9743ce6e8ad82f27913309902" + url: "https://github.com/GNOME/pango/archive/1.47.0.tar.gz" diff --git a/recipes/pango/all/conanfile.py b/recipes/pango/all/conanfile.py new file mode 100644 index 0000000000000..0b76ff7927255 --- /dev/null +++ b/recipes/pango/all/conanfile.py @@ -0,0 +1,139 @@ +import os +import shutil +import glob + +from conans import ConanFile, tools, Meson, VisualStudioBuildEnvironment + + +class PangoConan(ConanFile): + name = "pango" + license = "LGPL-2.0-and-later" + url = "https://github.com/conan-io/conan-center-index" + description = "Internationalized text layout and rendering library" + homepage = "https://www.pango.org/" + topics = ("conan", "fontconfig", "fonts", "freedesktop") + settings = "os", "compiler", "build_type", "arch" + options = {"shared": [True, False], "fPIC": [True, False]} + default_options = {"shared": False, "fPIC": True} + generators = "pkg_config" + _source_subfolder = "source_subfolder" + _autotools = None + + @property + def _is_msvc(self): + return self.settings.compiler == "Visual Studio" + + def config_option(self): + if self.settings.os == "Windows": + del self.options.fPIC + + def configure(self): + del self.settings.compiler.libcxx + del self.settings.compiler.cppstd + + def build_requirements(self): + if not tools.which("pkg-config"): + self.build_requires("pkgconf/1.7.3") + self.build_requires("meson/0.54.2") + + def requirements(self): + if self.settings.os != "Windows": + self.requires("fontconfig/2.13.91") + if self.settings.os == "Linux": + self.requires("xorg/system") + self.requires("cairo/1.17.2") + self.requires("harfbuzz/2.7.2") + self.requires("glib/2.67.0") + self.requires("fribidi/1.0.9") + + def source(self): + tools.get(**self.conan_data["sources"][self.version]) + extrated_dir = self.name + "-" + self.version + os.rename(extrated_dir, self._source_subfolder) + + def _configure_meson(self): + defs = dict() + defs["introspection"] = "false" + meson = Meson(self) + meson.configure(build_folder="build", source_folder=self._source_subfolder, defs=defs, args=['--wrap-mode=nofallback']) + return meson + + def build(self): + meson_build = os.path.join(self._source_subfolder, "meson.build") + tools.replace_in_file(meson_build, "subdir('tests')", "") + tools.replace_in_file(meson_build, "subdir('tools')", "") + tools.replace_in_file(meson_build, "subdir('utils')", "") + tools.replace_in_file(meson_build, "subdir('examples')", "") + with tools.environment_append(VisualStudioBuildEnvironment(self).vars) if self._is_msvc else tools.no_op(): + meson = self._configure_meson() + meson.build() + + def package(self): + self.copy(pattern="COPYING", dst="licenses", src=self._source_subfolder) + with tools.environment_append(VisualStudioBuildEnvironment(self).vars) if self._is_msvc else tools.no_op(): + meson = self._configure_meson() + meson.install() + if self.settings.compiler == "Visual Studio": + with tools.chdir(os.path.join(self.package_folder, "lib")): + for filename_old in glob.glob("*.a"): + filename_new = filename_old[3:-2] + ".lib" + self.output.info("rename %s into %s" % (filename_old, filename_new)) + shutil.move(filename_old, filename_new) + tools.rmdir(os.path.join(self.package_folder, "lib", "pkgconfig")) + + def package_info(self): + self.cpp_info.components['pango_'].libs = ['pango-1.0'] + self.cpp_info.components['pango_'].names['pkg_config'] = ['pango'] + if self.settings.os == "Linux": + self.cpp_info.components['pango_'].system_libs.append("m") + self.cpp_info.components['pango_'].requires.append('glib::glib-2.0') + self.cpp_info.components['pango_'].requires.append('glib::gobject-2.0') + self.cpp_info.components['pango_'].requires.append('glib::gio-2.0') + self.cpp_info.components['pango_'].requires.append('fribidi::fribidi') + self.cpp_info.components['pango_'].requires.append('harfbuzz::harfbuzz') + if self.settings.os != "Windows": + self.cpp_info.components['pango_'].requires.append('fontconfig::fontconfig') + if self.settings.os == "Linux": + self.cpp_info.components['pango_'].requires.append('xorg::xrender') + self.cpp_info.components['pango_'].requires.append('xorg::xft') + self.cpp_info.components['pango_'].requires.append('cairo::cairo_') + self.cpp_info.components['pango_'].includedirs = [os.path.join(self.package_folder, "include", "pango-1.0")] + + if self.settings.os != "Windows": + self.cpp_info.components['pangoft2'].libs = ['pangoft2-1.0'] + self.cpp_info.components['pangoft2'].names['pkg_config'] = ['pangoft2'] + self.cpp_info.components['pangoft2'].requires = ['pango_'] + self.cpp_info.components['pangoft2'].includedirs = [os.path.join(self.package_folder, "include", "pango-1.0")] + + self.cpp_info.components['pangofc'].names['pkg_config'] = ['pangofc'] + self.cpp_info.components['pangofc'].requires = ['pangoft2'] + + self.cpp_info.components['pangoroot'].names['pkg_config'] = ['pangoroot'] + self.cpp_info.components['pangoroot'].requires = ['pangoft2'] + + if self.settings.os == "Linux": + self.cpp_info.components['pangoxft'].libs = ['pangoxft-1.0'] + self.cpp_info.components['pangoxft'].names['pkg_config'] = ['pangoxft'] + self.cpp_info.components['pangoxft'].requires = ['pango_', 'pangoft2'] + self.cpp_info.components['pangoxft'].includedirs = [os.path.join(self.package_folder, "include", "pango-1.0")] + + if self.settings.os == "Windows": + self.cpp_info.components['pangowin32'].libs = ['pangowin32-1.0'] + self.cpp_info.components['pangowin32'].names['pkg_config'] = ['pangowin32'] + self.cpp_info.components['pangowin32'].requires = ['pango_'] + self.cpp_info.components['pangowin32'].system_libs.append('gdi32') + + self.cpp_info.components['pangocairo'].libs = ['pangocairo-1.0'] + self.cpp_info.components['pangocairo'].names['pkg_config'] = ['pangocairo'] + self.cpp_info.components['pangocairo'].requires = ['pango_'] + if self.settings.os != "Windows": + self.cpp_info.components['pangocairo'].requires.append('pangoft2') + if self.settings.os == "Windows": + self.cpp_info.components['pangocairo'].requires.append('pangowin32') + self.cpp_info.components['pangocairo'].system_libs.append('gdi32') + self.cpp_info.components['pangocairo'].includedirs = [os.path.join(self.package_folder, "include", "pango-1.0")] + + + + self.env_info.PATH.append(os.path.join(self.package_folder, 'bin')) + diff --git a/recipes/pango/all/test_package/CMakeLists.txt b/recipes/pango/all/test_package/CMakeLists.txt new file mode 100644 index 0000000000000..e97ecc6c7a569 --- /dev/null +++ b/recipes/pango/all/test_package/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.1) +project(test_package) + + +include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +conan_basic_setup() + +add_executable(${PROJECT_NAME} test_package.cpp) +target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS}) diff --git a/recipes/pango/all/test_package/conanfile.py b/recipes/pango/all/test_package/conanfile.py new file mode 100644 index 0000000000000..bd7165a553cf4 --- /dev/null +++ b/recipes/pango/all/test_package/conanfile.py @@ -0,0 +1,17 @@ +from conans import ConanFile, CMake, tools +import os + + +class TestPackageConan(ConanFile): + settings = "os", "compiler", "build_type", "arch" + generators = "cmake" + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def test(self): + if not tools.cross_building(self.settings): + bin_path = os.path.join("bin", "test_package") + self.run(bin_path, run_environment=True) diff --git a/recipes/pango/all/test_package/test_package.cpp b/recipes/pango/all/test_package/test_package.cpp new file mode 100644 index 0000000000000..17022445e9087 --- /dev/null +++ b/recipes/pango/all/test_package/test_package.cpp @@ -0,0 +1,8 @@ +#include +#include + +int main() +{ + std::cout << "pango version: " << pango_version_string() << std::endl; + return 0; +} diff --git a/recipes/pango/config.yml b/recipes/pango/config.yml new file mode 100644 index 0000000000000..d0b13627dec2d --- /dev/null +++ b/recipes/pango/config.yml @@ -0,0 +1,3 @@ +versions: + "1.47.0": + folder: all From 9bb3d725eebc0d4d3dce6aa12a87b88853795419 Mon Sep 17 00:00:00 2001 From: Eric Lemanissier Date: Mon, 9 Nov 2020 09:15:46 +0100 Subject: [PATCH 2/8] pango 1.48.0 --- recipes/pango/all/conandata.yml | 6 +++--- recipes/pango/all/conanfile.py | 2 +- recipes/pango/config.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/recipes/pango/all/conandata.yml b/recipes/pango/all/conandata.yml index 2a7f162703827..c481af8833841 100644 --- a/recipes/pango/all/conandata.yml +++ b/recipes/pango/all/conandata.yml @@ -1,4 +1,4 @@ sources: - "1.47.0": - sha256: "d624f9701f2e59a8283ebc01f3adcaed892a09d9743ce6e8ad82f27913309902" - url: "https://github.com/GNOME/pango/archive/1.47.0.tar.gz" + "1.48.0": + sha256: "d76513ac89341883320bd5ea063ec7005e70d962deedc064c62d6f17f6769b88" + url: "https://github.com/GNOME/pango/archive/1.48.0.tar.gz" diff --git a/recipes/pango/all/conanfile.py b/recipes/pango/all/conanfile.py index 0b76ff7927255..868e6a94e1506 100644 --- a/recipes/pango/all/conanfile.py +++ b/recipes/pango/all/conanfile.py @@ -53,7 +53,7 @@ def source(self): def _configure_meson(self): defs = dict() - defs["introspection"] = "false" + defs["introspection"] = "disabled" meson = Meson(self) meson.configure(build_folder="build", source_folder=self._source_subfolder, defs=defs, args=['--wrap-mode=nofallback']) return meson diff --git a/recipes/pango/config.yml b/recipes/pango/config.yml index d0b13627dec2d..37a300df5a7a3 100644 --- a/recipes/pango/config.yml +++ b/recipes/pango/config.yml @@ -1,3 +1,3 @@ versions: - "1.47.0": + "1.48.0": folder: all From 87a7978fe7278c27cabab649540241b389c2e80e Mon Sep 17 00:00:00 2001 From: Eric Lemanissier Date: Wed, 18 Nov 2020 16:44:32 +0100 Subject: [PATCH 3/8] typo --- recipes/pango/all/conanfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/pango/all/conanfile.py b/recipes/pango/all/conanfile.py index 868e6a94e1506..4670ca9dea2d9 100644 --- a/recipes/pango/all/conanfile.py +++ b/recipes/pango/all/conanfile.py @@ -23,7 +23,7 @@ class PangoConan(ConanFile): def _is_msvc(self): return self.settings.compiler == "Visual Studio" - def config_option(self): + def config_options(self): if self.settings.os == "Windows": del self.options.fPIC From 6e4f3aef654cf191ef01ddf4beb3a728204e60f8 Mon Sep 17 00:00:00 2001 From: bincrafters-user Date: Wed, 18 Nov 2020 15:45:37 +0000 Subject: [PATCH 4/8] pango: Update Conan conventions Automatically created by bincrafters-conventions 0.29.0 --- recipes/pango/all/conanfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/pango/all/conanfile.py b/recipes/pango/all/conanfile.py index 4670ca9dea2d9..972e07161472f 100644 --- a/recipes/pango/all/conanfile.py +++ b/recipes/pango/all/conanfile.py @@ -38,7 +38,7 @@ def build_requirements(self): def requirements(self): if self.settings.os != "Windows": - self.requires("fontconfig/2.13.91") + self.requires("fontconfig/2.13.92") if self.settings.os == "Linux": self.requires("xorg/system") self.requires("cairo/1.17.2") From 7cf5a84a2e16527cf1902ecd753eeec6b6f64cdb Mon Sep 17 00:00:00 2001 From: Eric Lemanissier Date: Wed, 18 Nov 2020 20:39:19 +0100 Subject: [PATCH 5/8] remove pdb files --- recipes/pango/all/conanfile.py | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/pango/all/conanfile.py b/recipes/pango/all/conanfile.py index 972e07161472f..b4edaa8c1ecd1 100644 --- a/recipes/pango/all/conanfile.py +++ b/recipes/pango/all/conanfile.py @@ -80,6 +80,7 @@ def package(self): self.output.info("rename %s into %s" % (filename_old, filename_new)) shutil.move(filename_old, filename_new) tools.rmdir(os.path.join(self.package_folder, "lib", "pkgconfig")) + tools.remove_files_by_mask(self.package_folder, "*.pdb") def package_info(self): self.cpp_info.components['pango_'].libs = ['pango-1.0'] From f901017be2f706fb4b7bf071b4afa964077c20cf Mon Sep 17 00:00:00 2001 From: Eric Lemanissier Date: Fri, 20 Nov 2020 15:22:16 +0100 Subject: [PATCH 6/8] fix typo in package_info --- recipes/pango/all/conanfile.py | 14 +++++++------- recipes/pango/all/test_package/conanfile.py | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/recipes/pango/all/conanfile.py b/recipes/pango/all/conanfile.py index b4edaa8c1ecd1..d829b7210d00d 100644 --- a/recipes/pango/all/conanfile.py +++ b/recipes/pango/all/conanfile.py @@ -84,7 +84,7 @@ def package(self): def package_info(self): self.cpp_info.components['pango_'].libs = ['pango-1.0'] - self.cpp_info.components['pango_'].names['pkg_config'] = ['pango'] + self.cpp_info.components['pango_'].names['pkg_config'] = 'pango' if self.settings.os == "Linux": self.cpp_info.components['pango_'].system_libs.append("m") self.cpp_info.components['pango_'].requires.append('glib::glib-2.0') @@ -102,30 +102,30 @@ def package_info(self): if self.settings.os != "Windows": self.cpp_info.components['pangoft2'].libs = ['pangoft2-1.0'] - self.cpp_info.components['pangoft2'].names['pkg_config'] = ['pangoft2'] + self.cpp_info.components['pangoft2'].names['pkg_config'] = 'pangoft2' self.cpp_info.components['pangoft2'].requires = ['pango_'] self.cpp_info.components['pangoft2'].includedirs = [os.path.join(self.package_folder, "include", "pango-1.0")] - self.cpp_info.components['pangofc'].names['pkg_config'] = ['pangofc'] + self.cpp_info.components['pangofc'].names['pkg_config'] = 'pangofc' self.cpp_info.components['pangofc'].requires = ['pangoft2'] - self.cpp_info.components['pangoroot'].names['pkg_config'] = ['pangoroot'] + self.cpp_info.components['pangoroot'].names['pkg_config'] = 'pangoroot' self.cpp_info.components['pangoroot'].requires = ['pangoft2'] if self.settings.os == "Linux": self.cpp_info.components['pangoxft'].libs = ['pangoxft-1.0'] - self.cpp_info.components['pangoxft'].names['pkg_config'] = ['pangoxft'] + self.cpp_info.components['pangoxft'].names['pkg_config'] = 'pangoxft' self.cpp_info.components['pangoxft'].requires = ['pango_', 'pangoft2'] self.cpp_info.components['pangoxft'].includedirs = [os.path.join(self.package_folder, "include", "pango-1.0")] if self.settings.os == "Windows": self.cpp_info.components['pangowin32'].libs = ['pangowin32-1.0'] - self.cpp_info.components['pangowin32'].names['pkg_config'] = ['pangowin32'] + self.cpp_info.components['pangowin32'].names['pkg_config'] = 'pangowin32' self.cpp_info.components['pangowin32'].requires = ['pango_'] self.cpp_info.components['pangowin32'].system_libs.append('gdi32') self.cpp_info.components['pangocairo'].libs = ['pangocairo-1.0'] - self.cpp_info.components['pangocairo'].names['pkg_config'] = ['pangocairo'] + self.cpp_info.components['pangocairo'].names['pkg_config'] = 'pangocairo' self.cpp_info.components['pangocairo'].requires = ['pango_'] if self.settings.os != "Windows": self.cpp_info.components['pangocairo'].requires.append('pangoft2') diff --git a/recipes/pango/all/test_package/conanfile.py b/recipes/pango/all/test_package/conanfile.py index bd7165a553cf4..4de88a711154a 100644 --- a/recipes/pango/all/test_package/conanfile.py +++ b/recipes/pango/all/test_package/conanfile.py @@ -4,7 +4,7 @@ class TestPackageConan(ConanFile): settings = "os", "compiler", "build_type", "arch" - generators = "cmake" + generators = "cmake", "pkg_config" def build(self): cmake = CMake(self) From d9a1d451bfa9102923cda113586e7177005afd04 Mon Sep 17 00:00:00 2001 From: ericLemanissier Date: Fri, 20 Nov 2020 17:02:41 +0100 Subject: [PATCH 7/8] Update recipes/pango/all/conanfile.py Co-authored-by: Uilian Ries --- recipes/pango/all/conanfile.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/recipes/pango/all/conanfile.py b/recipes/pango/all/conanfile.py index d829b7210d00d..4950c8a68d8a0 100644 --- a/recipes/pango/all/conanfile.py +++ b/recipes/pango/all/conanfile.py @@ -32,8 +32,7 @@ def configure(self): del self.settings.compiler.cppstd def build_requirements(self): - if not tools.which("pkg-config"): - self.build_requires("pkgconf/1.7.3") + self.build_requires("pkgconf/1.7.3") self.build_requires("meson/0.54.2") def requirements(self): @@ -137,4 +136,3 @@ def package_info(self): self.env_info.PATH.append(os.path.join(self.package_folder, 'bin')) - From 4483cad43f21bdeb07fe644054c3e8cd9074ff70 Mon Sep 17 00:00:00 2001 From: ericLemanissier Date: Fri, 20 Nov 2020 18:04:22 +0100 Subject: [PATCH 8/8] Update conanfile.py --- recipes/pango/all/conanfile.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/recipes/pango/all/conanfile.py b/recipes/pango/all/conanfile.py index 4950c8a68d8a0..8a07b56b096c1 100644 --- a/recipes/pango/all/conanfile.py +++ b/recipes/pango/all/conanfile.py @@ -16,8 +16,15 @@ class PangoConan(ConanFile): options = {"shared": [True, False], "fPIC": [True, False]} default_options = {"shared": False, "fPIC": True} generators = "pkg_config" - _source_subfolder = "source_subfolder" _autotools = None + + @property + def _source_subfolder(self): + return "source_subfolder" + + @property + def _build_subfolder(self): + return "build_subfolder" @property def _is_msvc(self): @@ -54,7 +61,7 @@ def _configure_meson(self): defs = dict() defs["introspection"] = "disabled" meson = Meson(self) - meson.configure(build_folder="build", source_folder=self._source_subfolder, defs=defs, args=['--wrap-mode=nofallback']) + meson.configure(build_folder=self._build_subfolder, source_folder=self._source_subfolder, defs=defs, args=['--wrap-mode=nofallback']) return meson def build(self):