diff --git a/kiwixbuild/dependencies/__init__.py b/kiwixbuild/dependencies/__init__.py index 7a45018f..60697b14 100644 --- a/kiwixbuild/dependencies/__init__.py +++ b/kiwixbuild/dependencies/__init__.py @@ -1,6 +1,7 @@ from .base import * from . import ( all_dependencies, + boostregex, tc_android_ndk, aria2, tc_armhf, diff --git a/kiwixbuild/dependencies/all_dependencies.py b/kiwixbuild/dependencies/all_dependencies.py index 3a364c70..03f36b17 100644 --- a/kiwixbuild/dependencies/all_dependencies.py +++ b/kiwixbuild/dependencies/all_dependencies.py @@ -23,6 +23,8 @@ def get_dependencies(cls, configInfo, allDeps): "xapian-core", "zim-testing-suite", "icu4c", + "boostregex", + "docoptcpp" ] if not configInfo.name.endswith("_dyn"): diff --git a/kiwixbuild/dependencies/boostregex.py b/kiwixbuild/dependencies/boostregex.py new file mode 100644 index 00000000..db31efb4 --- /dev/null +++ b/kiwixbuild/dependencies/boostregex.py @@ -0,0 +1,27 @@ +from .base import Dependency, ReleaseDownload, Builder as BaseBuilder + +from kiwixbuild.utils import Remotefile, pj +from shutil import copytree + + +class BoostRegex(Dependency): + name = "boostregex" + + class Source(ReleaseDownload): + archive = Remotefile( + "regex-boost-1.86.0.zip", + "", + "https://codeload.github.com/boostorg/regex/zip/refs/tags/boost-1.86.0", + ) + + class Builder(BaseBuilder): + def build(self): + self.command("copy_headers", self._copy_headers) + + def _copy_headers(self, context): + context.try_skip(self.build_path) + copytree( + pj(self.source_path, "include", "boost"), + pj(self.buildEnv.install_dir, "include", "boost"), + dirs_exist_ok=True, + ) \ No newline at end of file diff --git a/kiwixbuild/dependencies/docoptcpp.py b/kiwixbuild/dependencies/docoptcpp.py index 7a0dbc6f..0f30cd2b 100644 --- a/kiwixbuild/dependencies/docoptcpp.py +++ b/kiwixbuild/dependencies/docoptcpp.py @@ -1,7 +1,7 @@ from .base import Dependency, ReleaseDownload, MesonBuilder from kiwixbuild.utils import Remotefile - +from kiwixbuild._global import neutralEnv class docoptcpp(Dependency): name = "docoptcpp" @@ -21,6 +21,14 @@ class Source(ReleaseDownload): ) archives = [src_archive, meson_archive] - patches = ["docopt_meson_install_pkgconfig.patch"] + patches = [ + "docopt_meson_install_pkgconfig.patch", + "docopt_meson_use_boostregex.patch", + ] - Builder = MesonBuilder + class Builder(MesonBuilder): + @classmethod + def get_dependencies(cls, configInfo, allDeps): + if neutralEnv("distname") == "Windows": + return ["boostregex"] + return [] \ No newline at end of file diff --git a/kiwixbuild/patches/docopt_meson_use_boostregex.patch b/kiwixbuild/patches/docopt_meson_use_boostregex.patch new file mode 100644 index 00000000..a1343a4f --- /dev/null +++ b/kiwixbuild/patches/docopt_meson_use_boostregex.patch @@ -0,0 +1,14 @@ +diff -ur docoptcpp-0.6.2/meson.build docoptcpp-0.6.2_boostregex/meson.build +--- docoptcpp-0.6.2/meson.build 2024-08-28 17:22:46.256716100 +0200 ++++ docoptcpp-0.6.2_boostregex/meson.build 2024-08-28 17:02:47.932681000 +0200 +@@ -8,6 +8,10 @@ + add_project_arguments('-DDOCOPT_DLL', '-DDOCOPT_EXPORTS', language: 'cpp') + endif + ++if cpp.get_id() =='msvc' ++ add_project_arguments('-DDOCTOPT_USE_BOOST_REGEX', '-DBOOST_REGEX_STANDALONE', language: 'cpp') ++endif ++ + # bug with missing dllexport. fixed in next version. + if cpp.get_argument_syntax() == 'msvc' + doclib = static_library('docopt', 'docopt.cpp', install: true)