Helper Functions Reference
RF Swift Helper Functions Reference
This page documents the Bash helper functions used in the RF Swift container build system. These utilities simplify logging, dependency management, source code builds, and network operations.
Most helpers implement retry logic and consistent logging to ensure resilience and ease of use when building custom images or tools.
🎨 Output & Logging Functions
Function | Description |
---|---|
colorecho <message> |
Prints a blue-colored message to indicate neutral info |
goodecho <message> |
Prints a green-colored message for successful actions |
criticalecho <message> |
Prints a red-colored message and exits with error code 1 |
criticalecho-noexit <message> |
Prints a red-colored message without exiting |
Example:
goodecho "Installation complete!"
criticalecho "An unrecoverable error occurred."
📦 Package Installation Helpers
installfromnet <command>
Executes a given shell command up to 5 times with 15-second intervals between attempts. Useful for flaky downloads or network-related tasks.
Example:
installfromnet "wget http://example.com/tool.tar.gz"
install_dependencies "<packages>"
Installs Debian packages using apt-fast
, with retry logic.
Example:
install_dependencies "python3-numpy python3-scipy g++"
check_and_install_lib <lib-name> <pkg-config-name>
Checks whether a library is installed via pkg-config
. If not found, attempts to install it via apt-fast
.
Example:
check_and_install_lib "libusb-1.0-0-dev" "libusb-1.0"
🐍 Python Installer Helper
pip3install <args>
Installs Python packages using pip3
with retry logic. Supports both single package installs and requirements.txt
files.
Examples:
pip3install scikit-learn
pip3install -r requirements.txt
🧬 Git and Source Management
gitinstall <repo-url> <method> <branch>
Clones or updates a Git repository. On success, logs the repository metadata to /var/lib/db/rfswift_github.lst
. Also initializes submodules if needed.
Example:
gitinstall "https://github.com/example/tool.git" "tool_install" "main"
cmake_clone_and_build <repo-url> <build-dir> <branch> <reset-commit> <method> [cmake-args...]
Clones a Git repository, optionally resets to a specific commit/tag, then configures and builds the project using CMake.
Arguments:
repo-url
: URL of the Git repositorybuild-dir
: Relative build path within the repobranch
: Git branch to use (optional)reset-commit
: Commit or tag to reset to (optional)method
: Name of the install function (used in logs)[cmake-args...]
: Additional arguments passed tocmake
Example:
cmake_clone_and_build "https://github.com/example/project.git" "build" "main" "v1.0.0" "mytool_install" -DENABLE_X=ON
grclone_and_build <repo-url> <subdir> <method> [-b branch] [cmake-args...]
Simplified wrapper for cmake_clone_and_build
, designed for GNU Radio OOT modules.
Example:
grclone_and_build "https://github.com/author/gr-foo.git" "gr-foo" "gr_foo_install" -b dev -DENABLE_DOCS=OFF
🧠 Summary Table
Category | Function | Description |
---|---|---|
Output | colorecho |
Info messages (blue) |
Output | goodecho |
Success messages (green) |
Output | criticalecho |
Error + exit (red) |
Output | criticalecho-noexit |
Error only (red) |
Install | installfromnet |
Retry logic for flaky commands |
Install | install_dependencies |
Apt-based dependency installation |
Install | check_and_install_lib |
Lib check + install via pkg-config |
Python | pip3install |
Retry pip install |
Git | gitinstall |
Clone/update and log repos |
Build | cmake_clone_and_build |
Git clone + CMake build |
Build | grclone_and_build |
Optimized for GNU Radio modules |
💡 Tips
- Always use
installfromnet
when working with downloads or Git operations in Dockerfiles. - Group commands in a single
RUN
line in Dockerfiles to reduce layers. - Clean build directories and cache files to keep image size minimal.
- You can extend the helper library by placing new functions in
images/scripts/common.sh
or custom scripts.