Skip to main content

FoBiS — Fortran Building System

Latest Version GitHub tag Build Status Coverage GitHub issues Supported Python versions

License

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 & coverage
fobis 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 skill
fobis 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

Full documentation

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
basic build complex dependancy
GH integration, project install GH integration, dependancies fetch
project install 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 Zaghistefano.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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fobis_py-3.8.22.tar.gz (212.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fobis_py-3.8.22-py3-none-any.whl (189.2 kB view details)

Uploaded Python 3

File details

Details for the file fobis_py-3.8.22.tar.gz.

File metadata

  • Download URL: fobis_py-3.8.22.tar.gz
  • Upload date:
  • Size: 212.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fobis_py-3.8.22.tar.gz
Algorithm Hash digest
SHA256 deb32ff46e260a1546a2000836f54446c7e03e073d868099e122b049392c0d35
MD5 bb1c8f20fd504939318b30d9d5a68c3b
BLAKE2b-256 5e22cae6bd3787a1248ed858c50ed137d462dcd031e2bb136836700517657d27

See more details on using hashes here.

Provenance

The following attestation bundles were made for fobis_py-3.8.22.tar.gz:

Publisher: python-package.yml on szaghi/FoBiS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fobis_py-3.8.22-py3-none-any.whl.

File metadata

  • Download URL: fobis_py-3.8.22-py3-none-any.whl
  • Upload date:
  • Size: 189.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fobis_py-3.8.22-py3-none-any.whl
Algorithm Hash digest
SHA256 93ccceec0a3241e62cfbd1c5e7dbe6c36b5af35402b9358115ae7f5e23f32a08
MD5 e119a3a59a7ae330356934f0742c1582
BLAKE2b-256 8ed53a2ecd745fb174e692602d2bc25e7b9428c5b502092c6afe61466163816e

See more details on using hashes here.

Provenance

The following attestation bundles were made for fobis_py-3.8.22-py3-none-any.whl:

Publisher: python-package.yml on szaghi/FoBiS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

3.8.22 This release

2 files

3.8.21

2 files

3.8.20

2 files

3.8.19

2 files

3.8.18

2 files

3.8.17

2 files

3.8.16

2 files

3.8.15

2 files

3.8.14

2 files

3.8.13

2 files

3.8.12

2 files

3.8.11

2 files

3.8.10

2 files

3.8.9

2 files

3.8.8

2 files

3.8.7

2 files

3.8.6

2 files

3.8.5

2 files

3.8.4

2 files

3.8.3

2 files

3.8.2

2 files

3.8.1

2 files

3.8.0

2 files

3.7.10

2 files

3.7.9

2 files

3.7.8

2 files

3.7.7

2 files

3.7.5

2 files

3.7.3

2 files

3.7.2

2 files

3.7.1

2 files

3.7.0

2 files

3.6.11

2 files

3.6.10

2 files

3.6.8

2 files

3.6.4

1 file

3.6.3

1 file

3.6.2

1 file

3.6.1

1 file

3.6.0

1 file

3.5.4

1 file

3.5.3

1 file

3.5.2

1 file

3.5.1

1 file

3.5.0

1 file

3.4.1

1 file

3.4.0

1 file

3.3.4

1 file

3.3.3

1 file

3.3.2

1 file

3.3.1

1 file

3.3.0

1 file

3.2.2

1 file

3.2.1

1 file

3.2.0

1 file

3.1.0

1 file

3.0.6

1 file

3.0.5

2 files

3.0.4

2 files

3.0.3

2 files

3.0.2

1 file

3.0.1

1 file

3.0.0

1 file

2.9.7

1 file

2.9.5

1 file

2.9.4

1 file

2.9.3

1 file

2.9.2

1 file

2.2.9.1

1 file

2.2.8

1 file

2.2.7

1 file

2.2.6

1 file

2.2.5

1 file

2.2.4

1 file

2.2.3

1 file

2.2.2

1 file

2.2.1

1 file

2.2.0

1 file

2.1.0

1 file

2.0.2

1 file

2.0.1

1 file

2.0.0

1 file

1.9.6

1 file

1.9.5

1 file

1.9.4

1 file

1.9.3

1 file

1.9.2

1 file

1.9.1

1 file

1.9.0

1 file

1.8.4

1 file

1.8.3

1 file

1.8.2

1 file

1.8.0

1 file

1.7.5

1 file

1.7.4

1 file

1.7.3

1 file

1.7.2

1 file

1.7.1

1 file

1.7.0

1 file

1.6.9

1 file

1.6.8

1 file

1.6.7

1 file

1.6.6

1 file

1.6.5

1 file

1.6.4

1 file

1.6.3

1 file

1.6.2

1 file

1.6.1

1 file

1.6.0

1 file

1.5.9

1 file

1.5.8

1 file

1.5.7

1 file

1.5.6

1 file

1.5.5

1 file

1.5.4

1 file

1.5.3

1 file

1.5.2

1 file

1.5.1

1 file

1.5.0

1 file

1.4.3

1 file

1.4.2

1 file

1.4.1

1.4.0

1 file

1.3.2

1 file

1.3.1

1 file

1.3.0

1 file

1.2.9

1 file

1.2.8

1 file

1.2.7

1 file

1.2.6

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page