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.

Website: https://fpm.fortran-lang.org/

Download

Fpm is available on many platforms and through multiple package managers, see our Documentation webpage for a list of All Supported Installations.

The easiest installation routes are shown below.

Python PyPi

Fpm is available on PyPI, and can be installed with:

pip install fpm

Binary

Binaries for the latest stable release 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.6.0-linux-x86_64

The binaries at the current tag are updated automatically to always provide the current git version from the default branch.

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.

Homebrew

The Fortran Package Manager (fpm) is available for the Homebrew package manager via an additional tap. To install fpm via brew, include the new tap and install using

brew tap fortran-lang/fortran
brew install fpm

Binary distributions are available for MacOS 11 (Catalina) and 12 (Big Sur) for x86_64 architectures. For other platforms fpm will be built locally from source automatically.

Fpm should be available and functional after those steps. For more details checkout the tap here.

Get started

Follow our Quickstart Tutorial to get familiar with fpm.

Start 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.

Environmental variables

The table below lists the environment variables that control fpm's choice of compilers, compiler flags, archiver locations, and link flags, each of which can be overridden by passing fpm flags also shown in the table.

Environment Variable Defines Overridden by
FPM_FC Fortran compiler path --compiler
FPM_CC C compiler path --c-compiler
FPM_CXX C++ compiler path --cxx-compiler
FPM_FFLAGS Fortran compiler flags --flag
FPM_CFLAGS C compiler flags --c-flag
FPM_CXXFLAGS C++ compiler flags --cxx-flag
FPM_AR Archiver path --archiver
FPM_LDFLAGS Link flags --link-flag

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.8.0.tar.gz (543.5 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.8.0-py3-none-win_amd64.whl (560.5 kB view details)

Uploaded Python 3Windows x86-64

fpm-0.8.0-py3-none-musllinux_1_1_x86_64.whl (1.3 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

fpm-0.8.0-py3-none-musllinux_1_1_i686.whl (1.4 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

fpm-0.8.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

fpm-0.8.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl (1.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

fpm-0.8.0-py3-none-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

fpm-0.8.0-py3-none-macosx_10_9_x86_64.whl (1.9 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for fpm-0.8.0.tar.gz
Algorithm Hash digest
SHA256 a3cac0cdada54380eed65e910c6254b9ef83954a2e462fb17563e5c409832c6c
MD5 58b3d42f3cdf5c59ff73b6096fb31023
BLAKE2b-256 c5a18d0ac2db5e9438366a041f282c50872333297d7fcf5b3a2ab4c8457ae47c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.8.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 560.5 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.8.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 f19885e45cd9661ec38ecb0f591da1ee4630929e7131168d9967b072212bc724
MD5 cbf677aa758dae5e3dcc1760684bad7c
BLAKE2b-256 8faddcead6e553036b482980dc6196da18bddec86aca7df8fde93cfe41c2cdbb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.8.0-py3-none-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 1.3 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.8.0-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 5b198b797539bb7e566d3cb674d1f70ea472448956854d0dee263d9f0ebd744a
MD5 138fd8ec44cea9fd6be573eb17191098
BLAKE2b-256 25005e70a0bdbcc931c2d34e8adec44d2a4264f2c962b048c70244c97be4685a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.8.0-py3-none-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 1.4 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.8.0-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 c5864a1d1e415431c90d83e1a2825741ef9f36cf32d631902d5977fce4af075d
MD5 eb1d8722bdc2ea27a70c610278066098
BLAKE2b-256 f05de433453b2ad002fbf49b1419bad67d3db0a9201f2207fac7b828f82531db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.8.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 c516c9e354d5119ad3b4fbc68a0f733de04c02c5cd6e2ca52500538fe2c57951
MD5 a21cd6f02a2f7ab8e280cb01014f2037
BLAKE2b-256 3549ef7633166db6b458ce997f6740c8c6a91aa64e76f7457724a881574b94a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.8.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 17b5335c52b48fff2ffbd5249e8fccf21bcdfcefed1c57075b603dc1306006ed
MD5 6ddf18a23dea7138611dd80cc113b537
BLAKE2b-256 d51d393719638b0dfa25c9e15e9495c03a4c320c6b23153f4c446295c5cec9b3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.8.0-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.2 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.8.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9bef54b4c3f1147e087b4c293fe08706bb215231e28699f334516a2f7f45ab53
MD5 3284102dbce31fa9512f5b9eec1d59e8
BLAKE2b-256 1c359770eb25587fdd4278a5f4edbdb1fae48ce5dd20d2734f6a43bf6423deae

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.8.0-py3-none-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 1.9 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.8.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8c2753121211be3f3fe3e04c5237bf3896354126510d01ddb4925e13cf96694b
MD5 cf7f6629af80ef8352acb3890d95ae8f
BLAKE2b-256 96b1015a983d72a03e99ca964cb5989628ad097b1acddc7466d591e2c62a188a

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