a Fortran Building System
Project description
FoBiS — Fortran Building System
Automatic dependency-resolving build tool for modern Fortran projects — no makefiles, no boilerplate. Package manger highly integrated with GitHub, install and fetch project dependencies. Add instrospective doctests to your Fortran project and exploit AI-powered programmatic buildings with the provided AI skill.
| ⚡ Zero-configuration builds Drop FoBiS into any Fortran project and run fobis build. It scans sources, resolves all use, include, and module dependencies automatically, and compiles in the correct order — no makefiles, no boilerplate. Convention-based discovery finds src/, source/, and app/ directories automatically. Quick start |
📄 fobos — the FoBiS makefile A concise INI-style configuration file replaces makefiles entirely. Define multiple build modes, templates, variables, custom rules, feature flags, multi-target sections, and hooks — all in one readable file. fobos reference |
| 🌐 GitHub integration Declare dependencies in a [dependencies] fobos section — fobis fetch clones, pins to branch/tag/rev/semver, and pre-builds them; fobis build picks them up automatically. Reproducible builds via fobos.lock. Install any GitHub-hosted FoBiS project directly with fobis install user/repo. Fetch deps · Lock file |
🏗️ Named build profiles & feature flags One-word compiler flag presets ( debug, release, asan, coverage) for every supported compiler. Feature flags let you activate named compile-time options without separate build modes — mix and match freely. Build profiles · Feature flags |
🧪 Integrated test runner & coveragefobis test discovers, compiles, and runs all Fortran test programs — no external harness needed. fobis coverage generates HTML/XML reports via gcovr or lcov and can fail CI when coverage drops below a threshold. Test runner · Coverage |
🔬 Introspective doctests Embed micro-unit-tests directly inside Fortran comment docstrings. FoBiS generates, compiles, and runs volatile test programs automatically — inspired by Python's doctest module, no test harness needed. Doctests |
| ⚡ Build cache Content-addressed cache keyed on source commit, compiler, and flags — reuses object files across clean builds and branch switches. fobis cache list/clean for housekeeping. Build cache |
🤖 Introspect & Claude Code skillfobis introspect --all emits machine-readable JSON of the full project graph — sources, compiler flags, dependencies, targets. Powers the bundled /fobis Claude Code skill for AI-assisted builds right in your editor. introspect · Claude skill |
| 📋 Scaffold — boilerplate sync Keep CI workflows, docs configs, license files, and scripts identical across all your Fortran repos. fobis scaffold status shows drift; fobis scaffold sync fixes it; fobis scaffold init bootstraps new projects. All templates bundled inside FoBiS — no extra dependencies. Scaffold reference |
🧠 LLM commit messages Generate well-formed Conventional Commits messages for staged changes via a local LLM. Supports Ollama and any OpenAI-compatible endpoint (LM Studio, vLLM, llama.cpp) — no cloud account, no API key, no data leaving your machine. LLM commit guide |
Why FoBiS?
Modern Fortran's module system is powerful — but tracking inter-module compilation order by hand in a makefile quickly becomes a nightmare as project size grows. Every time you add a module, rename a file, or restructure directories, the makefile needs manual updates.
FoBiS solves this completely. It parses source files on every invocation, rebuilds the dependency graph from scratch, and compiles in the correct order — with no configuration required for simple projects.
# That's it. FoBiS finds all programs, resolves all dependencies, compiles.
fobis build
For complex projects, a single fobos file in the project root replaces makefiles entirely:
[modes]
modes = debug release
[debug]
compiler = gnu
cflags = -c -O0 -g -Wall
build_dir = ./build/debug/
[release]
compiler = gnu
cflags = -c -O3
build_dir = ./build/release/
fobis build -mode release
| zero-configuration build | simplify complex dependency |
|---|---|
| GH integration, project install | GH integration, dependancies fetch |
Scaffold — boilerplate management
fobis scaffold keeps CI workflows, docs configs, license files, and other boilerplate in sync across all your Fortran repos. All templates are bundled inside FoBiS — no external dependencies.
fobis scaffold status # drift report: OK / OUTDATED / MISSING per file
fobis scaffold sync --dry-run # preview diffs without writing
fobis scaffold sync --yes # apply all updates silently
fobis scaffold init # bootstrap a new project (creates src/, docs/, .github/, …)
fobis scaffold list # list all managed files and their categories
Project variables ({{NAME}}, {{AUTHORS}}, {{REPOSITORY}}, …) are resolved from the fobos [project] section, the git remote URL, and git config. See the scaffold reference for full details.
LLM-assisted commit messages
fobis commit generates Conventional Commits messages for your staged changes using a local LLM — no cloud account, no API key, no data leaving your machine.
# Stage your changes as usual
git add fobis/Commit.py fobis/cli/commit.py
# Generate the message (print only — you review before committing)
fobis commit
# Generate and commit in one step after interactive review
fobis commit --apply
# Persist your LLM settings
fobis commit --init-config # creates ~/.config/fobis/config.ini
fobis commit --show-config # inspect effective settings
Works with Ollama (default) and any OpenAI-compatible server (LM Studio, vLLM, llama.cpp). The default model is qwen3-coder:30b-a3b-q4_K_M — a fast mixture-of-experts model that produces excellent commit messages.
See the LLM commit messages guide for setup instructions, model recommendations, and worked examples.
Showcases
Projects using FoBiS:
- ADAM — Accelerated fluid Dynamics on Adaptive Mesh refinement grids | GitHub
- BeFoR64 — Base64 encoding/decoding library for Fortran | GitHub
- FACE — Fortran ANSI Colors and Escape sequences | GitHub
- FiNeR — Fortran INI ParseR and generator | GitHub
- FLAP — Fortran command Line Arguments Parser | GitHub
- FUNDAL — Fortran UNified Device Acceleration Library | GitHub
- FOSSIL — FOrtran Stereo (si) Litography parser | GitHub
- MORTIF — MORTon Indexer (Z-order) Fortran environment | GitHub
- MOTIOn — Modular (HPC) Optimized Toolkit (for) IO (in fortra)n | GitHub
- PENF — Portability Environment for Fortran | GitHub
- StringiFor — Strings Fortran Manipulator with steroids | GitHub
- VecFor — Vector algebra class for Fortran | GitHub
- VTKFortran — pure Fortran VTK (XML) API | GitHub
Author
Stefano Zaghi — stefano.zaghi@gmail.com · GitHub
Copyrights
FoBiS is an open source project distributed under the GPL v3 license. Anyone interested in using, developing, or contributing to FoBiS is welcome — see the contributing guidelines.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fobis_py-3.8.1.tar.gz.
File metadata
- Download URL: fobis_py-3.8.1.tar.gz
- Upload date:
- Size: 162.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d353db5367b8169ffc68c0f437ed04756140199c9af37949b5d75268b7ed7280
|
|
| MD5 |
a504513d89f3f1b89334296a6a03a647
|
|
| BLAKE2b-256 |
13fc7030ef1c3598ee2e6303f99f19e6d86bfd415eb71df1e742365e8cd54000
|
Provenance
The following attestation bundles were made for fobis_py-3.8.1.tar.gz:
Publisher:
python-package.yml on szaghi/FoBiS
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fobis_py-3.8.1.tar.gz -
Subject digest:
d353db5367b8169ffc68c0f437ed04756140199c9af37949b5d75268b7ed7280 - Sigstore transparency entry: 1296693520
- Sigstore integration time:
-
Permalink:
szaghi/FoBiS@86af080f37cb31684407d49a0ab5c7ed41e09a74 -
Branch / Tag:
refs/tags/v3.8.1 - Owner: https://github.com/szaghi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-package.yml@86af080f37cb31684407d49a0ab5c7ed41e09a74 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fobis_py-3.8.1-py3-none-any.whl.
File metadata
- Download URL: fobis_py-3.8.1-py3-none-any.whl
- Upload date:
- Size: 159.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a96cc147954dd675b6b90af4f1f2e98b2003b5f6f3a0fc919e3f5a1fb7c09139
|
|
| MD5 |
0ad6d235a2c552b1e21e0fe3f3eb45aa
|
|
| BLAKE2b-256 |
08a633d956f9ef11d3d9e23d76c9e66ddeb706c94524707ef6fb4f760a9a5faf
|
Provenance
The following attestation bundles were made for fobis_py-3.8.1-py3-none-any.whl:
Publisher:
python-package.yml on szaghi/FoBiS
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fobis_py-3.8.1-py3-none-any.whl -
Subject digest:
a96cc147954dd675b6b90af4f1f2e98b2003b5f6f3a0fc919e3f5a1fb7c09139 - Sigstore transparency entry: 1296693696
- Sigstore integration time:
-
Permalink:
szaghi/FoBiS@86af080f37cb31684407d49a0ab5c7ed41e09a74 -
Branch / Tag:
refs/tags/v3.8.1 - Owner: https://github.com/szaghi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-package.yml@86af080f37cb31684407d49a0ab5c7ed41e09a74 -
Trigger Event:
push
-
Statement type: