| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
`url_directory_name` is heavily called from any downloadable source
plugin, and moving it to cython gives a more than 10x speedup
|
|
|
|
|
| |
This makes the 'Node' API public, and available for use directly for
plugins.
|
| |
|
|
|
|
|
|
| |
- _yaml: export node_validate function as Cython, as it was not done
before. This requires rewriting the function to remove a closure.
- Optimize node check by not calling is_node().
|
|
|
|
|
|
| |
Types is a simple module that accounts for a few percent of a basic
'show' operation. Having it cythonized allows us to get better
performance without too much wokr
|
|
|
|
|
|
|
|
|
| |
- Create a new _loader/utils.pyx cython module for functions cythonized
in the loader module.
- Move valid_chars_name from loader to utils and cythonize.
This function is called extensively, and easy to extract
|
|
|
|
|
|
| |
"0" evaluates to 'True' in python, which incorrectly switched on
the BST_CYTHON_TRACE. Forcing an int for this environment variable
allows us to ensure we are correct.
|
|
|
|
|
|
|
|
|
| |
It turns out that enabling 'linetrace', does have a runtime cost even
if not enabled in distutils.
Therefore disabling it by default. In order to run coverage, we
therefore need to retranspile the .pyx files with ENABLE_CYTHON_TRACE
set.
|
|
|
|
|
| |
This requires the addition of a definition file (.pxd), to list
symbols exported.
|
|
|
|
|
|
|
|
|
|
|
| |
Node used to be a NamedTuple that we used to access by index
for speed reasons. Moving to an extension class allows us to
access attributes by name, making the code easier to read and
less error prone. Moreover, we do gain speed and memory by
doing this move.
Also fix a few places where we would not have an entire `Node`
object but were instead just returning a tuple, missing some entries.
|
|
|
|
|
|
|
| |
Move _variables.py to be a Cython module.
`_internal_expand` is a function that is called a lot in BuildStream.
It is also entirely isolated and easy to cythonize.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cython requires a plugin to allow coverage of cython files, which
was updated in coveragerc. It also means we need to build the
dependencies and install cython for coverage.
Cython requires access to both source and compiled files when
running coverage. We therefore need to install project in develop
mode.
Updated documentation to explain how to run tests without tox but
with coverage
|
|
|
|
|
|
|
|
|
| |
Using pyproject.toml, defined in PEP518, allows us to have
an isolated build environment, ensuring that Cython can be installed
before calling setup.py in tox. This allows us to use cython helpers
in the setup.py script.
This is a prerequisite for introducing Cython in the codebase
|
|
|
|
|
|
| |
This was discussed in #1008.
Fixes #1009.
|
|
|
|
|
|
|
| |
* Remove `include_package_data=True` from setup.py
* Collect datafiles for buildstream.testing by adding them to `package_data`
Fixes #1008
|
| |
|
|
|
|
|
|
|
|
|
|
| |
If the `man` directory is empty, then it won't be copied in the source
distribution, and `list_man_pages()` will throw an exception when trying
to list files in a non-existent directory. This prevents us from
installing the BuildStream package when the man pages are not there.
The most common use-case for this is when we want to re-generate the man
pages but want to install the package before re-generating them.
|
|
|
|
|
|
| |
Simplify our docs, by requesting users to run `tox -e man` to update man
pages, instead of manually installing `click-man` and running the
command manually.
|
|
|
|
|
|
|
| |
Since the CAS refactor, we have not been able to execute
bst-artifact-server. This commit ensures that we can.
This fix closes #867
|
|
|
|
|
| |
This seems like a better name for the directory, as it more closely
describes the purpose of its contents.
|
|
|
|
|
|
| |
These new `.in` and `.txt` are making the repository look very
cluttered. Move them to a separate `tools` directory to make it look a
bit cleaner.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add `.in` and `.txt` requirements files for BuildStream's pure python
dependencies. For each pair, the `.in` file is supposed to capture the
loose version requirements, and the corresponding `.txt` file is
supposed to have frozen requirements. We have 3 such sets:
* `requirements`: BuildStream's runtime dependencies
* `dev-requirements`: Dependencies for running tests
* `plugin-requirements`: Dependencies for core plugins
Note that the frozen requirements files will only be used for testing
purposes, and `setup.py` will continue to read loose requirements.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Following the message thread
https://mail.gnome.org/archives/buildstream-list/2018-November/msg00106.html,
implement a new command group called `source`. Move existing `track`,
`fetch`, and the recently added `source-checkout` commands under this
group.
For `track` and `fetch`, this is a BREAKING change, as the old commands
have been marked as obsolete. Using them will result in an error message
that refers people to use the new versions, like `bst source fetch`
instead of old `bst fetch`. `source-checkout` will now become
`source checkout` (the dash has turned into a space), and is not a
breaking change as it was added in the current development cycle.
Note that the functionality to hide commands from help output was added
only recently in Click, so the minimum version of Click that we now
require is 7.0.
Summary of changes:
* _frontend/cli.py: Add `source` command group, mark previous versions
as obsolete and hide them from the help output.
* _frontend/complete.py: Fix completion for hidden commands.
* setup.py: Bump Click minimum version to 7.0.
* tests: Update to cope with the new command names.
Fixes #814.
|
| |
|
|
|
|
|
|
|
|
| |
This includes a new command mimicking pytest-runner so that we
can drop this dependency
This was the only setup_requires dependency that we had and
will make like easier for people behind proxies
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Since there are use-cases where BuildStream could be installed
onto systems which do not have BubbleWrap (e.g. for remote-build-only
scenarios) it is not correct to assert a dependency on bwrap during
installation. This patch makes the assertion a warning, and also
clarifies the message somewhat. This should fix #644
Signed-off-by: Daniel Silverstone <daniel.silverstone@codethink.co.uk>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This actually improves reliability of the status bar because we
now disable it completely in the case that not all of the terminal
escape sequences are supported on the given terminal.
This replaces the few functions we were using, to move the cursor
up one line, move it to the beginning of the line, and to clear a
line, with low level functions provided by the curses module in
the standard library.
This change makes it easier for downstream distro package maintainers
to package BuildStream, particularly on Fedora.
Asides from changing _frontend/status.py, this commit includes the
following changes:
* _frontend/app.py: Use python isatty() function to determine if
we are connected to a tty, instead of relying
on blessings.
* setup.py: Remove the dependency on blessings.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- setup.py: List useful links using `project_urls`
- setup.py: Specify minumum python vresion using `python_requires`
`python_requires` is the new way of specifying requirements for python
version, as documented @
https://packaging.python.org/guides/distributing-packages-using-setuptools/#python-requires.
This will also make this requirement appear nicely on the PyPI project
page.
- setup.py: Add project classifiers
PyPI will use these classifiers to categorize projects while searching
or browsing. Full list of classifiers can be found at
https://pypi.org/classifiers.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Buildstream uses the Terminal.does_styling attribute, which was only
added in blessings 1.6.
Blessings helpfully returns an empty string when calling an nonexistent
attribute on the Terminal object, instead of failing.
Because Fedora has blessings 1.5, Buildstream thought that my terminal
couldn't handle styling, and just didn't print the status bar, silently.
Specifying the minimum version avoids this silent failure.
|
|
|
|
|
|
|
| |
Fill out those fields in `setup.py` that are required for publishing a
package on PyPi.
Part of https://gitlab.com/BuildStream/buildstream/issues/587.
|
|
|
|
|
|
|
| |
This allows to use version 0.15.51 rather than 0.15.0 which is
required for Python 3.
Fixes #571.
|
|
|
|
|
| |
This also fixes an error with pylint in setup.py:
setup.py:226:19: R1718: Consider using a set comprehension (consider-using-set-comprehension)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In some cases, such as when working inside a virtual environment, it can
be desirable to install all dependencies for running tests using `pip`.
This is currently not possible since setuptools does not support
installing these dependencies in a virtual environment (by design).
(See https://stackoverflow.com/a/21003259.)
To circumvent this issue, move such requirements to
`dev-requirements.txt` file that can be used easily with
`pip install -r`. This also enables tests to be run directly using
`pytest`, which can be more convenient than `-addopts` approach when one
needs to add multiple options.
This will also be useful in creating better testuite images, and fix
some of the issues noticed in
https://gitlab.com/BuildStream/buildstream-docker-images/merge_requests/56.
|
| |
|
|
|
|
|
|
|
|
|
| |
This reverts commit 4f168b9b6a02216e2fae24d758ae6b778e545869.
The latest version of pytest_pylint works fine with pylint 2, which
means there is no longer a reason to restrict the pylint version.
pylint 2 is required for Python 3.7.
|
|
|
|
|
|
| |
This causes the new artifact tests to pass (unless you happened
to already have a recent enough version of pytest-cov, in which case
you didn't notice the breakage).
|
| |
|
|
|
|
|
|
| |
No longer used.
Fixes #134, #138, #148, #217, #268, #276, #443, #460.
|
| |
|
|
|
|
| |
This allows code generation with ./setup.py build_grpc
|
|
|
|
|
|
|
|
|
|
|
|
| |
pylint >2 is not compatible with pytest_pylint in its current form. As
such, allowing any version of pylint for testing results in a failure.
This commit restricts down the allowable versions of pylint to those
that are both compatible with pytest_pylint, and also offer the feature
set that we require.
See https://gitlab.com/BuildStream/buildstream/issues/427 for further
details.
|
|
|
|
| |
As recommended by Valentin David in issue #332.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Using setuptools_scm had a couple of bad problems:
o Unexpected versioning semantics, setuptools_scm would
increment the micro version by itself in the case that
we derive a version number from something that is not a tag,
making the assumption that we are "leading up to" the next
micro version.
People mostly dont expect this.
o When installing in developer mode, i.e. with `pip3 install --user -e .`,
then we were always picking the generated version at install time
and never again dynamically resolving it.
Many of our users install this way and update through git, so it's
important that we report more precise versions all the time.
This commit needs to make a series of changes at the same time:
o Adds versioneer.py to the toplevel, this is used by setup.py
for various activities.
This is modified only to inform the linter to skip
o Adds buildstream/_version.py, which is generated by versioneer
and gives us the machinery to automatically derive the correct version
This is modified only to inform the linter to skip
o Adds a .gitattributes file which informs git to substitute
the buildstream/_version.py file, this is just to ensure that
the versioning output would work if ever we used `git archive`
to release a tarball.
o Modifies setup.py and setup.cfg for versioneer
o Modifies utils.py and _frontend/cli.py such as to avoid importing
the derived version when running bash completion mode, we dont
derive the version at completion time because this can result
in running a subprocess (when running in developer install mode)
and is an undesirable overhead.
o Updates tests/frontend/version.py to expect changed version output
|
|
|
|
|
| |
The required version is 0.1.2 based on the fact that we're using
--hostname and --remount-ro.
|
|
|
|
| |
catching-non-exception warnings
|
| |
|
| |
|
|
|
|
|
|
| |
jinja2 2.10 import time has been divided by two compared to Jinja 2.9.6
Fixes #194
|