diff --git a/dependencies.py b/dependencies.py index 1120763..f0ec13f 100644 --- a/dependencies.py +++ b/dependencies.py @@ -224,26 +224,49 @@ class Icu_cross_compile(Icu): return super().configure_option + " --with-cross-build=" + Icu_native.builder.build_path +class OpenzimSource(GitClone): + git_remote = "https://gerrit.wikimedia.org/r/p/openzim.git" + git_dir = "openzim" + + def _post_prepare_script(self, context): + context.try_skip(self.git_path) + command = "./autogen.sh" + self.buildEnv.run_command(command, pj(self.git_path, 'zimwriterfs'), context) + + class Zimlib(Dependency): name = "zimlib" - class Source(GitClone): - #git_remote = "https://gerrit.wikimedia.org/r/p/openzim.git" - git_remote = "https://github.com/mgautierfr/openzim" - git_dir = "openzim" - git_ref = "meson" + Source = OpenzimSource class Builder(MesonBuilder): subsource_dir = "zimlib" -class Kiwixlib(Dependency): - name = "kiwix-lib" - dependencies = ['zlib', 'lzma'] +class Zimwriterfs(Dependency): + name = "zimwriterfs" + extra_packages = ['file', 'gumbo'] @property def dependencies(self): - base_dependencies = ["Xapian", "Pugixml", "Zimlib"] + base_dependencies = ['Zimlib', 'zlib', 'lzma', 'Xapian'] + if self.buildEnv.platform_info.build != 'native': + return base_dependencies + ["Icu_cross_compile"] + else: + return base_dependencies + ["Icu"] + + Source = OpenzimSource + + class Builder(MakeBuilder): + subsource_dir = "zimwriterfs" + + +class Kiwixlib(Dependency): + name = "kiwix-lib" + + @property + def dependencies(self): + base_dependencies = ["Xapian", "Pugixml", "Zimlib", "zlib", "lzma"] if self.buildEnv.platform_info.build != 'android': base_dependencies += ['CTPP2'] if self.buildEnv.platform_info.build != 'native': diff --git a/dependency_utils.py b/dependency_utils.py index 677d638..bf78d0c 100644 --- a/dependency_utils.py +++ b/dependency_utils.py @@ -144,6 +144,8 @@ class GitClone(Source): def prepare(self): self.command('gitclone', self._git_clone) self.command('gitupdate', self._git_update) + if hasattr(self, '_post_prepare_script'): + self.command('post_prepare_script', self._post_prepare_script) class Builder: diff --git a/kiwix-build.py b/kiwix-build.py index 5494179..c018fd9 100755 --- a/kiwix-build.py +++ b/kiwix-build.py @@ -82,6 +82,8 @@ PACKAGE_NAME_MAPPERS = { 'lzma': ['xz-devel'], 'icu4c': None, 'zimlib': None, + 'file' : ['file-devel'], + 'gumbo' : ['gumbo-parser-devel'], }, 'fedora_native_static': { 'COMMON': ['gcc-c++', 'cmake', 'automake', 'glibc-static', 'libstdc++-static', 'ccache'], @@ -364,7 +366,9 @@ class BuildEnv: ]) env['CPPFLAGS'] = " ".join(['-I'+pj(self.install_dir, 'include'), env['CPPFLAGS']]) - env['LDFLAGS'] = " ".join(['-L'+pj(self.install_dir, 'lib'), env['LDFLAGS']]) + env['LDFLAGS'] = " ".join(['-L'+pj(self.install_dir, 'lib'), + '-L'+pj(self.install_dir, 'lib64'), + env['LDFLAGS']]) return env def run_command(self, command, cwd, context, env=None, input=None, cross_path_only=False): @@ -382,6 +386,7 @@ class BuildEnv: if not self.options.verbose: log = open(context.log_file, 'w') print("run command '{}'".format(command), file=log) + print("current directory is '{}'".format(cwd), file=log) print("env is :", file=log) for k, v in env.items(): print(" {} : {!r}".format(k, v), file=log) @@ -449,6 +454,10 @@ class BuildEnv: if packages: packages_list += packages dep.skip = True + for dep in self.targetsDict.values(): + packages = getattr(dep, 'extra_packages', []) + for package in packages: + packages_list += package_name_mapper.get(package, []) if os.path.exists(autoskip_file): print("SKIP") return