The Local Package Repository¶
dds
maintains a local repository of packages that it has obtained at the
request of a user. The packages themselves are stored as
source distributions (dds
does not store the binaries
that it builds within the repository).
Reading Repository Contents¶
Most times, dds
will manage the repository content silently, but it may be
useful to see what dds
is currently storing away.
The content of the repostiory can be seen with the repo
subcommand:
> dds repo ls
This will print the names of packages that dds
has downloaded, as well as
the versions of each.
Obtaining Packages¶
See also
See also: The Package Catalog
When dds
builds a package, it will also build the dependency libraries of
that package. In order for the dependency build to succeed, it must have a
local copy of the source distribution of that dependency.
When dds
performs dependency resolution, it will consider both existing
packages in the local repository, as well as packages that are available from
the package catalog. If the dependency solution requires any
packages that are not in the local repository, it will use the information in
the catalog to obtain a source distribution for each missing package. These
source distributions will automatically be added to the local repository, and
later dependency resolutions will not need to download that package again.
Manually Downloading a Dependency¶
It may be useful to obtain a copy of the source distribution of a package
contained in the catalog. The catalog get
command can be used to do this:
> dds catalog get <name>@<version>
This will obtain the source distribution of the package matching the named identifier and place that distribution in current working directory, using the package ID as the name of the source distribution directory:
$ dds catalog get spdlog@1.4.2
[ ... ]
$ ls .
.
..
spdlog@1.4.2
$ ls ./spdlog@1.4.2/
include/
src/
library.json5
package.json5
Exporting a Project into the Repository¶
dds
can only use packages that are available in the local repository. For
packages that have a listing in the catalog, this is not a problem. But if one
is developing a local package and wants to allow it to be used in another local
package, that can be done by exporting a source distribution from the package
root:
> dds sdist export
This command will create a source distribution and place it in the local repository. The package is now available to other projects on the local system.
Note
This doesn’t export in “editable” mode: A snapshot of the package root will be taken and exported to the local repository.
If one tries to export a package root into a repository that already contains
a package with a matching identifier, dds
will issue an error. If the
--replace
flag is specified with sdist export
, then dds
will
forcibly replace the package in the local repository with a new copy.