Bendis
A patch tool for Bender to work better in the HERIS project.
Author: Albert L. ZHANG, IHEP
Email: albert.cheung@cern.ch
Links
- Crates.io: https://crates.io/crates/bendis
- GitHub: https://github.com/albertc9/Bendis
- GitLab (IHEP internal): https://code.ihep.ac.cn/heris/bendis
- Bendis For Users: https://code.ihep.ac.cn/heris/gitlab-profile/-/wikis/Bendis-For-Users
Features
- URL Conversion: Automatically converts GitHub URLs to IHEP internal Git URLs
- Seamless Integration: Works as a drop-in replacement for Bender
- Fast: Written in Rust for optimal performance
Installation
Usage
Initialize a project
Creates a bendis_workspace/ directory with blank Bender.yml and .bender.yml.
Update dependencies
When using Bendis, only edit the configuration files inside bendis_workspace/.
The copies in the project root will be overwritten.
Update dependencies with:
With Bendis 0.5.8 or later, prepare dependencies for RTL hardening and activate the
resulting local RTL by placing the aegisrtl repository next to the project root and running:
Hard mode requires a Bender version with script template-json support. If
../aegisrtl/scripts/harden.sh is missing, Bendis reports that hardening was skipped and
activates the local RTL without hardening. Bendis reuses existing Bender caches and only
retries checkout with remote access when local dependencies are incomplete.
Project-local Path entries are normalized before the AegisRTL workspace is prepared.
Other commands
All other commands are passed through to Bender transparently.
File Structure
(***): You may interest in and can be edited.(-): Nobody, or generated automatically. Don't edit them if you don't understand Bendis.
pulpissimo/
├── bendis_workspace/ # Bendis working directory
│ ├── .bender/ # (-)Bender cache folder (optional on Bendis config)
│ ├── Bender.yml # (***)The config you need to edit
│ ├── .bender.yml # (***)The overrides config you may need to edit
│ ├── Bender.lock # (-)Generated by bendis automatically
│ ├── hw/ # (***)Some dependencies of pulpissimo
│ └── target/ # (***)Some dependencies of pulpissimo
├── Bender.yml # (-)Converted config
├── .bender.yml # (-)Converted overrides (IHEP URLs)
├── Bender.lock # (-)Final lock file generated automatically
├── .bender/ # (-)Dependencies directory generated automatically
├── hw/ # (-)Some dependencies automaticaly updated from `bendis_workspace/`
├── target/ # (-)Some dependencies automaticaly updated from `bendis_workspace/`
└── ...