Как собрать набор модулей jhbuild с произвольной командой (цепочкой)?
Некоторые проекты используют собственные команды сборки, такие как boost
библиотека с использованием b2
Команда генерируется bootstrap.sh
Скрипт поставляется в архиве. Это не зависимости GNOME и jhbuild
не обязательно предназначен для решения таких задач сборки.
Я пытаюсь использовать jhbuild
для произвольных деревьев зависимостей и просматривал документацию по синтаксису модуля, где autotools
модуль с этим autogen-template
Атрибут, по-видимому, является лишь одним, что соответствует необходимости иметь возможность создавать произвольные модули, например
autogen-template="bash -c 'cd %(srcdir)s && ./custom-build-command build && some-other-build-command'"
Там нет проблем, когда skip-install
установлен в true
, но затем модуль перестраивается для каждого использования в качестве зависимости, что делает набор модулей менее гибким.
Опуская skip-install
причины make
а также make install
чтобы быть вызванным в каталоге сборки, который не удается, потому что нет Makefile
присутствует, однако это можно компенсировать, указав makeargs="--version"
а также makeinstallargs="--version"
, Однако тогда jhbuild
внутренние процедуры после установки вызывают сбои в виде
make DESTDIR=/home/gnome/jhbuild/install/_jhbuild/root-example --version
rc = jhbuild.commands.run(command, config, args, help=lambda: print_help(parser))
File "/home/gnome/jhbuild/checkout/jhbuild/jhbuild/commands/__init__.py", line 191, in run
return cmd.execute(config, args, help)
File "/home/gnome/jhbuild/checkout/jhbuild/jhbuild/commands/__init__.py", line 53, in execute
return self.run(config, options, args, help)
File "/home/gnome/jhbuild/checkout/jhbuild/jhbuild/commands/base.py", line 268, in run
return build.build()
File "/home/gnome/jhbuild/checkout/jhbuild/jhbuild/frontends/buildscript.py", line 163, in build
error, altphases = module.run_phase(self, phase)
File "/home/gnome/jhbuild/checkout/jhbuild/jhbuild/modtypes/__init__.py", line 421, in run_phase
method(buildscript)
File "/home/gnome/jhbuild/checkout/jhbuild/jhbuild/modtypes/autotools.py", line 322, in do_install
self.process_install(buildscript, self.get_revision())
File "/home/gnome/jhbuild/checkout/jhbuild/jhbuild/modtypes/__init__.py", line 317, in process_install
new_contents = fileutils.accumulate_dirtree_contents(destdir_prefix)
File "/home/gnome/jhbuild/checkout/jhbuild/jhbuild/utils/fileutils.py", line 45, in accumulate_dirtree_contents
_accumulate_dirtree_contents_recurse(path, contents)
File "/home/gnome/jhbuild/checkout/jhbuild/jhbuild/utils/fileutils.py", line 27, in _accumulate_dirtree_contents_recurse
names = os.listdir(path)
OSError: [Errno 2] No such file or directory: '/home/gnome/jhbuild/install/_jhbuild/root-example/home/gnome/jhbuild/install'
где даже создание /home/gnome/jhbuild/install/_jhbuild/root-example/home/gnome/jhbuild/install
в autogen-template
с mkdir -p %(prefix)s/_jhbuild/root-[id]%(prefix)s
не избежать этого
Я использую самую последнюю версию 3.15.92-1957-g60b3bc55, созданную из исходного кода.