[Notes] [Git][BuildStream/buildstream][Qinusty/553-backport-1.2] 7 commits: _context.py: Cache size is now restricted to available disk space



Title: GitLab

Qinusty pushed to branch Qinusty/553-backport-1.2 at BuildStream / buildstream

Commits:

22 changed files:

Changes:

  • NEWS
    ... ... @@ -11,6 +11,9 @@ buildstream 1.1.5
    11 11
     
    
    12 12
       o Added new `remote` source plugin for downloading file blobs
    
    13 13
     
    
    14
    +  o Add support for the new include '(@)' directive in project.conf and .bst files
    
    15
    +
    
    16
    +
    
    14 17
     =================
    
    15 18
     buildstream 1.1.4
    
    16 19
     =================
    

  • buildstream/_artifactcache/cascache.py
    ... ... @@ -221,6 +221,8 @@ class CASCache(ArtifactCache):
    221 221
                 try:
    
    222 222
                     remote.init()
    
    223 223
     
    
    224
    +                element.info("Pulling {} <- {}".format(element._get_brief_display_key(), remote.spec.url))
    
    225
    +
    
    224 226
                     request = buildstream_pb2.GetReferenceRequest()
    
    225 227
                     request.key = ref
    
    226 228
                     response = remote.ref_storage.GetReference(request)
    
    ... ... @@ -263,6 +265,8 @@ class CASCache(ArtifactCache):
    263 265
             for remote in push_remotes:
    
    264 266
                 remote.init()
    
    265 267
     
    
    268
    +            element.info("Pushing {} -> {}".format(element._get_brief_display_key(), remote.spec.url))
    
    269
    +
    
    266 270
                 try:
    
    267 271
                     for ref in refs:
    
    268 272
                         tree = self.resolve_ref(ref)
    
    ... ... @@ -276,6 +280,8 @@ class CASCache(ArtifactCache):
    276 280
     
    
    277 281
                             if response.digest.hash == tree.hash and response.digest.size_bytes == tree.size_bytes:
    
    278 282
                                 # ref is already on the server with the same tree
    
    283
    +                            element.info("Skipping {}, remote ({}) already has artifact cached".format(
    
    284
    +                                element._get_brief_display_key(), remote.spec.url))
    
    279 285
                                 continue
    
    280 286
     
    
    281 287
                         except grpc.RpcError as e:
    

  • buildstream/_context.py
    ... ... @@ -197,29 +197,55 @@ class Context():
    197 197
                                 "\nValid values are, for example: 800M 10G 1T 50%\n"
    
    198 198
                                 .format(str(e))) from e
    
    199 199
     
    
    200
    -        # If we are asked not to set a quota, we set it to the maximum
    
    201
    -        # disk space available minus a headroom of 2GB, such that we
    
    202
    -        # at least try to avoid raising Exceptions.
    
    200
    +        # Headroom intended to give BuildStream a bit of leeway.
    
    201
    +        # This acts as the minimum size of cache_quota and also
    
    202
    +        # is taken from the user requested cache_quota.
    
    203 203
             #
    
    204
    -        # Of course, we might still end up running out during a build
    
    205
    -        # if we end up writing more than 2G, but hey, this stuff is
    
    206
    -        # already really fuzzy.
    
    207
    -        #
    
    208
    -        if cache_quota is None:
    
    209
    -            stat = os.statvfs(artifactdir_volume)
    
    210
    -            # Again, the artifact directory may not yet have been
    
    211
    -            # created
    
    212
    -            if not os.path.exists(self.artifactdir):
    
    213
    -                cache_size = 0
    
    214
    -            else:
    
    215
    -                cache_size = utils._get_dir_size(self.artifactdir)
    
    216
    -            cache_quota = cache_size + stat.f_bsize * stat.f_bavail
    
    217
    -
    
    218 204
             if 'BST_TEST_SUITE' in os.environ:
    
    219 205
                 headroom = 0
    
    220 206
             else:
    
    221 207
                 headroom = 2e9
    
    222 208
     
    
    209
    +        stat = os.statvfs(artifactdir_volume)
    
    210
    +        available_space = (stat.f_bsize * stat.f_bavail)
    
    211
    +
    
    212
    +        # Again, the artifact directory may not yet have been created yet
    
    213
    +        #
    
    214
    +        if not os.path.exists(self.artifactdir):
    
    215
    +            cache_size = 0
    
    216
    +        else:
    
    217
    +            cache_size = utils._get_dir_size(self.artifactdir)
    
    218
    +
    
    219
    +        # Ensure system has enough storage for the cache_quota
    
    220
    +        #
    
    221
    +        # If cache_quota is none, set it to the maximum it could possibly be.
    
    222
    +        #
    
    223
    +        # Also check that cache_quota is atleast as large as our headroom.
    
    224
    +        #
    
    225
    +        if cache_quota is None:  # Infinity, set to max system storage
    
    226
    +            cache_quota = cache_size + available_space
    
    227
    +        if cache_quota < headroom:  # Check minimum
    
    228
    +            raise LoadError(LoadErrorReason.INVALID_DATA,
    
    229
    +                            "Invalid cache quota ({}): ".format(utils._pretty_size(cache_quota)) +
    
    230
    +                            "BuildStream requires a minimum cache quota of 2G.")
    
    231
    +        elif cache_quota > cache_size + available_space:  # Check maximum
    
    232
    +            raise LoadError(LoadErrorReason.INVALID_DATA,
    
    233
    +                            ("Your system does not have enough available " +
    
    234
    +                             "space to support the cache quota specified.\n" +
    
    235
    +                             "You currently have:\n" +
    
    236
    +                             "- {used} of cache in use at {local_cache_path}\n" +
    
    237
    +                             "- {available} of available system storage").format(
    
    238
    +                                 used=utils._pretty_size(cache_size),
    
    239
    +                                 local_cache_path=self.artifactdir,
    
    240
    +                                 available=utils._pretty_size(available_space)))
    
    241
    +
    
    242
    +        # Place a slight headroom (2e9 (2GB) on the cache_quota) into
    
    243
    +        # cache_quota to try and avoid exceptions.
    
    244
    +        #
    
    245
    +        # Of course, we might still end up running out during a build
    
    246
    +        # if we end up writing more than 2G, but hey, this stuff is
    
    247
    +        # already really fuzzy.
    
    248
    +        #
    
    223 249
             self.cache_quota = cache_quota - headroom
    
    224 250
             self.cache_lower_threshold = self.cache_quota / 2
    
    225 251
     
    

  • buildstream/element.py
    ... ... @@ -618,7 +618,7 @@ class Element(Plugin):
    618 618
             # Time to use the artifact, check once more that it's there
    
    619 619
             self.__assert_cached()
    
    620 620
     
    
    621
    -        with self.timed_activity("Staging {}/{}".format(self.name, self.__get_brief_display_key())):
    
    621
    +        with self.timed_activity("Staging {}/{}".format(self.name, self._get_brief_display_key())):
    
    622 622
                 # Get the extracted artifact
    
    623 623
                 artifact_base, _ = self.__extract()
    
    624 624
                 artifact = os.path.join(artifact_base, 'files')
    
    ... ... @@ -1157,6 +1157,19 @@ class Element(Plugin):
    1157 1157
             length = min(len(cache_key), context.log_key_length)
    
    1158 1158
             return (cache_key, cache_key[0:length], dim_key)
    
    1159 1159
     
    
    1160
    +    # _get_brief_display_key()
    
    1161
    +    #
    
    1162
    +    # Returns an abbreviated cache key for display purposes
    
    1163
    +    #
    
    1164
    +    # Returns:
    
    1165
    +    #    (str): An abbreviated hex digest cache key for this Element
    
    1166
    +    #
    
    1167
    +    # Question marks are returned if information for the cache key is missing.
    
    1168
    +    #
    
    1169
    +    def _get_brief_display_key(self):
    
    1170
    +        _, display_key, _ = self._get_display_key()
    
    1171
    +        return display_key
    
    1172
    +
    
    1160 1173
         # _preflight():
    
    1161 1174
         #
    
    1162 1175
         # A wrapper for calling the abstract preflight() method on
    
    ... ... @@ -1631,7 +1644,7 @@ class Element(Plugin):
    1631 1644
                 return False
    
    1632 1645
     
    
    1633 1646
             # Notify successfull download
    
    1634
    -        display_key = self.__get_brief_display_key()
    
    1647
    +        display_key = self._get_brief_display_key()
    
    1635 1648
             self.info("Downloaded artifact {}".format(display_key))
    
    1636 1649
             return True
    
    1637 1650
     
    
    ... ... @@ -1671,14 +1684,14 @@ class Element(Plugin):
    1671 1684
                 self.warn("Not pushing tainted artifact.")
    
    1672 1685
                 return False
    
    1673 1686
     
    
    1674
    -        with self.timed_activity("Pushing artifact"):
    
    1687
    +        display_key = self._get_brief_display_key()
    
    1688
    +        with self.timed_activity("Pushing artifact {}".format(display_key)):
    
    1675 1689
                 # Push all keys used for local commit
    
    1676 1690
                 pushed = self.__artifacts.push(self, self.__get_cache_keys_for_commit())
    
    1677 1691
                 if not pushed:
    
    1678 1692
                     return False
    
    1679 1693
     
    
    1680 1694
                 # Notify successful upload
    
    1681
    -            display_key = self.__get_brief_display_key()
    
    1682 1695
                 self.info("Pushed artifact {}".format(display_key))
    
    1683 1696
                 return True
    
    1684 1697
     
    
    ... ... @@ -1954,19 +1967,6 @@ class Element(Plugin):
    1954 1967
         def __can_build_incrementally(self):
    
    1955 1968
             return bool(self._get_workspace())
    
    1956 1969
     
    
    1957
    -    # __get_brief_display_key():
    
    1958
    -    #
    
    1959
    -    # Returns an abbreviated cache key for display purposes
    
    1960
    -    #
    
    1961
    -    # Returns:
    
    1962
    -    #    (str): An abbreviated hex digest cache key for this Element
    
    1963
    -    #
    
    1964
    -    # Question marks are returned if information for the cache key is missing.
    
    1965
    -    #
    
    1966
    -    def __get_brief_display_key(self):
    
    1967
    -        _, display_key, _ = self._get_display_key()
    
    1968
    -        return display_key
    
    1969
    -
    
    1970 1970
         # __prepare():
    
    1971 1971
         #
    
    1972 1972
         # Internal method for calling public abstract prepare() method.
    
    ... ... @@ -1989,7 +1989,7 @@ class Element(Plugin):
    1989 1989
         # Raises an error if the artifact is not cached.
    
    1990 1990
         #
    
    1991 1991
         def __assert_cached(self):
    
    1992
    -        assert self._cached(), "{}: Missing artifact {}".format(self, self.__get_brief_display_key())
    
    1992
    +        assert self._cached(), "{}: Missing artifact {}".format(self, self._get_brief_display_key())
    
    1993 1993
     
    
    1994 1994
         # __get_tainted():
    
    1995 1995
         #
    

  • buildstream/utils.py
    ... ... @@ -612,6 +612,27 @@ def _parse_size(size, volume):
    612 612
         return int(num) * 1024**units.index(unit)
    
    613 613
     
    
    614 614
     
    
    615
    +# _pretty_size()
    
    616
    +#
    
    617
    +# Converts a number of bytes into a string representation in KB, MB, GB, TB
    
    618
    +# represented as K, M, G, T etc.
    
    619
    +#
    
    620
    +# Args:
    
    621
    +#   size (int): The size to convert in bytes.
    
    622
    +#   dec_places (int): The number of decimal places to output to.
    
    623
    +#
    
    624
    +# Returns:
    
    625
    +#   (str): The string representation of the number of bytes in the largest
    
    626
    +def _pretty_size(size, dec_places=0):
    
    627
    +    psize = size
    
    628
    +    unit = 'B'
    
    629
    +    for unit in ('B', 'K', 'M', 'G', 'T'):
    
    630
    +        if psize < 1024:
    
    631
    +            break
    
    632
    +        else:
    
    633
    +            psize /= 1024
    
    634
    +    return "{size:g}{unit}".format(size=round(psize, dec_places), unit=unit)
    
    635
    +
    
    615 636
     # A sentinel to be used as a default argument for functions that need
    
    616 637
     # to distinguish between a kwarg set to None and an unset kwarg.
    
    617 638
     _sentinel = object()
    

  • man/bst-build.1
    1
    -.TH "BST BUILD" "1" "18-Jul-2018" "" "bst build Manual"
    
    1
    +.TH "BST BUILD" "1" "06-Aug-2018" "" "bst build Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-build \- Build elements in a pipeline
    
    4 4
     .SH SYNOPSIS
    

  • man/bst-checkout.1
    1
    -.TH "BST CHECKOUT" "1" "18-Jul-2018" "" "bst checkout Manual"
    
    1
    +.TH "BST CHECKOUT" "1" "06-Aug-2018" "" "bst checkout Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-checkout \- Checkout a built artifact
    
    4 4
     .SH SYNOPSIS
    
    ... ... @@ -22,5 +22,4 @@ Whether to run integration commands
    22 22
     Checkout hardlinks instead of copies (handle with care)
    
    23 23
     .TP
    
    24 24
     \fB\-\-tar\fP
    
    25
    -Create a tarball from the artifact contents instead of a file tree. If
    
    26
    -LOCATION is '-', the tarball will be dumped to the standard output.
    25
    +Create a tarball from the artifact contents instead of a file tree. If LOCATION is '-', the tarball will be dumped to the standard output.
    \ No newline at end of file

  • man/bst-fetch.1
    1
    -.TH "BST FETCH" "1" "18-Jul-2018" "" "bst fetch Manual"
    
    1
    +.TH "BST FETCH" "1" "06-Aug-2018" "" "bst fetch Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-fetch \- Fetch sources in a pipeline
    
    4 4
     .SH SYNOPSIS
    

  • man/bst-help.1
    1
    -.TH "BST HELP" "1" "18-Jul-2018" "" "bst help Manual"
    
    1
    +.TH "BST HELP" "1" "06-Aug-2018" "" "bst help Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-help \- Print usage information
    
    4 4
     .SH SYNOPSIS
    

  • man/bst-init.1
    1
    -.TH "BST INIT" "1" "18-Jul-2018" "" "bst init Manual"
    
    1
    +.TH "BST INIT" "1" "06-Aug-2018" "" "bst init Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-init \- Initialize a new BuildStream project
    
    4 4
     .SH SYNOPSIS
    
    ... ... @@ -18,7 +18,7 @@ interactive session.
    18 18
     The project name to use
    
    19 19
     .TP
    
    20 20
     \fB\-\-format\-version\fP INTEGER
    
    21
    -The required format version (default: 9)
    
    21
    +The required format version (default: 12)
    
    22 22
     .TP
    
    23 23
     \fB\-\-element\-path\fP PATH
    
    24 24
     The subdirectory to store elements in (default: elements)
    

  • man/bst-pull.1
    1
    -.TH "BST PULL" "1" "18-Jul-2018" "" "bst pull Manual"
    
    1
    +.TH "BST PULL" "1" "06-Aug-2018" "" "bst pull Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-pull \- Pull a built artifact
    
    4 4
     .SH SYNOPSIS
    

  • man/bst-push.1
    1
    -.TH "BST PUSH" "1" "18-Jul-2018" "" "bst push Manual"
    
    1
    +.TH "BST PUSH" "1" "06-Aug-2018" "" "bst push Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-push \- Push a built artifact
    
    4 4
     .SH SYNOPSIS
    

  • man/bst-shell.1
    1
    -.TH "BST SHELL" "1" "18-Jul-2018" "" "bst shell Manual"
    
    1
    +.TH "BST SHELL" "1" "06-Aug-2018" "" "bst shell Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-shell \- Shell into an element's sandbox environment
    
    4 4
     .SH SYNOPSIS
    

  • man/bst-show.1
    1
    -.TH "BST SHOW" "1" "18-Jul-2018" "" "bst show Manual"
    
    1
    +.TH "BST SHOW" "1" "06-Aug-2018" "" "bst show Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-show \- Show elements in the pipeline
    
    4 4
     .SH SYNOPSIS
    

  • man/bst-source-bundle.1
    1
    -.TH "BST SOURCE-BUNDLE" "1" "18-Jul-2018" "" "bst source-bundle Manual"
    
    1
    +.TH "BST SOURCE-BUNDLE" "1" "06-Aug-2018" "" "bst source-bundle Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-source-bundle \- Produce a build bundle to be manually executed
    
    4 4
     .SH SYNOPSIS
    

  • man/bst-track.1
    1
    -.TH "BST TRACK" "1" "18-Jul-2018" "" "bst track Manual"
    
    1
    +.TH "BST TRACK" "1" "06-Aug-2018" "" "bst track Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-track \- Track new source references
    
    4 4
     .SH SYNOPSIS
    

  • man/bst-workspace-close.1
    1
    -.TH "BST WORKSPACE CLOSE" "1" "18-Jul-2018" "" "bst workspace close Manual"
    
    1
    +.TH "BST WORKSPACE CLOSE" "1" "06-Aug-2018" "" "bst workspace close Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-workspace\-close \- Close workspaces
    
    4 4
     .SH SYNOPSIS
    

  • man/bst-workspace-list.1
    1
    -.TH "BST WORKSPACE LIST" "1" "18-Jul-2018" "" "bst workspace list Manual"
    
    1
    +.TH "BST WORKSPACE LIST" "1" "06-Aug-2018" "" "bst workspace list Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-workspace\-list \- List open workspaces
    
    4 4
     .SH SYNOPSIS
    

  • man/bst-workspace-open.1
    1
    -.TH "BST WORKSPACE OPEN" "1" "18-Jul-2018" "" "bst workspace open Manual"
    
    1
    +.TH "BST WORKSPACE OPEN" "1" "06-Aug-2018" "" "bst workspace open Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-workspace\-open \- Open a new workspace
    
    4 4
     .SH SYNOPSIS
    

  • man/bst-workspace-reset.1
    1
    -.TH "BST WORKSPACE RESET" "1" "18-Jul-2018" "" "bst workspace reset Manual"
    
    1
    +.TH "BST WORKSPACE RESET" "1" "06-Aug-2018" "" "bst workspace reset Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-workspace\-reset \- Reset a workspace to its original state
    
    4 4
     .SH SYNOPSIS
    

  • man/bst-workspace.1
    1
    -.TH "BST WORKSPACE" "1" "18-Jul-2018" "" "bst workspace Manual"
    
    1
    +.TH "BST WORKSPACE" "1" "06-Aug-2018" "" "bst workspace Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst\-workspace \- Manipulate developer workspaces
    
    4 4
     .SH SYNOPSIS
    
    ... ... @@ -7,22 +7,22 @@ bst\-workspace \- Manipulate developer workspaces
    7 7
     .SH DESCRIPTION
    
    8 8
     Manipulate developer workspaces
    
    9 9
     .SH COMMANDS
    
    10
    -.PP
    
    11
    -\fBopen\fP
    
    12
    -  Open a new workspace
    
    13
    -  See \fBbst workspace-open(1)\fP for full documentation on the \fBopen\fP command.
    
    14
    -
    
    15 10
     .PP
    
    16 11
     \fBreset\fP
    
    17 12
       Reset a workspace to its original state
    
    18 13
       See \fBbst workspace-reset(1)\fP for full documentation on the \fBreset\fP command.
    
    19 14
     
    
    15
    +.PP
    
    16
    +\fBclose\fP
    
    17
    +  Close workspaces
    
    18
    +  See \fBbst workspace-close(1)\fP for full documentation on the \fBclose\fP command.
    
    19
    +
    
    20 20
     .PP
    
    21 21
     \fBlist\fP
    
    22 22
       List open workspaces
    
    23 23
       See \fBbst workspace-list(1)\fP for full documentation on the \fBlist\fP command.
    
    24 24
     
    
    25 25
     .PP
    
    26
    -\fBclose\fP
    
    27
    -  Close workspaces
    
    28
    -  See \fBbst workspace-close(1)\fP for full documentation on the \fBclose\fP command.
    26
    +\fBopen\fP
    
    27
    +  Open a new workspace
    
    28
    +  See \fBbst workspace-open(1)\fP for full documentation on the \fBopen\fP command.

  • man/bst.1
    1
    -.TH "BST" "1" "18-Jul-2018" "" "bst Manual"
    
    1
    +.TH "BST" "1" "06-Aug-2018" "" "bst Manual"
    
    2 2
     .SH NAME
    
    3 3
     bst \- Build and manipulate BuildStream projects...
    
    4 4
     .SH SYNOPSIS
    
    ... ... @@ -61,31 +61,29 @@ Elements must be rebuilt when their dependencies have changed
    61 61
     .TP
    
    62 62
     \fB\-o,\fP \-\-option OPTION VALUE
    
    63 63
     Specify a project option
    
    64
    +.TP
    
    65
    +\fB\-\-default\-mirror\fP TEXT
    
    66
    +The mirror to fetch from first, before attempting other mirrors
    
    64 67
     .SH COMMANDS
    
    65 68
     .PP
    
    66
    -\fBsource-bundle\fP
    
    67
    -  Produce a build bundle to be manually executed
    
    68
    -  See \fBbst-source-bundle(1)\fP for full documentation on the \fBsource-bundle\fP command.
    
    69
    -
    
    70
    -.PP
    
    71
    -\fBhelp\fP
    
    72
    -  Print usage information
    
    73
    -  See \fBbst-help(1)\fP for full documentation on the \fBhelp\fP command.
    
    69
    +\fBshow\fP
    
    70
    +  Show elements in the pipeline
    
    71
    +  See \fBbst-show(1)\fP for full documentation on the \fBshow\fP command.
    
    74 72
     
    
    75 73
     .PP
    
    76
    -\fBinit\fP
    
    77
    -  Initialize a new BuildStream project
    
    78
    -  See \fBbst-init(1)\fP for full documentation on the \fBinit\fP command.
    
    74
    +\fBpush\fP
    
    75
    +  Push a built artifact
    
    76
    +  See \fBbst-push(1)\fP for full documentation on the \fBpush\fP command.
    
    79 77
     
    
    80 78
     .PP
    
    81
    -\fBtrack\fP
    
    82
    -  Track new source references
    
    83
    -  See \fBbst-track(1)\fP for full documentation on the \fBtrack\fP command.
    
    79
    +\fBcheckout\fP
    
    80
    +  Checkout a built artifact
    
    81
    +  See \fBbst-checkout(1)\fP for full documentation on the \fBcheckout\fP command.
    
    84 82
     
    
    85 83
     .PP
    
    86
    -\fBpull\fP
    
    87
    -  Pull a built artifact
    
    88
    -  See \fBbst-pull(1)\fP for full documentation on the \fBpull\fP command.
    
    84
    +\fBfetch\fP
    
    85
    +  Fetch sources in a pipeline
    
    86
    +  See \fBbst-fetch(1)\fP for full documentation on the \fBfetch\fP command.
    
    89 87
     
    
    90 88
     .PP
    
    91 89
     \fBworkspace\fP
    
    ... ... @@ -98,9 +96,19 @@ Specify a project option
    98 96
       See \fBbst-build(1)\fP for full documentation on the \fBbuild\fP command.
    
    99 97
     
    
    100 98
     .PP
    
    101
    -\fBcheckout\fP
    
    102
    -  Checkout a built artifact
    
    103
    -  See \fBbst-checkout(1)\fP for full documentation on the \fBcheckout\fP command.
    
    99
    +\fBtrack\fP
    
    100
    +  Track new source references
    
    101
    +  See \fBbst-track(1)\fP for full documentation on the \fBtrack\fP command.
    
    102
    +
    
    103
    +.PP
    
    104
    +\fBsource-bundle\fP
    
    105
    +  Produce a build bundle to be manually executed
    
    106
    +  See \fBbst-source-bundle(1)\fP for full documentation on the \fBsource-bundle\fP command.
    
    107
    +
    
    108
    +.PP
    
    109
    +\fBinit\fP
    
    110
    +  Initialize a new BuildStream project
    
    111
    +  See \fBbst-init(1)\fP for full documentation on the \fBinit\fP command.
    
    104 112
     
    
    105 113
     .PP
    
    106 114
     \fBshell\fP
    
    ... ... @@ -108,16 +116,11 @@ Specify a project option
    108 116
       See \fBbst-shell(1)\fP for full documentation on the \fBshell\fP command.
    
    109 117
     
    
    110 118
     .PP
    
    111
    -\fBfetch\fP
    
    112
    -  Fetch sources in a pipeline
    
    113
    -  See \fBbst-fetch(1)\fP for full documentation on the \fBfetch\fP command.
    
    114
    -
    
    115
    -.PP
    
    116
    -\fBpush\fP
    
    117
    -  Push a built artifact
    
    118
    -  See \fBbst-push(1)\fP for full documentation on the \fBpush\fP command.
    
    119
    +\fBpull\fP
    
    120
    +  Pull a built artifact
    
    121
    +  See \fBbst-pull(1)\fP for full documentation on the \fBpull\fP command.
    
    119 122
     
    
    120 123
     .PP
    
    121
    -\fBshow\fP
    
    122
    -  Show elements in the pipeline
    
    123
    -  See \fBbst-show(1)\fP for full documentation on the \fBshow\fP command.
    124
    +\fBhelp\fP
    
    125
    +  Print usage information
    
    126
    +  See \fBbst-help(1)\fP for full documentation on the \fBhelp\fP command.



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