@@ -0,0 +1,11 @@ | |||
Error: Invalid library manifest | |||
############################### | |||
Every ``dds`` package must contain a valid library manifest for each library | |||
that it exports. These manifests are stored in the library root to which they | |||
correspond, and are stored in JSON5 format in ``library.json5`` (or similarly | |||
named file). | |||
The contents of this file must follow a prescribed content, or ``dds`` will | |||
reject the manifest. Refer to the :ref:`pkgs.libs` documentation page for more | |||
information about how to declare libraries. |
@@ -7,7 +7,7 @@ and is thoroughly explained on the :doc:`/guide/packages` page. | |||
For exporting/generating a source distribution from a package, the *package | |||
root* requires a ``package.json5`` file and each *library root* requires a | |||
``library.dds`` file. | |||
``library.json5`` file. | |||
.. . | |||
TODO: Create are more detailed reference page for package and library layout, |
@@ -2,11 +2,11 @@ Error: Unknown Usage/Linking Requirements | |||
######################################### | |||
A library can declare that it *uses* or *links* to another library by using the | |||
``Uses`` and ``Links`` keys in ``library.dds``, respectively. | |||
``uses`` and ``links`` keys in ``library.json5``, respectively. | |||
These requirements are specified by using the ``namespace/name`` pair that | |||
identifies a library. These are defined by both the project's dependencies and | |||
the project itself. If a ``Uses`` or ``Links`` key does not correspond to a | |||
the project itself. If a ``uses`` or ``links`` key does not correspond to a | |||
known library, ``dds`` will not be able to resolve the usage requirements, and | |||
will generate an error. | |||
@@ -48,7 +48,7 @@ that will be added to the catalog. The following options are supported: | |||
``--git-url <url>`` | |||
Specify a Git URL to clone from to obtain the package. The root of the | |||
cloned repository must be a package root, but does not necessarily need to | |||
have the ``package.json5`` and ``library.dds`` files if relying on the | |||
have the ``package.json5`` and ``library.json5`` files if relying on the | |||
``--auto-lib`` parameter. | |||
``--git-ref`` **must** be passed with ``--git-url``. |
@@ -198,24 +198,29 @@ Library Dependencies | |||
In ``dds``, library interdependencies are tracked separately from the packages | |||
that contain them. A library must declare its intent to use another library | |||
in the ``library.dds`` at its library root. The minimal content of a | |||
``library.dds`` is the ``Name`` key: | |||
in the ``library.json5`` at its library root. The minimal content of a | |||
``library.json5`` is the ``Name`` key: | |||
.. code-block:: | |||
.. code-block:: js | |||
Name: gadgets | |||
{ | |||
name: 'gadgets' | |||
} | |||
To announce that a library wishes to *use* another library, use the aptly-named | |||
``Uses`` key: | |||
``uses`` key: | |||
.. code-block:: js | |||
:emphasize-lines: 3-5 | |||
:emphasize-lines: 3-7 | |||
Name: gadgets | |||
Uses: acme/widgets | |||
Uses: acme/gizmos | |||
Uses: acme/utils | |||
{ | |||
name: 'gadgets', | |||
uses: [ | |||
'acme/widgets', | |||
'acme/gizmos', | |||
'acme/utils', | |||
], | |||
} | |||
Here is where the package's ``namespace`` key comes into play: A library's | |||
qualified name is specified by joining the ``namespace`` of the containing | |||
@@ -237,6 +242,6 @@ It is the responsibility of package authors to document the ``namespace`` and | |||
However, it is essential that the ``<namespace>/<name>`` pair be | |||
universally unique, so choose wisely! | |||
Once the ``Uses`` key appears in the ``library.dds`` file of a library, ``dds`` | |||
Once the ``uses`` key appears in the ``library.dds`` file of a library, ``dds`` | |||
will make available the headers for the library being used, and will | |||
transitively propagate that usage requirement to users of the library. |
@@ -242,13 +242,14 @@ included in downstream binaries, but it will still generate link rules for the | |||
dependencies of a header-only library. | |||
In order for ``dds`` to be able to distribute and interlink libraries, a | |||
``library.dds`` file must be present at the corresponding library root. The | |||
only required key in a ``library.dds`` file is ``Name``: | |||
``library.json5`` file must be present at the corresponding library root. The | |||
only required key in a ``library.json5`` file is ``Name``: | |||
.. code-block:: yaml | |||
Name: my-library | |||
.. code-block:: js | |||
{ | |||
name: 'my-library' | |||
} | |||
.. seealso:: More information is discussed on the :ref:`deps.lib-deps` page | |||
@@ -62,7 +62,7 @@ package ID as the name of the source distribution directory:: | |||
$ ls ./spdlog@1.4.2/ | |||
include/ | |||
src/ | |||
library.dds | |||
library.json5 | |||
package.json5 | |||
@@ -234,7 +234,7 @@ which packages are claiming the library name. | |||
)"; | |||
case errc::unknown_usage_name: | |||
return R"( | |||
A `Uses` or `Links` field for a library specifies a library of an unknown name. | |||
A `uses` or `links` field for a library specifies a library of an unknown name. | |||
Check your spelling, and check that the package containing the library is | |||
available, either from the `package.json5` or from the `INDEX.lmi` that was used | |||
for the build. | |||
@@ -313,7 +313,7 @@ std::string_view dds::default_error_string(dds::errc ec) noexcept { | |||
case errc::dup_lib_name: | |||
return "More than one library has claimed the same name."; | |||
case errc::unknown_usage_name: | |||
return "A `Uses` or `Links` field names a library that isn't recognized."; | |||
return "A `uses` or `links` field names a library that isn't recognized."; | |||
case errc::none: | |||
break; | |||
} |
@@ -1,3 +0,0 @@ | |||
Name: dummy | |||
Uses: nlohmann/json |
@@ -0,0 +1,6 @@ | |||
{ | |||
name: "dummy", | |||
uses: [ | |||
'nlohmann/json', | |||
] | |||
} |
@@ -1,3 +0,0 @@ | |||
Name: spdlog-user | |||
Uses: spdlog/spdlog |
@@ -0,0 +1,6 @@ | |||
{ | |||
name: 'spdlog-user', | |||
uses: [ | |||
'spdlog/spdlog', | |||
] | |||
} |
@@ -1 +0,0 @@ | |||
Name: foo |
@@ -0,0 +1,3 @@ | |||
{ | |||
"name": "foo" | |||
} |