fpm


Namefpm JSON
Version 0.10.1 PyPI version JSON
download
home_pageNone
SummaryFortran package manager
upload_time2024-03-24 14:22:15
maintainerNone
docs_urlNone
authorfpm maintainers
requires_python>=3.7
licenseMIT License
keywords fpm fortran package manager
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <p align="center">
    <a href="https://fpm.fortran-lang.org/"><img src="https://raw.githubusercontent.com/fortran-lang/assets/main/fpm/logo/2-color-alt/png/full-color-alt.png" width="800"/></a>
</p>

# [Fortran Package Manager](https://fpm.fortran-lang.org/)

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](https://doc.rust-lang.org/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](https://github.com/fortran-lang/fpm-registry) 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](https://github.com/fortran-lang/fpm/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](CONTRIBUTING.md). You can also discuss your ideas and
queries with the community in
[fpm discussions](https://github.com/fortran-lang/fpm/discussions),
or more broadly on [Fortran-Lang Discourse](https://fortran-lang.discourse.group/).

Fortran Package Manager is not to be confused with
[Jordan Sissel's fpm](https://github.com/jordansissel/fpm), a more general,
non-Fortran related package manager.

**Website: <https://fpm.fortran-lang.org/>**

## [Download](https://fpm.fortran-lang.org/install/index.html)

Fpm is available on many platforms and through multiple package managers, see our Documentation
webpage for a list of **[All Supported Installations](https://fpm.fortran-lang.org/install/index.html)**.

The easiest installation routes are shown below.

### [Python PyPi](https://pypi.org/project/fpm/)

Fpm is available on [PyPI](https://pypi.org/project/fpm/), and can be installed with:

```sh
pip install fpm
```

### [Binary](https://github.com/fortran-lang/fpm/releases)

Binaries for the latest stable release are available [to download](https://github.com/fortran-lang/fpm/releases/latest) 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](https://github.com/fortran-lang/fpm/releases/tag/current) 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:

```sh
conda config --add channels conda-forge
```

Fpm can be installed with:

```sh
conda create -n fpm fpm
conda activate fpm
```

The conda package manager can be installed from [miniforge](https://github.com/conda-forge/miniforge/releases)
or from [miniconda](https://docs.conda.io/en/latest/miniconda.html).

[Conda]: https://conda.io
[conda-forge]: https://conda-forge.org/

### [Homebrew](https://brew.sh/)

The Fortran Package Manager (fpm) is available for the [Homebrew](https://brew.sh/) package manager via an additional tap.
To install fpm via brew, include the new tap and install using

```sh
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](https://github.com/fortran-lang/homebrew-fortran).

## [Get started](https://fpm.fortran-lang.org/tutorial/index.html)

**Follow our [Quickstart Tutorial](https://fpm.fortran-lang.org/tutorial/hello-fpm.html) 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](PACKAGING.md) or
the [manifest reference](https://fpm.fortran-lang.org/spec/manifest.html).

<!-- 
### 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)

```sh
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

```sh
./install.sh
``` -->

## 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`    |

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "fpm",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "fpm, fortran, package manager",
    "author": "fpm maintainers",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/b2/73/867675eebbcc726e9d11ffdd938cf05edfd4969c834629442647344f7af5/fpm-0.10.1.tar.gz",
    "platform": null,
    "description": "<p align=\"center\">\n    <a href=\"https://fpm.fortran-lang.org/\"><img src=\"https://raw.githubusercontent.com/fortran-lang/assets/main/fpm/logo/2-color-alt/png/full-color-alt.png\" width=\"800\"/></a>\n</p>\n\n# [Fortran Package Manager](https://fpm.fortran-lang.org/)\n\nFortran Package Manager (fpm) is a package manager and build system for Fortran.\nIts key goal is to improve the user experience of Fortran programmers.\nIt does so by making it easier to build your Fortran program or library, run the\nexecutables, tests, and examples, and distribute it as a dependency to other\nFortran projects.\nFpm's user interface is modeled after [Rust's Cargo](https://doc.rust-lang.org/cargo/),\nso if you're familiar with that tool, you will feel at home with fpm.\nFpm's long term vision is to nurture and grow the ecosystem of modern Fortran\napplications and libraries.\n\nFpm is an early prototype and is evolving rapidly.\nYou can use it to build and package your Fortran projects, as well as to use\n[existing fpm packages](https://github.com/fortran-lang/fpm-registry) as dependencies.\nFpm's behavior and user interface may change as it evolves, however as fpm\nmatures and we enter production, we will aim to stay backwards compatible.\nPlease follow the [issues](https://github.com/fortran-lang/fpm/issues) to\ncontribute and/or stay up to date with the development.\nBefore opening a bug report or a feature suggestion, please read our\n[Contributor Guide](CONTRIBUTING.md). You can also discuss your ideas and\nqueries with the community in\n[fpm discussions](https://github.com/fortran-lang/fpm/discussions),\nor more broadly on [Fortran-Lang Discourse](https://fortran-lang.discourse.group/).\n\nFortran Package Manager is not to be confused with\n[Jordan Sissel's fpm](https://github.com/jordansissel/fpm), a more general,\nnon-Fortran related package manager.\n\n**Website: <https://fpm.fortran-lang.org/>**\n\n## [Download](https://fpm.fortran-lang.org/install/index.html)\n\nFpm is available on many platforms and through multiple package managers, see our Documentation\nwebpage for a list of **[All Supported Installations](https://fpm.fortran-lang.org/install/index.html)**.\n\nThe easiest installation routes are shown below.\n\n### [Python PyPi](https://pypi.org/project/fpm/)\n\nFpm is available on [PyPI](https://pypi.org/project/fpm/), and can be installed with:\n\n```sh\npip install fpm\n```\n\n### [Binary](https://github.com/fortran-lang/fpm/releases)\n\nBinaries for the latest stable release are available [to download](https://github.com/fortran-lang/fpm/releases/latest) for Windows, MacOS, and Linux.\n\n**Note:** On Linux and MacOS, you will need to enable executable permission before you can use the binary.\n\n_e.g._ `$ chmod u+x fpm-0.6.0-linux-x86_64`\n\nThe binaries at the [current tag](https://github.com/fortran-lang/fpm/releases/tag/current) are updated automatically to always provide the current git version from the default branch.\n\n### [Conda]\n\nFpm is available on [conda-forge], to add `conda-forge` to your channels use:\n\n```sh\nconda config --add channels conda-forge\n```\n\nFpm can be installed with:\n\n```sh\nconda create -n fpm fpm\nconda activate fpm\n```\n\nThe conda package manager can be installed from [miniforge](https://github.com/conda-forge/miniforge/releases)\nor from [miniconda](https://docs.conda.io/en/latest/miniconda.html).\n\n[Conda]: https://conda.io\n[conda-forge]: https://conda-forge.org/\n\n### [Homebrew](https://brew.sh/)\n\nThe Fortran Package Manager (fpm) is available for the [Homebrew](https://brew.sh/) package manager via an additional tap.\nTo install fpm via brew, include the new tap and install using\n\n```sh\nbrew tap fortran-lang/fortran\nbrew install fpm\n```\n\nBinary 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.\n\nFpm should be available and functional after those steps.\nFor more details checkout the tap [here](https://github.com/fortran-lang/homebrew-fortran).\n\n## [Get started](https://fpm.fortran-lang.org/tutorial/index.html)\n\n**Follow our [Quickstart Tutorial](https://fpm.fortran-lang.org/tutorial/hello-fpm.html) to get familiar with fpm**.\n\n### Start a new project\n\nCreating a new *fpm* project is as simple as running the command\n`fpm new project_name`. This will create a new folder in your current directory\nwith the following contents and initialized as a git repository.\n\n* `fpm.toml` \u2013 with your project\u2019s name and some default standard meta-data\n* `README.md` \u2013 with your project\u2019s name\n* `.gitignore`\n* `src/project_name.f90` \u2013 with a simple hello world subroutine\n* `app/main.f90` (if `--app` flag used) \u2013 a program that calls the subroutine\n* `test/main.f90` (if `--test` flag used) \u2013 an empty test program\n\n### Building your Fortran project with fpm\n\n*fpm* understands the basic commands:\n\n* `fpm build` \u2013 build your library, executables and tests\n* `fpm run` \u2013 run executables\n* `fpm test` \u2013 run tests\n* `fpm install` - installs the executables locally\n\nThe command `fpm run` can optionally accept the name of the specific executable\nto run, as can `fpm test`; like `fpm run specific_executable`. Command line\narguments can also be passed to the executable(s) or test(s) with the option\n`-- some arguments`.\n\nSee additional instructions in the [Packaging guide](PACKAGING.md) or\nthe [manifest reference](https://fpm.fortran-lang.org/spec/manifest.html).\n\n<!-- \n### Bootstrapping instructions\n\nThis guide explains the process of building *fpm* on a platform for the first time.\nTo build *fpm* without a prior *fpm* version a single source file version is available\nat each release.\n\nTo build manually using the single source distribution, run the following code (from within the current directory)\n\n```sh\nmkdir _tmp\ncurl -LJ https://github.com/fortran-lang/fpm/releases/download/current/fpm.F90 > _tmp/fpm.F90\ngfortran -J _tmp _tmp/fpm.F90 -o _tmp/fpm\n_tmp/fpm install --flag \"-g -fbacktrace -O3\"\nrm -r _tmp\n```\n\nTo automatically bootstrap using this appoach run the install script\n\n```sh\n./install.sh\n``` -->\n\n## Environmental variables\n\nThe table below lists the environment variables that control `fpm`'s choice of compilers, \ncompiler flags, archiver locations, and link flags, each of which can be overridden by \npassing `fpm` flags also shown in the table.\n\n| Environment Variable | Defines               | Overridden by    |\n| :------------------- | :-------------------- | :--------------- |\n| `FPM_FC`             | Fortran compiler path | `--compiler`     |\n| `FPM_CC`             | C compiler path       | `--c-compiler`   |\n| `FPM_CXX`            | C++ compiler path     | `--cxx-compiler` |\n| `FPM_FFLAGS`         | Fortran compiler flags| `--flag`         |\n| `FPM_CFLAGS`         | C compiler flags      | `--c-flag`       |\n| `FPM_CXXFLAGS`       | C++ compiler flags    | `--cxx-flag`     |\n| `FPM_AR`             | Archiver path         | `--archiver`     |\n| `FPM_LDFLAGS`        | Link flags            | `--link-flag`    |\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "Fortran package manager",
    "version": "0.10.1",
    "project_urls": {
        "bug-tracker": "https://github.com/fortran-lang/fpm/issues",
        "homepage": "https://fpm.fortran-lang.org",
        "source-code": "https://github.com/fortran-lang/fpm"
    },
    "split_keywords": [
        "fpm",
        " fortran",
        " package manager"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ecf965cfd1ec9765f49d5d48aa7f5822db005b03ea073c429eae55bbc6603813",
                "md5": "bfe6fbe3ab8efda7f200184541cb4d70",
                "sha256": "34c9241baa66d0c1de581288368f5de358dc7525bd19347d6348071a31fad82f"
            },
            "downloads": -1,
            "filename": "fpm-0.10.1-py3-none-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bfe6fbe3ab8efda7f200184541cb4d70",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 2073990,
            "upload_time": "2024-03-24T14:22:01",
            "upload_time_iso_8601": "2024-03-24T14:22:01.451618Z",
            "url": "https://files.pythonhosted.org/packages/ec/f9/65cfd1ec9765f49d5d48aa7f5822db005b03ea073c429eae55bbc6603813/fpm-0.10.1-py3-none-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7141a4876bc96221c6859d224df5145f88474b0a5866501f621ce47507535fc2",
                "md5": "aa2012dccdee16f210f9816bcc92eb8e",
                "sha256": "b603819dc0a66f757df3fecdbfc1af9bff690499b731be611e14d22320ea508a"
            },
            "downloads": -1,
            "filename": "fpm-0.10.1-py3-none-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "aa2012dccdee16f210f9816bcc92eb8e",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 2322956,
            "upload_time": "2024-03-24T14:22:03",
            "upload_time_iso_8601": "2024-03-24T14:22:03.978367Z",
            "url": "https://files.pythonhosted.org/packages/71/41/a4876bc96221c6859d224df5145f88474b0a5866501f621ce47507535fc2/fpm-0.10.1-py3-none-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6eef5faa7b108df275767b3cc12747fec234eacaa33a58203686130b8ad0335f",
                "md5": "c98a77a7cea8f2155f7f655b07c4285a",
                "sha256": "bc558f7140d55b861a57269fdf347fed521a8fbfa3613ae57b591d72420e5b2a"
            },
            "downloads": -1,
            "filename": "fpm-0.10.1-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl",
            "has_sig": false,
            "md5_digest": "c98a77a7cea8f2155f7f655b07c4285a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 1798128,
            "upload_time": "2024-03-24T14:22:05",
            "upload_time_iso_8601": "2024-03-24T14:22:05.616844Z",
            "url": "https://files.pythonhosted.org/packages/6e/ef/5faa7b108df275767b3cc12747fec234eacaa33a58203686130b8ad0335f/fpm-0.10.1-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "85cc88872b10318a3b41e6a303469af6e0b40b49de79b36537ab4cf365e95083",
                "md5": "c57710a0ca44069ff3d17880a0b522c1",
                "sha256": "fab6ce71667c101672bf13b18e6b6a7eef39c9c8f724f8995ad751611d2cd7ac"
            },
            "downloads": -1,
            "filename": "fpm-0.10.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c57710a0ca44069ff3d17880a0b522c1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 1754315,
            "upload_time": "2024-03-24T14:22:07",
            "upload_time_iso_8601": "2024-03-24T14:22:07.069440Z",
            "url": "https://files.pythonhosted.org/packages/85/cc/88872b10318a3b41e6a303469af6e0b40b49de79b36537ab4cf365e95083/fpm-0.10.1-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4fe70fc08ebeccf081a405f3392ee6c48668d547718b0c5e052e4971ee99de82",
                "md5": "1922345276e6e58afdd56287b46bd53c",
                "sha256": "9cc526a25636c456b0ac741a43f8d62fe535d24893bc940c44f246ab5be07cd6"
            },
            "downloads": -1,
            "filename": "fpm-0.10.1-py3-none-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "1922345276e6e58afdd56287b46bd53c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 1590029,
            "upload_time": "2024-03-24T14:22:09",
            "upload_time_iso_8601": "2024-03-24T14:22:09.054743Z",
            "url": "https://files.pythonhosted.org/packages/4f/e7/0fc08ebeccf081a405f3392ee6c48668d547718b0c5e052e4971ee99de82/fpm-0.10.1-py3-none-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "807c18e26002dfc97c56dc2b18d8fc470b18fdbba91c51fc072aff14e41cf2a1",
                "md5": "537022539a0a1bda90c2f7e9c9861bb0",
                "sha256": "663fc87edf7fe9962aeef00adc4b5190a49a3ed75d5fc1c38609d90a3ca229ca"
            },
            "downloads": -1,
            "filename": "fpm-0.10.1-py3-none-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "537022539a0a1bda90c2f7e9c9861bb0",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 1467255,
            "upload_time": "2024-03-24T14:22:11",
            "upload_time_iso_8601": "2024-03-24T14:22:11.183930Z",
            "url": "https://files.pythonhosted.org/packages/80/7c/18e26002dfc97c56dc2b18d8fc470b18fdbba91c51fc072aff14e41cf2a1/fpm-0.10.1-py3-none-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b8b4c5578946caac0efff9d532bbfc85fad934004242dc43f54764e5e8e03a8d",
                "md5": "ceaf26b849b180664ebd1194f7b333f3",
                "sha256": "59900bb7055442f01788434a079b27f661a7ff10fede3930adb012f2e8e782aa"
            },
            "downloads": -1,
            "filename": "fpm-0.10.1-py3-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "ceaf26b849b180664ebd1194f7b333f3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 730795,
            "upload_time": "2024-03-24T14:22:13",
            "upload_time_iso_8601": "2024-03-24T14:22:13.011595Z",
            "url": "https://files.pythonhosted.org/packages/b8/b4/c5578946caac0efff9d532bbfc85fad934004242dc43f54764e5e8e03a8d/fpm-0.10.1-py3-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b273867675eebbcc726e9d11ffdd938cf05edfd4969c834629442647344f7af5",
                "md5": "a489dfa102d2180a810e565a62190a03",
                "sha256": "4fa5ad89e7fdaaa19dcc36fe75ee56948774d081dddf8719a762ba6c6a3b5d8f"
            },
            "downloads": -1,
            "filename": "fpm-0.10.1.tar.gz",
            "has_sig": false,
            "md5_digest": "a489dfa102d2180a810e565a62190a03",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 713947,
            "upload_time": "2024-03-24T14:22:15",
            "upload_time_iso_8601": "2024-03-24T14:22:15.502180Z",
            "url": "https://files.pythonhosted.org/packages/b2/73/867675eebbcc726e9d11ffdd938cf05edfd4969c834629442647344f7af5/fpm-0.10.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-24 14:22:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "fortran-lang",
    "github_project": "fpm",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "fpm"
}
        
Elapsed time: 0.21246s