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.10.0.tar.gz (658.0 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.10.0-py3-none-win_amd64.whl (677.5 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.1+ x86-64

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

Uploaded Python 3musllinux: musl 1.1+ i686

fpm-0.10.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.10.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl (1.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

fpm-0.10.0-py3-none-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

fpm-0.10.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.10.0.tar.gz.

File metadata

  • Download URL: fpm-0.10.0.tar.gz
  • Upload date:
  • Size: 658.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for fpm-0.10.0.tar.gz
Algorithm Hash digest
SHA256 f85fc4f5cd86585da79efc923d2df8b9804c3e504c8d55f0b92da3bdad0f3897
MD5 e21f1845ba302aabfbc86fae2c88e6f4
BLAKE2b-256 ec01b03d4a9276a7670e95594eb97a350868147bc500e7f0c60c4885e03a86ba

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for fpm-0.10.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 7cc8bc515edb8712f300da992f56bd15b498fa462b6d0e8497bcaecb9302b3e0
MD5 bf3c3ab0d0841536bfebb55459543722
BLAKE2b-256 e2fe9377782e7fbe5b9622c98307c920c4938fd1fd0d60aaa4b65f66124c3749

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.10.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.2 CPython/3.11.7

File hashes

Hashes for fpm-0.10.0-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 5983fdddbf179b95f5808c27515c6f43f02d8f2f3b83c71a791f9b4f2302ef91
MD5 2f954a3ecc41fe1f36a87f8d09b57906
BLAKE2b-256 d36468ad63baa081115b822984bfee817eb38cbe299be4aeb5aa7011e5421147

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.10.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.2 CPython/3.11.7

File hashes

Hashes for fpm-0.10.0-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 3d0a83ebb95418d4c90de2a5dd133bfc3ac2def32f157b97774cb002d3730efe
MD5 8ed1ad3e032df99fdac0790062a19efe
BLAKE2b-256 67784279ce6ff38a88fc431b67105cbe58e166474f55018d04fae32a99b70c65

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.10.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 511fd91f7a90f9291cdef3efd3a23c5c2161fe4fe4c99fef452ed575f0e0ace3
MD5 54d63c65b7773790580036ceee56ce6f
BLAKE2b-256 123e9ba7c369e1b97f3317765a67765b4399be3f5d31e997f4a792e8b6a00b54

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.10.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 58c77b9ce6e404cf4a0f75a7972b45a29946306976eaea537cb2649a341146b4
MD5 7285c5032028d2f557bedf2bf9a37293
BLAKE2b-256 d76fee48b7c8e8893abf882c7993da39e071c8b6627b2bd89885ceb616fcc392

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for fpm-0.10.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2941845001a06b92850e4655cfc785e324c35f502d399446c5f460ffb31b980b
MD5 95122f27169a7af649ab04a9a7c9b80b
BLAKE2b-256 f141ee1f7bba5a0ce86ea8aa4e3d751ec7685d0c9853394c828f43334a9a7134

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.10.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.2 CPython/3.11.7

File hashes

Hashes for fpm-0.10.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4aa6b16734c3930a1b0e1610a0f9f224f9568d4b2f2e75fb80f65f0118e27474
MD5 c1366ef969930770563221745a70ce85
BLAKE2b-256 ef224e749dd90c10408af8601728ffa12eddc1ea985bfe809b53b282073fcfeb

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