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

x86-64 binaries 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-v0.1.0-linux-x86_64

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.

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/v0.2.0/fpm-0.2.0.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

You can set your Fortran compiler and the compiler flags with the FC and FFLAGS environment variables.

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.3.0.tar.gz (341.4 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.3.0-py3-none-win_amd64.whl (362.6 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.1+ x86-64

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

Uploaded Python 3musllinux: musl 1.1+ i686

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

Uploaded Python 3manylinux: glibc 2.17+ i686

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

Uploaded Python 3macOS 11.0+ ARM64

fpm-0.3.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.3.0.tar.gz.

File metadata

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

File hashes

Hashes for fpm-0.3.0.tar.gz
Algorithm Hash digest
SHA256 0e791c9d762629758dd4186b7173126827981bebd58a9d65ea64e328865a9025
MD5 2c038c60a35c078cb6f75ecab2ffd94a
BLAKE2b-256 f573a125f576142aa488cc91c8f9e807cfba6bbeddfc2b1aa94a9996eddabf4c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.3.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 362.6 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.3.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 bd79cd7427e6880d1089d6e041aeb4ce533cd904944f36fe913337866b3794bc
MD5 fad77d0db37a67fe1a0015aaffa8fac7
BLAKE2b-256 4c5b01ec1d4630589dedcce8a0c3ee2c5097579c91519acca6d4683525e4885e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.3.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.3.0-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 7c2dbb1fbae068172c0004bd237917fc83f6fd51cc393244cfcaa976c6c39cb8
MD5 265c8174f7589b7eb8fe916f5d420b50
BLAKE2b-256 9da87feb01ec947911caa00ce8a976431a0fb692745c414848823004f78ac0ae

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.3.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.3.0-py3-none-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 7b225e3b0c16ceaff79ae9fc173ba923d8c7bf906547734ad5dd5268ad66bb2a
MD5 d19aaec2dad3d78924e2a63990718fc0
BLAKE2b-256 135edf01c05d9af8e113401651741e7633673f0cd84adc55d3e4508a40cfa28a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.3.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 997ba5a78f49a98629105c2b232aa1551e172ad6901a49006008c73241a405dc
MD5 bc4ea5e9e2145a24ae10810eaf96dd87
BLAKE2b-256 3d3375741789f191c9be641d8b6b892c27a7ff7995624ccbf3efdcc3248f96ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fpm-0.3.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl
Algorithm Hash digest
SHA256 2a521a2fe51ca31923dd186eb307e9e037173a2a5737e8fc4f41e5821d3e49c7
MD5 2dbfa3f613a0f103473418a9acd26608
BLAKE2b-256 1a37a8b63d81f55489e88149843ae0b1ab3466b908bb32c70ecca8e1e9fc13e7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.3.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.3.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 67471ed46d7d9affa74b6ce584ba942598d053a5d4b073c72dadb9b21c3231ee
MD5 b574098ab0012f10ad98efbce7719ff9
BLAKE2b-256 1a6713a81bcddc4987e61d8b895c9041d26bdce8f85fa5df9f590119c0798b11

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpm-0.3.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.3.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6bb081841c1c0b900c01518fe483e67221905273ce05decf682d6a1042bfa668
MD5 5a4e6ff190a1cb9c06c5c6b215f929cc
BLAKE2b-256 abcbbd0a78e6834875d19b728d91dad32cd8df516e084b05623d9d70cd89d66e

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