Agustin Benito Bethencourt pushed to branch master at BuildStream / jhbuild2bst
Commits:
-
4d50730e
by Tristan Van Berkom at 2017-11-23T12:00:11Z
-
da778c9a
by Tristan Van Berkom at 2017-12-16T15:40:21Z
4 changed files:
- jhbuild/commands/bst.py
- jhbuild/modtypes/autotools.py
- jhbuild/modtypes/cmake.py
- jhbuild/modtypes/meson.py
Changes:
| ... | ... | @@ -389,6 +389,14 @@ class cmd_bst(Command): |
| 389 | 389 |
for cmd in conf_cmds
|
| 390 | 390 |
]
|
| 391 | 391 |
|
| 392 |
+ # Same as above, but for the conf-local variable
|
|
| 393 |
+ if 'variables' in element:
|
|
| 394 |
+ element_vars = element['variables']
|
|
| 395 |
+ if 'conf-local' in element_vars:
|
|
| 396 |
+ element_vars['conf-local'] = element_vars['conf-local'] \
|
|
| 397 |
+ .replace('--with-systemdsystemunitdir=no', '') \
|
|
| 398 |
+ .replace('--with-log-dir=/usr/var/log/gdm', '') \
|
|
| 399 |
+ .rstrip()
|
|
| 392 | 400 |
|
| 393 | 401 |
# The mm-common module wants to download something at build time
|
| 394 | 402 |
# (which is a no-no, not allowed in buildstream) and this cant be easily
|
| ... | ... | @@ -401,15 +409,15 @@ class cmd_bst(Command): |
| 401 | 409 |
# have to download it (cause we cant anyway), may need to make this
|
| 402 | 410 |
# command more robust when building against a multitude of different
|
| 403 | 411 |
# base rootfs variations.
|
| 404 |
- pre_configure_command = 'cp /usr/share/doc/*/libstdc++/user/libstdc++.tag doctags/'
|
|
| 405 |
- |
|
| 406 |
- # Append --disable-network so that it doesnt try (and fail) to wget it
|
|
| 407 |
- configure_command = element['config']['configure-commands'][0]
|
|
| 408 |
- configure_command += ' --disable-network'
|
|
| 409 |
- element['config']['configure-commands'] = [
|
|
| 410 |
- pre_configure_command,
|
|
| 411 |
- configure_command
|
|
| 412 |
- ]
|
|
| 412 |
+ element_config = get_dict(element, 'config')
|
|
| 413 |
+ element_config['configure-commands'] = {
|
|
| 414 |
+ '(<)': [
|
|
| 415 |
+ 'cp /usr/share/doc/*/libstdc++/user/libstdc++.tag doctags/'
|
|
| 416 |
+ ]
|
|
| 417 |
+ }
|
|
| 418 |
+ |
|
| 419 |
+ variables = get_dict(element, 'variables')
|
|
| 420 |
+ variables['conf-local'] = '--disable-network'
|
|
| 413 | 421 |
|
| 414 | 422 |
# depending on the compiler, libgtop will fail if not given the -std=c99
|
| 415 | 423 |
# option, as it has code which declares variables not at the beginning
|
| ... | ... | @@ -485,12 +493,11 @@ class cmd_bst(Command): |
| 485 | 493 |
# Enable tests in the libosinfo build, otherwise it leaves HAVE_CURL
|
| 486 | 494 |
# undefined and that breaks with newer autotools
|
| 487 | 495 |
elif module.name == 'libosinfo':
|
| 488 |
- element_config = element['config']
|
|
| 489 |
- conf_cmds = element_config['configure-commands']
|
|
| 490 |
- element_config['configure-commands'] = [
|
|
| 491 |
- cmd.replace('--enable-tests=no', '--enable-tests').rstrip()
|
|
| 492 |
- for cmd in conf_cmds
|
|
| 493 |
- ]
|
|
| 496 |
+ if 'variables' in element:
|
|
| 497 |
+ variables = element['variables']
|
|
| 498 |
+ if 'conf-extra' in variables:
|
|
| 499 |
+ variables['conf-extra'] = variables['conf-extra'] \
|
|
| 500 |
+ .replace('--enable-tests=no', '--enable-tests').rstrip()
|
|
| 494 | 501 |
|
| 495 | 502 |
# librsvg is rusty, as such it needs some heavy special casing to
|
| 496 | 503 |
# build with the vendored crates
|
| ... | ... | @@ -503,19 +510,43 @@ class cmd_bst(Command): |
| 503 | 510 |
})
|
| 504 | 511 |
|
| 505 | 512 |
# Prepend some things to configure-commands
|
| 506 |
- element_config = element['config']
|
|
| 507 |
- conf_cmds = element_config['configure-commands']
|
|
| 508 |
- element_config['configure-commands'] = [
|
|
| 513 |
+ element_config = get_dict(element, 'config')
|
|
| 514 |
+ element_config['configure-commands'] = {
|
|
| 515 |
+ '(<)': [
|
|
| 516 |
+ |
|
| 517 |
+ # Copy the vendor directory into the source tree, because:
|
|
| 518 |
+ # https://github.com/nikomatsakis/lalrpop/issues/272
|
|
| 519 |
+ 'cp -a "%{datadir}/crates" "%{build-root}/cargo-crates"',
|
|
| 509 | 520 |
|
| 510 |
- # Copy the vendor directory into the source tree, because:
|
|
| 511 |
- # https://github.com/nikomatsakis/lalrpop/issues/272
|
|
| 512 |
- 'cp -a "%{datadir}/crates" "%{build-root}/cargo-crates"',
|
|
| 521 |
+ # Remove Cargo.toml, we're building from git and I think we
|
|
| 522 |
+ # prefer to always try to build against the latest things which
|
|
| 523 |
+ # have been added to the vendored crates
|
|
| 524 |
+ 'rm rust/Cargo.lock || true'
|
|
| 525 |
+ ]
|
|
| 526 |
+ }
|
|
| 527 |
+ elif module.name == 'upower':
|
|
| 528 |
+ |
|
| 529 |
+ # This module was a bit touchy when using a tarball
|
|
| 530 |
+ #
|
|
| 531 |
+ element_config = get_dict(element, 'config')
|
|
| 532 |
+ element_config['configure-commands'] = [
|
|
| 533 |
+ 'if [ ! -x autogen.sh ]; then\n' + \
|
|
| 534 |
+ ' configure="./configure"\n'
|
|
| 535 |
+ 'else\n' + \
|
|
| 536 |
+ ' configure="./autogen.sh"\n' + \
|
|
| 537 |
+ 'fi\n' + \
|
|
| 538 |
+ '${configure} %{conf-args}'
|
|
| 539 |
+ ]
|
|
| 513 | 540 |
|
| 514 |
- # Remove Cargo.toml, we're building from git and I think we
|
|
| 515 |
- # prefer to always try to build against the latest things which
|
|
| 516 |
- # have been added to the vendored crates
|
|
| 517 |
- 'rm rust/Cargo.lock || true'
|
|
| 518 |
- ] + conf_cmds
|
|
| 541 |
+ # When running ./autogen.sh with NOCONFIGURE, we dont get
|
|
| 542 |
+ # the implied maintainer mode option normally used with the "mm" C++ family
|
|
| 543 |
+ # of libs
|
|
| 544 |
+ elif module.name in ['atkmm', 'atkmm-1.6',
|
|
| 545 |
+ 'glibmm', 'glibmm-2.4',
|
|
| 546 |
+ 'gtkmm', 'gtkmm-3',
|
|
| 547 |
+ 'pangomm', 'pangomm-1.4']:
|
|
| 548 |
+ element_vars = get_dict(element, 'variables')
|
|
| 549 |
+ element_vars['conf-local'] = '--enable-maintainer-mode'
|
|
| 519 | 550 |
|
| 520 | 551 |
element_file = os.path.join(config.directory, 'elements', element_name(module))
|
| 521 | 552 |
bst_dump(element, element_file)
|
| ... | ... | @@ -80,38 +80,33 @@ class AutogenModule(MakeModule, DownloadableModule): |
| 80 | 80 |
element_config = {}
|
| 81 | 81 |
element_vars = {}
|
| 82 | 82 |
|
| 83 |
+ #
|
|
| 84 |
+ # Just uniformize all automake stuff, disregard the `self.autogen.sh` value entirely
|
|
| 85 |
+ #
|
|
| 86 |
+ if self.autogenargs:
|
|
| 87 |
+ element_vars['conf-local'] = self.autogenargs
|
|
| 88 |
+ |
|
| 89 |
+ |
|
| 83 | 90 |
# For the modules we care about, 'skip-autogen' need not be handled
|
| 84 | 91 |
|
| 85 | 92 |
# Customize configure to a jhbuild style
|
| 86 | 93 |
if self.autogen_sh == 'configure':
|
| 87 | 94 |
element_config['configure-commands'] = [
|
| 88 |
- '%{configure} ' + (self.autogenargs or '')
|
|
| 95 |
+ '%{configure} %{conf-args}'
|
|
| 89 | 96 |
]
|
| 90 | 97 |
elif self.autogen_sh.endswith('/configure'):
|
| 91 | 98 |
# configure in subdirectory
|
| 92 | 99 |
element_config['configure-commands'] = [
|
| 93 |
- '%{build-root}/' + self.autogen_sh + ' %{conf-args} ' + (self.autogenargs or '')
|
|
| 100 |
+ '%{build-root}/' + self.autogen_sh + ' %{conf-args}'
|
|
| 94 | 101 |
]
|
| 95 | 102 |
|
| 96 | 103 |
# In this case, lets trick it to do srcdir != builddir
|
| 97 | 104 |
element_vars['command-subdir'] = '_build'
|
| 98 | 105 |
|
| 99 | 106 |
elif self.autogen_sh == 'autogen.sh':
|
| 100 |
- # The default is to try autogen.sh and fallback to configure
|
|
| 101 |
- # if autogen.sh doesnt exist
|
|
| 102 |
- element_config['configure-commands'] = [
|
|
| 103 |
- 'if [ ! -x autogen.sh ]; then\n' + \
|
|
| 104 |
- ' configure="./configure"\n'
|
|
| 105 |
- 'else\n' + \
|
|
| 106 |
- ' configure="./autogen.sh"\n' + \
|
|
| 107 |
- 'fi\n' + \
|
|
| 108 |
- '${{configure}} %{{conf-args}} {}'.format((self.autogenargs or ''))
|
|
| 109 |
- ]
|
|
| 107 |
+ pass
|
|
| 110 | 108 |
elif self.autogen_sh == 'autoreconf':
|
| 111 |
- element_config['configure-commands'] = [
|
|
| 112 |
- '%{autogen}',
|
|
| 113 |
- '%{configure} ' + (self.autogenargs or '')
|
|
| 114 |
- ]
|
|
| 109 |
+ pass
|
|
| 115 | 110 |
else:
|
| 116 | 111 |
raise Exception('Unrecognized value for autogen_sh in module {} !'.format(self.name))
|
| 117 | 112 |
|
| ... | ... | @@ -54,21 +54,13 @@ class CMakeModule(MakeModule, DownloadableModule): |
| 54 | 54 |
self.cmakedir = None
|
| 55 | 55 |
|
| 56 | 56 |
def convert_bst_config(self, config, element):
|
| 57 |
- element_config = {}
|
|
| 58 |
- |
|
| 59 |
- #
|
|
| 60 |
- # Ignoring the use_ninja parameter here, no modules in the modulesets
|
|
| 61 |
- # are explicitly demanding ninja, it seems to be only used for the
|
|
| 62 |
- # purpose of testing out ninja as a drop in replacement for make when
|
|
| 63 |
- # used in cmake contexts.
|
|
| 64 |
- #
|
|
| 57 |
+ element_vars = {}
|
|
| 58 |
+ |
|
| 65 | 59 |
if self.cmakeargs:
|
| 66 |
- element_config['configure-commands'] = [
|
|
| 67 |
- '%{cmake} ' + self.cmakeargs
|
|
| 68 |
- ]
|
|
| 60 |
+ element_vars['cmake-local'] = self.cmakeargs
|
|
| 69 | 61 |
|
| 70 |
- if element_config:
|
|
| 71 |
- element['config'] = element_config
|
|
| 62 |
+ if element_vars:
|
|
| 63 |
+ element['variables'] = element_vars
|
|
| 72 | 64 |
|
| 73 | 65 |
return 'cmake'
|
| 74 | 66 |
|
| ... | ... | @@ -54,15 +54,13 @@ class MesonModule(MakeModule, DownloadableModule): |
| 54 | 54 |
self.supports_install_destdir = True
|
| 55 | 55 |
|
| 56 | 56 |
def convert_bst_config(self, config, element):
|
| 57 |
- element_config = {}
|
|
| 57 |
+ element_vars = {}
|
|
| 58 | 58 |
|
| 59 | 59 |
if self.mesonargs:
|
| 60 |
- element_config['configure-commands'] = [
|
|
| 61 |
- '%{meson} ' + self.mesonargs
|
|
| 62 |
- ]
|
|
| 60 |
+ element_vars['meson-local'] = self.mesonargs
|
|
| 63 | 61 |
|
| 64 |
- if element_config:
|
|
| 65 |
- element['config'] = element_config
|
|
| 62 |
+ if element_vars:
|
|
| 63 |
+ element['variables'] = element_vars
|
|
| 66 | 64 |
|
| 67 | 65 |
return 'meson'
|
| 68 | 66 |
|
