@@ -55,7 +55,7 @@ List the platform(s) and toolsets which are applicable to the issue, and all of | |||
- Operating System: [e.g. macOS, Linux, Windows] | |||
- Compiler: [e.g. MSVC, GCC, Clang] | |||
- `dds` Version: [e.g. `0.1.0-alpha.2`] | |||
- `dds` Version: [e.g. `0.1.0-alpha.5`] | |||
**Additional context** | |||
@@ -62,7 +62,7 @@ vagrant-freebsd-ci: | |||
cd /vagrant && \ | |||
python3.7 tools/ci.py \ | |||
-B download \ | |||
-T tools/freebsd-gcc-9.jsonc \ | |||
-T tools/freebsd-gcc-10.jsonc \ | |||
' | |||
vagrant scp freebsd11:/vagrant/_build/dds _build/dds-freebsd-x64 | |||
vagrant halt | |||
@@ -72,4 +72,4 @@ site: docs | |||
mkdir -p _site/ | |||
cp site/index.html _site/ | |||
cp -r _build/docs _site/ | |||
echo "Site generated at _site/" | |||
echo "Site generated at _site/" |
@@ -9,7 +9,7 @@ Vagrant.configure("2") do |config| | |||
freebsd11.vm.box = 'generic/freebsd11' | |||
freebsd11.vm.provision 'shell', inline: <<-SHELL | |||
set -eu | |||
for package in python37 py37-pip ccache gcc9 gcc8 git; do | |||
for package in python37 py37-pip ccache gcc10 gcc9 gcc8 git; do | |||
echo "Installing $package" | |||
pkg install -qy $package | |||
done |
@@ -11,7 +11,7 @@ author = 'vector-of-bool' | |||
# The short X.Y version | |||
version = '' | |||
# The full version, including alpha/beta/rc tags | |||
release = '0.1.0-alpha.4' | |||
release = '0.1.0-alpha.5' | |||
# -- General configuration --------------------------------------------------- | |||
extensions = [] |
@@ -3,13 +3,13 @@ Source Distributions | |||
A *source distribution* is ``dds``'s primary format for consuming and | |||
distributing packages. A source distribution, in essence, is a | |||
:ref:`package root <pkgs.pkg-root>` directory that contains only the files | |||
:ref:`package root <pkgs.pkg-root>` archive that contains only the files | |||
necessary for ``dds`` to reproduce the full build of all libraries in the | |||
package. The source distribution retains the directory structure of every | |||
:ref:`source root <pkgs.source-root>` of the original package, and thus retains | |||
the header structure thereof. In this way, the ``#include`` directives to use | |||
a library in a source distribution are identical to if the libraries therein | |||
were directly part of the consuming project. | |||
the header structure thereof. In this way, the ``#include`` directives to use a | |||
library in a source distribution are identical to if the libraries therein were | |||
directly part of the consuming project. | |||
Generating a Source Distribution | |||
@@ -20,24 +20,27 @@ Generating a source distribution from a project directory is done with the | |||
> dds sdist create | |||
The above command can be executed within any package root, and the result will | |||
be a new directory that reproduces the package's filesystem structure, but | |||
only maintaining the files that are necessary for ``dds`` to reproduce the | |||
build of that package. | |||
The above command can be executed within a package root, and the result will be | |||
a gzip'd tar archive that reproduces the package's filesystem structure, but | |||
only maintaining the files that are necessary for ``dds`` to reproduce a build | |||
of that package. | |||
The ``--project=<dir>`` flag can be provided to override the directory that | |||
``dds`` will use as the package root. The default is the working directory of | |||
the project. | |||
The ``--out=<path>`` flag can be provided to override the destination path of | |||
the resulting source distribution. The path should not name an existing file or | |||
directory. By default, ``dds`` will generate a source distribution in the | |||
working directory with the name ``project.dsd/`` (The output is itself a | |||
directory, not an archive). If the ``--replace`` flag is provided, then ``dds`` | |||
will overwrite the destination if it names an existing file or directory. | |||
the archive. The path should not name an existing file or directory. By default, | |||
``dds`` will generate a source distribution in the working directory with the | |||
pattern ``<name>@<version>.tar.gz``. If the ``--replace`` flag is provided, | |||
then ``dds`` will overwrite the destination if it names an existing file or | |||
directory. | |||
Exporting a Package to the Local Repository | |||
******************************************* | |||
Importing a Source Ditsribution | |||
******************************* | |||
.. seealso:: :ref:`repo.export-local` | |||
Given a source distribution archive, one can import the package into the local | |||
repository with a single command:: | |||
> dds repo import some-package@1.2.3.tar.gz |
@@ -271,12 +271,17 @@ Valid ``cxx_version`` values are: | |||
``warning_flags`` | |||
----------------- | |||
Provide *additional* compiler flags that should be used to enable warnings. This option is stored separately from ``flags``, as these options may be enabled/disabled separately depending on how ``dds`` is invoked. | |||
Provide *additional* compiler flags that should be used to enable warnings. This | |||
option is stored separately from ``flags``, as these options may be | |||
enabled/disabled separately depending on how ``dds`` is invoked. | |||
.. note:: | |||
If ``compiler_id`` is provided, a default set of warning flags will be provided when warnings are enabled. | |||
Adding flags to this toolchain option will *append* flags to the basis warning flag list rather than overwrite them. | |||
If ``compiler_id`` is provided, a default set of warning flags will be | |||
provided when warnings are enabled. | |||
Adding flags to this toolchain option will *append* flags to the basis | |||
warning flag list rather than overwrite them. | |||
.. seealso:: | |||
@@ -320,22 +325,37 @@ debug information in a separate file from the binaries. | |||
Select the language runtime/standard library options. Must be an object, and supports two keys: | |||
``static`` | |||
A boolean. If ``true``, the runtime and standard libraries will be static-linked into the generated binaries. If ``false``, they will be dynamically linked. Default is ``true`` with MSVC, and ``false`` with GCC and Clang. | |||
A boolean. If ``true``, the runtime and standard libraries will be | |||
static-linked into the generated binaries. If ``false``, they will be | |||
dynamically linked. Default is ``true`` with MSVC, and ``false`` with GCC | |||
and Clang. | |||
``debug`` | |||
A boolean. If ``true``, the debug versions of the runtime and standard library will be compiled and linked into the generated binaries. If ``false``, the default libraries will be used. | |||
A boolean. If ``true``, the debug versions of the runtime and standard | |||
library will be compiled and linked into the generated binaries. If | |||
``false``, the default libraries will be used. | |||
**On MSVC** the default value depends on the top-level ``/debug`` option: If ``/debug`` is not ``false``, then ``/runtime/debug`` defaults to ``true``. | |||
**On MSVC** the default value depends on the top-level ``/debug`` option: If | |||
``/debug`` is not ``false``, then ``/runtime/debug`` defaults to ``true``. | |||
**On GCC and Clang** the default value is ``false``. | |||
.. note:: | |||
On GNU-like compilers, ``static`` does not generate a static executable, it only statically links the runtime and standard library. To generate a static executable, the ``-static`` option should be added to ``link_flags``. | |||
On GNU-like compilers, ``static`` does not generate a static executable, it | |||
only statically links the runtime and standard library. To generate a static | |||
executable, the ``-static`` option should be added to ``link_flags``. | |||
.. note:: | |||
On GNU and Clang, setting ``/runtime/debug`` to ``true`` will compile all files with the ``_GLIBCXX_DEBUG`` and ``_LIBCPP_DEBUG=1`` preprocessor definitions set. **Translation units compiled with these macros are definitively ABI-incompatible with TUs that have been compiled without these options!!** | |||
If you link to a static or dynamic library that has not been compiled with the same runtime settings, generated programs will likely crash. | |||
On GNU and Clang, setting ``/runtime/debug`` to ``true`` will compile all | |||
files with the ``_GLIBCXX_DEBUG`` and ``_LIBCPP_DEBUG=1`` preprocessor | |||
definitions set. **Translation units compiled with these macros are | |||
definitively ABI-incompatible with TUs that have been compiled without these | |||
options!!** | |||
If you link to a static or dynamic library that has not been compiled with | |||
the same runtime settings, generated programs will likely crash. | |||
``compiler_launcher`` | |||
@@ -402,14 +422,10 @@ Defaults:: | |||
// On GNU-like compilers (GCC, Clang): | |||
c_compile_file: "<compiler> -fPIC -pthread [flags] -c [in] -o[out]", | |||
cxx_compile_file: "<compiler> -fPIC -pthread [flags] -c [in] -o[out]", | |||
// When `optimize` is enabled, `-O2` is added as a flag | |||
// When `debug` is enabled, `-g` is added as a flag | |||
// On MSVC: | |||
c_compile_file: "cl.exe /MT /nologo /permissive- [flags] /c [in] /Fo[out]", | |||
cxx_compile_file: "cl.exe /MT /EHsc /nologo /permissive- [flags] /c [in] /Fo[out]", | |||
// When `optimize` is enabled, `/O2` is added as a flag | |||
// When `debug` is enabled, `/Z7` and `/DEBUG` are added, and `/MT` becomes `/MTd` | |||
c_compile_file: "cl.exe /nologo /permissive- [flags] /c [in] /Fo[out]", | |||
cxx_compile_file: "cl.exe /EHsc /nologo /permissive- [flags] /c [in] /Fo[out]", | |||
} | |||
@@ -419,7 +435,7 @@ Defaults:: | |||
Override the *command template* that is used to generate static library archive | |||
files. | |||
This template expects three placeholders: | |||
This template expects two placeholders: | |||
- ``[in]`` is the a placeholder for the list of inputs. It must not be attached | |||
to any other arguments. The list of input paths will be inserted in place of |
@@ -1,7 +1,7 @@ | |||
{ | |||
"$schema": "./res/package-schema.json", | |||
"name": "dds", | |||
"version": "0.1.0-alpha.4", | |||
"version": "0.1.0-alpha.5", | |||
"namespace": "dds", | |||
"depends": [ | |||
"spdlog@1.7.0", |
@@ -0,0 +1 @@ | |||
This file will not be in the source distribution! |
@@ -22,3 +22,6 @@ def test_import_sdist_archive(dds: DDS): | |||
assert not repo_content_path.is_dir() | |||
dds.repo_import(dds.build_dir / 'foo@1.2.3.tar.gz') | |||
assert repo_content_path.is_dir() | |||
assert repo_content_path.joinpath('library.jsonc').is_file() | |||
# Excluded file will not be in the sdist: | |||
assert not repo_content_path.joinpath('other-file.txt').is_file() |
@@ -1,15 +1,12 @@ | |||
{ | |||
"$schema": "../res/toolchain-schema.json", | |||
"compiler_id": "gnu", | |||
"c_compiler": "gcc9", | |||
"cxx_compiler": "g++9", | |||
"c_compiler": "gcc10", | |||
"cxx_compiler": "g++10", | |||
"cxx_version": "c++20", | |||
"warning_flags": [ | |||
"-Werror", | |||
], | |||
"cxx_flags": [ | |||
"-fconcepts", | |||
"-std=c++2a", | |||
], | |||
"link_flags": [ | |||
"-static-libgcc", | |||
"-static-libstdc++" |