Remote Packages and Repositories¶
Unlike most package management systems, bpt
does not have a separate “install”
step for downloading and using dependencies. Instead each bpt
operation “uses”
some set of repositories, and data from these repositories are pulled and cached
on-the-fly as required.
The repositories in use by any operation are specified with the --use-repo
option, which is accepted by any subcommand that can use package dependencies.
--use-repo
can be specified any number of times on the command line, and bpt
will treat all of the repositories as a pool of packages available for
dependency resolution.
Note
In addition to any repositories enabled with --use-repo
, bpt
will by
default use a default repository at https://repo-3.bpt.pizza/. This can be
disabled with the --no-default-repo
option.
Important
The local package cache is not part of the interface and standard
workflow. bpt
does not “remember” the given --use-repo
values provided for
a build. Instead, each invocation of bpt
is considered independent, and
only the packages that are available in the repositories specified with
--use-repo
will be available for dependency resolution. Locally cached
packages are not relevant for the purposes of dependency resolution.
Note
The metadata from package repositories is pulled and updated on-the-fly. bpt
uses the HTTP Cache-Control, ETag, and Last-Modified headers to
determine when its cached copy of repository metadata is out-of-date.
Viewing Available Packages¶
To discover which packages and which versions are available the listing can be obtained with the bpt pkg search subcommand:
$ bpt pkg search
Name: abseil
Versions: 2018.6.0, 2019.8.8, 2020.2.25
From: repo-1.bpt.pizza
Name: asio
Versions: 1.12.0, 1.12.1, 1.12.2, 1.13.0, 1.14.0, 1.14.1, 1.16.0, 1.16.1
From: repo-1.bpt.pizza
Name: boost.leaf
Versions: 0.1.0, 0.2.0, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.3.0
From: repo-1.bpt.pizza
Name: boost.mp11
Versions: 1.70.0, 1.71.0, 1.72.0, 1.73.0
From: repo-1.bpt.pizza
Optionally, one can search with a fnmatch-style pattern:
$ bpt pkg search 'neo-*'
Name: neo-buffer
Versions: 0.2.1, 0.3.0, 0.4.0, 0.4.1, 0.4.2
From: repo-1.bpt.pizza
Name: neo-compress
Versions: 0.1.0, 0.1.1, 0.2.0
From: repo-1.bpt.pizza
Name: neo-concepts
Versions: 0.2.2, 0.3.0, 0.3.1, 0.3.2, 0.4.0
From: repo-1.bpt.pizza
Note
The search packages will include all repositories enabled for the
pkg search
invocation, including the default repository unless
--no-default-repo
is specified.
To search packages available in a specific repository without including
packages from the default repository, pass --use-repo
along with
--no-default-repo
:
$ bpt pkg search --use-repo=my-repo.example.org --no-default-repo
The Default Repository¶
The default repository is the repository that is always enabled by bpt
unless --no-default-repo
is specified. The default repository (at time of
writing) lives at https://repo-3.bpt.pizza/.
There is nothing intrinsically special about this repository other than it being
the default for bpt
. It can be disable with --no-default-repo
or
BPT_NO_DEFAULT_REPO
should one want tighter control over package
availability.