Sbuildr

Latest version: v0.6.4

Safety actively analyzes 613482 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 3

0.6.2

- `Dependency` will now create destination directories for fetchers if they do not exist.

0.6.1

- Fixes a bug where tests were not being marked as `internal`.
- Fixes a bug where `configure` would not work if the specified targets had dependent targets that were not specified to `configure`.
- Fixes a bug where `configure` would configure all targets if an empty list of targets was provided.
- Fixes default list arguments in public API. Now, an empty list is distinguishable from a default argument.
- Fixes `FileManager`'s logic for disambiguating includes.
- Fixes `FileManager`'s logic for finding source nodes. This prevents headers from being scanned multiple times.
- Adds checks so that invalid target names are caught early.
- Adds default profiles to `sbuildr test`.
- Fixes a bug where multiple requests to a Dependency for the same library would result in only the last request being valid.
- Fixes a bug in `GitFetcher` when checking out different commits from different dependencies for the same source repository.

0.6.0

- Adds `depends` argument to `Project.library()`, `Project.executable()`, `Project.test()`, and `Project.interfaces()`. This can be used to specify any dependencies not captured in the `libs` argument - for example, header-only packages.
- The `nuke` option in `Project.clean()` now removes all build directories rather than just the Project's build directory.
- Fixes a bug that prevented the `sbuildr` executable script from building test targets.
- Removes subcommands under `configure` in the `sbuildr` executable. Additionally, configure can now export a project using a specified build script.
- Changes `tests` back to `test` in the `sbuildr` executable.
- Adds Project API version so that old saved projects can be detected.
- Fetchers now support versioning. `GitFetcher` can checkout a specific commit, tag or branch.
- `Node`s now supply print commands to the backend, so that informative messages are shown during the build.
- Combines `Project`'s `find_dependencies`, `configure_graph` and `configure_backend` into `configure()`
- Hashes for build artifacts now take more variables into account, thereby preventing collisions.

0.5.0

- `tests` in CLI now runs all profiles by default.
- `tests` now displays a summary at the end.
- Project's `install` has been modified to `interfaces` and now only accepts headers. Libraries and executables are now marked for installation by default, unless `internal=True` is specified.
- The `cli` install/uninstall functions now allow the user to specify paths for installing executables, libraries, and headers.
- Restructures so that `Generator` is now part of the `Project`.
- `targets` in `cli` has been renamed to `help`.
- Adds `configure` and `build` to the `Project`.
- Adds `DependencyBuilder`s and `DependencyFetcher`s for dependency management.
- Adds `GitFetcher` for retrieving source code from git repositories.
- Adds `CopyFetcher` for copying directories.
- Adds `SBuildrBuilder` for building projects using the SBuildr build system.
- Renames `Generator` and associated classes/files to `Backend`.
- Pulls in most functions from `cli` into `Project` to enable more powerful scripting.
- Adds `export()` function to `Project` that pickles and writes it into the specified path. `Project.load()` can be used to retrieve it.
- Removes lazy header scanning - file manager now scans source files as they are added.
- Profile build directories can now be outside of the project's build directory.
- All profiles now share a common build directory for intermediate objects. Final targets are still built in each profile's individual subdirectory.
- `Backend` now only accepts a single graph describing the whole project. Thus, the backend does not need to know about file manager, profiles, etc.
- Libraries are now linked in a portable way - instead of using paths, names are used.
- `Project` now display a command that can be used to reproduce any executables that are run via the API.
- `Project`'s `configure()` is now `configure_backend()`. Additionally, projects are no longer tied to backends.
- Adds `Library` class to better abstract external libraries. This also allows for better handling of nested loader search path dependencies.
- Removes `cli()` and adds `bin/sbuildr` in its place. `bin/sbuildr` operates on saved projects, so it is much faster than running the `build.py` script each time.
- `bin/sbuildr`'s `configure` is now `configure-backend`.
- Adds deferred library propagation. Profiles can now set up libraries just before the build.
- `Graph` `layers()` now only returns nodes that are actually in the graph.
- Moves `dependencies` directory up one level.
- Adds `find_dependencies` and `configure_graph` to `Project`
- Adds `single_dependency` example
- Adds library name propagation in addition to just `lib_dirs` previously
- `configure_graph()` is now able to construct partial graphs.
- `Project` API functions no longer automatically call each other.
- `SBuildrBuilder` now proapagates `sys.path` to the `PYTHONPATH` environment variable correctly.
- Adds versioning for `DependencyMetadata` so dependencies in the cache with old versions of Metadata will automatically be rebuilt.
- Adds support for multiple build artifacts from nodes. Only the final artifact is usable by other nodes.
- All targets are now created in the common build directory. The per-profile build directories have hard-links to the targets in the common directory for ease-of-use.

0.4.1

- Changes generator to favor false positives (longer builds) for `needs_configure()` rather than false negatives (broken builds).
- Fixes a bug where a header with no project includes would be scanned multiple times during configuration.
- Adds support for defining macros via the compiler.

0.4.0

- Changes `test` command to `tests`
- Adds suggestion to reconfigure project on build failure.
- The generator build command now accepts `Node` rather than `ProjectTarget`s.
- Greatly simplifies install/uninstall `cli` functions.

Page 1 of 3

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.