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.9.0.tar.gz (613.1 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.9.0-py3-none-win_amd64.whl (629.2 kB view details)

Uploaded Python 3Windows x86-64

fpm-0.9.0-py3-none-musllinux_1_1_x86_64.whl (1.4 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

fpm-0.9.0-py3-none-musllinux_1_1_i686.whl (1.5 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

fpm-0.9.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

fpm-0.9.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl (1.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

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

Uploaded Python 3macOS 11.0+ ARM64

fpm-0.9.0-py3-none-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for fpm-0.9.0.tar.gz
Algorithm Hash digest
SHA256 4290c4c6383ed5f37128f29c92aa828f6c683db3e46d33ea811b8f4d3b047520
MD5 f21132764b34881d92b6b58e9e16c828
BLAKE2b-256 bda9abdbe6f0ef5a5d58302b82f30b52991bf1a8241adcf5a3b78a1741df6827

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.9.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 629.2 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.9.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 f0438a6b8fe377b4cef95a967534877909ec2a88227c454db0254755bf8a36ec
MD5 c57a438f3be06a75e3573f9795e889be
BLAKE2b-256 7aeba2d84a9ce7be06dfc19bf8b284407e7dd57a99498e2c0d340ab088b2b57e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.9.0-py3-none-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 1.4 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.9.0-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b6b8697456129fc4c65a678a53fca4e95720e76f9ce1fd261b41ab52c479ba50
MD5 e06c6cf1f25f4130fa56525e9e68d05d
BLAKE2b-256 db0ba865adcfcc32a3e82fea833f12f7c6ef513b22a068082c00eae3f23ed166

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.9.0-py3-none-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 1.5 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.9.0-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 6ff08a8d06f4bb57a8ebebfcc905d0d66afe7da3bfe708f1ef5dbeb554023619
MD5 c04b0f393fec2cfc12a0cde7934cb148
BLAKE2b-256 9c8ee47d3e3a65b0a2d10b4b6345a04122de77fcf0c9c9a5e086e4b06894b023

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.9.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 9b025b232f4987a49931ec0b82b844b50849640381d5b0545cb1a42ed9d4ec8e
MD5 3a33042fb21e95886c1ca14e5ba51aa8
BLAKE2b-256 372a91cb55c47a9b3182009153ee7deddb05ad2955828338e28f92804f515a57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.9.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 4fe657318fcf4392d9a261b8eaa7a4e5752d89db3c8f7fe4cebcd317b4218e9a
MD5 d37d1157ab413683d539b514194552ea
BLAKE2b-256 b3824ae3cb530e2e00b04e2a6087a935cd6d8e20e88e8eb1034b9e6861720956

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.9.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.9.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 97f14bcc154edbf0cba3d14468cdb5050c759536fe5866601ab6b0d66574b133
MD5 fc0e3ad659e073d7cb25d2e4d756d024
BLAKE2b-256 28c52727fbd15b589b69259d19a44f40500a8ca9e79ba81799a0fadf0cb4805d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.9.0-py3-none-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.0 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.9.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 73057847429f06b12be598d454375121aace4e71ebd7584e513aa65c8c02faf6
MD5 2a5393eaa9b0c1a7fa80fdd9e5dde388
BLAKE2b-256 a83e56ec641a946dd26ba1a1557bfbebd11bdbd9f78ce28a8fef63c5aaeec335

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