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.