Skip to main content

Fortran package manager

Project description

Fortran Package Manager

Fortran Package Manager (fpm) is a package manager and build system for Fortran. Its key goal is to improve the user experience of Fortran programmers. It does so by making it easier to build your Fortran program or library, run the executables, tests, and examples, and distribute it as a dependency to other Fortran projects. Fpm's user interface is modeled after Rust's Cargo, so if you're familiar with that tool, you will feel at home with fpm. Fpm's long term vision is to nurture and grow the ecosystem of modern Fortran applications and libraries.

Fpm is an early prototype and is evolving rapidly. You can use it to build and package your Fortran projects, as well as to use existing fpm packages as dependencies. Fpm's behavior and user interface may change as it evolves, however as fpm matures and we enter production, we will aim to stay backwards compatible. Please follow the issues to contribute and/or stay up to date with the development. Before opening a bug report or a feature suggestion, please read our Contributor Guide. You can also discuss your ideas and queries with the community in fpm discussions, or more broadly on Fortran-Lang Discourse.

Fortran Package Manager is not to be confused with Jordan Sissel's fpm, a more general, non-Fortran related package manager.

Getting started

Setting up fpm

Binary download

x86-64 binaries are available to download for Windows, MacOS and Linux.

Note: On Linux and MacOS, you will need to enable executable permission before you can use the binary.

e.g. $ chmod u+x fpm-0.4.0-linux-x86_64

Conda

Fpm is available on conda-forge, to add conda-forge to your channels use:

conda config --add channels conda-forge

Fpm can be installed with:

conda create -n fpm fpm
conda activate fpm

The conda package manager can be installed from miniforge or from miniconda.

Github Actions

To setup fpm within Github actions for automated testing, you can use the fortran-lang/setup-fpm action.

Bootstrapping on other platforms

For other platforms and architectures have a look at the bootstrapping instructions.

Creating a new project

Creating a new fpm project is as simple as running the command fpm new project_name. This will create a new folder in your current directory with the following contents and initialized as a git repository.

  • fpm.toml – with your project’s name and some default standard meta-data
  • README.md – with your project’s name
  • .gitignore
  • src/project_name.f90 – with a simple hello world subroutine
  • app/main.f90 (if --app flag used) – a program that calls the subroutine
  • test/main.f90 (if --test flag used) – an empty test program

Building your Fortran project with fpm

fpm understands the basic commands:

  • fpm build – build your library, executables and tests
  • fpm run – run executables
  • fpm test – run tests
  • fpm install - installs the executables locally

The command fpm run can optionally accept the name of the specific executable to run, as can fpm test; like fpm run specific_executable. Command line arguments can also be passed to the executable(s) or test(s) with the option -- some arguments.

See additional instructions in the Packaging guide or the manifest reference.

Bootstrapping instructions

This guide explains the process of building fpm on a platform for the first time. To build fpm without a prior fpm version a single source file version is available at each release.

To build manually using the single source distribution, run the following code (from within the current directory)

mkdir _tmp
curl -LJ https://github.com/fortran-lang/fpm/releases/download/v0.3.0/fpm-0.3.0.F90 > _tmp/fpm.F90
gfortran -J _tmp _tmp/fpm.F90 -o _tmp/fpm
_tmp/fpm install --flag "-g -fbacktrace -O3"
rm -r _tmp

To automatically bootstrap using this appoach run the install script

./install.sh

You can set your Fortran compiler and the compiler flags with the FC and FFLAGS environment variables.

Project details


Download files

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

Source Distribution

fpm-0.4.0.tar.gz (349.4 kB view details)

Uploaded Source

Built Distributions

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

fpm-0.4.0-py3-none-win_amd64.whl (374.9 kB view details)

Uploaded Python 3Windows x86-64

fpm-0.4.0-py3-none-musllinux_1_1_x86_64.whl (1.1 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

fpm-0.4.0-py3-none-musllinux_1_1_i686.whl (1.2 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

fpm-0.4.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

fpm-0.4.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl (1.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

fpm-0.4.0-py3-none-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

fpm-0.4.0-py3-none-macosx_10_9_x86_64.whl (1.7 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file fpm-0.4.0.tar.gz.

File metadata

  • Download URL: fpm-0.4.0.tar.gz
  • Upload date:
  • Size: 349.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for fpm-0.4.0.tar.gz
Algorithm Hash digest
SHA256 052faa2550af49364b2f049f74252cfcd39bbc30d9cb0ace8913e3441c6c548d
MD5 1648958ae7e7ab24dfd7ff90386bf5c0
BLAKE2b-256 f4c682df5af77121f1104b5132c541c7b7e43a40d5300d6aed7671ae15a8a8f9

See more details on using hashes here.

File details

Details for the file fpm-0.4.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: fpm-0.4.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 374.9 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for fpm-0.4.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 f1463fa58f33415f703e679ea9865c811b33022528e9d5fe806bb7b69975f737
MD5 53f43bedc277b05f2eb7356ec6a26bfb
BLAKE2b-256 659301eefc16d692b30da41216070bae100bc7603a85ffdca238d1ec33e9832a

See more details on using hashes here.

File details

Details for the file fpm-0.4.0-py3-none-musllinux_1_1_x86_64.whl.

File metadata

  • Download URL: fpm-0.4.0-py3-none-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: Python 3, musllinux: musl 1.1+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for fpm-0.4.0-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 6cb692f2a502c137f241b83902149ea275c3cf28168e3f9873fd854e7abcca55
MD5 56854d4dbf1bcd84995f684bf4c8a11f
BLAKE2b-256 ebb0b877d7f565d1dab24edb327ef5961e26d012d71b8430eab9ed33c4284bfc

See more details on using hashes here.

File details

Details for the file fpm-0.4.0-py3-none-musllinux_1_1_i686.whl.

File metadata

  • Download URL: fpm-0.4.0-py3-none-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: Python 3, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for fpm-0.4.0-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 15a02da03245bfe5528e652cc9b650e2b24edcc367e0d049836c6a498ea41495
MD5 0cb5568e92974730b98b999d52d062a7
BLAKE2b-256 07790e2920f8538aea2105f871870865451f8d2ae0b5d582e699519aeb6b09a0

See more details on using hashes here.

File details

Details for the file fpm-0.4.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for fpm-0.4.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 7b2799b93fccd409a1d6af2bd4d546cc672e5fe5e7301932d85696216ef9eac7
MD5 51997585c156720bfcea33dc2e714f56
BLAKE2b-256 120edbd792988df91d64428287adb4d46d4ad88676df15a132754575b4122afc

See more details on using hashes here.

File details

Details for the file fpm-0.4.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl.

File metadata

File hashes

Hashes for fpm-0.4.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 642ca6613f42b24aec8d3c9acd63207316fb885a5b6d30315ce391439e169002
MD5 b47029a154acec5f1ffc91138e3a996f
BLAKE2b-256 973e8b6011a87adb5d2b9472f603c526f657b711a4df43c665f96be35974a377

See more details on using hashes here.

File details

Details for the file fpm-0.4.0-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fpm-0.4.0-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for fpm-0.4.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3362a23ac5dd67a9654b9bcba07368a792cb93f03ac2b3d7d10c6cc19c086d42
MD5 b56b20804a238d8bb753161ad0ad0074
BLAKE2b-256 fa629441787eaa02d81e3fded220d535105c5b7d9ce8cd1dc527bec6fdea2299

See more details on using hashes here.

File details

Details for the file fpm-0.4.0-py3-none-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: fpm-0.4.0-py3-none-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: Python 3, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for fpm-0.4.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a7920de609dfcf56d8cb5937b44e7717cc6a447b5600bc514dc454954422c993
MD5 6df118554531ecd14deaa7c11bbd944b
BLAKE2b-256 6e41b28213948d394379dba96e7a6c3ad6229ca95cb371df195c13c0e16e74c5

See more details on using hashes here.

Supported by

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