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.post1.tar.gz (658.3 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.post1-py3-none-win_amd64.whl (678.0 kB view details)

Uploaded Python 3Windows x86-64

fpm-0.10.0.post1-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.post1-py3-none-musllinux_1_1_i686.whl (1.5 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

fpm-0.10.0.post1-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.post1-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.post1-py3-none-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

fpm-0.10.0.post1-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.post1.tar.gz.

File metadata

  • Download URL: fpm-0.10.0.post1.tar.gz
  • Upload date:
  • Size: 658.3 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.post1.tar.gz
Algorithm Hash digest
SHA256 56e2e75eabdb290e8c80500398cf31bcbd00cb52277801c10d3c2a852a109eac
MD5 45c7eae7658bec130a1579b74d47611a
BLAKE2b-256 c52f8f05a40e3f90c0c2e6454effbe82968d86af0ddd984d396da4a30ab296d4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.10.0.post1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 678.0 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.post1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e5a5f1721ca887459bd6c87cadbb9949959738c579c2fbe99a94ac3715039f39
MD5 0379b91fee02120af99b7a87424f0b47
BLAKE2b-256 2be7e8036f785099c3624e349cb85647e9ad9c5bafcf7eaff84201f117a2eb5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.10.0.post1-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 cce154048a345ec8349e24071d6093e2508a42b37402af8e760688fa09a48515
MD5 237568b6b38f167c129cae42f03257df
BLAKE2b-256 cd52a4a645ba790f98e72910d45648b2589e40ce17485a6eb07498a5eb21098c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.10.0.post1-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 fdc4ffd6a96a85efd10e4d8d314831bbbca11e40a6bf4e6ddc20df070196a355
MD5 e72591056956340122f9c9c03d134184
BLAKE2b-256 809dab63e6281a8f77f1987f25a319ce0c86fb511810f741a8ce6e670823438d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.10.0.post1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 b8407142d9ac0a93c2eb1165ca9ccdd0f469d533cfca908bcc251526507eb3b7
MD5 7289847ff4cb2380bc046e560328a061
BLAKE2b-256 359025832419fab6148d71c92b79ca6e32efcc5d85038e0a38bec5427752e48f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.10.0.post1-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 08133ff7dab8523b39ac0ad4c00654e49dad7e7bb508a5d16e27d32262b978b6
MD5 4b16b781d5c7dc5d30de64adc2dca86b
BLAKE2b-256 95abde311a8a2f0e12be836bdcd86553c17ce6f8a5e570b6b1f8dacb8e5a4fa7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.10.0.post1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5b0486d95199954d745d69fe6dcde88fd8c7f045bc095369fb2a5da77c6773ed
MD5 939e2422aad386d2523146182dbb224f
BLAKE2b-256 6463a9aff4c06c2c9af2ca3d0d8700131de424a17aaf43db73668f49879d0ace

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.10.0.post1-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 839d7bfa7c278fc2c7127bea3ccb6b65576d31f0d22f90826293e816c1bbf262
MD5 5653f5d088fd160567dfd290158bde9d
BLAKE2b-256 d7157c6df8a7983c0bd4493e6a2f8892d46eb33013bb9ccf56b8e52699d55a12

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