I am trying to add Mosquitto (MQTT) as a cheribuild target. This is my current Python script:
from .crosscompileproject import CrossCompileCMakeProject, GitRepositoryfrom ...config.compilation_targets import CompilationTargets
class BuildMqtt(CrossCompileCMakeProject): target = "mqtt" repository = GitRepository("">github.com/.../mosquitto") supported_architectures = CompilationTargets.ALL_FREEBSD_AND_CHERIBSD_TARGETS + [CompilationTargets.NATIVE]
When running ./cheribuild mqtt-morello-purecap to build the target, I run into this error message:
CMake Error at man/CMakeLists.txt:29 (message): xsltproc not found: manpages cannot be built
-- Configuring incomplete, errors occurred!
Looking at the MQTT Git repository here and in the "Building from source" section, I can add the CMake option "WITH_DOCS=no" which disables checking for the optional build dependency xsltproc to generate man pages which I don't need. With these changes my build script now looks like this:
def setup(self): super().setup() self.add_cmake_options(WITH_DOCS=no)
Now when I attempt to run ./cheribuild.py mqtt-morello-purecap again, I am presented with multiple errors:
Traceback (most recent call last): File "./cheribuild.py", line 42, in <module> main() File "/home/ubuntu/cheribuild/pycheribuild/__main__.py", line 258, in main run_and_kill_children_on_exit(real_main) File "/home/ubuntu/cheribuild/pycheribuild/processutils.py", line 771, in run_and_kill_children_on_exit fn() File "/home/ubuntu/cheribuild/pycheribuild/__main__.py", line 248, in real_main target_manager.run(cheri_config) File "/home/ubuntu/cheribuild/pycheribuild/targets.py", line 435, in run target.execute(config) File "/home/ubuntu/cheribuild/pycheribuild/targets.py", line 129, in execute self._do_run(config, msg="Built", func=lambda project: project.process()) File "/home/ubuntu/cheribuild/pycheribuild/targets.py", line 107, in _do_run project.setup() File "/home/ubuntu/cheribuild/pycheribuild/projects/cross/mqtt.py", line 11, in setup self.add_cmake_options(WITH_DOCS=no)NameError: name 'no' is not defined
Any ideas why this section below in particular is occurring? Or any ideas on how to skip the checking for the xsltproc optional dependency?
File "/home/ubuntu/cheribuild/pycheribuild/projects/cross/mqtt.py", line 11, in setupself.add_cmake_options(WITH_DOCS=no)NameError: name 'no' is not defined
It's always been that https://github.com/eclipse/mosquitto/commit/3163cf2d709e7b021867aec2e811331991ad097a. Someone just put the wrong thing in the README, presumably wasn't thinking and assumed it followed the same pattern as all the other options which do use WITH_FOO.
Ah. It's WITH_DOCS for the Makefile, and the README talks about make. For CMake it just says "Equivalent options for enabling/disabling features are available when using the CMake build".
Filed as github.com/.../2272
Thanks for the clarification Jessica :) It seems to build perfectly now