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.

Getting started

Setting up fpm

Binary download

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.

MSYS2

Fpm is available as MinGW package in the MSYS2 package manager. To install fpm with pacman use

pacman -S mingw-w64-x86_64-fpm

Afterwards fpm will be available for usage. Currently i686, x86_64 and ucrt-x86_64 are supported MinGW architectures for fpm. For more details check the package information here.

Spack

Fpm is available with spack in its develop version. To install fpm from spack use

spack install fpm

You can add +openmp to enable parallelization of the target compilation in fpm. To use fpm in your environment load it with

spack load fpm

For more details check the package information here.

Github Actions

To setup fpm within Github actions for automated testing, you can use the fortran-lang/setup-fpm action.

Bootstrapping on other platforms

For other platforms and architectures have a look at the bootstrapping instructions.

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

Bootstrapping instructions

This guide explains the process of building fpm on a platform for the first time. To build fpm without a prior fpm version a single source file version is available at each release.

To build manually using the single source distribution, run the following code (from within the current directory)

mkdir _tmp
curl -LJ https://github.com/fortran-lang/fpm/releases/download/current/fpm.F90 > _tmp/fpm.F90
gfortran -J _tmp _tmp/fpm.F90 -o _tmp/fpm
_tmp/fpm install --flag "-g -fbacktrace -O3"
rm -r _tmp

To automatically bootstrap using this appoach run the install script

./install.sh

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_FFLAGS Fortran compiler flags --flag
FPM_CFLAGS C compiler flags --c-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.6.0.tar.gz (379.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.6.0-py3-none-win_amd64.whl (404.5 kB view details)

Uploaded Python 3Windows x86-64

fpm-0.6.0-py3-none-musllinux_1_1_x86_64.whl (1.1 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

fpm-0.6.0-py3-none-musllinux_1_1_i686.whl (1.2 MB view details)

Uploaded Python 3musllinux: musl 1.1+ i686

fpm-0.6.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

fpm-0.6.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl (1.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

fpm-0.6.0-py3-none-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

fpm-0.6.0-py3-none-macosx_10_9_x86_64.whl (1.7 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: fpm-0.6.0.tar.gz
  • Upload date:
  • Size: 379.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.6.0.tar.gz
Algorithm Hash digest
SHA256 7494d63662fbd70210c58e3c9952b5e72ca3e5398e61fe0140d46197b23e9050
MD5 c80b9b84b899e652fc1c936648c6ac32
BLAKE2b-256 daebfda1d76dd59db3c3a09da6dd8376b52d3754b68274bfb3c1b962dfd43bad

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.6.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 404.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.6.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 d50e4ded45b15fc2f7ebd7cd38b4509bba438cf081375a668c24a18f57af271b
MD5 d2f068e87d65f10f652c6067bbae843b
BLAKE2b-256 05f1ba695e49b40fb24bcf5b217c70b395123293a453fb7028015542dff3fa1d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.6.0-py3-none-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 1.1 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.6.0-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 cfb277e76fc1bcf6694e283a0ec2ddedfaab39a20a95f1284057f4ab73271f63
MD5 cc6ec76f60ad4416c7bd3ad94fecc6fa
BLAKE2b-256 bc3f51399406438cbef6bfb54bb14cc5bffaca2db4c6f5f0121de1319fcd0df4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.6.0-py3-none-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 1.2 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.6.0-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 f358c68ab4ed84cdf84f51fd2085a88916c2e157a67444071764c4e0de5c658a
MD5 a0356395172e107cd94cc497f6e28ccc
BLAKE2b-256 347ced0559aa44eae0c7b26637efb7a0d99b12205a34c8ffb3fb22f585f81a98

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.6.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 65765584bd205653bc8583cbe4f03b1f0b98972a212cc9d43d1a168e7518821f
MD5 c92391594709eb823dba3ee0f5872bb4
BLAKE2b-256 9e99a3d669791b5cbc7f94ab82cb4e5a5fcbfcc9d9aec99cc49f836b6926a0a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.6.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 3c5e8e472bfe7e9274592102d82fa2042378ff85c0e3d552ef893670394f0bf6
MD5 ec9327edcc50f95192efaa3c81b18983
BLAKE2b-256 4ef81bac3b81f3f6bf38a083ca152ac5a48507ac805d9cb3b0aa229827e29a77

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.6.0-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.0 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.6.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a1d4fc70a6a1b9dd1d6704971a4d29585626a2f0cc4103fe767f1c66eb72611c
MD5 220894573353fdfb6d0135bcffde4090
BLAKE2b-256 1d663bd4c75feb72695859d1dc6051fb8379a5983203d474600a42daf1df423f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.6.0-py3-none-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 1.7 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.6.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f75698fad36475825c4efefc30ec6bafb1b7bcbd8459311d3dc26bc5abb436ac
MD5 1364beeec38923caeed78e28bb20cefb
BLAKE2b-256 ae015595f9ab5d333e54a25864f136c49d775c29422e6365a73a95bf9ee9aa8c

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