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.2.tar.gz (560.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.2-py3-none-win_amd64.whl (579.7 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.1+ x86-64

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

Uploaded Python 3musllinux: musl 1.1+ i686

fpm-0.8.2-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.2-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl (1.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

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

Uploaded Python 3macOS 11.0+ ARM64

fpm-0.8.2-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.2.tar.gz.

File metadata

  • Download URL: fpm-0.8.2.tar.gz
  • Upload date:
  • Size: 560.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.2.tar.gz
Algorithm Hash digest
SHA256 9bd915dea09f6bcfe53011bbbf0c04d6d1dcf7e17001792b1e729aa003f37c18
MD5 cc32de7927310feb7fdf55f06609eac2
BLAKE2b-256 1aa012ccdd0b1059c9b6861696d6c088cd0675830189668de66feb5394940d4c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.8.2-py3-none-win_amd64.whl
  • Upload date:
  • Size: 579.7 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.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 c7cfd2fb308616a1f7650604c53e4a6117b1e6750c531de03c13f8583a419299
MD5 292f46836e1359f17d3f943ce440a50f
BLAKE2b-256 4a06d0764971c9f85c45b454648411d687984698b1f18914407f89f4b34d869d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.8.2-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.2-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ca9beffab55f2b7fbdabb85404c95c21aa5e7633822ed6d52021b7e24085e33b
MD5 085f7643845d4b990183b91e220178b7
BLAKE2b-256 db45cb5810e36c06b8da6c5b3a8127b55af4d6e6ab250029d69f136c447c9a97

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.8.2-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.2-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 cf7591fb26a0f2c8939e571df63e8a88258d9a4ee86677ef7ccf617094dd8945
MD5 4f61ce3445762271035228ca5f08ce67
BLAKE2b-256 0bb3ff4e91e2505e97f72e4300d55f7248b0cedf84278d9cefbc1721c7f42475

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.8.2-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 ffd25fe625a9172ed3428ffc99b00bdec39dd225e38d5d3d44df4068a505c12b
MD5 3a615aa6f85b28542fe3741b241d7441
BLAKE2b-256 6fd7a55911a0de4aff838f320e1a3759abf52cb7be295a3f27ee31b7e980f6f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.8.2-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 b6708702d5161924dee6ce2dc92fb41c546d095a7157c46af1cfb3158c09ba12
MD5 9d2ff799f1eb4bee66980057f6a3157c
BLAKE2b-256 364ee62b4670c82b809c398ab04251cd440bafba6bb3ca6c78a67e0466f60e87

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.8.2-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.2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 46ea548263a23192369de72624acfb2ee56283c811789d38f019455626dffe37
MD5 efd3d0815245e0adc540d8c8a91f4545
BLAKE2b-256 ade4a256be9bb3cffe633f3d40e2cc59bb0b61e21115b3fc50cf107a5d8a4a85

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.8.2-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.2-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ee05ca57cdb84a1d922562271ee7894a5d01582c880665efaffb284f6da7e864
MD5 9ae08c64f6157ba85811d9dd0c8f3eb1
BLAKE2b-256 f9c3ad93beba82581d3250227780755cfa5a41766cea8bd09ab61c00f7b20739

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