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.5.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.5.0.tar.gz (361.8 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.5.0-py3-none-win_amd64.whl (386.9 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.1+ x86-64

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

Uploaded Python 3musllinux: musl 1.1+ i686

fpm-0.5.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.5.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl (1.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

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

Uploaded Python 3macOS 11.0+ ARM64

fpm-0.5.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.5.0.tar.gz.

File metadata

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

File hashes

Hashes for fpm-0.5.0.tar.gz
Algorithm Hash digest
SHA256 88ea93468e93e3b4d2e043f74746337a88734c12cc559fe40195fe46c4e41fe1
MD5 68034d9c1133b81762de6c6806d4ad92
BLAKE2b-256 4ae5596a71993f5316bece33796d2db5cd7c1ca845770d3b96e9e2479c46e17f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.5.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 386.9 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.5.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 77241d625d7205cee13fde79b3ee0a758620bc2cb2a6b7a647189f9ead3849f8
MD5 a1f2560fbf8fcadabf183c01f5ef90d3
BLAKE2b-256 08001f375e322518b0582d4748843224c8fed8a24954e6b7b541faf8b03c1503

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.5.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.5.0-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 9649cd74437c5a6a533e84e6f40a739a395576cd89ea3b6d34b9f10e05349ed8
MD5 5d9eefbb402a704abbf68e465ecb937b
BLAKE2b-256 d1da0f67b17687c5d9b471cedf972bbfecf24193fc7a388ad286492489e84708

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.5.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.5.0-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 edbf56f98aea825aa40e7849148ef52cfbfab6ba9f590fc8eddac0caf86efbd7
MD5 38a53098b8f5a013c7678346f51ab1ca
BLAKE2b-256 0093669a9e5a108d8d679069b544bf4c75f6496ef014c1058158a0aa418833e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.5.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 24b24b313c7a554009540021a77596a20c699e2041d3a9de8a493317d3ccc14c
MD5 39509ae33b7754be550d588db4acbc60
BLAKE2b-256 d9ed02806374e0eec30b361820fa0901e898a72044d16b655525fc7669304be4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.5.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 3af8af56845351a7b4d4c73445c3ca9c21c7028688c388d907494a83191a5a95
MD5 cf593f88ede5345bc6981dfec36493ec
BLAKE2b-256 836fad18853db27be4be19a870f8feeca4827670881df478f82fb8654389886d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.5.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.5.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4887dbe8a271b3fd10be06fad7f70b44155d0c68bba6d3abb5f27bdce4f2ef8f
MD5 5a8b239ce1a6b19d9716d86fa11a35a4
BLAKE2b-256 6b9c4bc5404dd5febc541c27e8960b4ec2d9b0b8d4a06514a1bf4d0716d96c87

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.5.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.5.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ea13f092c8b6fc4c972683d279fe399cb1dccbff2ec4a6e7544c51e3623a2e88
MD5 0721840af7bfdff011705b3bf316ea98
BLAKE2b-256 bc78426840066263babae2c85ff20045b740378038487deeb4fe8b2f2de787c1

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