[Notes] [Git][BuildStream/buildstream][chandan/sourcetransform] 13 commits: buildelement.py: Only display one activity message (#507)



Title: GitLab

Chandan Singh pushed to branch chandan/sourcetransform at BuildStream / buildstream

Commits:

25 changed files:

Changes:

  • NEWS
    1 1
     =================
    
    2
    -buildstream 1.3.1
    
    2
    +buildstream 1.1.5
    
    3 3
     =================
    
    4 4
     
    
    5 5
       o Add a `--tar` option to `bst checkout` which allows a tarball to be
    
    ... ... @@ -9,6 +9,8 @@ buildstream 1.3.1
    9 9
         and the preferred mirror to fetch from can be defined in the command
    
    10 10
         line or user config.
    
    11 11
     
    
    12
    +  o Added new `remote` source plugin for downloading file blobs
    
    13
    +
    
    12 14
     =================
    
    13 15
     buildstream 1.1.4
    
    14 16
     =================
    

  • buildstream/_loader/loader.py
    ... ... @@ -506,14 +506,15 @@ class Loader():
    506 506
             element = Element._new_from_meta(meta_element, platform.artifactcache)
    
    507 507
             element._preflight()
    
    508 508
     
    
    509
    -        for source in element.sources():
    
    509
    +        sources = list(element.sources())
    
    510
    +        for idx, source in enumerate(sources):
    
    510 511
                 # Handle the case where a subproject needs to be fetched
    
    511 512
                 #
    
    512 513
                 if source.get_consistency() == Consistency.RESOLVED:
    
    513 514
                     if self._fetch_subprojects:
    
    514 515
                         if ticker:
    
    515 516
                             ticker(filename, 'Fetching subproject from {} source'.format(source.get_kind()))
    
    516
    -                    source._fetch()
    
    517
    +                    source._fetch(sources[0:idx])
    
    517 518
                     else:
    
    518 519
                         detail = "Try fetching the project with `bst fetch {}`".format(filename)
    
    519 520
                         raise LoadError(LoadErrorReason.SUBPROJECT_FETCH_NEEDED,
    

  • buildstream/_scheduler/queues/fetchqueue.py
    ... ... @@ -40,8 +40,10 @@ class FetchQueue(Queue):
    40 40
             self._skip_cached = skip_cached
    
    41 41
     
    
    42 42
         def process(self, element):
    
    43
    +        previous_sources = []
    
    43 44
             for source in element.sources():
    
    44
    -            source._fetch()
    
    45
    +            source._fetch(previous_sources=previous_sources)
    
    46
    +            previous_sources.append(source)
    
    45 47
     
    
    46 48
         def status(self, element):
    
    47 49
             # state of dependencies may have changed, recalculate element state
    

  • buildstream/buildelement.py
    1 1
     #
    
    2 2
     #  Copyright (C) 2016 Codethink Limited
    
    3
    +#  Copyright (C) 2018 Bloomberg Finance LP
    
    3 4
     #
    
    4 5
     #  This program is free software; you can redistribute it and/or
    
    5 6
     #  modify it under the terms of the GNU Lesser General Public
    
    ... ... @@ -204,8 +205,9 @@ class BuildElement(Element):
    204 205
         def prepare(self, sandbox):
    
    205 206
             commands = self.__commands['configure-commands']
    
    206 207
             if commands:
    
    207
    -            for cmd in commands:
    
    208
    -                self.__run_command(sandbox, cmd, 'configure-commands')
    
    208
    +            with self.timed_activity("Running configure-commands"):
    
    209
    +                for cmd in commands:
    
    210
    +                    self.__run_command(sandbox, cmd, 'configure-commands')
    
    209 211
     
    
    210 212
         def generate_script(self):
    
    211 213
             script = ""
    
    ... ... @@ -231,13 +233,12 @@ class BuildElement(Element):
    231 233
             return commands
    
    232 234
     
    
    233 235
         def __run_command(self, sandbox, cmd, cmd_name):
    
    234
    -        with self.timed_activity("Running {}".format(cmd_name)):
    
    235
    -            self.status("Running {}".format(cmd_name), detail=cmd)
    
    236
    -
    
    237
    -            # Note the -e switch to 'sh' means to exit with an error
    
    238
    -            # if any untested command fails.
    
    239
    -            #
    
    240
    -            exitcode = sandbox.run(['sh', '-c', '-e', cmd + '\n'],
    
    241
    -                                   SandboxFlags.ROOT_READ_ONLY)
    
    242
    -            if exitcode != 0:
    
    243
    -                raise ElementError("Command '{}' failed with exitcode {}".format(cmd, exitcode))
    236
    +        self.status("Running {}".format(cmd_name), detail=cmd)
    
    237
    +
    
    238
    +        # Note the -e switch to 'sh' means to exit with an error
    
    239
    +        # if any untested command fails.
    
    240
    +        #
    
    241
    +        exitcode = sandbox.run(['sh', '-c', '-e', cmd + '\n'],
    
    242
    +                               SandboxFlags.ROOT_READ_ONLY)
    
    243
    +        if exitcode != 0:
    
    244
    +            raise ElementError("Command '{}' failed with exitcode {}".format(cmd, exitcode))

  • buildstream/element.py
    ... ... @@ -1195,6 +1195,11 @@ class Element(Plugin):
    1195 1195
                 # Prepend provenance to the error
    
    1196 1196
                 raise ElementError("{}: {}".format(self, e), reason=e.reason) from e
    
    1197 1197
     
    
    1198
    +        # Ensure that the first source does not need access to previous soruces
    
    1199
    +        if self.__sources and self.__sources[0]._is_transform():
    
    1200
    +            raise ElementError("{}: A Source Transform plugin cannot be the first source"
    
    1201
    +                               .format(self))
    
    1202
    +
    
    1198 1203
             # Preflight the sources
    
    1199 1204
             for source in self.sources():
    
    1200 1205
                 source._preflight()
    
    ... ... @@ -1238,9 +1243,9 @@ class Element(Plugin):
    1238 1243
         #
    
    1239 1244
         def _track(self):
    
    1240 1245
             refs = []
    
    1241
    -        for source in self.__sources:
    
    1246
    +        for index, source in enumerate(self.__sources):
    
    1242 1247
                 old_ref = source.get_ref()
    
    1243
    -            new_ref = source._track()
    
    1248
    +            new_ref = source._track(previous_sources=self.__sources[0:index])
    
    1244 1249
                 refs.append((source._get_unique_id(), new_ref))
    
    1245 1250
     
    
    1246 1251
                 # Complimentary warning that the new ref will be unused.
    

  • buildstream/plugins/sources/git.py
    ... ... @@ -71,6 +71,7 @@ git - stage files from a git repository
    71 71
     """
    
    72 72
     
    
    73 73
     import os
    
    74
    +import errno
    
    74 75
     import re
    
    75 76
     import shutil
    
    76 77
     from collections import Mapping
    
    ... ... @@ -119,11 +120,21 @@ class GitMirror(SourceFetcher):
    119 120
                                      fail="Failed to clone git repository {}".format(url),
    
    120 121
                                      fail_temporarily=True)
    
    121 122
     
    
    123
    +                # Attempt atomic rename into destination, this will fail if
    
    124
    +                # another process beat us to the punch
    
    122 125
                     try:
    
    123
    -                    shutil.move(tmpdir, self.mirror)
    
    124
    -                except (shutil.Error, OSError) as e:
    
    125
    -                    raise SourceError("{}: Failed to move cloned git repository {} from '{}' to '{}'"
    
    126
    -                                      .format(self.source, url, tmpdir, self.mirror)) from e
    
    126
    +                    os.rename(tmpdir, self.mirror)
    
    127
    +                except OSError as e:
    
    128
    +
    
    129
    +                    # When renaming and the destination repo already exists, os.rename()
    
    130
    +                    # will fail with ENOTEMPTY, since an empty directory will be silently
    
    131
    +                    # replaced
    
    132
    +                    if e.errno == errno.ENOTEMPTY:
    
    133
    +                        self.source.status("{}: Discarding duplicate clone of {}"
    
    134
    +                                           .format(self.source, url))
    
    135
    +                    else:
    
    136
    +                        raise SourceError("{}: Failed to move cloned git repository {} from '{}' to '{}': {}"
    
    137
    +                                          .format(self.source, url, tmpdir, self.mirror, e)) from e
    
    127 138
     
    
    128 139
         def _fetch(self, alias_override=None):
    
    129 140
             url = self.source.translate_url(self.url, alias_override=alias_override)
    

  • buildstream/source.py
    ... ... @@ -148,7 +148,7 @@ class SourceFetcher():
    148 148
         places (e.g. a git source with submodules) has a consistent interface for
    
    149 149
         fetching and substituting aliases.
    
    150 150
     
    
    151
    -    *Since: 1.4*
    
    151
    +    *Since: 1.2*
    
    152 152
         """
    
    153 153
         def __init__(self):
    
    154 154
             self.__alias = None
    
    ... ... @@ -156,7 +156,7 @@ class SourceFetcher():
    156 156
         #############################################################
    
    157 157
         #                      Abstract Methods                     #
    
    158 158
         #############################################################
    
    159
    -    def fetch(self, alias_override=None):
    
    159
    +    def fetch(self, alias_override=None, **kwargs):
    
    160 160
             """Fetch remote sources and mirror them locally, ensuring at least
    
    161 161
             that the specific reference is cached locally.
    
    162 162
     
    
    ... ... @@ -209,6 +209,28 @@ class Source(Plugin):
    209 209
         __defaults = {}          # The defaults from the project
    
    210 210
         __defaults_set = False   # Flag, in case there are not defaults at all
    
    211 211
     
    
    212
    +    requires_previous_sources_track = False
    
    213
    +    """Whether access to previous sources is required during track
    
    214
    +
    
    215
    +    When set to True:
    
    216
    +      * all sources listed before this source in the given element will be
    
    217
    +        fetched bef*re this source is tracked
    
    218
    +      * Source.track() will be called with an additional keywork argument
    
    219
    +        `previous_sources_dir` that will contain a list of sources
    
    220
    +      * this source can not be the first source for an element
    
    221
    +    """
    
    222
    +
    
    223
    +    requires_previous_sources_fetch = False
    
    224
    +    """Whether access to previous sources is required during fetch
    
    225
    +
    
    226
    +    When set to True:
    
    227
    +      * all sources listed before this source in the given element will be
    
    228
    +        fetched bef*re this source is fetched
    
    229
    +      * Source.fetch() will be called with an additional keyword argument
    
    230
    +        `previous_sources_dir` that will contain a list of sources
    
    231
    +      * this source can not be the first source for an element
    
    232
    +    """
    
    233
    +
    
    212 234
         def __init__(self, context, project, meta, *, alias_override=None):
    
    213 235
             provenance = _yaml.node_get_provenance(meta.config)
    
    214 236
             super().__init__("{}-{}".format(meta.element_name, meta.element_index),
    
    ... ... @@ -303,7 +325,7 @@ class Source(Plugin):
    303 325
             """
    
    304 326
             raise ImplError("Source plugin '{}' does not implement set_ref()".format(self.get_kind()))
    
    305 327
     
    
    306
    -    def track(self):
    
    328
    +    def track(self, **kwargs):
    
    307 329
             """Resolve a new ref from the plugin's track option
    
    308 330
     
    
    309 331
             Returns:
    
    ... ... @@ -324,7 +346,7 @@ class Source(Plugin):
    324 346
             # Allow a non implementation
    
    325 347
             return None
    
    326 348
     
    
    327
    -    def fetch(self):
    
    349
    +    def fetch(self, **kwargs):
    
    328 350
             """Fetch remote sources and mirror them locally, ensuring at least
    
    329 351
             that the specific reference is cached locally.
    
    330 352
     
    
    ... ... @@ -382,7 +404,7 @@ class Source(Plugin):
    382 404
             Args:
    
    383 405
                url (str): The url used to download
    
    384 406
     
    
    385
    -        *Since: 1.4*
    
    407
    +        *Since: 1.2*
    
    386 408
             """
    
    387 409
             alias, _ = url.split(utils._ALIAS_SEPARATOR, 1)
    
    388 410
             self.__expected_alias = alias
    
    ... ... @@ -398,7 +420,7 @@ class Source(Plugin):
    398 420
                list: A list of SourceFetchers. If SourceFetchers are not supported,
    
    399 421
                      this will be an empty list.
    
    400 422
     
    
    401
    -        *Since: 1.4*
    
    423
    +        *Since: 1.2*
    
    402 424
             """
    
    403 425
     
    
    404 426
             return []
    
    ... ... @@ -425,7 +447,7 @@ class Source(Plugin):
    425 447
     
    
    426 448
             Args:
    
    427 449
                url (str): A url, which may be using an alias
    
    428
    -           alias_override (str): Optionally, an URI to override the alias with. (*Since: 1.4*)
    
    450
    +           alias_override (str): Optionally, an URI to override the alias with. (*Since: 1.2*)
    
    429 451
     
    
    430 452
             Returns:
    
    431 453
                str: The fully qualified url, with aliases resolved
    
    ... ... @@ -517,46 +539,59 @@ class Source(Plugin):
    517 539
     
    
    518 540
         # Wrapper function around plugin provided fetch method
    
    519 541
         #
    
    520
    -    def _fetch(self):
    
    521
    -        project = self._get_project()
    
    522
    -        source_fetchers = self.get_source_fetchers()
    
    523
    -        if source_fetchers:
    
    524
    -            for fetcher in source_fetchers:
    
    525
    -                alias = fetcher._get_alias()
    
    526
    -                success = False
    
    542
    +    # Args:
    
    543
    +    #   previous_sources (list): List of Sources listed prior to this source
    
    544
    +    #
    
    545
    +    def _fetch(self, previous_sources):
    
    546
    +        def __fetch(**kwargs):
    
    547
    +            project = self._get_project()
    
    548
    +            source_fetchers = self.get_source_fetchers()
    
    549
    +            if source_fetchers:
    
    550
    +                for fetcher in source_fetchers:
    
    551
    +                    alias = fetcher._get_alias()
    
    552
    +                    success = False
    
    553
    +                    for uri in project.get_alias_uris(alias):
    
    554
    +                        try:
    
    555
    +                            fetcher.fetch(uri)
    
    556
    +                        # FIXME: Need to consider temporary vs. permanent failures,
    
    557
    +                        #        and how this works with retries.
    
    558
    +                        except BstError as e:
    
    559
    +                            last_error = e
    
    560
    +                            continue
    
    561
    +                        success = True
    
    562
    +                        break
    
    563
    +                    if not success:
    
    564
    +                        raise last_error
    
    565
    +            else:
    
    566
    +                alias = self._get_alias()
    
    567
    +                if not project.mirrors or not alias:
    
    568
    +                    self.fetch(**kwargs)
    
    569
    +                    return
    
    570
    +
    
    571
    +                context = self._get_context()
    
    572
    +                source_kind = type(self)
    
    527 573
                     for uri in project.get_alias_uris(alias):
    
    574
    +                    new_source = source_kind(context, project, self.__meta,
    
    575
    +                                             alias_override=(alias, uri))
    
    576
    +                    new_source._preflight()
    
    528 577
                         try:
    
    529
    -                        fetcher.fetch(uri)
    
    578
    +                        new_source.fetch(**kwargs)
    
    530 579
                         # FIXME: Need to consider temporary vs. permanent failures,
    
    531 580
                         #        and how this works with retries.
    
    532 581
                         except BstError as e:
    
    533 582
                             last_error = e
    
    534 583
                             continue
    
    535
    -                    success = True
    
    536
    -                    break
    
    537
    -                if not success:
    
    538
    -                    raise last_error
    
    584
    +                    return
    
    585
    +                raise last_error
    
    586
    +
    
    587
    +        if self.requires_previous_sources_fetch:
    
    588
    +            self.__ensure_previous_sources(previous_sources)
    
    589
    +            with self.tempdir() as staging_directory:
    
    590
    +                for src in previous_sources:
    
    591
    +                    src._stage(staging_directory)
    
    592
    +                __fetch(previous_sources_dir=staging_directory)
    
    539 593
             else:
    
    540
    -            alias = self._get_alias()
    
    541
    -            if not project.mirrors or not alias:
    
    542
    -                self.fetch()
    
    543
    -                return
    
    544
    -
    
    545
    -            context = self._get_context()
    
    546
    -            source_kind = type(self)
    
    547
    -            for uri in project.get_alias_uris(alias):
    
    548
    -                new_source = source_kind(context, project, self.__meta,
    
    549
    -                                         alias_override=(alias, uri))
    
    550
    -                new_source._preflight()
    
    551
    -                try:
    
    552
    -                    new_source.fetch()
    
    553
    -                # FIXME: Need to consider temporary vs. permanent failures,
    
    554
    -                #        and how this works with retries.
    
    555
    -                except BstError as e:
    
    556
    -                    last_error = e
    
    557
    -                    continue
    
    558
    -                return
    
    559
    -            raise last_error
    
    594
    +            __fetch()
    
    560 595
     
    
    561 596
         # Wrapper for stage() api which gives the source
    
    562 597
         # plugin a fully constructed path considering the
    
    ... ... @@ -762,8 +797,19 @@ class Source(Plugin):
    762 797
     
    
    763 798
         # Wrapper for track()
    
    764 799
         #
    
    765
    -    def _track(self):
    
    766
    -        new_ref = self.__do_track()
    
    800
    +    # Args:
    
    801
    +    #   previous_sources (list): List of Sources listed prior to this source
    
    802
    +    #
    
    803
    +    def _track(self, previous_sources):
    
    804
    +        if self.requires_previous_sources_track:
    
    805
    +            self.__ensure_previous_sources(previous_sources)
    
    806
    +            with self.tempdir() as staging_directory:
    
    807
    +                for src in previous_sources:
    
    808
    +                    src._stage(staging_directory)
    
    809
    +            new_ref = self.__do_track(previous_sources_dir=staging_directory)
    
    810
    +        else:
    
    811
    +            new_ref = self.__do_track()
    
    812
    +
    
    767 813
             current_ref = self.get_ref()
    
    768 814
     
    
    769 815
             if new_ref is None:
    
    ... ... @@ -775,6 +821,18 @@ class Source(Plugin):
    775 821
     
    
    776 822
             return new_ref
    
    777 823
     
    
    824
    +    # _is_transform()
    
    825
    +    #
    
    826
    +    # A plugin is considered a source transform plugin if it requires access to
    
    827
    +    # previous sources for its tracking or fetching. Such sources cannot be the
    
    828
    +    # first source of any element.
    
    829
    +    #
    
    830
    +    # Returns:
    
    831
    +    #   (bool): Whetner this is a source transform plugin.
    
    832
    +    #
    
    833
    +    def _is_transform(self):
    
    834
    +        return self.requires_previous_sources_track or self.requires_previous_sources_fetch
    
    835
    +
    
    778 836
         # Returns the alias if it's defined in the project
    
    779 837
         def _get_alias(self):
    
    780 838
             alias = self.__expected_alias
    
    ... ... @@ -791,12 +849,12 @@ class Source(Plugin):
    791 849
         #############################################################
    
    792 850
     
    
    793 851
         # Tries to call track for every mirror, stopping once it succeeds
    
    794
    -    def __do_track(self):
    
    852
    +    def __do_track(self, **kwargs):
    
    795 853
             project = self._get_project()
    
    796 854
             # If there are no mirrors, or no aliases to replace, there's nothing to do here.
    
    797 855
             alias = self._get_alias()
    
    798 856
             if not project.mirrors or not alias:
    
    799
    -            return self.track()
    
    857
    +            return self.track(**kwargs)
    
    800 858
     
    
    801 859
             context = self._get_context()
    
    802 860
             source_kind = type(self)
    
    ... ... @@ -808,7 +866,7 @@ class Source(Plugin):
    808 866
                                          alias_override=(alias, uri))
    
    809 867
                 new_source._preflight()
    
    810 868
                 try:
    
    811
    -                ref = new_source.track()
    
    869
    +                ref = new_source.track(**kwargs)
    
    812 870
                 # FIXME: Need to consider temporary vs. permanent failures,
    
    813 871
                 #        and how this works with retries.
    
    814 872
                 except BstError as e:
    
    ... ... @@ -849,3 +907,14 @@ class Source(Plugin):
    849 907
             _yaml.node_final_assertions(config)
    
    850 908
     
    
    851 909
             return config
    
    910
    +
    
    911
    +    # Ensures that previous sources have been tracked and fetched.
    
    912
    +    #
    
    913
    +    def __ensure_previous_sources(self, previous_sources):
    
    914
    +        for index, src in enumerate(previous_sources):
    
    915
    +            if src.get_consistency() == Consistency.RESOLVED:
    
    916
    +                src._fetch(previous_sources=previous_sources[0:index])
    
    917
    +            elif src.get_consistency() == Consistency.INCONSISTENT:
    
    918
    +                new_ref = src._track()
    
    919
    +                src._save_ref(new_ref)
    
    920
    +                src._fetch(previous_sources=previous_sources[0:index])

  • doc/Makefile
    ... ... @@ -118,8 +118,11 @@ html devhelp: templates sessions
    118 118
     	    $(SPHINXBUILD) -b $@ $(ALLSPHINXOPTS) "$(BUILDDIR)/$@" \
    
    119 119
     	    $(wildcard source/*.rst) \
    
    120 120
     	    $(wildcard source/tutorial/*.rst) \
    
    121
    +            $(wildcard source/advanced-features/*.rst) \
    
    121 122
     	    $(wildcard source/examples/*.rst) \
    
    122 123
     	    $(wildcard source/elements/*.rst) \
    
    123 124
     	    $(wildcard source/sources/*.rst)
    
    124 125
     	@echo
    
    125 126
     	@echo "Build of $@ finished, output: $(CURDIR)/$(BUILDDIR)/$@"
    
    127
    +# Makefile for Sphinx documentation
    
    128
    +#

  • doc/examples/junctions/elements/callHello.bst
    1
    +kind: import
    
    2
    +
    
    3
    +sources:
    
    4
    +- kind: local
    
    5
    +  path: files/callHello.sh
    
    6
    +
    
    7
    +depends:
    
    8
    +  - filename: hello.bst
    
    9
    +    junction: hello-junction.bst

  • doc/examples/junctions/elements/hello-junction.bst
    1
    +kind: junction
    
    2
    +
    
    3
    +# Specify the source of the BuildStream project
    
    4
    +# We are going to use the autotools examples distributed with BuildStream in the
    
    5
    +# doc/examples/autotools directory
    
    6
    +sources:
    
    7
    +- kind: local
    
    8
    +  path: ../autotools

  • doc/examples/junctions/files/callHello.sh
    1
    +#!/bin/sh
    
    2
    +echo "Calling hello:"
    
    3
    +hello

  • doc/examples/junctions/project.conf
    1
    +# Unique project name
    
    2
    +name: junctions
    
    3
    +
    
    4
    +# Required BuildStream format version
    
    5
    +format-version: 9
    
    6
    +
    
    7
    +# Subdirectory where elements are stored
    
    8
    +element-path: elements

  • doc/sessions/junctions.run
    1
    +
    
    2
    +commands:
    
    3
    +# Build callHello.bst
    
    4
    +- directory: ../examples/junctions
    
    5
    +  output: ../source/sessions/junctions-build.html
    
    6
    +  command: build callHello.bst
    
    7
    +
    
    8
    +# Run callHello.sh in a shell
    
    9
    +- directory: ../examples/junctions
    
    10
    +  output: ../source/sessions/junctions-shell.html
    
    11
    +  command: shell callHello.bst -- /bin/sh callHello.sh
    
    12
    +
    
    13
    +# Open a crossJunction workspace:
    
    14
    +- directory: ../examples/junctions
    
    15
    +  output: ../source/sessions/junctions-workspace-open.html
    
    16
    +  command: workspace open hello-junction.bst:hello.bst workspace_hello
    
    17
    +
    
    18
    +# Remove the workspace 
    
    19
    +- directory: ../examples/junctions
    
    20
    +  command: workspace close --remove-dirs hello-junction.bst:hello.bst

  • doc/source/advanced-features/junction-elements.rst
    1
    +
    
    2
    +
    
    3
    +Junction elements
    
    4
    +=================
    
    5
    +BuildStream's junction elements are used to import other BuildStream
    
    6
    +projects. This allows you to depend on elements that are part of an
    
    7
    +upstream project.
    
    8
    +
    
    9
    +
    
    10
    +A simple example
    
    11
    +----------------
    
    12
    +
    
    13
    +.. note::
    
    14
    +
    
    15
    +    This example is distributed with BuildStream in the
    
    16
    +    `doc/examples/junctions <https://gitlab.com/BuildStream/buildstream/tree/master/doc/examples/junctions>`_
    
    17
    +    subdirectory.
    
    18
    +
    
    19
    +Below is a simple example of bst file for a junction element:
    
    20
    +
    
    21
    +.. literalinclude:: ../../examples/junctions/elements/hello-junction.bst
    
    22
    +    :language: yaml
    
    23
    +
    
    24
    +This element imports the autotools example project found in the BuildStream
    
    25
    +doc/examples/autotools subdirectory.
    
    26
    +
    
    27
    +.. note::
    
    28
    +
    
    29
    +    While for this example we're using a local source, another common use-case,
    
    30
    +    for junction elements is including a remote, version contolled project,
    
    31
    +    having a source type such as `-kind: git`.
    
    32
    +
    
    33
    +The below bst file describes an element which depends on the hello.bst element
    
    34
    +from the autotools example:
    
    35
    +
    
    36
    +.. literalinclude:: ../../examples/junctions/elements/callHello.bst
    
    37
    +
    
    38
    +This element consists of a script which calls hello.bst's hello command.
    
    39
    +
    
    40
    +Building callHello.bst,
    
    41
    +
    
    42
    +.. raw:: html
    
    43
    +   :file: ../sessions-stored/junctions-build.html
    
    44
    +
    
    45
    +You can see that the hello.bst element and it's dependencies from the autotools
    
    46
    +project have been build as part of the pipeline for callHello.bst.
    
    47
    +
    
    48
    +We can now invoke `bst shell`
    
    49
    +
    
    50
    +.. raw:: html
    
    51
    +   :file: ../sessions-stored/junctions-shell.html
    
    52
    +
    
    53
    +This runs the script files/callHello.sh which will makes use of the hello command from the hello.bst element in the autotools project.
    
    54
    +
    
    55
    +Cross-junction workspaces
    
    56
    +-------------------------
    
    57
    +You can open workspaces for elements in the project refered to by the junction
    
    58
    +using the syntax `bst open ${junction-name}:{element-name}`. In this example,
    
    59
    +
    
    60
    +.. raw:: html
    
    61
    +   :file: ../sessions-stored/junctions-workspace-open.html
    
    62
    +
    
    63
    +This has opened a workspace for the hello.bst element from the autotools project.
    
    64
    +This workspace can now be used as normal.
    
    65
    +
    
    66
    +
    
    67
    +Further reading
    
    68
    +---------------
    
    69
    +For an example of junction elements being used in a real project, take a look
    
    70
    +at the `freedesktop-sdk junction
    
    71
    +<https://gitlab.gnome.org/GNOME/gnome-build-meta/blob/master/elements/freedesktop-sdk.bst>`_
    
    72
    +in the `gnome-build-meta <https://gitlab.gnome.org/GNOME/gnome-build-meta>`_ project.

  • doc/source/main_using.rst
    ... ... @@ -10,6 +10,7 @@ guides and information on user preferences and configuration.
    10 10
        :maxdepth: 2
    
    11 11
     
    
    12 12
        using_tutorial
    
    13
    +   using_advanced_features
    
    13 14
        using_examples
    
    14 15
        using_config
    
    15 16
        using_commands

  • doc/source/sessions-stored/junctions-build.html
    1
    +<!--
    
    2
    +    WARNING: This file was generated with bst2html.py
    
    3
    +-->
    
    4
    +<div class="highlight" style="font-size:x-small"><pre>
    
    5
    +<span style="color:#C4A000;font-weight:bold">user@host</span>:<span style="color:#3456A4;font-weight:bold">~/junctions</span>$ bst build callHello.bst
    
    6
    +
    
    7
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Build
    
    8
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Loading pipeline
    
    9
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Loading pipeline
    
    10
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Resolving pipeline
    
    11
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Resolving pipeline
    
    12
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Resolving cached state
    
    13
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Resolving cached state
    
    14
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Checking sources
    
    15
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Checking sources
    
    16
    +
    
    17
    +<span style="color:#C4A000"><span style="">BuildStream Version 1.1.3+221.g589c77c2.dirty
    
    18
    +</span></span><span style="color:#06989A"><span style="opacity:0.5">  Session Start: </span></span><span style="color:#C4A000">Tuesday, 17-07-2018 at 16:23:26</span>
    
    19
    +<span style="color:#06989A"><span style="opacity:0.5">  Project:       </span></span><span style="color:#C4A000">junctions (/home/user/buildstream/doc/examples/junctions)</span>
    
    20
    +<span style="color:#06989A"><span style="opacity:0.5">  Targets:       </span></span><span style="color:#C4A000">callHello.bst</span>
    
    21
    +
    
    22
    +<span style="color:#C4A000"><span style="">User Configuration
    
    23
    +</span></span><span style="color:#06989A"><span style="opacity:0.5">  Configuration File:      </span></span><span style="color:#C4A000">/home/user/buildstream/doc/run-bst-6avjvngj/buildstream.conf</span>
    
    24
    +<span style="color:#06989A"><span style="opacity:0.5">  Log Files:               </span></span><span style="color:#C4A000">/home/user/buildstream/doc/run-bst-6avjvngj/logs</span>
    
    25
    +<span style="color:#06989A"><span style="opacity:0.5">  Source Mirrors:          </span></span><span style="color:#C4A000">/home/user/buildstream/doc/run-bst-6avjvngj/sources</span>
    
    26
    +<span style="color:#06989A"><span style="opacity:0.5">  Build Area:              </span></span><span style="color:#C4A000">/home/user/buildstream/doc/run-bst-6avjvngj/build</span>
    
    27
    +<span style="color:#06989A"><span style="opacity:0.5">  Artifact Cache:          </span></span><span style="color:#C4A000">/home/user/buildstream/doc/run-bst-6avjvngj/artifacts</span>
    
    28
    +<span style="color:#06989A"><span style="opacity:0.5">  Strict Build Plan:       </span></span><span style="color:#C4A000">Yes</span>
    
    29
    +<span style="color:#06989A"><span style="opacity:0.5">  Maximum Fetch Tasks:     </span></span><span style="color:#C4A000">10</span>
    
    30
    +<span style="color:#06989A"><span style="opacity:0.5">  Maximum Build Tasks:     </span></span><span style="color:#C4A000">4</span>
    
    31
    +<span style="color:#06989A"><span style="opacity:0.5">  Maximum Push Tasks:      </span></span><span style="color:#C4A000">4</span>
    
    32
    +<span style="color:#06989A"><span style="opacity:0.5">  Maximum Network Retries: </span></span><span style="color:#C4A000">2</span>
    
    33
    +
    
    34
    +<span style="color:#C4A000"><span style="">Pipeline
    
    35
    +</span></span><span style="color:#CC0000">fetch needed</span> <span style="color:#C4A000">5ca6420ca17be3f95895b75750404788d01bdd48ab4b7b665cff5e545eed3771</span> <span style="color:#3465A4"><span style="">hello-junction.bst:base/alpine.bst</span></span> 
    
    36
    +<span style="color:#3465A4">     waiting</span> <span style="color:#C4A000">180088afb6d3b123e54f63bf1000ff4840e686edea7a017c38165d27a3e2b5b8</span> <span style="color:#3465A4"><span style="">hello-junction.bst:base.bst</span></span> 
    
    37
    +<span style="color:#CC0000">fetch needed</span> <span style="color:#C4A000">377e2862ab1e4bdba12492541415c691979cdd606a3e28475c240c30a9808691</span> <span style="color:#3465A4"><span style="">hello-junction.bst:hello.bst</span></span> 
    
    38
    +<span style="color:#3465A4">     waiting</span> <span style="color:#C4A000">e366cac8cd0af970b61acc59724a23b5337d4d8fc5e5dbf2cdbb87de195bdca0</span> <span style="color:#3465A4"><span style="">callHello.bst</span></span> 
    
    39
    +<span style="color:#06989A"><span style="opacity:0.5">===============================================================================
    
    40
    +</span></span><span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">5ca6420c</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">fetch</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:base/alpine.bst</span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span><span style="color:#C4A000"><span style="opacity:0.5">autotools/base-alpine/5ca6420c-fetch.30873.log</span></span>
    
    41
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">5ca6420c</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">fetch</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:base/alpine.bst</span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Fetching https://gnome7.codethink.co.uk/tarballs/integration-tests-base.v1.x86_64.tar.xz
    
    42
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">fetch</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span><span style="color:#C4A000"><span style="opacity:0.5">autotools/hello/377e2862-fetch.30875.log</span></span>
    
    43
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">fetch</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Fetching https://ftp.gnu.org/gnu/automake/automake-1.16.tar.gz
    
    44
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">02</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">fetch</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Fetching https://ftp.gnu.org/gnu/automake/automake-1.16.tar.gz
    
    45
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">02</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">fetch</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span><span style="color:#C4A000"><span style="opacity:0.5">autotools/hello/377e2862-fetch.30875.log</span></span>
    
    46
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">03</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">5ca6420c</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">fetch</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:base/alpine.bst</span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Fetching https://gnome7.codethink.co.uk/tarballs/integration-tests-base.v1.x86_64.tar.xz
    
    47
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">03</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">5ca6420c</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">fetch</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:base/alpine.bst</span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span><span style="color:#C4A000"><span style="opacity:0.5">autotools/base-alpine/5ca6420c-fetch.30873.log</span></span>
    
    48
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">5ca6420c</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:base/alpine.bst</span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span><span style="color:#C4A000"><span style="opacity:0.5">autotools/base-alpine/5ca6420c-build.30877.log</span></span>
    
    49
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">5ca6420c</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:base/alpine.bst</span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Staging sources
    
    50
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">06</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">5ca6420c</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:base/alpine.bst</span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Staging sources
    
    51
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">5ca6420c</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:base/alpine.bst</span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Caching artifact
    
    52
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">04</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">5ca6420c</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:base/alpine.bst</span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Caching artifact
    
    53
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">12</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">5ca6420c</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:base/alpine.bst</span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span><span style="color:#C4A000"><span style="opacity:0.5">autotools/base-alpine/5ca6420c-build.30877.log</span></span>
    
    54
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">180088af</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:base.bst   </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span><span style="color:#C4A000"><span style="opacity:0.5">autotools/base/180088af-build.30882.log</span></span>
    
    55
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">180088af</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:base.bst   </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Caching artifact
    
    56
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">180088af</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:base.bst   </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Caching artifact
    
    57
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">180088af</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:base.bst   </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span><span style="color:#C4A000"><span style="opacity:0.5">autotools/base/180088af-build.30882.log</span></span>
    
    58
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span><span style="color:#C4A000"><span style="opacity:0.5">autotools/hello/377e2862-build.30884.log</span></span>
    
    59
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Staging dependencies
    
    60
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">01</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Staging dependencies
    
    61
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Integrating sandbox
    
    62
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Integrating sandbox
    
    63
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Staging sources
    
    64
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Staging sources
    
    65
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running configure-commands
    
    66
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#06989A"><span style=""><span style="opacity:0.5">STATUS </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running configure-commands
    
    67
    +
    
    68
    +<span style="opacity:0.5">    export NOCONFIGURE=1;
    
    69
    +    
    
    70
    +    if [ -x ./configure ]; then true;
    
    71
    +    elif [ -x autogen ]; then ./autogen;
    
    72
    +    elif [ -x autogen.sh ]; then ./autogen.sh;
    
    73
    +    elif [ -x bootstrap ]; then ./bootstrap;
    
    74
    +    elif [ -x bootstrap.sh ]; then ./bootstrap.sh;
    
    75
    +    else autoreconf -ivf;
    
    76
    +    fi</span>
    
    77
    +
    
    78
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">03</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running configure-commands
    
    79
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running configure-commands
    
    80
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#06989A"><span style=""><span style="opacity:0.5">STATUS </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running configure-commands
    
    81
    +
    
    82
    +<span style="opacity:0.5">    ./configure --prefix=/usr \
    
    83
    +    --exec-prefix=/usr \
    
    84
    +    --bindir=/usr/bin \
    
    85
    +    --sbindir=/usr/sbin \
    
    86
    +    --sysconfdir=/etc \
    
    87
    +    --datadir=/usr/share \
    
    88
    +    --includedir=/usr/include \
    
    89
    +    --libdir=/usr/lib \
    
    90
    +    --libexecdir=/usr/libexec \
    
    91
    +    --localstatedir=/var \
    
    92
    +    --sharedstatedir=/usr/com \
    
    93
    +    --mandir=/usr/share/man \
    
    94
    +    --infodir=/usr/share/info</span>
    
    95
    +
    
    96
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">01</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running configure-commands
    
    97
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running build-commands
    
    98
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running build-commands
    
    99
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#06989A"><span style=""><span style="opacity:0.5">STATUS </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running build-commands
    
    100
    +
    
    101
    +<span style="opacity:0.5">    make</span>
    
    102
    +
    
    103
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running build-commands
    
    104
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running build-commands
    
    105
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running install-commands
    
    106
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running install-commands
    
    107
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#06989A"><span style=""><span style="opacity:0.5">STATUS </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running install-commands
    
    108
    +
    
    109
    +<span style="opacity:0.5">    make -j1 DESTDIR="/buildstream-install" install</span>
    
    110
    +
    
    111
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running install-commands
    
    112
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running install-commands
    
    113
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running strip-commands
    
    114
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running strip-commands
    
    115
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#06989A"><span style=""><span style="opacity:0.5">STATUS </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running strip-commands
    
    116
    +
    
    117
    +<span style="opacity:0.5">    find "/buildstream-install" -type f \
    
    118
    +      '(' -perm -111 -o -name '*.so*' \
    
    119
    +          -o -name '*.cmxs' -o -name '*.node' ')' \
    
    120
    +      -exec sh -ec \
    
    121
    +      'read -n4 hdr <"$1" # check for elf header
    
    122
    +       if [ "$hdr" != "$(printf \\x7fELF)" ]; then
    
    123
    +           exit 0
    
    124
    +       fi
    
    125
    +       debugfile="/buildstream-install/usr/lib/debug/$(basename "$1")"
    
    126
    +       mkdir -p "$(dirname "$debugfile")"
    
    127
    +       objcopy --only-keep-debug --compress-debug-sections "$1" "$debugfile"
    
    128
    +       chmod 644 "$debugfile"
    
    129
    +       strip --remove-section=.comment --remove-section=.note --strip-unneeded "$1"
    
    130
    +       objcopy --add-gnu-debuglink "$debugfile" "$1"' - {} ';'</span>
    
    131
    +
    
    132
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running strip-commands
    
    133
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running strip-commands
    
    134
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Caching artifact
    
    135
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Caching artifact
    
    136
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">06</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">377e2862</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">hello-junction.bst:hello.bst  </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span><span style="color:#C4A000"><span style="opacity:0.5">autotools/hello/377e2862-build.30884.log</span></span>
    
    137
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">e366cac8</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">callHello.bst                 </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span><span style="color:#C4A000"><span style="opacity:0.5">junctions/callHello/e366cac8-build.31865.log</span></span>
    
    138
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">e366cac8</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">callHello.bst                 </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Staging sources
    
    139
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">e366cac8</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">callHello.bst                 </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Staging sources
    
    140
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">e366cac8</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">callHello.bst                 </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Caching artifact
    
    141
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">e366cac8</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">callHello.bst                 </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Caching artifact
    
    142
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">e366cac8</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">build</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">callHello.bst                 </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span><span style="color:#C4A000"><span style="opacity:0.5">junctions/callHello/e366cac8-build.31865.log</span></span>
    
    143
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">23</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Build
    
    144
    +
    
    145
    +<span style="color:#C4A000"><span style="">Pipeline Summary
    
    146
    +</span></span><span style="color:#06989A"><span style="opacity:0.5">  Total:       </span></span><span style="color:#C4A000">4</span>
    
    147
    +<span style="color:#06989A"><span style="opacity:0.5">  Session:     </span></span><span style="color:#C4A000">4</span>
    
    148
    +<span style="color:#06989A"><span style="opacity:0.5">  Fetch Queue: </span></span><span style="color:#C4A000">processed </span><span style="color:#4E9A06">2</span><span style="color:#06989A"><span style="opacity:0.5">, </span></span><span style="color:#C4A000">skipped </span><span style="color:#C4A000">2</span><span style="color:#06989A"><span style="opacity:0.5">, </span></span><span style="color:#C4A000">failed </span><span style="color:#CC0000"><span style="opacity:0.5">0</span></span> 
    
    149
    +<span style="color:#06989A"><span style="opacity:0.5">  Build Queue: </span></span><span style="color:#C4A000">processed </span><span style="color:#4E9A06">4</span><span style="color:#06989A"><span style="opacity:0.5">, </span></span><span style="color:#C4A000">skipped </span><span style="color:#C4A000">0</span><span style="color:#06989A"><span style="opacity:0.5">, </span></span><span style="color:#C4A000">failed </span><span style="color:#CC0000"><span style="opacity:0.5">0</span></span>
    
    150
    +</pre></div>

  • doc/source/sessions-stored/junctions-shell.html
    1
    +<!--
    
    2
    +    WARNING: This file was generated with bst2html.py
    
    3
    +-->
    
    4
    +<div class="highlight" style="font-size:x-small"><pre>
    
    5
    +<span style="color:#C4A000;font-weight:bold">user@host</span>:<span style="color:#3456A4;font-weight:bold">~/junctions</span>$ bst shell callHello.bst -- /bin/sh callHello.sh
    
    6
    +
    
    7
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Loading pipeline
    
    8
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Loading pipeline
    
    9
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Resolving pipeline
    
    10
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Resolving pipeline
    
    11
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Resolving cached state
    
    12
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Resolving cached state
    
    13
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Staging dependencies
    
    14
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Staging dependencies
    
    15
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Integrating sandbox
    
    16
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Integrating sandbox
    
    17
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000">e366cac8</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#C4A000"> main</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">callHello.bst                 </span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#06989A"><span style=""><span style="opacity:0.5">STATUS </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Running command
    
    18
    +
    
    19
    +<span style="opacity:0.5">    /bin/sh callHello.sh</span>
    
    20
    +
    
    21
    +Calling hello:
    
    22
    +Hello World!
    
    23
    +This is amhello 1.0.
    
    24
    +</pre></div>

  • doc/source/sessions-stored/junctions-workspace-open.html
    1
    +<!--
    
    2
    +    WARNING: This file was generated with bst2html.py
    
    3
    +-->
    
    4
    +<div class="highlight" style="font-size:x-small"><pre>
    
    5
    +<span style="color:#C4A000;font-weight:bold">user@host</span>:<span style="color:#3456A4;font-weight:bold">~/junctions</span>$ bst workspace open hello-junction.bst:hello.bst workspace_hello
    
    6
    +
    
    7
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Loading pipeline
    
    8
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Loading pipeline
    
    9
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Resolving pipeline
    
    10
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Resolving pipeline
    
    11
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Resolving cached state
    
    12
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Resolving cached state
    
    13
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Checking sources
    
    14
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Checking sources
    
    15
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#3465A4"><span style=""><span style="opacity:0.5">START  </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Staging sources to workspace_hello
    
    16
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">00</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#4E9A06"><span style=""><span style="opacity:0.5">SUCCESS</span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Staging sources to workspace_hello
    
    17
    +<span style="color:#06989A"><span style="opacity:0.5">[</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">:</span></span><span style="color:#C4A000">--</span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">][</span></span><span style="color:#06989A"><span style="opacity:0.5">] </span></span><span style="color:#75507B"><span style=""><span style="opacity:0.5">INFO   </span></span></span><span style="color:#06989A"><span style="opacity:0.5"> </span></span>Saved workspace configuration
    
    18
    +</pre></div>

  • doc/source/using_advanced_features.rst
    1
    +
    
    2
    +
    
    3
    +Advanced features
    
    4
    +=================
    
    5
    +This section provides some step by step walkthroughs which are meant to help the
    
    6
    +user quickly get more familiar with some of BuildStream's more advanced
    
    7
    +features.
    
    8
    +
    
    9
    +.. toctree::
    
    10
    +   :numbered:
    
    11
    +   :maxdepth: 1
    
    12
    +
    
    13
    +   advanced-features/junction-elements

  • tests/examples/junctions.py
    1
    +import os
    
    2
    +import pytest
    
    3
    +
    
    4
    +from tests.testutils import cli_integration as cli
    
    5
    +from tests.testutils.integration import assert_contains
    
    6
    +from tests.testutils.site import IS_LINUX
    
    7
    +
    
    8
    +pytestmark = pytest.mark.integration
    
    9
    +
    
    10
    +DATA_DIR = os.path.join(
    
    11
    +    os.path.dirname(os.path.realpath(__file__)), '..', '..', 'doc', 'examples', 'junctions'
    
    12
    +)
    
    13
    +
    
    14
    +JUNCTION_IMPORT_PATH = os.path.join(
    
    15
    +    os.path.dirname(os.path.realpath(__file__)), '..', '..', 'doc', 'examples', 'autotools'
    
    16
    +)
    
    17
    +
    
    18
    +
    
    19
    +def ammend_juntion_path_paths(tmpdir):
    
    20
    +    # The junction element in the examples/junctions project uses a local source type.
    
    21
    +    # It's "path:" must specify a relative path from the project's root directory.
    
    22
    +    # For the hello-junction element to function during these tests, the copy of the junctions
    
    23
    +    # project made in the buildstream/tmp/directory, "path:" must be ammended to be the relative
    
    24
    +    # path to the autotools example from the temporary test directory.
    
    25
    +    junction_element = os.path.join(tmpdir, "elements", "hello-junction.bst")
    
    26
    +    junction_element_bst = ""
    
    27
    +    junction_relative_path = os.path.relpath(JUNCTION_IMPORT_PATH, tmpdir)
    
    28
    +    with open(junction_element, 'r') as f:
    
    29
    +        junction_element_bst = f.read()
    
    30
    +    ammended_element_bst = junction_element_bst.replace("../autotools", junction_relative_path)
    
    31
    +    with open(junction_element, 'w') as f:
    
    32
    +        f.write(ammended_element_bst)
    
    33
    +
    
    34
    +
    
    35
    +# Check that the autotools project is where the junctions example expects and
    
    36
    +# contains the hello.bst element.
    
    37
    +@pytest.mark.datafiles(DATA_DIR)
    
    38
    +def test_autotools_example_is_present(datafiles):
    
    39
    +    autotools_path = JUNCTION_IMPORT_PATH
    
    40
    +    assert os.path.exists(autotools_path)
    
    41
    +    assert os.path.exists(os.path.join(autotools_path, "elements", "hello.bst"))
    
    42
    +
    
    43
    +
    
    44
    +# Test that the project builds successfully
    
    45
    +@pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
    
    46
    +@pytest.mark.datafiles(DATA_DIR)
    
    47
    +def test_build(cli, tmpdir, datafiles):
    
    48
    +    project = os.path.join(datafiles.dirname, datafiles.basename)
    
    49
    +    ammend_juntion_path_paths(str(tmpdir))
    
    50
    +
    
    51
    +    result = cli.run(project=project, args=['build', 'callHello.bst'])
    
    52
    +    result.assert_success()
    
    53
    +
    
    54
    +
    
    55
    +# Test the callHello script works as expected.
    
    56
    +@pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
    
    57
    +@pytest.mark.datafiles(DATA_DIR)
    
    58
    +def test_shell_call_hello(cli, tmpdir, datafiles):
    
    59
    +    project = os.path.join(datafiles.dirname, datafiles.basename)
    
    60
    +    ammend_juntion_path_paths(str(tmpdir))
    
    61
    +
    
    62
    +    result = cli.run(project=project, args=['build', 'callHello.bst'])
    
    63
    +    result.assert_success()
    
    64
    +
    
    65
    +    result = cli.run(project=project, args=['shell', 'callHello.bst', '--', '/bin/sh', 'callHello.sh'])
    
    66
    +    result.assert_success()
    
    67
    +    assert result.output == 'Calling hello:\nHello World!\nThis is amhello 1.0.\n'
    
    68
    +
    
    69
    +
    
    70
    +# Test opening a cross-junction workspace
    
    71
    +@pytest.mark.skipif(not IS_LINUX, reason='Only available on linux')
    
    72
    +@pytest.mark.datafiles(DATA_DIR)
    
    73
    +def test_open_cross_junction_workspace(cli, tmpdir, datafiles):
    
    74
    +    project = os.path.join(datafiles.dirname, datafiles.basename)
    
    75
    +    workspace_dir = os.path.join(str(tmpdir), "workspace_hello_junction")
    
    76
    +    ammend_juntion_path_paths(str(tmpdir))
    
    77
    +
    
    78
    +    result = cli.run(project=project,
    
    79
    +                     args=['workspace', 'open', 'hello-junction.bst:hello.bst', workspace_dir])
    
    80
    +    result.assert_success()
    
    81
    +
    
    82
    +    result = cli.run(project=project,
    
    83
    +                     args=['workspace', 'close', '--remove-dir', 'hello-junction.bst:hello.bst'])
    
    84
    +    result.assert_success()

  • tests/sources/previous_source_access.py
    1
    +import os
    
    2
    +import pytest
    
    3
    +
    
    4
    +from tests.testutils import cli
    
    5
    +
    
    6
    +DATA_DIR = os.path.join(
    
    7
    +    os.path.dirname(os.path.realpath(__file__)),
    
    8
    +    'previous_source_access'
    
    9
    +)
    
    10
    +
    
    11
    +
    
    12
    +##################################################################
    
    13
    +#                              Tests                             #
    
    14
    +##################################################################
    
    15
    +# Test that plugins can access data from previous sources
    
    16
    +@pytest.mark.datafiles(DATA_DIR)
    
    17
    +def test_custom_transform_source(cli, tmpdir, datafiles):
    
    18
    +    project = os.path.join(datafiles.dirname, datafiles.basename)
    
    19
    +
    
    20
    +    # Ensure we can track
    
    21
    +    result = cli.run(project=project, args=[
    
    22
    +        'track', 'target.bst'
    
    23
    +    ])
    
    24
    +    result.assert_success()
    
    25
    +
    
    26
    +    # Ensure we can fetch
    
    27
    +    result = cli.run(project=project, args=[
    
    28
    +        'fetch', 'target.bst'
    
    29
    +    ])
    
    30
    +    result.assert_success()
    
    31
    +
    
    32
    +    # Ensure we get correct output from foo_transform
    
    33
    +    result = cli.run(project=project, args=[
    
    34
    +        'build', 'target.bst'
    
    35
    +    ])
    
    36
    +    destpath = os.path.join(cli.directory, 'checkout')
    
    37
    +    result = cli.run(project=project, args=[
    
    38
    +        'checkout', 'target.bst', destpath
    
    39
    +    ])
    
    40
    +    result.assert_success()
    
    41
    +    # Assert that files from both sources exist, and that they have
    
    42
    +    # the same content
    
    43
    +    assert os.path.exists(os.path.join(destpath, 'file'))
    
    44
    +    assert os.path.exists(os.path.join(destpath, 'filetransform'))
    
    45
    +    with open(os.path.join(destpath, 'file')) as file1:
    
    46
    +        with open(os.path.join(destpath, 'filetransform')) as file2:
    
    47
    +            assert file1.read() == file2.read()

  • tests/sources/previous_source_access/elements/target.bst
    1
    +kind: import
    
    2
    +
    
    3
    +sources:
    
    4
    +- kind: local
    
    5
    +  path: files/file
    
    6
    +- kind: foo_transform

  • tests/sources/previous_source_access/files/file
    1
    +Hello World!

  • tests/sources/previous_source_access/plugins/sources/foo_transform.py
    1
    +"""
    
    2
    +foo_transform - transform "file" from previous sources into "filetransform"
    
    3
    +===========================================================================
    
    4
    +
    
    5
    +This is a test source plugin that looks for a file named "file" staged by
    
    6
    +previous sources, and copies its contents to a file called "filetransform".
    
    7
    +
    
    8
    +"""
    
    9
    +
    
    10
    +import os
    
    11
    +import hashlib
    
    12
    +
    
    13
    +from buildstream import Consistency, Source, SourceError, utils
    
    14
    +
    
    15
    +
    
    16
    +class FooTransformSource(Source):
    
    17
    +
    
    18
    +    # We need access to previous both at track time and fetch time
    
    19
    +    requires_previous_sources_track = True
    
    20
    +    requires_previous_sources_fetch = True
    
    21
    +
    
    22
    +    @property
    
    23
    +    def mirror(self):
    
    24
    +        """Directory where this source should stage its files
    
    25
    +
    
    26
    +        """
    
    27
    +        path = os.path.join(self.get_mirror_directory(), self.name,
    
    28
    +                            self.ref.strip())
    
    29
    +        os.makedirs(path, exist_ok=True)
    
    30
    +        return path
    
    31
    +
    
    32
    +    def configure(self, node):
    
    33
    +        self.node_validate(node, ['ref'] + Source.COMMON_CONFIG_KEYS)
    
    34
    +        self.ref = self.node_get_member(node, str, 'ref', None)
    
    35
    +
    
    36
    +    def preflight(self):
    
    37
    +        pass
    
    38
    +
    
    39
    +    def get_unique_key(self):
    
    40
    +        return (self.ref,)
    
    41
    +
    
    42
    +    def get_consistency(self):
    
    43
    +        if self.ref is None:
    
    44
    +            return Consistency.INCONSISTENT
    
    45
    +        # If we have a file called "filetransform", verify that its checksum
    
    46
    +        # matches our ref. Otherwise, it resolved but not cached.
    
    47
    +        fpath = os.path.join(self.mirror, 'filetransform')
    
    48
    +        try:
    
    49
    +            with open(fpath, 'rb') as f:
    
    50
    +                if hashlib.sha256(f.read()).hexdigest() == self.ref.strip():
    
    51
    +                    return Consistency.CACHED
    
    52
    +        except Exception:
    
    53
    +            pass
    
    54
    +        return Consistency.RESOLVED
    
    55
    +
    
    56
    +    def get_ref(self):
    
    57
    +        return self.ref
    
    58
    +
    
    59
    +    def set_ref(self, ref, node):
    
    60
    +        self.ref = node['ref'] = ref
    
    61
    +
    
    62
    +    def track(self, previous_sources_dir):
    
    63
    +        # Store the checksum of the file from previous source as our ref
    
    64
    +        fpath = os.path.join(previous_sources_dir, 'file')
    
    65
    +        with open(fpath, 'rb') as f:
    
    66
    +            return hashlib.sha256(f.read()).hexdigest()
    
    67
    +
    
    68
    +    def fetch(self, previous_sources_dir):
    
    69
    +        fpath = os.path.join(previous_sources_dir, 'file')
    
    70
    +        # Verify that the checksum of the file from previous source matches
    
    71
    +        # our ref
    
    72
    +        with open(fpath, 'rb') as f:
    
    73
    +            if hashlib.sha256(f.read()).hexdigest() != self.ref.strip():
    
    74
    +                raise SourceError("Element references do not match")
    
    75
    +
    
    76
    +        # Copy "file" as "filetransform"
    
    77
    +        newfpath = os.path.join(self.mirror, 'filetransform')
    
    78
    +        utils.safe_copy(fpath, newfpath)
    
    79
    +
    
    80
    +    def stage(self, directory):
    
    81
    +        # Simply stage the "filetransform" file
    
    82
    +        utils.safe_copy(os.path.join(self.mirror, 'filetransform'),
    
    83
    +                        os.path.join(directory, 'filetransform'))
    
    84
    +
    
    85
    +
    
    86
    +def setup():
    
    87
    +    return FooTransformSource

  • tests/sources/previous_source_access/project.conf
    1
    +# Project with local source plugins
    
    2
    +name: foo
    
    3
    +
    
    4
    +element-path: elements
    
    5
    +
    
    6
    +plugins:
    
    7
    +- origin: local
    
    8
    +  path: plugins/sources
    
    9
    +  sources:
    
    10
    +    foo_transform: 0



  • [Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]