All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Add
flist-plus
script format for file list with plusargs.
- Ensure defines/includes/sources are included in script when specifying multiple
--only-*
.
- For
bender clone
: Add a relative path to the lockfile to align to change in v0.27.0.
- Add macOS binary for releases
- Add
init
command to initialize a Bender.yml file of an IP. - Allow environment variables in dependency and sources paths.
- Add windows binary and compatibility for release.
- Documentation and Error Message fixes.
- Complete revamp of script generation, now using templates. Script formats are homogenized and custom templates are enabled.
- Add clearer error message when commits are no longer available upstream.
- Improve Readme git explanation
- Fix CI GNU release.
- Add
--checkout
flag topath
command to force checkout if needed. - Add
--no-checkout
flag toupdate
command to prevent checkout after update if not needed.
path
and local links: Skip checkout if package path already exists (can be overruled by--checkout
flag)update
: Default to automatically perform checkout after update (can be overruled by--no-checkout
flag)
- Improve ReadMe and Warning information for
vendor
upstream linking. - Ensure
workspace.package_links
symlinks are properly updated when executing theclone
command.
- Add information on expected location for manifest file not found.
- Use
IndexMap
andIndexSet
instead of thestd Hash*
equivalents to preserve ordering - Change GNU release to be built to a more compatible binary (manylinux container).
- Parse override dependencies in lowercase to align to change in 0.25.0
- Adjusted hash input for dependency checkout to ensure consistency within a project.
- Fixed accidental debug print in
sources
command
- Add
--no-default-target
flag toscript
command to remove default targets - Add
fusesoc
command to generate FuseSoC.core
files. - Add rhel and almalinux releases
- Reworked
import
command tovendor
, refactor corresponding Manifest entry (vendor_package
instead ofexternal_import
) - Update
clap
to v4, changes CLI - Use relative paths in Lockfile if path dependency is in a subdirectory
- Streamline
import
command for initializing a repository
- Keep
export_incdirs
from excluded dependencies in sources and scripts
- Add clippy to github CI and fix noted issues
- Add
import
command to import files from non-bender repositories
- Update
tokio
dependency, update tofutures=0.3
, rewrite forasync/await
. Bumps minimum rust to 1.57 - Update
serde_yaml
dependency to0.9
. Bumps minimum rust to 1.58 - Partially checkout path dependencies in git dependencies
- Add warnings if manifest file is not found for a dependency
- Added
formality
script.
- Update dependencies, with slight restructuring updating
clap
to v3.1, bumps minimum rust to 1.54 - Removed
defines
from VHDL insynopsys
script. - Updated CI release OSs to currently supported releases, added debian
- Add
checkout
command to fetch and checkout dependencies
- Ensure consistency when manually chosing a version if there are conflicts.
- Update
Bender.lock
when runningbender clone
. Runningbender update
is no longer required afterwards.
- For multiple compatible versions, select the highest compatible version, not the newest commit with a compatible version.
parents
command outputs more detail:- source information in case multiple dependencies do not match
- information about an override if one is present
- Interpret all dependency names as lowercase to reduce ambiguity
- Fix panic of
parents
command if a dependency does not have a manifest or if the manifest does not match theBender.lock
file. - Use correct manifest of checked out dependency in case folder already exists in
checkout_dir
. - Fix vcs script argument to use
vhdlan-bin
for vhdlan binary - Fix incomplete dependency version update when refetching from remote
- Fix panic when using
checkout_dir
if the directory does not yet exist
- Add error if a cyclical dependency is detected to avoid infinite loop
- Add error on dependency mismatch between
Bender.yml
andBender.lock
- Add hint to work around the "too many open files" error (issue #52).
- Add warning for mismatch of dependency name and name in package
- Add dependency information to
sources
command - Add
--fetch/-f
argument tobender update
to force re-fetch of git dependencies from their remotes - Add global
--local
argument to disable remote accesses of git commands, e.g. for air-gapped computers - Add
precision
format to the script command. - Extend the
sources
andscripts
commands with three flags to work with a subset of packages (-p
/--package
,-e
/--exclude
, and-n
/--no-deps
; see ReadMe or command help for the description).
- Reduce the number of open files in large repositories by changing the method to get the Git commit hash from a tag (from individual calls to
git rev-parse --verify HASH^{commit}
togit show-ref --dereference
). - Change behavior of
export_include_dirs
inBender.yml
file to not include these directories globally, but only include the directories exported within the package and direct dependencies (this may break unclean implementations).
- Fix absolute path of path dependencies inside git dependencies.
- Wrap defines in quotes for the VCS's shell script
- CI -> changed from travis to github actions
- Change
parents
command, now displays version requirement of each package - updated resolver to use a single Core and SessionIo object for performance
- Add HashMap to git_versions in SessionIo to avoid multiple identical git calls, significantly improves performance
- Add
clone
command to checkout individual ips to a directory and create a path reference in Bender.local - Add
parents
command to get list of packages requiring the queried package
- Fix plugins to work for scripts in root repository
- Force git fetch on unsatisfied requirements to check for newly added tags in server repository
- Add option to pass additional defines through the command line (#34)
- Switch to Rust 2018 edition
- Update dependency
serde_yaml
,tokio-timer
,semver
,blake2
,typed-arena
,dirs
,pathdiff
, anditertools
- Extended documentation in the README
- Add
riviera
format to the script command. (#29)
- Add
flist
scripts target emitting a plain file list.
script
now inserts Tclcatch
statements forsynopsys
andvsim
to abort elaboration on the first error. This can be disabled with the new--no-abort-on-error
flag.
- Add
verilator
andgenus
formats to the script command. (#27)
- Add
vivado-sim
format to the script command. This format differs from thevivado
format in that it targets simulation, not synthesis; other than that, it is equivalent to thevivado
format.
script vivado
now emits paths relative to the project root with theROOT
variable.
script vcs
: Fix shell syntax to defineROOT
variable.
- Add
vcs
format to thescript
command.
script
:vcom-arg
orvlog-arg
can be used with formatvsim
orvcs
.
script vivado
: Add options to restrict output to defines, includes, or sources.
script
: Raise error ifvcom-arg
orvlog-arg
are used with format other thanvsim
.script vivado
:- Add
-norecurse
toadd_files
to prevent warnings. - Set
include_dirs
andverilog_define
properties also forsimset
to prevent critical warnings. This can be disabled with the new--no-simset
option.
- Add
script vivado
: Fix name ofinclude_dirs
property.
- Add
vivado
format to thescript
command.
- Bump rustc minimum version to 1.36
- Fix rustc 1.36
as_ref
regression - Emit format-specific target defines even if no target is specified.
- Fix capitalization of target defines such as
TARGET_SYNTHESIS
.
- Omit unsupported
-2008
flag for VHDL analysis commands in Synopsys scripts.
- Add the
frozen
option to prevent any dependency updates for a package. - Add the
workspace
section to carry workspace configuration. - Add the
workspace.checkout_dir
option to keep local working copies of each dependency.
- Make order of packages and defines deterministic.
- Move the
package_links
option toworkspace.package_links
.
- Add
-f
flag tosources
for printing a flattend source listing.
- Make JSON output human readable.
- Fix target defines to be all uppercase.
- Fix emission of target defines for source files which have no other defines.
- Add
script
subcommand. - Add
vsim
andsynopsys
script output formats.
- Add
atty
dependency. - Add
itertools
dependency.
- Ask the user to resolve dependency conflicts if stdin/stdout are attached to an interactive console.
- Update
semver
dependency to v0.9.
- Create relative package links if possible.
- Add the
udpate
subcommand that explicitly updates dependencies. - Add dependency on the
dirs
crate.
- No longer automatically update dependencies when the manifest changes.
- Add
export_include_dirs
section to manifest, allowing packages to expose a subdirectory as include file search path.
- Rename
package-links
manifest section topackage_links
.
- Fix an issue where path dependencies would not properly resolve transitively.
- Submodules are now checked out as well.
- Locally symlinked packages via the
package-links
list in the manifest.
- By default, the
.bender
working directory is now a subdirectory of the root working directory.
- Show checkout message only when actually checking out.
- Don't show the
--debug
option in release builds.
- Show message when checking out a repository.
- Show message when fetching from a git remote.
--debug
option for debug builds.
- Improved error messages when constraints cannot be met.
- Limit the number of concurrent git network activity to 8.
- Plugin packages can now be declared in the
plugins
section of the config. - Add the
package
field to source groups. - Add the
bender config
command to dump the tool configuration.
- Add plugin support. The manifest may now have a
plugins
section. - Add include directories and preprocessor defines support. These can now be specified for source groups.
- Add
overrides
section to config. - Add target specifications for source files.
- Output of
bender sources
is now JSON formatted. - Items in lock files have deterministic order.
- Add
sources
section to manifest. - Add
bender sources
command to access the source file manifest of the root package and its dependencies.
- Dependency resolution only runs if lock file is older than manifest.
- Manifests of path dependencies are now read properly.
- Relative paths in config files are now treated as relative to the config file, not the current working directory.
- Only update git databases when manifest file changes.
- Only load manifests once per session.
- Only update checkouts once per session.
- Fix crash when dependencies have no manifest.
- Initial implementation of recursive dependency resolution.
- The
bender packages
command to access the package dependency graph.
- Lockfile now contains the dependency names for each package.
- Help page now shows proper program name, version, and authors.
- Use
git archive | tar xf -
to create checkouts.
- Fix creating a checkout of a branch.
- Fail gracefully if a dependency repository is empty.
- Initial support for checkouts.
- Resolution of the root package's dependencies.
- The
bender path
command to get a path to the checked out dependencies.