├── .gitignore ├── pages ├── news.md ├── how-to │ ├── index.md │ ├── compute-pi-openmp.md │ └── selective-cleaning.md ├── tutorial │ ├── index.md │ ├── hello-fpm.md │ ├── plugins.md │ └── dependencies.md ├── spec │ ├── index.md │ ├── compile_commands.md │ └── metapackages.md ├── registry │ ├── index.md │ ├── settings.md │ ├── publish.md │ └── naming.md ├── _templates │ └── sbt-sidebar-footer.html ├── design │ ├── index.md │ └── logo.md ├── news │ ├── 2021 │ │ └── 11-21-fpm-version-0.5.0.md │ ├── 2022 │ │ ├── 10-26-fpm-version-0.7.0.md │ │ └── 06-19-fpm-version-0.6.0.md │ ├── 2023 │ │ ├── 04-11-fpm-version-0.8.1.md │ │ ├── 05-11-fpm-version-0.8.2.md │ │ ├── 06-02-fpm-version-0.9.0.md │ │ └── 04-07-fpm-version-0.8.0.md │ ├── 2024 │ │ └── 01-08-fpm-version-0.10.0.md │ └── 2025 │ │ ├── 05-18-fpm-verion-0.12.0.md │ │ └── 03-10-fpm-version-0.11.0.md ├── _static │ ├── fpm-logo-mono.svg │ ├── fpm-logo-color.svg │ ├── fpm-logo-light.svg │ ├── fpm-logo-outline.svg │ ├── css │ │ └── custom.css │ └── fortran-logo.svg ├── conf.py ├── index.md └── install │ └── index.md ├── requirements.txt ├── src ├── how-to │ └── compute-pi-openmp │ │ ├── fpm.toml │ │ └── app │ │ └── main.f90 └── tutorial │ └── dependencies │ ├── fpm.toml │ ├── app │ └── main.f90 │ ├── src │ └── demo.f90 │ └── test │ └── main.f90 ├── environment.yaml ├── .github ├── dependabot.yml └── workflows │ ├── delete_preview.yml │ ├── sphinx.yml │ ├── preview.yml │ └── build.yaml ├── LICENSE ├── Makefile ├── locale ├── ja │ └── LC_MESSAGES │ │ ├── sphinx.po │ │ └── news.po ├── fr │ └── LC_MESSAGES │ │ └── sphinx.po ├── pt │ └── LC_MESSAGES │ │ └── sphinx.po ├── ru │ └── LC_MESSAGES │ │ └── sphinx.po ├── de │ └── LC_MESSAGES │ │ └── sphinx.po ├── cs │ └── LC_MESSAGES │ │ └── sphinx.po ├── zh_CN │ └── LC_MESSAGES │ │ └── sphinx.po ├── nl │ └── LC_MESSAGES │ │ ├── sphinx.po │ │ └── news.po └── es │ └── LC_MESSAGES │ └── sphinx.po └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | /_* 2 | *.mo 3 | /venv/ 4 | -------------------------------------------------------------------------------- /pages/news.md: -------------------------------------------------------------------------------- 1 | (news)= 2 | 3 | # News 4 | 5 | % will be replaced by ablog 6 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | sphinx 2 | sphinx-intl 3 | sphinx-design 4 | sphinx-jinja 5 | sphinx-book-theme 6 | sphinx-copybutton 7 | ablog 8 | myst-parser 9 | -------------------------------------------------------------------------------- /src/how-to/compute-pi-openmp/fpm.toml: -------------------------------------------------------------------------------- 1 | name = "compute-pi-openmp" 2 | version = "0.1.0" 3 | 4 | [dependencies] 5 | openmp = "*" 6 | 7 | [[executable]] 8 | name = "compute-pi-openmp" 9 | -------------------------------------------------------------------------------- /pages/how-to/index.md: -------------------------------------------------------------------------------- 1 | (how-to)= 2 | 3 | # How-To guides 4 | 5 | This section contains practical guides and recipes for solving specific problems with fpm. 6 | 7 | :::{toctree} 8 | compute-pi-openmp 9 | selective-cleaning 10 | ::: 11 | -------------------------------------------------------------------------------- /pages/tutorial/index.md: -------------------------------------------------------------------------------- 1 | (tutorial)= 2 | 3 | # Tutorials 4 | 5 | :::{note} 6 | This section contains courses for learning about the usage and fpm at specific examples. 7 | ::: 8 | 9 | 10 | :::{toctree} 11 | hello-fpm 12 | dependencies 13 | plugins 14 | ::: 15 | -------------------------------------------------------------------------------- /environment.yaml: -------------------------------------------------------------------------------- 1 | name: sphinx 2 | channels: 3 | - conda-forge 4 | dependencies: 5 | - python 6 | - sphinx 7 | - sphinx-intl 8 | - sphinx-copybutton 9 | - sphinx-design 10 | - sphinx-jinja 2.* 11 | - sphinx-book-theme 0.2 12 | - ablog 13 | - myst-parser 14 | -------------------------------------------------------------------------------- /src/tutorial/dependencies/fpm.toml: -------------------------------------------------------------------------------- 1 | name = "demo" 2 | version = "0.1.0" 3 | 4 | [dependencies] 5 | stdlib = "*" 6 | 7 | [dev-dependencies] 8 | test-drive.git = "https://github.com/fortran-lang/test-drive" 9 | test-drive.tag = "v0.4.0" 10 | 11 | [[executable]] 12 | name = "demo" 13 | [executable.dependencies] 14 | M_CLI2.git = "https://github.com/urbanjost/M_CLI2" 15 | -------------------------------------------------------------------------------- /pages/spec/index.md: -------------------------------------------------------------------------------- 1 | (spec)= 2 | 3 | # Specifications and Reference 4 | 5 | :::{note} 6 | This section contains the specifications the components of the Fortran Package Manager. 7 | ::: 8 | 9 | :::{tip} 10 | The generated API documentation of the fpm internals can be found [here](https://fortran-lang.github.io/fpm). 11 | ::: 12 | 13 | :::{toctree} 14 | manifest 15 | metapackages 16 | compile_commands 17 | API documentation 18 | ::: 19 | 20 | 21 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "monthly" 7 | groups: 8 | gh-actions: 9 | patterns: 10 | - "*" 11 | 12 | 13 | # Check for updates Python updates via pip in case we pin a dependency 14 | - package-ecosystem: "pip" 15 | directory: "/" 16 | schedule: 17 | interval: "monthly" 18 | groups: 19 | dev-dependencies: 20 | patterns: 21 | - "*" 22 | -------------------------------------------------------------------------------- /pages/registry/index.md: -------------------------------------------------------------------------------- 1 | (registry)= 2 | 3 | # Registry 4 | 5 | ::::{note} 6 | The online registry as part of fpm 7 | is currently under active development and the online documentation might not be 8 | up-to-date. 9 | :::: 10 | 11 | Registries are an alternative way for fpm to search and fetch dependencies. 12 | The default registry is the [official registry](https://registry-frontend.vercel.app/). 13 | You can also set up your own registry or use a local registry. 14 | 15 | The following sections describe how to configure fpm to search for packages in a registry 16 | 17 | :::{toctree} 18 | settings 19 | publish 20 | naming 21 | ::: 22 | -------------------------------------------------------------------------------- /pages/_templates/sbt-sidebar-footer.html: -------------------------------------------------------------------------------- 1 |

2 |

18 |

19 | -------------------------------------------------------------------------------- /pages/design/index.md: -------------------------------------------------------------------------------- 1 | (design)= 2 | 3 | # Design documents 4 | 5 | :::{note} 6 | This section contains the resources around the design of the Fortran Package Manager (fpm). 7 | ::: 8 | 9 | Fortran Package Manager (fpm) is a package manager and build system for Fortran. 10 | Its key goal is to improve the user experience of Fortran programmers. 11 | 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. 12 | Fpm's user interface is modeled after [Rust's Cargo](https://doc.rust-lang.org/cargo/). 13 | Its long term vision is to nurture and grow the ecosystem of modern Fortran applications and libraries. 14 | 15 | :::{toctree} 16 | logo 17 | ::: 18 | -------------------------------------------------------------------------------- /src/tutorial/dependencies/app/main.f90: -------------------------------------------------------------------------------- 1 | program main 2 | use, intrinsic :: iso_fortran_env, only : output_unit 3 | use demo, only : substitute 4 | use m_cli2, only : set_args, unnamed, sget 5 | implicit none 6 | character(len=:), allocatable :: input_file, output_file, pattern, replacement 7 | integer :: input, output, i 8 | 9 | call set_args("--output:o ''") 10 | 11 | output_file = trim(sget("output")) 12 | if (len(output_file) > 0) then 13 | open(file=output_file, newunit=output) 14 | else 15 | output = output_unit 16 | end if 17 | 18 | pattern = trim(unnamed(1)) 19 | replacement = trim(unnamed(2)) 20 | 21 | do i = 3, size(unnamed) 22 | input_file = trim(unnamed(i)) 23 | open(file=input_file, newunit=input, status='old') 24 | call substitute(input, output_unit, trim(pattern), trim(replacement)) 25 | close(input) 26 | end do 27 | 28 | if (output /= output_unit) close(output) 29 | end program main 30 | -------------------------------------------------------------------------------- /src/tutorial/dependencies/src/demo.f90: -------------------------------------------------------------------------------- 1 | module demo 2 | use stdlib_io, only : get_line 3 | use stdlib_strings, only : replace_all 4 | implicit none 5 | private 6 | 7 | public :: substitute 8 | 9 | contains 10 | 11 | !> Read all lines from input, replace pattern and print it to output 12 | subroutine substitute(input, output, pattern, replacement) 13 | !> Formatted input unit 14 | integer, intent(in) :: input 15 | !> Formatted output unit 16 | integer, intent(in) :: output 17 | !> Pattern to replace in input 18 | character(len=*), intent(in) :: pattern 19 | !> Replacement for pattern in output 20 | character(len=*), intent(in) :: replacement 21 | 22 | character(len=:), allocatable :: line 23 | integer :: stat 24 | 25 | do 26 | call get_line(input, line, stat) 27 | if (stat /= 0) exit 28 | write(output, '(a)') replace_all(line, pattern, replacement) 29 | end do 30 | end subroutine substitute 31 | 32 | end module demo 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 fpm-docs contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | 3 | # You can set these variables from the command line. 4 | LANGUAGES ?= cs de zh_CN es fr nl ja pt ru 5 | SPHINXOPTS ?= 6 | SPHINXBUILD ?= sphinx-build 7 | SPHINXINTL ?= sphinx-intl 8 | SOURCEDIR ?= pages 9 | BUILDDIR ?= _build 10 | LOCALEDIR ?= locale 11 | BASE_LANG ?= en 12 | 13 | # Put it first so that "make" without argument is like "make help". 14 | help: 15 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 16 | 17 | .PHONY: help $(MAKEFILES) 18 | 19 | html: $(addprefix html/,$(LANGUAGES)) $(addprefix html/,$(BASE_LANG)) 20 | @echo "Pages available at file://$$PWD/$(BUILDDIR)/html/index.html" 21 | 22 | $(addprefix html/,$(LANGUAGES)): $(MAKEFILES) 23 | @$(SPHINXBUILD) "$(SOURCEDIR)" "$(BUILDDIR)/$@" $(SPHINXOPTS) -Dlanguage=$(word 2,$(subst /, ,$@)) 24 | 25 | $(addprefix html/,$(BASE_LANG)): $(MAKEFILES) 26 | @$(SPHINXBUILD) "$(SOURCEDIR)" "$(BUILDDIR)/html/" $(SPHINXOPTS) -Dlanguage=$(word 2,$(subst /, ,$@)) 27 | 28 | gettext: $(MAKEFILES) 29 | @$(SPHINXBUILD) -b $@ "$(SOURCEDIR)" "$(BUILDDIR)/$@" $(SPHINXOPTS) 30 | @$(SPHINXINTL) update -w 80 -p "$(BUILDDIR)/$@" -d locale $(addprefix -l,$(filter-out en,$(LANGUAGES))) 31 | -------------------------------------------------------------------------------- /.github/workflows/delete_preview.yml: -------------------------------------------------------------------------------- 1 | # Github action to cleanup a PR preview 2 | # Runs when a pull request is merged or comment contains '#delete_preview' 3 | # 4 | 5 | name: PR Preview Cleanup 6 | 7 | on: 8 | issue_comment: 9 | types: [created] 10 | 11 | pull_request: 12 | types: 13 | - closed 14 | 15 | jobs: 16 | build: 17 | runs-on: ubuntu-latest 18 | if: github.event.pull_request.merged == true || contains(github.event.comment.body, '#delete-preview') 19 | 20 | steps: 21 | # Checkout existing gh-pages branch into PUBLISH_DIR 22 | - name: Checkout gh-pages 23 | uses: actions/checkout@v5 24 | with: 25 | ref: gh-pages 26 | 27 | # Cleanup preview files 28 | - name: PR Cleanup 29 | run: rm -rf pr/${{github.event.issue.number}} 30 | 31 | - name: Commit and push to gh-pages 32 | uses: EndBug/add-and-commit@v9.1.4 33 | with: 34 | message: "Sphinx build cleanup pr/${{github.event.issue.number}}" 35 | env: 36 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 37 | 38 | # Comment on pull request 39 | - name: Comment on pull request 40 | uses: peter-evans/create-or-update-comment@v4 41 | with: 42 | issue-number: ${{github.event.issue.number}} 43 | body: The preview build for this PR has now been deleted. 44 | -------------------------------------------------------------------------------- /src/how-to/compute-pi-openmp/app/main.f90: -------------------------------------------------------------------------------- 1 | program compute_pi_openmp 2 | use, intrinsic :: iso_fortran_env, only: dp => real64, i8 => int64, real128 3 | implicit none 4 | integer(kind=i8) :: i, n_iterations 5 | real(kind=dp) :: delta, x, pi 6 | real(kind=dp) :: start, end 7 | 8 | pi = 0.0_dp 9 | n_iterations = get_iterations(10000_i8) 10 | delta = 1.0_dp / n_iterations 11 | x = 0.0_dp 12 | 13 | call cpu_time(start) 14 | !$omp parallel do default(none) private(x) shared(delta, n_iterations) reduction(+:pi) 15 | do i = 1, n_iterations 16 | x = i * delta 17 | pi = pi + sqrt(1.0_dp - x**2) 18 | end do 19 | !$omp end parallel do 20 | call cpu_time(end) 21 | 22 | pi = 4.0_dp * pi / n_iterations 23 | print "(A, I16, A, F25.15)", "Iterations: ", n_iterations, ", PI: ", pi 24 | print "(A, F8.3, A, ES8.1)", "Took: ", end - start, "s, with absolute error: ", acos(-1.0_real128) - pi 25 | 26 | contains 27 | 28 | integer(i8) function get_iterations(default_iterations) 29 | integer(kind=i8), intent(in) :: default_iterations 30 | character(len=100) :: buffer, msg 31 | integer :: stat 32 | 33 | get_iterations = default_iterations 34 | if (command_argument_count() >= 1) then 35 | call get_command_argument(1, buffer) 36 | read (buffer, fmt=*, iostat=stat, iomsg=msg) get_iterations 37 | if (stat /= 0) stop msg 38 | end if 39 | end function get_iterations 40 | 41 | end program compute_pi_openmp 42 | -------------------------------------------------------------------------------- /pages/news/2023/04-11-fpm-version-0.8.1.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Sebastian Ehlert, Federico Perini, Brad Richardson, John Urban 3 | date: 2023-04-11 4 | category: release 5 | ... 6 | 7 | # Fpm version 0.8.1 released 8 | 9 | This release introduces a hotfix for the automated dependency tree feature introduced in [v0.8.0](https://github.com/fortran-lang/fpm/releases/tag/v0.8.0). 10 | Fpm now restored backward-compatible dependency priority, which ensures that, whenever different versions of the same dependency are found down the dependency tree, the first and foremost is used. 11 | Unnecessary dependency updates are also shed from the build process. 12 | 13 | Find the full release notes [here](https://github.com/fortran-lang/fpm/releases/tag/v0.8.1). 14 | 15 | Many thanks to 16 | Sebastian Ehlert ([@awvwgk](https://github.com/awvwgk)), 17 | Brad Richardson ([@everythingfunctional](https://github.com/everythingfunctional)), 18 | John Urban ([@urbanjost](https://github.com/urbanjost)), 19 | for testing the new release and allowing this hotfix to be deployed quickly. 20 | 21 | ## Changelog 22 | 23 | * Only update dependencies between cached build and manifest (fix) by @perazz in [fpm#871](https://github.com/fortran-lang/fpm/pull/871) 24 | * Print dependency update messages on verbosity>0 (fix) by @perazz in [fpm#873](https://github.com/fortran-lang/fpm/pull/873) 25 | * Automated dependency update: restore deterministic behavior by @perazz in [fpm#875](https://github.com/fortran-lang/fpm/pull/875) 26 | 27 | -------------------------------------------------------------------------------- /pages/design/logo.md: -------------------------------------------------------------------------------- 1 | # The fpm logo 2 | 3 | :::{note} 4 | The fpm logo was developed by the Fortran community in [fpm#380](https://github.com/fortran-lang/fpm/discussions/380) and contributed by [@1984logo](https://github.com/1984logo). 5 | ::: 6 | 7 | The logo for the Fortran package manager (fpm) represents a gift box with a bow forming the letter F. 8 | For the monochromatic version the color of the Fortran logo {bdg-primary-line}`#734f96` is used. 9 | The color version additionally uses lighter and darker variants of the base color. 10 | While both variants are supposed to be visible on dark background, the logo can be produced in light color or as outline to be better visible when used on dark or black backgrounds. 11 | 12 | :::::{grid} 2 13 | :gutter: 3 14 | 15 | ::::{grid-item-card} 16 | :class-card: sd-rounded-0 17 | :text-align: center 18 | :shadow: none 19 | ```{image} ../_static/fpm-logo-color.svg 20 | :scale: 30% 21 | ``` 22 | :::: 23 | 24 | ::::{grid-item-card} 25 | :class-card: sd-rounded-0 26 | :text-align: center 27 | :shadow: none 28 | ```{image} ../_static/fpm-logo-mono.svg 29 | :scale: 30% 30 | ``` 31 | :::: 32 | 33 | ::::{grid-item-card} 34 | :class-card: sd-bg-info sd-rounded-0 35 | :text-align: center 36 | :shadow: none 37 | ```{image} ../_static/fpm-logo-light.svg 38 | :scale: 30% 39 | ``` 40 | :::: 41 | 42 | ::::{grid-item-card} 43 | :class-card: sd-bg-info sd-rounded-0 44 | :text-align: center 45 | :shadow: none 46 | ```{image} ../_static/fpm-logo-outline.svg 47 | :scale: 30% 48 | ``` 49 | :::: 50 | ::::: 51 | -------------------------------------------------------------------------------- /pages/news/2023/05-11-fpm-version-0.8.2.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Minh Dao, Federico Perini 3 | date: 2023-05-11 4 | category: release 5 | ... 6 | 7 | # Fpm version 0.8.2 released 8 | 9 | Registry preview release. 10 | 11 | This release introduces fpm support for uploading packages to the fpm-registry server directly from the command-line interface, via 12 | ```fortran 13 | fpm upload --token 14 | ``` 15 | fpm will now interact with a web interface that will help to manage the namespaces & packages. 16 | The release includes furhter bugfixes and extensions for C/C++ support as detailed in the changelog. 17 | 18 | Thanks to [@minhqdao](https://github.com/minhqdao), [@perazz](https://github.com/perazz) and everyone who contributed to this release! This release was supported by the Sovereign Tech Fund ([STF](https://sovereigntechfund.de/de/)). 19 | 20 | ## Changelog 21 | 22 | * Not store temporary data in .local (#900) by @minhqdao 23 | * Add flags to link main programs with C/C++ main (#896) by @perazz 24 | * replace unix with is_unix to avoid intel fpp collisions (#894) by @perazz 25 | * Fix bootstrapping on Windows (#892) by @minhqdao 26 | * Improve error message for [build] structure errors (#890) by @perazz 27 | * Fix multiple installs (#888) by @perazz 28 | * Fix --show-package-version (#887) by @minhqdao 29 | * Update Windows CI image compiler to MinGW gfortran 10.4.0 (#881) by @perazz 30 | * Implement fpm publish (#876) by @minhqdao 31 | * Automated dependency update: restore deterministic behavior (#875) by @perazz 32 | 33 | **Full Changelog**: https://github.com/fortran-lang/fpm/compare/v0.8.1...v0.8.2 34 | 35 | -------------------------------------------------------------------------------- /src/tutorial/dependencies/test/main.f90: -------------------------------------------------------------------------------- 1 | module test_demo 2 | use demo, only : substitute 3 | use stdlib_io, only : get_line 4 | use testdrive, only : error_type, unittest_type, new_unittest, check 5 | implicit none 6 | private 7 | 8 | public :: collect_demo 9 | 10 | contains 11 | 12 | !> Collect all exported unit tests 13 | subroutine collect_demo(testsuite) 14 | !> Collection of tests 15 | type(unittest_type), allocatable, intent(out) :: testsuite(:) 16 | 17 | testsuite = [new_unittest("substitute", test_substitute)] 18 | end subroutine collect_demo 19 | 20 | !> Check substitution of a single line 21 | subroutine test_substitute(error) 22 | !> Error handling 23 | type(error_type), allocatable, intent(out) :: error 24 | integer :: input, output, stat 25 | character(len=:), allocatable :: line 26 | open(newunit=input, status="scratch") 27 | write(input, '(a)') "This is a valid test" 28 | rewind(input) 29 | 30 | open(newunit=output, status="scratch") 31 | call substitute(input, output, "test", "example") 32 | close(input) 33 | 34 | rewind(output) 35 | call get_line(output, line, stat) 36 | close(output) 37 | 38 | call check(error, line, "This is a valid example") 39 | end subroutine test_substitute 40 | end module test_demo 41 | 42 | program tester 43 | use, intrinsic :: iso_fortran_env, only : error_unit 44 | use testdrive, only : run_testsuite 45 | use test_demo, only : collect_demo 46 | implicit none 47 | integer :: stat 48 | 49 | stat = 0 50 | call run_testsuite(collect_demo, error_unit, stat) 51 | 52 | if (stat > 0) then 53 | write(error_unit, '(i0, 1x, a)') stat, "test(s) failed!" 54 | error stop 55 | end if 56 | 57 | end program tester 58 | -------------------------------------------------------------------------------- /.github/workflows/sphinx.yml: -------------------------------------------------------------------------------- 1 | name: pages 2 | 3 | on: 4 | pull_request: 5 | push: 6 | schedule: 7 | - cron: "0 3 * * *" 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | defaults: 14 | run: 15 | shell: bash -l {0} 16 | 17 | steps: 18 | - id: deploy-on-push 19 | run: 20 | echo "::set-output name=result::${{ env.DEPLOY_BRANCH }}" 21 | env: 22 | DEPLOY_BRANCH: ${{ secrets.DEPLOY_BRANCH && contains(github.ref, secrets.DEPLOY_BRANCH) && 1 || 0 }} 23 | 24 | - name: Checkout repository 25 | uses: actions/checkout@v5 26 | 27 | - name: Install dependencies 28 | uses: mamba-org/setup-micromamba@v2 29 | with: 30 | environment-file: environment.yaml 31 | environment-name: docs 32 | create-args: >- 33 | python=3.9 34 | sphinx 35 | sphinxcontrib-serializinghtml 36 | setuptools 37 | 38 | - name: Activate environment and build pages 39 | run: | 40 | micromamba activate docs 41 | python -c "import imghdr" 42 | make gettext html 43 | 44 | - name: Create nojekyll file 45 | run: | 46 | touch _build/.nojekyll 47 | 48 | - name: Create CNAME file 49 | run: | 50 | if [ ! -z ${CNAME// } ]; then 51 | echo ${CNAME} > _build/CNAME 52 | fi 53 | env: 54 | CNAME: ${{ secrets.CNAME }} 55 | 56 | - uses: JamesIves/github-pages-deploy-action@v4.7.3 57 | if: ${{ github.event_name == 'push' && steps.deploy-on-push.outputs.result != 0 }} 58 | with: 59 | branch: gh-pages 60 | folder: _build/html 61 | single-commit: true 62 | git-config-email: 53436240+fortran-lang@users.noreply.github.com 63 | git-config-name: Fortran 64 | -------------------------------------------------------------------------------- /pages/how-to/compute-pi-openmp.md: -------------------------------------------------------------------------------- 1 | # Computing PI with OpenMP 2 | 3 | This is a simple example of how to use OpenMP with fpm. 4 | It is an adapted version of the OpenMP example that can be found 5 | [here](https://github.com/gjbex/Fortran-MOOC/blob/master/source_code/computing_pi/compute_pi_omp.f90) under a 6 | [CC-BY-4.0](https://github.com/gjbex/Fortran-MOOC/blob/master/LICENSE) license. 7 | 8 | The code approximates the value of PI by performing parallelized numerical 9 | integration over a quarter of the unit circle. 10 | The code is structured as follows: 11 | 12 | ```{literalinclude} ../../src/how-to/compute-pi-openmp/app/main.f90 13 | :language: fortran 14 | :caption: app/main.f90 15 | ``` 16 | 17 | ## Using OpenMP as a dependency 18 | 19 | To use OpenMP in your project, you need to add the `openmp` dependency to your `fpm.toml` file: 20 | 21 | ```{literalinclude} ../../src/how-to/compute-pi-openmp/fpm.toml 22 | :language: toml 23 | :caption: fpm.toml 24 | :emphasize-lines: 4-5 25 | ``` 26 | 27 | OpenMP is a _built-in dependency_ (i.e. metapackage), which means the above 28 | syntax needs to be used. To find out more about metapackages, see [](../spec/metapackages). 29 | 30 | ## Building and running the code 31 | 32 | To build and run the code, one can use the following commands: 33 | 34 | ```{code-block} text 35 | ❯ fpm run 36 | Project is up to date 37 | Iterations: 10000, PI: 3.141391477611324 38 | Took: 0.092s, with absolute error: 2.0E-04 39 | ``` 40 | 41 | And increasing the number of iterations for the approximation while 42 | simultaneously enabling compiler optimizations with `--profile-release` 43 | 44 | ```{code-block} text 45 | ❯ fpm run --profile-release -- 1000000000 46 | main.f90 done. 47 | compute-pi-openmp done. 48 | [100%] Project compiled successfully. 49 | Iterations: 1000000000, PI: 3.141592651589789 50 | Took: 3.511s, with absolute error: 2.0E-09 51 | ``` 52 | -------------------------------------------------------------------------------- /pages/spec/compile_commands.md: -------------------------------------------------------------------------------- 1 | # `compile_commands.json` 2 | 3 | `fpm` automatically generates a `compile_commands.json` file during each successful build or dry run. The file is placed in the `build/` directory and provides detailed information about how each source file is compiled. 4 | 5 | ```txt 6 | build/compile_commands.json 7 | ``` 8 | 9 | It follows the [Clang Compilation Database format](https://clang.llvm.org/docs/JSONCompilationDatabase.html), widely used by editors, IDEs, and development tools for navigation, static analysis, and diagnostics. 10 | 11 | ## Purpose 12 | 13 | The `compile_commands.json` file enables integration with tools such as: 14 | 15 | - Language Server Protocol (LSP) servers (e.g., `fortls`) 16 | - Code editors (e.g., Visual Studio Code) 17 | - Static analyzers 18 | - Linters and formatters 19 | 20 | These tools use it to retrieve compilation flags, include directories, and output paths automatically. 21 | 22 | ## How It Works 23 | 24 | - Generated during `fpm build` or `fpm build --list` 25 | - Created in `build/compile_commands.json` 26 | - No manual configuration required 27 | - Regenerated after each build or dry run 28 | 29 | The `--list` option performs a dry run: it downloads dependencies and generates `compile_commands.json` without compiling any source files. 30 | 31 | Each command is recorded as a list of parsed arguments, using: 32 | - `shlex` on Unix and macOS 33 | - `mslex` on Windows 34 | 35 | This ensures correct handling of spaces, quotes, and escape characters across platforms. 36 | 37 | ## Example 38 | 39 | A minimal entry in `compile_commands.json`: 40 | 41 | ```json 42 | [ 43 | { 44 | "directory": "/path/to/my/fpm/package", 45 | "arguments": [ 46 | "gfortran", 47 | "-c", 48 | "src/module.f90", 49 | "-Iinclude", 50 | "-Jbuild", 51 | "-o", 52 | "build/module.o" 53 | ], 54 | "file": "src/module.f90" 55 | } 56 | ] 57 | ``` 58 | 59 | ## Working with the File 60 | 61 | As a standard JSON file, it can be inspected using any JSON tool. For example, to pretty-print it: 62 | 63 | ```bash 64 | cat build/compile_commands.json | jq . 65 | ``` 66 | 67 | ## Limitations 68 | 69 | - Only created after a successful build or dry run 70 | - Currently not configurable via `fpm.toml` 71 | - Overwrites any previous version during each build 72 | - Feature available since `v0.12.0`. 73 | -------------------------------------------------------------------------------- /.github/workflows/preview.yml: -------------------------------------------------------------------------------- 1 | # Github action to build preview sphinx site and commit to gh-pages branch 2 | # Built site is pushed to 'gh-pages' branch 3 | # 4 | 5 | name: Sphinx Preview Build 6 | 7 | on: 8 | issue_comment: 9 | types: [created] 10 | 11 | jobs: 12 | build: 13 | runs-on: ubuntu-latest 14 | if: github.event.issue.pull_request && contains(github.event.comment.body, '#preview') 15 | 16 | steps: 17 | - name: Checkout pr/${{github.event.issue.number}} 18 | uses: actions/checkout@v5 19 | 20 | - name: Fetch pr/${{github.event.issue.number}} 21 | run: | 22 | git fetch origin pull/${{github.event.issue.number}}/head:pr-${{github.event.issue.number}} 23 | git checkout pr-${{github.event.issue.number}} 24 | 25 | - name: Install dependencies 26 | uses: mamba-org/setup-micromamba@v2 27 | with: 28 | environment-file: environment.yaml 29 | environment-name: docs 30 | create-args: >- 31 | python=3.9 32 | sphinx 33 | sphinxcontrib-serializinghtml 34 | setuptools 35 | 36 | - name: Safe workflow for build preview 37 | run: if [ -d "_build" ]; then rm -rf _build; fi 38 | 39 | - name: Build page and Translations 40 | if: contains(github.event.comment.body, '#preview') 41 | run: | 42 | micromamba activate docs 43 | python -c "import imghdr" # Check if imghdr is available 44 | make gettext html 45 | 46 | - name: Create nojekyll file 47 | run: touch _build/.nojekyll 48 | 49 | - name: Deploy documentation sphinx 50 | uses: JamesIves/github-pages-deploy-action@v4.7.3 51 | with: 52 | token: ${{ secrets.GITHUB_TOKEN }} 53 | branch: gh-pages 54 | target-folder: pr/${{github.event.issue.number}} 55 | folder: _build/html 56 | clean: false 57 | git-config-email: 53436240+fortran-lang@users.noreply.github.com 58 | git-config-name: Fortran 59 | 60 | - name: Comment on pull request 61 | uses: peter-evans/create-or-update-comment@v4 62 | with: 63 | issue-number: ${{github.event.issue.number}} 64 | body: "This PR has been built with Sphinx and can be previewed at: https://fortran-lang.github.io/fpm/pr/${{github.event.issue.number}}" 65 | 66 | -------------------------------------------------------------------------------- /pages/news/2023/06-02-fpm-version-0.9.0.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Federico Perini, Minh Dao, Giannis Nikiteas 3 | date: 2023-06-02 4 | category: release 5 | ... 6 | 7 | # Fpm version 0.9.0 released 8 | 9 | Registry and Metapackages. 10 | 11 | This release introduces fpm support for system-dependent packages ("metapackages"). 12 | Most applications require dependencies that are not self-contained Fortran packages; but rather involve libraries with system-dependent installation steps, often provided with multiple language interfaces. 13 | To remove friction to the fpm user, as of version 0.9.0, fpm supports the automated discovery, and binding, of a subset of such libraries to packages via the `metapackage` feature. 14 | 15 | Metapackages can be enabled in the manifest in the `[dependencies]` section, just by recalling their name. Here is how one enables OpenMP in a package: 16 | 17 | ```toml 18 | name = "my_openmp_package" 19 | dependencies.openmp = "*" 20 | ``` 21 | 22 | Note: the `any` (`*`) version wildcard is currently supported, not a boolean flag. Version requirements are not yet supported and will be introduced in a future release. Several pre-built examples were prepared and can be found in fpm's `example_packages/metapackage_*` folders under the [fpm installation directory](https://github.com/fortran-lang/fpm/tree/main/example_packages). More help can be found on the [fpm website](https://fpm.fortran-lang.org/en/spec/metapackages.html). 23 | 24 | This release also includes fixes and improvements to the centralized registry functionality, and to enable fpm to be built with the Intel oneAPI compilers. 25 | 26 | Thanks to @gnikit @arteevraina @henilp105, @minhqdao, @perazz and everyone who contributed to this release! This release was supported by the Sovereign Tech Fund ([STF](https://sovereigntechfund.de/de/)). 27 | 28 | ## Changelog 29 | 30 | * fpm release v0.9.0 by @perazz (#922) 31 | * Add more infos to `fpm help publish` by @minhqdao (#915) 32 | * Fix return type in `c_realpath` by @minhqdao (#914) 33 | * `install.sh`: fallback to 0.8.0 if in trouble fetching github by @perazz (#913) 34 | * Not get `tmp` folder from `env` by @minhqdao (#912) 35 | * build: changed file ext to enable preprocessor by @gnikit (#911) 36 | * Fix failing tests with Intel compiler by @perazz (#901) 37 | * Metapackages by @perazz (#859) 38 | 39 | Full Changelog: https://github.com/fortran-lang/fpm/compare/v0.8.2...v0.9.0 40 | 41 | Discourse thread: https://fortran-lang.discourse.group/t/fpm-0-9-0-released/5900 42 | 43 | -------------------------------------------------------------------------------- /pages/registry/settings.md: -------------------------------------------------------------------------------- 1 | (registry-settings)= 2 | # Settings 3 | 4 | The registry settings can be used to customize the registry for all projects. If no registry is specified, the packages will be fetched via HTTP from the [official registry](https://registry-frontend.vercel.app/). The registry settings are specified in the 5 | [global configuration file](#global-configuration-file). 6 | 7 | ## Global configuration file 8 | 9 | The global configuration file can be used to set default options across all fpm projects on the system. It is, by default, located at `~/.local/share/fpm/config.toml` on Unix-like machines and `%APPDATA%\local\fpm\config.toml` on Windows and must be parsable to a TOML structure. It can be used to configure [registry settings](#settings). 10 | 11 | ## Registry cache 12 | 13 | The registry cache contains the source code of previously downloaded packages. It will first be searched for existing packages that satify the requirements of the requesting project before the package is downloaded. The default cache location is `~/.local/share/fpm/dependencies` on Unix-like machines and `%APPDATA%\local\fpm\dependencies` on 14 | Windows. The location of the cache can be changed by setting the `cache_path` in the global config file: 15 | 16 | ```toml 17 | [registry] 18 | cache_path = "/path/to/cache" 19 | ``` 20 | 21 | ## Custom registry 22 | 23 | If you want to use a custom registry, you can specify it in the global config file: 24 | 25 | ```toml 26 | [registry] 27 | url = "https://my-registry.com" 28 | ``` 29 | 30 | Your registry must implement the same [API](https://registry-apis.vercel.app/apidocs/) as the official registry. 31 | 32 | ## Local registry 33 | 34 | Use the following configuration if you want to set up a local registry: 35 | 36 | ```toml 37 | [registry] 38 | path = "/path/to/registry" 39 | ``` 40 | 41 | fpm will search this directory for packages and will not download packages from the internet or fetch packages from the cache. 42 | 43 | The directory must be structured the way fpm expects it to be. A package must be located in a directory named after the namespace name, followed by the name of the package and the package version. For example, the package `my-package` with version `0.1.0`, which is part of `my-namespace`, must be located in the directory `/my-namespace/my-package/0.1.0` on Unix-like systems. The package directory must contain an `fpm.toml` file that has the package metadata. The manifest must therefore be located at `/my-namespace/my-package/0.1.0/fpm.toml`. 44 | 45 | If a specific version is requested, fpm will look for that version in the local registry. If you do not specify a version, fpm will look for the version with the highest precedence. 46 | 47 | For instructions on how to set up **project dependencies** in `fpm.toml` when using a registry see 48 | -------------------------------------------------------------------------------- /pages/tutorial/hello-fpm.md: -------------------------------------------------------------------------------- 1 | # First steps with fpm 2 | 3 | This tutorial covers the basic usage of the Fortran Package Manager (fpm) command line. 4 | It will cover the generation of a new project and the possibility to compile a project into an executable as well as the possibility to run the resulting program. 5 | 6 | To start a new project with fpm use the *fpm new* command 7 | 8 | ```{code-block} none 9 | ❯ fpm new first_steps 10 | ``` 11 | 12 | By default fpm creates a git repository with a dummy project in the fpm standard layout 13 | 14 | ```{code-block} none 15 | ❯ cd first_steps 16 | ❯ tree . 17 | . 18 | ├── README.md 19 | ├── app 20 | │   └── main.f90 21 | ├── fpm.toml 22 | ├── src 23 | │   └── first_steps.f90 24 | └── test 25 | └── check.f90 26 | 27 | 3 directories, 5 files 28 | ``` 29 | 30 | This is everything we need to start our new project. 31 | First, we inspect the package manifest, ``fpm.toml``, which is populated with stub entries for us: 32 | 33 | ```{code-block} toml 34 | :caption: fpm.toml 35 | name = "first_steps" 36 | version = "0.1.0" 37 | license = "license" 38 | author = "Jane Doe" 39 | maintainer = "jane.doe@example.com" 40 | copyright = "Copyright 2021, Jane Doe" 41 | [build] 42 | auto-executables = true 43 | auto-tests = true 44 | auto-examples = true 45 | [install] 46 | library = false 47 | ``` 48 | 49 | The package manifest contains all the required meta data for the new project. 50 | Next we checkout the main executable, ``app/main.f90``, fpm has generated for us: 51 | 52 | ```{code-block} fortran 53 | :caption: app/main.f90 54 | program main 55 | use first_steps, only: say_hello 56 | implicit none 57 | 58 | call say_hello() 59 | end program main 60 | ``` 61 | 62 | The program already uses a module from our library, which we can find in ``src/first_steps.f90``: 63 | 64 | ```{code-block} fortran 65 | :caption: src/first_steps.f90 66 | module first_steps 67 | implicit none 68 | private 69 | 70 | public :: say_hello 71 | contains 72 | subroutine say_hello 73 | print *, "Hello, first_steps!" 74 | end subroutine say_hello 75 | end module first_steps 76 | ``` 77 | 78 | We can run the executable directly with the command ``fpm run``: 79 | 80 | ```{code-block} none 81 | ❯ fpm run 82 | ... 83 | Hello, first_steps! 84 | ``` 85 | 86 | Similarly, fpm has already created a stub for testing, which can be invoked with ``fpm test``: 87 | 88 | ```{code-block} none 89 | ❯ fpm test 90 | ... 91 | Put some tests in here! 92 | ``` 93 | 94 | Fpm will automatically track changes in your project when running your project using the *run* and *test* commands. 95 | 96 | 97 | :::{admonition} Summary 98 | :class: tip 99 | In this tutorial you learned how to 100 | 101 | - create a new project from the fpm command line 102 | - build and run your project executables with fpm 103 | - run tests with fpm 104 | ::: 105 | -------------------------------------------------------------------------------- /pages/_static/fpm-logo-mono.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 37 | 39 | 44 | 49 | 54 | 59 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /locale/ja/LC_MESSAGES/sphinx.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) 2021 Fortran programming language community 3 | # This file is distributed under the same license as the fpm package. 4 | # Tomohiro Degawa , 2022. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: fpm \n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2022-03-20 15:35+0900\n" 12 | "PO-Revision-Date: 2022-03-22 20:59+0900\n" 13 | "Last-Translator: 出川智啓 \n" 14 | "Language-Team: degawa \n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=utf-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Generated-By: Babel 2.9.1\n" 19 | 20 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/archives.html:3 21 | msgid "Archives" 22 | msgstr "史料" 23 | 24 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/authors.html:2 25 | msgid "Authors" 26 | msgstr "著者" 27 | 28 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/categories.html:3 29 | msgid "Categories" 30 | msgstr "分類" 31 | 32 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/collection.html:47 33 | msgid "Read more ..." 34 | msgstr "続きを読む" 35 | 36 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/languages.html:3 37 | msgid "Languages" 38 | msgstr "言語" 39 | 40 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/locations.html:3 41 | msgid "Locations" 42 | msgstr "場所" 43 | 44 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/postcard2.html:5 45 | msgid "Update" 46 | msgstr "更新" 47 | 48 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/postcard2.html:12 49 | msgid "Author" 50 | msgstr "著者" 51 | 52 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/postcard2.html:24 53 | msgid "Location" 54 | msgstr "場所" 55 | 56 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/postcard2.html:35 57 | msgid "Language" 58 | msgstr "言語" 59 | 60 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/postcard2.html:46 61 | msgid "Category" 62 | msgstr "分類" 63 | 64 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/postcard2.html:57 65 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/tagcloud.html:2 66 | msgid "Tags" 67 | msgstr "タグ" 68 | 69 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/postcard2.html:60 70 | msgid "Tag" 71 | msgstr "タグ" 72 | 73 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/postnavy.html:5 74 | msgid "Previous" 75 | msgstr "前へ" 76 | 77 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/postnavy.html:15 78 | msgid "Next" 79 | msgstr "次へ" 80 | 81 | #: ../../../../.venv/fpm-doc/lib/python3.8/site-packages/ablog/templates/recentposts.html:3 82 | msgid "Recent Posts" 83 | msgstr "最近の投稿" 84 | -------------------------------------------------------------------------------- /pages/_static/fpm-logo-color.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 37 | 39 | 44 | 48 | 52 | 56 | 60 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /pages/_static/fpm-logo-light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 37 | 39 | 44 | 49 | 54 | 59 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /pages/_static/fpm-logo-outline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 37 | 39 | 44 | 49 | 54 | 59 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /.github/workflows/build.yaml: -------------------------------------------------------------------------------- 1 | name: test 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | build: 7 | runs-on: ${{ matrix.os }} 8 | 9 | strategy: 10 | fail-fast: false 11 | matrix: 12 | os: [ubuntu-latest, macos-13, windows-latest] 13 | gcc: [13] 14 | 15 | steps: 16 | - name: Checkout repository 17 | uses: actions/checkout@v5 18 | 19 | - name: Install GFortran (MacOS) 20 | if: ${{ contains(matrix.os, 'macos') }} 21 | run: | 22 | brew install gcc@${{ matrix.gcc }} 23 | ln -s /usr/local/bin/gfortran-${{ matrix.gcc }} /usr/local/bin/gfortran 24 | # Backport gfortran shared libraries to version 10 folder. This is necessary because all macOS releases of fpm 25 | # have these paths hardcoded in the executable (no PIC?). As the gcc ABIs have not changed from 10 to 13, we 26 | # can just create symbolic links for now. This can be removed when an updated fpm release is built with gcc-13 27 | mkdir /usr/local/opt/gcc@10 28 | mkdir /usr/local/opt/gcc@10/lib 29 | mkdir /usr/local/opt/gcc@10/lib/gcc 30 | mkdir /usr/local/opt/gcc@10/lib/gcc/10 31 | mkdir /usr/local/lib/gcc/10 32 | ln -fs /usr/local/opt/gcc@${{ matrix.gcc }}/lib/gcc/${{ matrix.gcc }}/libquadmath.0.dylib /usr/local/opt/gcc@10/lib/gcc/10/libquadmath.0.dylib 33 | ln -fs /usr/local/opt/gcc@${{ matrix.gcc }}/lib/gcc/${{ matrix.gcc }}/libgfortran.5.dylib /usr/local/opt/gcc@10/lib/gcc/10/libgfortran.5.dylib 34 | ln -fs /usr/local/lib/gcc/${{ matrix.gcc }}/libgcc_s.1.dylib /usr/local/lib/gcc/10/libgcc_s.1.dylib 35 | 36 | - name: Install GFortran (Linux) 37 | if: ${{ contains(matrix.os, 'ubuntu') }} 38 | run: | 39 | sudo update-alternatives \ 40 | --install /usr/bin/gcc gcc /usr/bin/gcc-${{ matrix.gcc }} 100 \ 41 | --slave /usr/bin/gfortran gfortran /usr/bin/gfortran-${{ matrix.gcc }} \ 42 | --slave /usr/bin/gcov gcov /usr/bin/gcov-${{ matrix.gcc }} 43 | 44 | - name: Install GFortran (Windows) 45 | if: ${{ contains(matrix.os, 'windows') }} 46 | run: | 47 | Invoke-WebRequest -Uri ${{ env.DOWNLOAD }} -OutFile mingw-w64.zip 48 | Expand-Archive mingw-w64.zip 49 | echo "$pwd\mingw-w64\mingw64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append 50 | env: 51 | DOWNLOAD: "https://github.com/brechtsanders/winlibs_mingw/releases/download/10.3.0-12.0.0-9.0.0-r2/winlibs-x86_64-posix-seh-gcc-10.3.0-mingw-w64-9.0.0-r2.zip" 52 | 53 | - name: Setup FPM 54 | uses: fortran-lang/setup-fpm@v7 55 | with: 56 | fpm-version: 'v0.9.0' 57 | 58 | - name: Build all projects 59 | run: | 60 | set -ex 61 | for proj in $(find src/ -name fpm.toml) 62 | do 63 | pushd $(dirname $proj) 64 | for profile in ${{env.PROFILES}} 65 | do 66 | fpm build --profile $profile 67 | done 68 | popd 69 | done 70 | shell: bash -l {0} 71 | env: 72 | PROFILES: debug releae 73 | -------------------------------------------------------------------------------- /locale/fr/LC_MESSAGES/sphinx.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) 2021 Fortran programming language community 3 | # This file is distributed under the same license as the fpm package. 4 | # FIRST AUTHOR , 2022. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: fpm\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2022-01-14 10:30+0100\n" 11 | "PO-Revision-Date: 2022-01-14 11:26+0100\n" 12 | "Last-Translator: Vincent MAGNIN \n" 13 | "Language-Team: \n" 14 | "Language: fr\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=utf-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Generated-By: Babel 2.9.1\n" 19 | "X-Generator: Poedit 3.0.1\n" 20 | 21 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/archives.html:3 22 | msgid "Archives" 23 | msgstr "Archives" 24 | 25 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/authors.html:2 26 | msgid "Authors" 27 | msgstr "Auteurs" 28 | 29 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/categories.html:3 30 | msgid "Categories" 31 | msgstr "Catégories" 32 | 33 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/collection.html:47 34 | msgid "Read more ..." 35 | msgstr "En savoir plus..." 36 | 37 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/languages.html:3 38 | msgid "Languages" 39 | msgstr "Langages" 40 | 41 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/locations.html:3 42 | msgid "Locations" 43 | msgstr "Lieux" 44 | 45 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:5 46 | msgid "Update" 47 | msgstr "Mise à jour" 48 | 49 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:12 50 | msgid "Author" 51 | msgstr "Auteur" 52 | 53 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:24 54 | msgid "Location" 55 | msgstr "Lieu" 56 | 57 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:35 58 | msgid "Language" 59 | msgstr "Langage" 60 | 61 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:46 62 | msgid "Category" 63 | msgstr "Catégorie" 64 | 65 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:57 66 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/tagcloud.html:2 67 | msgid "Tags" 68 | msgstr "Etiquettes" 69 | 70 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:60 71 | msgid "Tag" 72 | msgstr "Etiquette" 73 | 74 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postnavy.html:5 75 | msgid "Previous" 76 | msgstr "Précédent" 77 | 78 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postnavy.html:15 79 | msgid "Next" 80 | msgstr "Suivant" 81 | 82 | #: ../../../.conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/recentposts.html:3 83 | msgid "Recent Posts" 84 | msgstr "Messages récents" 85 | -------------------------------------------------------------------------------- /pages/_static/css/custom.css: -------------------------------------------------------------------------------- 1 | :root { 2 | /***************************************************************************** 3 | * Fpm color palette 4 | **/ 5 | --fpm-sd-primary: #734f96; --fpm-primary: 114, 79, 150; /* fpm */ 6 | --fpm-sd-secondary: #9953ad; --fpm-secondary: 153, 83, 173; /* fpm-run */ 7 | --fpm-sd-tertiary: #a34e9c; --fpm-tertiary: 163, 78, 156; /* fpm-build */ 8 | --fpm-sd-test: #6853ad; --fpm-test: 104, 83, 173; /* fpm-test */ 9 | --fpm-sd-complementary: #41967a; --fpm-complementary: 65, 150, 122; /* fpm-new */ 10 | --fpm-sd-update: #4e52a3; --fpm-update: 78, 82, 163; /* fpm-update */ 11 | --fpm-sd-accent: #de955e; --fpm-accent: 222, 149, 94; /* fpm-install */ 12 | 13 | /***************************************************************************** 14 | * Color 15 | * 16 | * Colors are defined in rgb string way, "red, green, blue" 17 | **/ 18 | --pst-color-primary: var(--fpm-primary); 19 | --pst-color-info: var(--fpm-complementary); 20 | 21 | --pst-color-h1: var(--pst-color-primary); 22 | --pst-color-h2: var(--pst-color-primary); 23 | --pst-color-h3: var(--pst-color-text-base); 24 | --pst-color-h4: var(--pst-color-text-base); 25 | --pst-color-h5: var(--pst-color-text-base); 26 | --pst-color-h6: var(--pst-color-text-base); 27 | --pst-color-paragraph: var(--pst-color-text-base); 28 | --pst-color-link: var(--fpm-update); 29 | --pst-color-link-hover: var(--fpm-tertiary); 30 | --pst-color-headerlink: var(--fpm-tertiary); 31 | --pst-color-headerlink-hover: 255, 255, 255; 32 | --pst-color-preformatted-text: 34, 34, 34; 33 | --pst-color-preformatted-background: 250, 250, 250; 34 | --pst-color-inline-code: var(--fpm-accent); 35 | 36 | --pst-color-active-navigation: 19, 6, 84; 37 | --pst-color-navbar-link: 77, 77, 77; 38 | --pst-color-navbar-link-hover: var(--pst-color-active-navigation); 39 | --pst-color-navbar-link-active: var(--pst-color-active-navigation); 40 | --pst-color-sidebar-link: 77, 77, 77; 41 | --pst-color-sidebar-link-hover: var(--pst-color-active-navigation); 42 | --pst-color-sidebar-link-active: var(--pst-color-active-navigation); 43 | --pst-color-sidebar-expander-background-hover: 244, 244, 244; 44 | --pst-color-sidebar-caption: 77, 77, 77; 45 | --pst-color-toc-link: 119, 117, 122; 46 | --pst-color-toc-link-hover: var(--pst-color-active-navigation); 47 | --pst-color-toc-link-active: var(--pst-color-active-navigation); 48 | 49 | --sd-color-primary: var(--fpm-sd-primary); 50 | --sd-color-secondary: #6c757d; 51 | --sd-color-success: var(--fpm-sd-complementary); 52 | --sd-color-info: var(--fpm-sd-update); 53 | --sd-color-warning: var(--fpm-sd-accent); 54 | --sd-color-danger: var(--fpm-sd-tertiary); 55 | --sd-color-light: #f8f9fa; 56 | --sd-color-muted: #6c757d; 57 | --sd-color-dark: #212529; 58 | 59 | /***************************************************************************** 60 | * Icon 61 | **/ 62 | 63 | /* font awesome icons*/ 64 | --pst-icon-check-circle: '\f058'; 65 | --pst-icon-info-circle: '\f05a'; 66 | --pst-icon-exclamation-triangle: '\f071'; 67 | --pst-icon-exclamation-circle: '\f06a'; 68 | --pst-icon-times-circle: '\f057'; 69 | --pst-icon-lightbulb: '\f0eb'; 70 | 71 | } 72 | -------------------------------------------------------------------------------- /pages/tutorial/plugins.md: -------------------------------------------------------------------------------- 1 | # Extending fpm with plugins 2 | 3 | The Fortran package manager has a plugin system which allows to easily extend its functionality. 4 | This tutorial will show how to install a plugin with fpm and use it. 5 | 6 | 7 | ## Registry search tool 8 | 9 | The [fpm-search](https://github.com/urbanjost/fpm-search) project is a plugin to query the package registry. 10 | Since it is built with fpm we can easily install it on our system with 11 | 12 | ```{code-block} text 13 | git clone https://github.com/urbanjost/fpm-search 14 | cd fpm-search 15 | fpm install --profile release 16 | ``` 17 | 18 | This will install the ``fpm-search`` binary to ``~/.local/bin`` (or ``%APPDATA%\local\bin`` on Windows). 19 | 20 | :::::{note} 21 | Ensure that the installed binary is in the ``PATH``, *i.e.* run 22 | 23 | ```{code-block} text 24 | which fpm-search 25 | ~/.local/bin/fpm-search 26 | ``` 27 | 28 | If no binary is found, add the directory to your path using 29 | 30 | ::::{tab-set} 31 | :::{tab-item} Bash (Linux) 32 | 33 | Default settings for the bash shell can be found in the ``.bashrc`` file in the home directory, to append to the ``PATH`` following the instructions below. 34 | 35 | ```{code-block} text 36 | echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.bashrc 37 | . ~/.bashrc 38 | ``` 39 | 40 | Make sure to source your ``.bashrc`` after changing it, otherwise the change will not be applied to the current shell. 41 | ::: 42 | :::{tab-item} Zsh (MacOS) 43 | 44 | Default settings for the zsh shell can be found in the ``.zshrc`` file in the home directory, to append to the ``PATH`` use 45 | 46 | ```{code-block} text 47 | echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.zshrc 48 | exec zsh 49 | ``` 50 | 51 | Make sure to restart zsh after changing the ``.zshrc`` it, otherwise the change will not be applied to the current shell. 52 | ::: 53 | :::{tab-item} CMD (Windows) 54 | 55 | The ``PATH`` variable can be modified using the pathman program from the cmd prompt 56 | 57 | ```{code-block} text 58 | pathman /au %APPDATA%\local\bin 59 | ``` 60 | ::: 61 | :::: 62 | ::::: 63 | 64 | Now with a working installation we can invoke our new plugin from fpm. 65 | 66 | ```{code-block} text 67 | ❯ fpm search 68 | Downloading registry ... https://github.com/fortran-lang/fpm-registry/raw/master/index.json 69 | ... 70 | ``` 71 | 72 | Note that we use ``fpm search`` rather than ``fpm-search`` in the command. 73 | To find a package for building a command-line interface we can now type 74 | 75 | ```{code-block} text 76 | ❯ fpm search commandline 77 | M_CLI : Unix-style commandline parsing using a prototype command and NAMELIST (STD:f2008) 78 | M_CLI2 : Unix-style commandline parsing using a prototype command 79 | ``` 80 | 81 | To use one of the packages in our manifest we can generate the necessary dependency line by running 82 | 83 | ```{code-block} text 84 | ❯ fpm search --toml M_CLI2 85 | M_CLI2 = { git = "https://github.com/urbanjost/M_CLI2" } 86 | ``` 87 | 88 | Adding this line to a package manifest allows to depend on the respective project. 89 | 90 | :::{admonition} Summary 91 | :class: tip 92 | In this tutorial you learned how to 93 | 94 | - installing an fpm plugin 95 | - use the fpm-search plugin to query the registry 96 | - generate a dependency entry from a query result 97 | ::: 98 | -------------------------------------------------------------------------------- /pages/news/2025/05-18-fpm-verion-0.12.0.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Federico Perini, Christopher Albert, Ivan Pribec, Minh Dao 3 | date: 2025-05-18 4 | category: release 5 | --- 6 | 7 | # Fpm version 0.12.0 released 8 | 9 | The Fortran Package Manager (FPM) v0.12.0 introduces new powerful features aimed at improving interoperability, build system integration, and modular project design. The release includes continued refactoring and maintenance efforts, enhanced compiler support, and new tooling capabilities. 10 | 11 | ## Highlights 12 | 13 | ### 🔧 Build system integration via `compile_commands.json` 14 | 15 | Projects built with `fpm` can now export a `compile_commands.json` file compatible with editors and tools like **clangd**, **VS Code**, or **CMake Tools**. This feature enables powerful code navigation, symbol indexing, and auto-completion across large Fortran codebases. 16 | 17 | ### 📦 New metapackages: BLAS/LAPACK and NetCDF 18 | 19 | Two new [metapackages](https://fpm.fortran-lang.org/spec/metapackages.html) simplify integration with widely used scientific libraries: 20 | - **BLAS/LAPACK** support allows linking to external high-performance libraries either when using `stdlib`. 21 | - **NetCDF** support with a pkg-config backend. 22 | 23 | ### 🧩 Static and shared library targets 24 | 25 | Library targets now support both `static` and `shared` output types using the `[library] type = "shared"` or `"static"` settings. This enables use cases such as plugin architectures, dynamic linking with external applications, or bundling all dependencies into a monolithic archive. 26 | 27 | ## Futher fixes and improvements 28 | 29 | - Windows bootstrapping and Flang OpenMP syntax fixes. 30 | - Optional user-defined flags for compiler introspection. 31 | - `--config` flag to specify alternate configuration files. 32 | - Expanded metapackage support: Intel MPI, SLURM `srun`, external BLAS for `stdlib`. 33 | - Continuous improvements to modular structure and CLI argument handling. 34 | 35 | ## Changelog (selected) 36 | 37 | - Export `compile_commands.json` by [@perazz](https://github.com/perazz) in [#1129](https://github.com/fortran-lang/fpm/pull/1129) 38 | - [metapackage] BLAS by [@krystophny](https://github.com/krystophny) in [#1121](https://github.com/fortran-lang/fpm/pull/1121) 39 | - [metapackage] NetCDF by [@krystophny](https://github.com/krystophny) in [#1120](https://github.com/fortran-lang/fpm/pull/1120) 40 | - [metapackage] stdlib: enable external BLAS/LAPACK by [@perazz](https://github.com/perazz) in [#1139](https://github.com/fortran-lang/fpm/pull/1139) 41 | - feat: `shared` and `static` library targets by [@perazz](https://github.com/perazz) in [#1138](https://github.com/fortran-lang/fpm/pull/1138) 42 | - Enter custom path to the config file via command line by [@minhqdao](https://github.com/minhqdao) in [#945](https://github.com/fortran-lang/fpm/pull/945) 43 | 44 | **Full changelog**: [GitHub comparison view](https://github.com/fortran-lang/fpm/compare/v0.11.0...v0.12.0) 45 | 46 | ## New contributor 47 | 48 | We welcome [@krystophny](https://github.com/krystophny), who contributed major refactoring and introduced the NetCDF and BLAS metapackages. 49 | 50 | ## Feedback and discussion 51 | 52 | Join the conversation and share your feedback on the [Fortran Discourse thread](https://fortran-lang.discourse.group/t/fpm-version-0-12-0-released). 53 | 54 | -------------------------------------------------------------------------------- /locale/pt/LC_MESSAGES/sphinx.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) 2021 Fortran programming language community 3 | # This file is distributed under the same license as the fpm package. 4 | # FIRST AUTHOR , 2022. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: fpm \n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2022-08-10 15:52+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=utf-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Generated-By: Babel 2.10.3\n" 19 | 20 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/archives.html:3 21 | msgid "Archives" 22 | msgstr "" 23 | 24 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/authors.html:2 25 | msgid "Authors" 26 | msgstr "" 27 | 28 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/categories.html:3 29 | msgid "Categories" 30 | msgstr "" 31 | 32 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/collection.html:47 33 | msgid "Read more ..." 34 | msgstr "" 35 | 36 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/languages.html:3 37 | msgid "Languages" 38 | msgstr "" 39 | 40 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/locations.html:3 41 | msgid "Locations" 42 | msgstr "" 43 | 44 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:5 45 | msgid "Update" 46 | msgstr "" 47 | 48 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:12 49 | msgid "Author" 50 | msgstr "" 51 | 52 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:24 53 | msgid "Location" 54 | msgstr "" 55 | 56 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:35 57 | msgid "Language" 58 | msgstr "" 59 | 60 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:46 61 | msgid "Category" 62 | msgstr "" 63 | 64 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:57 65 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/tagcloud.html:2 66 | msgid "Tags" 67 | msgstr "" 68 | 69 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:60 70 | msgid "Tag" 71 | msgstr "" 72 | 73 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postnavy.html:5 74 | msgid "Previous" 75 | msgstr "" 76 | 77 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postnavy.html:15 78 | msgid "Next" 79 | msgstr "" 80 | 81 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/recentposts.html:3 82 | msgid "Recent Posts" 83 | msgstr "" 84 | 85 | -------------------------------------------------------------------------------- /locale/ru/LC_MESSAGES/sphinx.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) 2021 Fortran programming language community 3 | # This file is distributed under the same license as the fpm package. 4 | # FIRST AUTHOR , 2022. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: fpm \n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2022-09-29 16:03+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=utf-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Generated-By: Babel 2.10.3\n" 19 | 20 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/archives.html:3 21 | msgid "Archives" 22 | msgstr "" 23 | 24 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/authors.html:2 25 | msgid "Authors" 26 | msgstr "" 27 | 28 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/categories.html:3 29 | msgid "Categories" 30 | msgstr "" 31 | 32 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/collection.html:47 33 | msgid "Read more ..." 34 | msgstr "" 35 | 36 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/languages.html:3 37 | msgid "Languages" 38 | msgstr "" 39 | 40 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/locations.html:3 41 | msgid "Locations" 42 | msgstr "" 43 | 44 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:5 45 | msgid "Update" 46 | msgstr "" 47 | 48 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:12 49 | msgid "Author" 50 | msgstr "" 51 | 52 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:24 53 | msgid "Location" 54 | msgstr "" 55 | 56 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:35 57 | msgid "Language" 58 | msgstr "" 59 | 60 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:46 61 | msgid "Category" 62 | msgstr "" 63 | 64 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:57 65 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/tagcloud.html:2 66 | msgid "Tags" 67 | msgstr "" 68 | 69 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postcard2.html:60 70 | msgid "Tag" 71 | msgstr "" 72 | 73 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postnavy.html:5 74 | msgid "Previous" 75 | msgstr "" 76 | 77 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/postnavy.html:15 78 | msgid "Next" 79 | msgstr "" 80 | 81 | #: ../../../../../../../software/opt/conda/envs/sphinx/lib/python3.10/site-packages/ablog/templates/recentposts.html:3 82 | msgid "Recent Posts" 83 | msgstr "" 84 | 85 | -------------------------------------------------------------------------------- /locale/de/LC_MESSAGES/sphinx.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2021 Fortran programming language community 2 | # This file is distributed under the same license as the fpm package. 3 | # Sebastian Ehlert , 2021. 4 | # 5 | #, fuzzy 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: fpm \n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2021-11-26 09:36+0100\n" 11 | "PO-Revision-Date: 2021-11-26 12:38+0100\n" 12 | "Last-Translator: Sebastian Ehlert \n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=utf-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | "Generated-By: Babel 2.9.1\n" 17 | 18 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/archives.html:3 19 | msgid "Archives" 20 | msgstr "Archiv" 21 | 22 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/authors.html:2 23 | msgid "Authors" 24 | msgstr "Autoren" 25 | 26 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/categories.html:3 27 | msgid "Categories" 28 | msgstr "Kategorien" 29 | 30 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/collection.html:47 31 | msgid "Read more ..." 32 | msgstr "Weiter lesen ..." 33 | 34 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/languages.html:3 35 | msgid "Languages" 36 | msgstr "Sprachen" 37 | 38 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/locations.html:3 39 | msgid "Locations" 40 | msgstr "Orte" 41 | 42 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:5 43 | msgid "Update" 44 | msgstr "Aktualisierung" 45 | 46 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:12 47 | msgid "Author" 48 | msgstr "Autor" 49 | 50 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:24 51 | msgid "Location" 52 | msgstr "Ort" 53 | 54 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:35 55 | msgid "Language" 56 | msgstr "Sprache" 57 | 58 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:46 59 | msgid "Category" 60 | msgstr "Kategorie" 61 | 62 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:57 63 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/tagcloud.html:2 64 | msgid "Tags" 65 | msgstr "Stichworte" 66 | 67 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:60 68 | msgid "Tag" 69 | msgstr "Stichwort" 70 | 71 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postnavy.html:5 72 | msgid "Previous" 73 | msgstr "Zurück" 74 | 75 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postnavy.html:15 76 | msgid "Next" 77 | msgstr "Weiter" 78 | 79 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/recentposts.html:3 80 | msgid "Recent Posts" 81 | msgstr "Aktuelle Beiträge" 82 | -------------------------------------------------------------------------------- /locale/cs/LC_MESSAGES/sphinx.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) 2021 Fortran programming language community 3 | # This file is distributed under the same license as the fpm package. 4 | # FIRST AUTHOR , 2022. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: fpm \n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2022-08-18 21:57+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=utf-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Generated-By: Babel 2.10.3\n" 19 | 20 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/archives.html:3 21 | msgid "Archives" 22 | msgstr "" 23 | 24 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/authors.html:2 25 | msgid "Authors" 26 | msgstr "" 27 | 28 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/categories.html:3 29 | msgid "Categories" 30 | msgstr "" 31 | 32 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/collection.html:47 33 | msgid "Read more ..." 34 | msgstr "" 35 | 36 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/languages.html:3 37 | msgid "Languages" 38 | msgstr "" 39 | 40 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/locations.html:3 41 | msgid "Locations" 42 | msgstr "" 43 | 44 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/postcard2.html:5 45 | msgid "Update" 46 | msgstr "" 47 | 48 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/postcard2.html:12 49 | msgid "Author" 50 | msgstr "" 51 | 52 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/postcard2.html:24 53 | msgid "Location" 54 | msgstr "" 55 | 56 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/postcard2.html:35 57 | msgid "Language" 58 | msgstr "" 59 | 60 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/postcard2.html:46 61 | msgid "Category" 62 | msgstr "" 63 | 64 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/postcard2.html:57 65 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/tagcloud.html:2 66 | msgid "Tags" 67 | msgstr "" 68 | 69 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/postcard2.html:60 70 | msgid "Tag" 71 | msgstr "" 72 | 73 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/postnavy.html:5 74 | msgid "Previous" 75 | msgstr "" 76 | 77 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/postnavy.html:15 78 | msgid "Next" 79 | msgstr "" 80 | 81 | #: ../../../../../../../software/opt/conda/envs/webpage/lib/python3.10/site-packages/ablog/templates/recentposts.html:3 82 | msgid "Recent Posts" 83 | msgstr "" 84 | 85 | -------------------------------------------------------------------------------- /locale/zh_CN/LC_MESSAGES/sphinx.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2021 Fortran programming language community 2 | # This file is distributed under the same license as the fpm package. 3 | # Sebastian Ehlert , 2021. 4 | # 左志华 , 2021. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: fpm \n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2021-11-30 21:12+0800\n" 12 | "PO-Revision-Date: 2021-11-30 21:12+0800\n" 13 | "Last-Translator: 左志华 \n" 14 | "Language-Team: Fortran-Fans \n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=utf-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Generated-By: Babel 2.9.1\n" 19 | 20 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/archives.html:3 21 | msgid "Archives" 22 | msgstr "归档" 23 | 24 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/authors.html:2 25 | msgid "Authors" 26 | msgstr "作者" 27 | 28 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/categories.html:3 29 | msgid "Categories" 30 | msgstr "分类" 31 | 32 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/collection.html:47 33 | msgid "Read more ..." 34 | msgstr "阅读更多信息......" 35 | 36 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/languages.html:3 37 | msgid "Languages" 38 | msgstr "语言" 39 | 40 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/locations.html:3 41 | msgid "Locations" 42 | msgstr "位置" 43 | 44 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:5 45 | msgid "Update" 46 | msgstr "更新" 47 | 48 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:12 49 | msgid "Author" 50 | msgstr "作者" 51 | 52 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:24 53 | msgid "Location" 54 | msgstr "位置" 55 | 56 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:35 57 | msgid "Language" 58 | msgstr "语言" 59 | 60 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:46 61 | msgid "Category" 62 | msgstr "分类" 63 | 64 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:57 65 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/tagcloud.html:2 66 | msgid "Tags" 67 | msgstr "标签" 68 | 69 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:60 70 | msgid "Tag" 71 | msgstr "标签" 72 | 73 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postnavy.html:5 74 | msgid "Previous" 75 | msgstr "前一页" 76 | 77 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postnavy.html:15 78 | msgid "Next" 79 | msgstr "后一页" 80 | 81 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/recentposts.html:3 82 | msgid "Recent Posts" 83 | msgstr "最近的帖子" 84 | -------------------------------------------------------------------------------- /locale/nl/LC_MESSAGES/sphinx.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2022 Fortran programming language community 2 | # This file is distributed under the same license as the fpm package. 3 | # Arjen Markus , 2022. 4 | # 5 | #, fuzzy 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: fpm \n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2021-11-26 09:36+0100\n" 11 | "PO-Revision-Date: 2021-11-26 12:38+0100\n" 12 | "Last-Translator: Sebastian Ehlert \n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=utf-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | "Generated-By: Babel 2.9.1\n" 17 | 18 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/archives.html:3 19 | msgid "Archives" 20 | msgstr "Archief" 21 | 22 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/authors.html:2 23 | msgid "Authors" 24 | msgstr "Auteurs" 25 | 26 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/categories.html:3 27 | msgid "Categories" 28 | msgstr "Categorieën" 29 | 30 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/collection.html:47 31 | msgid "Read more ..." 32 | msgstr "Verder lezen ..." 33 | 34 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/languages.html:3 35 | msgid "Languages" 36 | msgstr "Talen" 37 | 38 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/locations.html:3 39 | msgid "Locations" 40 | msgstr "Plaatsen" 41 | 42 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:5 43 | msgid "Update" 44 | msgstr "Vernieuwen" 45 | 46 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:12 47 | msgid "Author" 48 | msgstr "Auteur" 49 | 50 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:24 51 | msgid "Location" 52 | msgstr "Plaats" 53 | 54 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:35 55 | msgid "Language" 56 | msgstr "Taal" 57 | 58 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:46 59 | msgid "Category" 60 | msgstr "Categorie" 61 | 62 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:57 63 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/tagcloud.html:2 64 | msgid "Tags" 65 | msgstr "Sleutelwoorden" 66 | 67 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:60 68 | msgid "Tag" 69 | msgstr "Sleutelwoord" 70 | 71 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postnavy.html:5 72 | msgid "Previous" 73 | msgstr "Vorige" 74 | 75 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postnavy.html:15 76 | msgid "Next" 77 | msgstr "Volgende" 78 | 79 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/recentposts.html:3 80 | msgid "Recent Posts" 81 | msgstr "Recente berichten" 82 | -------------------------------------------------------------------------------- /locale/es/LC_MESSAGES/sphinx.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2021 Fortran programming language community 2 | # This file is distributed under the same license as the fpm package. 3 | # Asdrubal Lozada-Blanco , 2021. 4 | # 5 | #, fuzzy 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: fpm \n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2021-11-26 09:36+0100\n" 11 | "PO-Revision-Date: 2021-12-01 12:38+0100\n" 12 | "Last-Translator: Asdrubal Lozada-Blanco \n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=utf-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | "Generated-By: Babel 2.9.1\n" 17 | 18 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/archives.html:3 19 | msgid "Archives" 20 | msgstr "Archivos" 21 | 22 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/authors.html:2 23 | msgid "Authors" 24 | msgstr "Autores" 25 | 26 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/categories.html:3 27 | msgid "Categories" 28 | msgstr "Categorias" 29 | 30 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/collection.html:47 31 | msgid "Read more ..." 32 | msgstr "Leer mas ..." 33 | 34 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/languages.html:3 35 | msgid "Languages" 36 | msgstr "Idiomas" 37 | 38 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/locations.html:3 39 | msgid "Locations" 40 | msgstr "Localización" 41 | 42 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:5 43 | msgid "Update" 44 | msgstr "Actualizaciones" 45 | 46 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:12 47 | msgid "Author" 48 | msgstr "Autor" 49 | 50 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:24 51 | msgid "Location" 52 | msgstr "Localización" 53 | 54 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:35 55 | msgid "Language" 56 | msgstr "Idioma" 57 | 58 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:46 59 | msgid "Category" 60 | msgstr "Categoria" 61 | 62 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:57 63 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/tagcloud.html:2 64 | msgid "Tags" 65 | msgstr "Etiquetas" 66 | 67 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postcard2.html:60 68 | msgid "Tag" 69 | msgstr "Etiquetas" 70 | 71 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postnavy.html:5 72 | msgid "Previous" 73 | msgstr "Anterior" 74 | 75 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/postnavy.html:15 76 | msgid "Next" 77 | msgstr "Siguiente" 78 | 79 | #: ../../../../../../software/opt/conda/envs/sphinx/lib/python3.9/site-packages/ablog/templates/recentposts.html:3 80 | msgid "Recent Posts" 81 | msgstr "Publicaciones recientes" 82 | -------------------------------------------------------------------------------- /pages/conf.py: -------------------------------------------------------------------------------- 1 | import json 2 | import requests 3 | from pathlib import Path 4 | 5 | root = Path(__file__).parent.parent 6 | 7 | data_files = { 8 | "registry": ( 9 | Path(root / "_data" / "registry.json"), 10 | "https://raw.githubusercontent.com/fortran-lang/fpm-registry/HEAD/index.json", 11 | ), 12 | } 13 | 14 | for data_file in data_files.values(): 15 | target, source = data_file 16 | if target.exists(): 17 | continue 18 | 19 | if not target.parent.exists(): 20 | target.parent.mkdir(parents=True) 21 | data = requests.get(source).text 22 | with open(target, "w", encoding="utf-8") as fd: 23 | fd.write(data) 24 | 25 | project = "fpm" 26 | author = f"{project} contributors" 27 | copyright = "2021 Fortran programming language community" 28 | 29 | extensions = [ 30 | "ablog", 31 | "myst_parser", 32 | "sphinx_design", 33 | "sphinx_copybutton", 34 | "sphinx_jinja", 35 | "sphinx.ext.intersphinx", 36 | ] 37 | myst_enable_extensions = [ 38 | "colon_fence", 39 | "deflist", 40 | "substitution", 41 | "html_image", 42 | ] 43 | myst_heading_anchors = 5 44 | 45 | html_theme = "sphinx_book_theme" 46 | html_title = "Fortran Package Manager" 47 | html_logo = "_static/fpm-logo-color.svg" 48 | html_favicon = "_static/fpm-logo-mono.svg" 49 | locale_dirs = ["../locale/"] 50 | 51 | _extra_navbar = """ 52 | 63 | """ 64 | 65 | html_theme_options = { 66 | "repository_url": "https://github.com/fortran-lang/fpm-docs", 67 | "repository_branch": "main", 68 | "use_repository_button": True, 69 | "use_edit_page_button": True, 70 | "use_download_button": False, 71 | "path_to_docs": "pages", 72 | "extra_navbar": _extra_navbar, 73 | } 74 | 75 | html_sidebars = { 76 | "news": [ 77 | "sidebar-logo.html", 78 | "search-field.html", 79 | "sbt-sidebar-nav.html", 80 | "tagcloud.html", 81 | "archives.html", 82 | ], 83 | "news/**": [ 84 | "sidebar-logo.html", 85 | "postcard.html", 86 | "recentposts.html", 87 | "archives.html", 88 | ], 89 | } 90 | 91 | html_css_files = [ 92 | "css/custom.css", 93 | ] 94 | html_static_path = ["_static"] 95 | templates_path = ["_templates"] 96 | 97 | blog_path = "news" 98 | blog_post_pattern = "news/*/*" 99 | 100 | copybutton_prompt_text = "❯ " 101 | 102 | master_doc = "index" 103 | gettext_compact = "index" 104 | 105 | jinja_contexts = {} 106 | for name, data_file in data_files.items(): 107 | with open(data_file[0], "r", encoding="utf-8") as fd: 108 | jinja_contexts[name] = json.load(fd) 109 | 110 | jinja_filters = { 111 | "is_list": lambda value: isinstance(value, list), 112 | "len": lambda value: len(value), 113 | "sort": lambda sortable: { 114 | key: sortable[key] for key in sorted(sortable, key=lambda value: value.lower()) 115 | }, 116 | "clean_repo": ( 117 | lambda value, depth=0, sep="/": sep.join(value.split(sep)[depth:]) 118 | ), 119 | } 120 | -------------------------------------------------------------------------------- /pages/news/2024/01-08-fpm-version-0.10.0.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Brad Richardson, Federico Perini, Giannis Nikiteas, urbanjost, Minh Dao 3 | date: 2024-01-08 4 | category: release 5 | ... 6 | 7 | # Fpm version 0.10.0 released 8 | 9 | The latest release of the Fortran Package Manager (FPM) showcases a range of 10 | updates geared towards enhancing functionality and user experience. 11 | Key improvements include significant advancements in MPI support, 12 | now allowing the usage of MPI modules in metapackages. 13 | On the command line interface, a `--dry-run` option for `fpm publish` has been 14 | added, allowing users to simulate the publishing process. This release also 15 | brings various bug fixes and performance improvements. For a full list of 16 | changes please see below. 17 | 18 | ## Changelog 19 | 20 | - search MPI runner in `%MS_MPI%` and `PATH` also in `get_mpi_runner` by @perazz in https://github.com/fortran-lang/fpm/pull/924 21 | - Add `--dry-run` option to `fpm publish` by @minhqdao in https://github.com/fortran-lang/fpm/pull/918 22 | - MPI: add `mpi` and `mpi_f08` to the list of external modules by @perazz in https://github.com/fortran-lang/fpm/pull/930 23 | - Fix `module-naming` typo by @minhqdao in https://github.com/fortran-lang/fpm/pull/932 24 | - Add developer documentation for run(3f) and example program by @urbanjost in https://github.com/fortran-lang/fpm/pull/933 25 | - Allow overriding metapackages with standard dependency syntax by @perazz in https://github.com/fortran-lang/fpm/pull/928 26 | - Parse `intrinsic` and `non_intrinsic` `use`d modules by @perazz in https://github.com/fortran-lang/fpm/pull/920 27 | - Fix `convert_to_absolute_path` by @minhqdao in https://github.com/fortran-lang/fpm/pull/940 28 | - remove arbitrary limit on width of input files, corrects #902 by @urbanjost in https://github.com/fortran-lang/fpm/pull/941 29 | - Just some refactoring by @minhqdao in https://github.com/fortran-lang/fpm/pull/946 30 | - use `clang` in lieu of `gcc` as C compiler for homebrew-openmpi action by @perazz in https://github.com/fortran-lang/fpm/pull/944 31 | - Remove ENV_VARIABLE() as it duplicates the functionality of GET_ENV() by @urbanjost in https://github.com/fortran-lang/fpm/pull/942 32 | - Add verbose printouts options to `git_archive` and `upload_form` by @minhqdao in https://github.com/fortran-lang/fpm/pull/938 33 | - update jonquil version by @urbanjost in https://github.com/fortran-lang/fpm/pull/947 34 | - Clean up clean command by @minhqdao in https://github.com/fortran-lang/fpm/pull/948 35 | - MPI: check presence of a runner command only with `run` and `test` apps by @perazz in https://github.com/fortran-lang/fpm/pull/937 36 | - Fix unallocated targets array by @perazz in https://github.com/fortran-lang/fpm/pull/954 37 | - Dependency-level macro setting by @perazz in https://github.com/fortran-lang/fpm/pull/952 38 | - Fix broken links in `README.md` by @perazz in https://github.com/fortran-lang/fpm/pull/959 39 | - Add `-O3` optimization flags for intel compiler (release profile) by @perazz in https://github.com/fortran-lang/fpm/pull/964 40 | - Make install script executable by @everythingfunctional in https://github.com/fortran-lang/fpm/pull/965 41 | - MPI fixes (macOS build/link flags), oneAPI ifort->ifx switch; turn off MSMPI CI by @perazz in https://github.com/fortran-lang/fpm/pull/976 42 | - FPM Release v0.10.0 by @gnikit in https://github.com/fortran-lang/fpm/pull/978 43 | 44 | Full Changelog: 45 | 46 | Discourse thread: 47 | -------------------------------------------------------------------------------- /pages/registry/publish.md: -------------------------------------------------------------------------------- 1 | # Package upload 2 | 3 | Packages can be uploaded to the [official registry](https://registry-phi.vercel.app) using the `fpm publish` command. After a successful upload, users can search for the package and use it in their projects. But be aware that the upload is permanent. Once a package is uploaded, it cannot be deleted. If you want to make changes to a package, you will have to create a new version of the package and upload that. 4 | 5 | fpm version 0.8.2 and higher is required to upload packages to the registry. 6 | 7 | :::{note} 8 | We are currently building and testing the registry. All uploaded packages will be deleted after the testing period (in June 2023) 9 | ::: 10 | 11 | ## Prerequisites 12 | 13 | ### Register 14 | 15 | Before you can upload a package, you need to have an account on the official registry. You can create an account by visiting the [registry website](https://registry-phi.vercel.app). 16 | 17 | ### Namespace 18 | 19 | A package must be uploaded to a given namespace. If you don't have a namespace yet, you need to create one on the website first. A user can have multiple namespaces and a namespace can accomodate multiple packages. 20 | 21 | ### Token 22 | 23 | After having created a namespace, you will need to generate a token to upload a package to that namespace. You can do this on the website as well. The token is used to authenticate the upload and is linked to your username. Do not share the token with anyone else. The token also expires after a certain amount of time. You can generate a new token after the old one has expired. 24 | 25 | ### Version 26 | 27 | A package must specify a valid [semver](https://semver.org/) version in its manifest. 28 | 29 | You can check the version of the package by running `fpm publish --show-package-version` before publishing. 30 | 31 | ### License 32 | 33 | A package must specify a valid [SPDX](https://spdx.org/licenses/) license in its manifest. 34 | 35 | ### Upload rights 36 | 37 | Users can upload a package to a namespace if they are either an admin or maintainer of the namespace or a maintainer of the package. Namespace admins can grant namespace admin and maintainer rights to other users. Users can be granted maintainer rights for individual packages by namespace admins, maintainers, and package maintainers. 38 | 39 | ## Uploading 40 | 41 | fpm will create a tarball and upload the package to the registry with all the requirements being met. 42 | 43 | ### Show package version 44 | 45 | To check the version of the package, run `fpm publish --show-package-version`. 46 | 47 | ### Show upload data 48 | 49 | You can see all the data being sent to the registry before uploading by running `fpm publish --show-upload-data`. The token will be included if you specify it on the command line (`fpm publish --show-upload-data --token `). No network request will be performed. A tarball will be created, which you can inspect before publishing. 50 | 51 | ### Dry run 52 | 53 | A dry run can be performed with `fpm publish --token --dry-run`. This will create the tarball and simulate the upload without publishing the package to the registry. The package and the token will be verified by the registry, and you will be provided with the path to the locally created tarball for inspection. By including the `--verbose` flag, you will be able to see all the data being sent to the registry. 54 | 55 | ### Publishing 56 | 57 | To publish a package, run `fpm publish --token ` using the token you generated on the website. You can as well include the `--verbose` flag to see all the data being sent to the registry. 58 | -------------------------------------------------------------------------------- /pages/news/2022/10-26-fpm-version-0.7.0.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Lewis McMillan, Damian Rouson, Giannis Nikiteas, Laurence Kedward, Sebastian Ehlert, Zuo Zhihua, Jakub Jelínek, Arteev Raina 3 | date: 2022-10-26 4 | category: release 5 | ... 6 | 7 | # Fpm version 0.7.0 released 8 | 9 | This release introduces preprocessor support in the `fpm.toml` manifest, allowing 10 | for preprocessor macros, file suffixes and directories where the preprocessor should run. 11 | This feature was implemented as part of Arteev Raina's Google Summer of Code 2022 project. 12 | Furthermore, fpm has now the ability to compile C++ source files in addition to Fortran and C. 13 | Finally, the ability to define compiler profiles in the `fpm.toml` manifest has been added, 14 | although the profile settings are not currently used in the build process. 15 | 16 | Find the full release notes [here](https://github.com/fortran-lang/fpm/releases/tag/v0.7.0). 17 | 18 | Many thanks to 19 | Lewis McMillan ([@lewisfish](https://github.com/lewisfish)), 20 | Damian Rouson ([@rouson](https://github.com/rouson)), 21 | Giannis Nikiteas ([@gnikit](https://github.com/gnikit)), 22 | Laurence Kedward ([@LKedward](https://github.com/LKedward)), 23 | Sebastian Ehlert ([@awvwgk](https://github.com/awvwgk)), 24 | Zuo Zhihua ([@zoziha](https://github.com/zoziha)), 25 | Jakub Jelínek ([@kubajj](https://github.com/kubajj)), 26 | Arteev Raina ([@arteevraina](https://github.com/arteevraina)) 27 | for contributing patches to this release. 28 | 29 | ## Changelog 30 | 31 | - feat: added basic preprocess table configuration by in 32 | - Add homebrew installation instructions to README.md by in 33 | - Some cleanups and minor fixes by in 34 | - feat: ability to read macros from manifest by in 35 | - Support for dependency path relative to the fpm.toml it’s written in by in 36 | - feat: added support for C++ files compilation by in 37 | - Fix executables linking by in 38 | - Change git directory using work-tree / git-dir by in 39 | - Fix #734: First resolve dependencies, then resolve programs by in 40 | - docs(README): improve Homebrew references by in 41 | - Minor fix for `fpm new` by in 42 | - docs: updated example packages README with new packages that were added by in 43 | - Enable profiles in toml by in 44 | - Updated URL to manifest file in help section by in 45 | - Fix compilation with NAG by in 46 | - Fixes #756: add judgement of macros allocation status by in 47 | - In the default case of command line subcommands, stop `fpm` running in time by in 48 | - Disallow C-style escaping for IBM XL compiler by in 49 | - bug: C preprocessor does not propagate directives to executables by in 50 | - bug: macros don't propage to C executables by in 51 | - Enable cpp preprocessor flag for dependencies by in 52 | - Bump version to 0.7.0 by in 53 | -------------------------------------------------------------------------------- /pages/news/2021/11-21-fpm-version-0.5.0.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Carl Burkert, Sebastian Ehlert, Laurence Kedward, Sascha Klawohn, Brad Richardson, Damian Rouson, Simon Rowe, Carlos Une, John Urban, Zuo Zhihua 3 | date: 2021-11-21 4 | category: release 5 | ... 6 | 7 | # Fpm version 0.5.0 released 8 | 9 | We have a large number of bug fixes in this release and made plenty of improvements to the tooling around fpm, like the continuous delivery and the Windows installer. 10 | New features include the possibility for better compiler/linker selection and the improved build backend (test are only build when needed, link dependencies are properly tracked). 11 | 12 | Find the full release notes [here](https://github.com/fortran-lang/fpm/releases/tag/v0.5.0). 13 | 14 | ## Changes 15 | 16 | - tests are only build for fpm test and not by default anymore ([#572](https://github.com/fortran-lang/fpm/pull/572)) 17 | - environment variables for setting Fortran and C compiler changed ([#549](https://github.com/fortran-lang/fpm/pull/549), [#584](https://github.com/fortran-lang/fpm/pull/584)) 18 | - add LFortran optimization flag to release profile ([#597](https://github.com/fortran-lang/fpm/pull/597)) 19 | 20 | 21 | ## New features 22 | 23 | - command line arguments for linker, archiver and C-compiler added ([#549](https://github.com/fortran-lang/fpm/pull/549)) 24 | 25 | 26 | ## Fixes 27 | 28 | - tabs are correctly expanded in source file scanning ([#521](https://github.com/fortran-lang/fpm/pull/521)) 29 | - installer script will use fpm update to avoid stale dependencies ([#557](https://github.com/fortran-lang/fpm/pull/557)) 30 | - use multiple build output directories depending on link line options ([#575](https://github.com/fortran-lang/fpm/pull/575)) 31 | - update truncated help text ([#578](https://github.com/fortran-lang/fpm/pull/578)) 32 | - fix directory removal in fpm new tests ([#579](https://github.com/fortran-lang/fpm/pull/579)) 33 | - use MSVS like commands for Intel compilers on Windows ([#590](https://github.com/fortran-lang/fpm/pull/590)) 34 | - add critical section to mkdir in backend ([#613](https://github.com/fortran-lang/fpm/pull/613)) 35 | - fix modules listing (for install) ([#612](https://github.com/fortran-lang/fpm/pull/612)) 36 | - repair --list option and correct obsolete descriptions of the --list option ([#607](https://github.com/fortran-lang/fpm/pull/607)) 37 | - fix incorrect Intel release flag on Windows 38 | ([#602](https://github.com/fortran-lang/fpm/pull/602)) 39 | - list names without suffix for Windows 40 | ([#595](https://github.com/fortran-lang/fpm/pull/595)) 41 | 42 | 43 | ## Repository updates 44 | 45 | - add files and workflow to make installer on release ([#616](https://github.com/fortran-lang/fpm/pull/616)) 46 | - issue templates added to guide reporting of bugs, package issues, feature requests and specification proposals ([#558](https://github.com/fortran-lang/fpm/pull/558)) 47 | - default branch renamed to *main* ([#565](https://github.com/fortran-lang/fpm/pull/565)) 48 | - update documentation on distributions supporting fpm, like spack and MSYS2 ([#562](https://github.com/fortran-lang/fpm/pull/562)) 49 | - new workflow to automatically generate single source fpm versions ([#563](https://github.com/fortran-lang/fpm/pull/563)) 50 | - continuous delivery of current fpm git source implemented ([#569](https://github.com/fortran-lang/fpm/pull/569), [#564](https://github.com/fortran-lang/fpm/pull/564)) 51 | - update of bootstrapping instructions ([#587](https://github.com/fortran-lang/fpm/pull/587)) 52 | - update README.md compiler, archiver, & link flags ([#598](https://github.com/fortran-lang/fpm/pull/598)) 53 | 54 | 55 | ## Feedback 56 | 57 | - [Discourse thread](https://fortran-lang.discourse.group/t/2314) 58 | - [Twitter post](https://twitter.com/fortranlang/status/1462506491752161286) 59 | -------------------------------------------------------------------------------- /pages/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | sd_hide_title: true 3 | ... 4 | 5 | # Fortran Package Manager 6 | 7 | :::{card} 8 | :class-header: sd-text-white sd-fs-2 sd-font-weight-bold sd-border-0 9 | :class-body: sd-text-white sd-fs-4 sd-border-0 10 | :class-card: sd-border-0 sd-bg-danger sd-px-5 sd-py-1 sd-rounded-3 11 | :shadow: none 12 | 13 | Fortran Package Manager 14 | ^^^ 15 | 16 | Package manager and build system for Fortran 17 | ::: 18 | 19 | Welcome to the documentation for the Fortran Package Manager (fpm). 20 | 21 | ::::{note} 22 | These pages are currently under construction. 23 | Please help us improve them by contributing content or reporting issues. 24 | :::: 25 | 26 | 27 | :::::{grid} 2 28 | :gutter: 3 29 | 30 | ::::{grid-item-card} 31 | :class-header: sd-text-white sd-font-weight-bold sd-border-0 32 | :class-card: sd-text-white sd-bg-info sd-rounded-3 33 | :class-body: sd-text-white 34 | :class-footer: sd-py-1 sd-border-0 35 | 36 | {octicon}`download` Install 37 | ^^^ 38 | 39 | Instructions on how to install fpm across Windows, Linux, macOS and more. 40 | 41 | +++ 42 | ```{card} 43 | :link-type: ref 44 | :link: install 45 | :class-card: sd-btn sd-btn-light 46 | :class-body: sd-p-1 sd-text-center sd-font-weight-bold sd-text-info 47 | 48 | Install fpm 49 | ``` 50 | :::: 51 | 52 | ::::{grid-item-card} 53 | :class-header: sd-text-white sd-font-weight-bold sd-border-0 54 | :class-card: sd-text-white sd-bg-warning sd-rounded-3 55 | :class-body: sd-text-white 56 | :class-footer: sd-py-1 sd-border-0 57 | 58 | {octicon}`mortar-board` Tutorials 59 | ^^^ 60 | 61 | Learn about using fpm for Fortran development, creating projects and managing dependencies. 62 | 63 | +++ 64 | ```{card} 65 | :link-type: ref 66 | :link: tutorial 67 | :class-card: sd-btn sd-btn-light 68 | :class-body: sd-p-1 sd-text-center sd-font-weight-bold sd-text-warning 69 | 70 | Browse tutorials 71 | ``` 72 | :::: 73 | 74 | ::::{grid-item-card} 75 | :class-header: sd-text-white sd-font-weight-bold sd-border-0 76 | :class-card: sd-text-white sd-bg-primary sd-rounded-3 77 | :class-body: sd-text-white 78 | :class-footer: sd-py-1 sd-border-0 79 | 80 | {octicon}`book` How-To Guides 81 | ^^^ 82 | 83 | Practical guides and recipes to solve specific problems with fpm 84 | 85 | +++ 86 | ```{card} 87 | :link-type: ref 88 | :link: how-to 89 | :class-card: sd-btn sd-btn-light 90 | :class-body: sd-p-1 sd-text-center sd-font-weight-bold sd-text-primary 91 | 92 | Browse recipes 93 | ``` 94 | :::: 95 | 96 | ::::{grid-item-card} 97 | :class-header: sd-text-white sd-font-weight-bold sd-border-0 98 | :class-card: sd-text-white sd-bg-success sd-rounded-3 99 | :class-body: sd-text-white 100 | :class-footer: sd-py-1 sd-border-0 101 | 102 | {octicon}`gear` References 103 | ^^^ 104 | 105 | Specifications of fpm components and implementation references 106 | 107 | +++ 108 | ```{card} 109 | :link-type: ref 110 | :link: spec 111 | :class-card: sd-btn sd-btn-light 112 | :class-body: sd-p-1 sd-text-center sd-font-weight-bold sd-text-success 113 | 114 | Browse references 115 | ``` 116 | :::: 117 | 118 | ::::: 119 | 120 | ## {fa}`cubes` [Registry](registry/index) 121 | 122 | fpm supports local and online registries for downloading dependencies. 123 | [**Learn more**](registry/index) about the fpm registry and how to use it. 124 | 125 | ## {fa}`newspaper` [News](news.md) 126 | 127 | Recent events around the Fortran Package Manager, such as new releases, conference talks, and new packages will be announced here. 128 | 129 | :::{postlist} 5 130 | :date: '%Y-%m-%d' 131 | :format: '{title} ({date})' 132 | :excerpts: 133 | ::: 134 | 135 | 136 | ````{toctree} 137 | :maxdepth: 2 138 | :hidden: 139 | Installation 140 | Tutorial 141 | How-To 142 | Reference 143 | Design 144 | Registry 145 | news 146 | ```` 147 | -------------------------------------------------------------------------------- /pages/news/2022/06-19-fpm-version-0.6.0.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Pedro Costa, Sebastian Ehlert, Laurence Kedward, Wileam Y. Phan, Arteev Raina, Simon Rowe, Andre Smit, John Urban, Zuo Zhihua, St-Maxwell, Joel 3 | date: 2022-06-19 4 | category: release 5 | ... 6 | 7 | # Fpm version 0.6.0 released 8 | 9 | This release introduces a better visualization for the build output, compiler output is only shown on error to keep the standard output clean for successful builds. 10 | Furthermore, fpm can now detect unused modules and avoids compiling modules that are not needed for an application, which improves the compilation speed with large dependencies like stdlib. 11 | When creating a new project with fpm the author information are now taken from the git configuration to avoid using placeholders in the manifest. 12 | Several more bug fixes and plenty of improvements went into this version as well. 13 | 14 | Find the full release notes [here](https://github.com/fortran-lang/fpm/releases/tag/v0.6.0). 15 | 16 | Many thanks to Pedro Costa ([@p-costa](https://github.com/p-costa)), Sebastian Ehlert ([@awvwgk](https://github.com/awvwgk)), Laurence Kedward ([@lkedward](https://github.com/lkedward)), Wileam Y. Phan ([@wyphan](https://github.com/wyphan)), Arteev Raina ([@arteevraina](https://github.com/arteevraina)), Simon Rowe ([@wiremoons](https://github.com/wiremoons)), Andre Smit ([@freevryheid](https://github.com/freevryheid)), John Urban ([@urbanjost](https://github.com/urbanjost)), Zuo Zhihua ([@zoziha](https://github.com/zoziha)), [@st-maxwell](https://github.com/st-maxwell), and [@noisegul](https://github.com/noisegul) for contributing patches to this release. 17 | 18 | 19 | ## Changelog 20 | 21 | * Better extraction of the Fortran compiler from the MPI wrapper ([#634](https://github.com/fortran-lang/fpm/pull/634)) 22 | * Update module output directory command for flang-new/f18 ([#645](https://github.com/fortran-lang/fpm/pull/645)) 23 | * Respect user provided main-files ([#646](https://github.com/fortran-lang/fpm/pull/646)) 24 | * just allow . on new subcommand instead of changing canonical path ([#630](https://github.com/fortran-lang/fpm/pull/630)) 25 | * get user name and email using git config if available else use defaults ([#652](https://github.com/fortran-lang/fpm/pull/652)) 26 | * Ignore hidden source files ([#654](https://github.com/fortran-lang/fpm/pull/654)) 27 | * Cleanup the backend output ([#622](https://github.com/fortran-lang/fpm/pull/622)) 28 | * Add note about relocation of manifest reference ([#648](https://github.com/fortran-lang/fpm/pull/648)) 29 | * Fix for backtrace error when file not found in: `src/fpm_source_parsing.f90` ([#675](https://github.com/fortran-lang/fpm/pull/675)) 30 | * Fix issue with backend pretty output ([#677](https://github.com/fortran-lang/fpm/pull/677)) 31 | * fix: remove remove unnecessary space in fpm new cmd ([#684](https://github.com/fortran-lang/fpm/pull/684)) 32 | * Small fix for `fpm_model` ([#688](https://github.com/fortran-lang/fpm/pull/688)) 33 | * add clean command ([#655](https://github.com/fortran-lang/fpm/pull/665)) 34 | * Fix for non-portable GFortran `-J` flag in install script ([#692](https://github.com/fortran-lang/fpm/pull/692)) 35 | * Fix show-model option ([#693](https://github.com/fortran-lang/fpm/pull/693)) 36 | * Tree shaking for modules ([#676](https://github.com/fortran-lang/fpm/pull/676)) 37 | * Fix submodule shaking ([#704](https://github.com/fortran-lang/fpm/pull/704)) 38 | * fix: remove extra space from help-test cmd ([#686](https://github.com/fortran-lang/fpm/pull/686)) 39 | * Fix: to pipe up-to-date message to stderr ([#706](https://github.com/fortran-lang/fpm/pull/706)) 40 | * Avoid infinite loop if command "fpm-" is in path ([#713](https://github.com/fortran-lang/fpm/pull/713)) 41 | * Fix --show-model, init `c_source%parent_modules` ([#712](https://github.com/fortran-lang/fpm/pull/712)) 42 | * Add OMP critical for `make_archive` ([#708](https://github.com/fortran-lang/fpm/pull/708)) 43 | -------------------------------------------------------------------------------- /pages/news/2025/03-10-fpm-version-0.11.0.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Henil Panchal, Zuo Zhihua, David Pfister, Ivan Pribec, aury6623, Giannis Nikiteas, Federico Perini 3 | date: 2025-03-10 4 | category: release 5 | ... 6 | 7 | # Fpm version 0.11.0 released 8 | 9 | The latest release of the Fortran Package Manager (FPM) brings several maintenance updates, bug fixes, and performance improvements. This version also introduces new features such as support for HDF5 metapackages via `pkg_config`, enhanced parsing for abstract interfaces, and the ability to install test programs. Additionally, compliance with Fortran standards has been improved, along with better handling of Windows-specific issues and Intel Fortran Compiler (`ifx`) support. 10 | 11 | ## Important notice 12 | 13 | Users employing [setup-fpm](https://github.com/fortran-lang/setup-fpm) for their GitHub actions should upgrade to `setup-fpm@v7` to maintain compatibility with fpm 0.11.0. 14 | 15 | ## Changelog 16 | 17 | - Patch `toml_error` by @perazz in https://github.com/fortran-lang/fpm/pull/1011 18 | - Fortran standard compliance fixes by @perazz in https://github.com/fortran-lang/fpm/pull/1013 19 | - fix: add fpm_model.json to the package tarball before uploading to the registry by @henilp105 in https://github.com/fortran-lang/fpm/pull/1010 20 | - Improve text file reading performance by @zoziha in https://github.com/fortran-lang/fpm/pull/961 21 | - fix: #1023 gfortran-specific backslash line continuations by @henilp105 in https://github.com/fortran-lang/fpm/pull/1024 22 | - Reorganize fpm run; fix `--example --all` by @perazz in https://github.com/fortran-lang/fpm/pull/1021 23 | - Remove duplicate `operator(==)` interface by @perazz in https://github.com/fortran-lang/fpm/pull/1028 24 | - Always initialize `redirect_str` to prevent memory leak by @perazz in https://github.com/fortran-lang/fpm/pull/1029 25 | - Metapackage CI: macos-latest -> macos-12 by @perazz in https://github.com/fortran-lang/fpm/pull/1030 26 | - Non-`main.f90` auto executables: fix in `fpm install` by @perazz in https://github.com/fortran-lang/fpm/pull/1036 27 | - Fix: `--target` option should only run the desired target by @perazz in https://github.com/fortran-lang/fpm/pull/1038 28 | - ci: GCC-13 has been removed from GA runners by @gnikit in https://github.com/fortran-lang/fpm/pull/1043 29 | - Fix Bug #1047 - rename implicit interface option for lfortran by @davidpfister in https://github.com/fortran-lang/fpm/pull/1048 30 | - Bump actions/upload-artifact from 2 to 4 by @dependabot in https://github.com/fortran-lang/fpm/pull/985 31 | - Run all tests with user-specified runner by @perazz in https://github.com/fortran-lang/fpm/pull/1046 32 | - Check that Fortran sources run; Robust Fortran features by @perazz in https://github.com/fortran-lang/fpm/pull/1051 33 | - `install.sh`: always bootstrap with 0.8.0 by @perazz in https://github.com/fortran-lang/fpm/pull/1057 34 | - CI: use setup-fortran by @perazz in https://github.com/fortran-lang/fpm/pull/1061 35 | - Metapackages: `pkg_config` backend support; HDF5 by @perazz in https://github.com/fortran-lang/fpm/pull/1055 36 | - Windows archiver: also search for `gcc-ar` by @perazz in https://github.com/fortran-lang/fpm/pull/1067 37 | - HDF5 metapackage: remove unnecessary printouts by @perazz in https://github.com/fortran-lang/fpm/pull/1068 38 | - Maintenance: fix Ubuntu metapackage CI by @perazz in https://github.com/fortran-lang/fpm/pull/1076 39 | - Expand parsing to include abstract interfaces by @ivan-pi in https://github.com/fortran-lang/fpm/pull/1074 40 | - Source parsing: consider `end program` with no `program` header by @perazz in https://github.com/fortran-lang/fpm/pull/1078 41 | - Feat: option to install test programs by @perazz in https://github.com/fortran-lang/fpm/pull/1079 42 | - Manifest: do not allow path lists in `library.source-dir` by @perazz in https://github.com/fortran-lang/fpm/pull/1077 43 | - update CI by @perazz in https://github.com/fortran-lang/fpm/pull/1102 44 | - Remove unneeded `public :: operator(==)` which causes an error on ifx by @aury6623 in https://github.com/fortran-lang/fpm/pull/1095 45 | 46 | Full Changelog: 47 | 48 | Discourse thread: 49 | 50 | -------------------------------------------------------------------------------- /pages/_static/fortran-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 35 | 37 | 42 | 50 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Fpm documentation 2 | 3 | [![pages](https://github.com/fortran-lang/fpm-docs/actions/workflows/sphinx.yml/badge.svg)](https://fpm.fortran-lang.org/) 4 | [![test](https://github.com/fortran-lang/fpm-docs/actions/workflows/build.yaml/badge.svg)](https://github.com/fortran-lang/fpm-docs/actions/workflows/build.yaml) 5 | 6 | Repository for building the documentation pages for the Fortran package manager (fpm). 7 | 8 | 9 | ## Getting started 10 | 11 | ### Get the code 12 | 13 | ``` 14 | git clone https://github.com/fortran-lang/fpm-docs 15 | cd fpm-docs 16 | ``` 17 | 18 | ### Install dependencies 19 | 20 | The documentation pages are created using [sphinx](https://www.sphinx-doc.org). 21 | You first need to install the required dependencies using conda or pip. 22 | This project uses 23 | 24 | - [sphinx-build](https://www.sphinx-doc.org) for building the pages 25 | - [sphinx-intl](https://www.sphinx-doc.org/en/master/usage/advanced/intl.html) for translations 26 | - [ablog](https://ablog.readthedocs.io/en/latest/) for the news section and posts 27 | - [sphinx-book-theme](https://sphinx-book-theme.readthedocs.io/en/latest/) for the page theme 28 | - [myst-parser](https://myst-parser.readthedocs.io/en/latest/) for markdown support 29 | - [sphinx-design](https://sphinx-design.readthedocs.io/en/latest/) for the bootstrap building blocks 30 | - [sphinx-copybutton](https://sphinx-copybutton.readthedocs.io/en/latest/) to allow copying of code-blocks 31 | - [sphinx-jinja](https://github.com/tardyp/sphinx-jinja) to use templating for the registry 32 | 33 | #### conda 34 | 35 | ``` 36 | conda env create -n sphinx -f environment.yaml 37 | conda activate sphinx 38 | ``` 39 | 40 | #### pip 41 | 42 | ``` 43 | python3 -m venv venv 44 | source venv/bin/activate 45 | pip install -U pip 46 | pip install -r requirements.txt 47 | ``` 48 | 49 | ### Build fpm-docs 50 | 51 | Build the documentation by invoking 52 | 53 | ``` 54 | make html 55 | ``` 56 | 57 | The website will be built in `_build/html` and can be previewed by opening the page with a browser (*e.g.* firefox, chromium or similar): 58 | 59 | ``` 60 | firefox file://$PWD/_build/html/index.html 61 | ``` 62 | 63 | By default all languages will be built. 64 | To limit the build to a single language subtree, *i.e.* English, use 65 | 66 | ``` 67 | make html LANGUAGES=en 68 | ``` 69 | 70 | 71 | ### Translating via weblate 72 | 73 | Translations can be contributed via [weblate](https://hosted.weblate.org/projects/fortran-lang/fpm/). 74 | 75 | [![Translation status](https://hosted.weblate.org/widgets/fortran-lang/-/fpm/horizontal-auto.svg)](https://hosted.weblate.org/engage/fortran-lang/) 76 | 77 | 78 | ### Update or add translations 79 | 80 | The documentation uses the 81 | [sphinx-intl](https://sphinx-intl.readthedocs.io/en/master/quickstart.html) 82 | utility to generate websites for multiple languages. 83 | It generates `*.po` files, 84 | which contain the original sentences and a placeholder for translations. 85 | 86 | To update translations run 87 | 88 | ``` 89 | make gettext 90 | ``` 91 | 92 | if you only want to update a single translation add `LANGUAGES=de` to the command. 93 | This command will generate the message catalog (`*.pot`) and update the `*.po` files in the *locale* directory of the respective translations. 94 | Then edit the `*.po` files, 95 | e.g. `locale/de/LC_MESSAGES/index.po`. 96 | In the `*.po` files are paragraphs like 97 | ```po 98 | #: ../../pages/index.md:16 99 | msgid "Package manager and build system for Fortran" 100 | msgstr "" 101 | ``` 102 | 103 | The first line describes the file and line where to find the original text. 104 | 105 | The second line is the original text. 106 | **Don't edit this line, edit the original document instead**. 107 | 108 | The third line is meant for the translation. 109 | 110 | To continue a long string in another line, 111 | simply close the string in the current line with `"` 112 | and open another one in the line underneath. E.g. 113 | ``` 114 | msgstr "This is " 115 | "one string" 116 | ``` 117 | *don't forget a space between 'is' and 'one'* 118 | 119 | After adding or updating translations 120 | build the documentation as described above. 121 | 122 | ## Pull Requests Previews 123 | 124 | You can build the Preview of the fpm-docs website by opening a pull request 125 | and commenting `#preview` on the pull request. Similarly, you can force the 126 | deletion of the preview by commenting `#delete-preview`. 127 | -------------------------------------------------------------------------------- /pages/news/2023/04-07-fpm-version-0.8.0.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Aarush Bhat, Minh Dao, Sebastian Ehlert, Sergey Fedorov, Sebastien Marie, Giannis Nikiteas, Federico Perini, Ivan Pribec, John Urban, Zuo Zhihua 3 | date: 2023-04-07 4 | category: release 5 | ... 6 | 7 | # Fpm version 0.8.0 released 8 | 9 | This release introduces support for enabling and disabling language features in fpm, such as implicit typing or default source form. 10 | By default, fpm now tries to disable implicit typing rules, implicit external interfaces and assumes the source form is always free. 11 | The options can be overwritten in the manifest for each project. 12 | 13 | Furthermore, first support for local and remote registries are integrated in fpm. 14 | The registry support can be configured in a new global configuration file. 15 | This development was sponsored by the [Sovereign Tech Fund](https://sovereigntechfund.de/en/projects/fortran/). 16 | 17 | Bugfixes and improvements to the preprocessor support, C++ compilation, dependency updates and more are included in this release. 18 | 19 | Find the full release notes [here](https://github.com/fortran-lang/fpm/releases/tag/v0.8.0). 20 | 21 | Many thanks to 22 | Aarush Bhat ([@sloorush](https://github.com/sloorush)), 23 | Minh Dao ([@minhqdao](https://github.com/minhqdao)), 24 | Sebastian Ehlert ([@awvwgk](https://github.com/awvwgk)), 25 | Sergey Fedorov ([@barracuda156](https://github.com/barracuda156)), 26 | Sebastien Marie ([@semarie](https://github.com/semarie)), 27 | Giannis Nikiteas ([@gnikit](https://github.com/gnikit)), 28 | Federico Perini ([@perazz](https://github.com/perazz)), 29 | Ivan Pribec ([@ivan-pi](https://github.com/ivan-pi)), 30 | John Urban ([@urbanjost](https://github.com/urbanjost)), 31 | Zuo Zhihua ([@zoziha](https://github.com/zoziha)) 32 | for contributing patches to this release. 33 | 34 | ## Changelog 35 | 36 | * Set C++ compiler to clang++ in [fpm#787](https://github.com/fortran-lang/fpm/pull/787) 37 | * Document ``FPM_CXX``, ``FPM_CXXFLAGS`` and options in [fpm#788](https://github.com/fortran-lang/fpm/pull/788) 38 | * Simplify and update README in [fpm#778](https://github.com/fortran-lang/fpm/pull/778) 39 | * Add C++ flags to profiles in [fpm#786](https://github.com/fortran-lang/fpm/pull/786) 40 | * fix 32-bit platform issues with M\_CLI2 in [fpm#796](https://github.com/fortran-lang/fpm/pull/796) 41 | * Fix missing space before -D option for preprocessor in [fpm#804](https://github.com/fortran-lang/fpm/pull/804) 42 | * Do not pass in quotes in manifest tests in [fpm#806](https://github.com/fortran-lang/fpm/pull/806) 43 | * Improve error handling for invalid ``git`` dependencies in [fpm#797](https://github.com/fortran-lang/fpm/pull/797) 44 | * Lower windows check precedence in ``get_os_type`` function in [fpm#802](https://github.com/fortran-lang/fpm/pull/802) 45 | * Fix broken links to webpage in [fpm#826](https://github.com/fortran-lang/fpm/pull/826) 46 | * Consistently call ``execute_command_line`` from the ``run`` wrapper in [fpm#832](https://github.com/fortran-lang/fpm/pull/832) 47 | * Fix the build on macOS PPC in [fpm#824](https://github.com/fortran-lang/fpm/pull/824) 48 | * Query latest release from GitHub in [fpm#818](https://github.com/fortran-lang/fpm/pull/818) 49 | * Add missing dollar sign in OpenMP directive in [fpm#841](https://github.com/fortran-lang/fpm/pull/841) 50 | * Fix query for latest release from GitHub on missing curl in [fpm#839](https://github.com/fortran-lang/fpm/pull/839) and [fpm#842](https://github.com/fortran-lang/fpm/pull/842) 51 | * Fix unallocated model variables in the testsuite (#844) in [fpm#845](https://github.com/fortran-lang/fpm/pull/845) 52 | * Add wait when linking library with \*.resp file in [fpm#808](https://github.com/fortran-lang/fpm/pull/808) 53 | * Add option to enforce module naming in [fpm#828](https://github.com/fortran-lang/fpm/pull/828) 54 | * Fix unhandled error branch in [fpm#849](https://github.com/fortran-lang/fpm/pull/849) 55 | * Automated dependency tree update in [fpm#843](https://github.com/fortran-lang/fpm/pull/843) 56 | * Return program's exit code from fpm run in [fpm#852](https://github.com/fortran-lang/fpm/pull/852) and [fpm#](https://github.com/fortran-lang/fpm/pull/858) 57 | * Update gcc version to 10 for CI in [fpm#857](https://github.com/fortran-lang/fpm/pull/857) 58 | * Fix macOS CI for fpm-bootstrap executables built with gcc-9 in [fpm#861](https://github.com/fortran-lang/fpm/pull/861) 59 | * Update TOML Fortran to version 0.4.0 in [fpm#862](https://github.com/fortran-lang/fpm/pull/862) 60 | * Add support for toggling Fortran features in [fpm#864](https://github.com/fortran-lang/fpm/pull/864) 61 | * Add global configuration file and support local and remote registry [fpm#817](https://github.com/fortran-lang/fpm/pull/817) 62 | -------------------------------------------------------------------------------- /pages/tutorial/dependencies.md: -------------------------------------------------------------------------------- 1 | # Adding dependencies 2 | 3 | This tutorial covers the usage of dependencies with fpm and how to reuse existing fpm projects. 4 | 5 | ## Using the standard library 6 | 7 | We start with a new project with fpm, we want to build a command line application to read a file, find a certain pattern and replace it. 8 | Since we do not want to write the replace function ourselves, we will use the Fortran standard library ([stdlib](https://github.com/fortran-lang/stdlib)) as dependency. 9 | In the package manifest we define *stdlib* in the *dependencies* table: 10 | 11 | ```{literalinclude} ../../src/tutorial/dependencies/fpm.toml 12 | :language: toml 13 | :caption: fpm.toml 14 | :lines: 1-6 15 | :emphasize-lines: 4-6 16 | ``` 17 | 18 | Now we create a module with a procedure to perform the substitution. 19 | It requires three steps: 20 | 21 | 1. reading a whole line from one unit 22 | 2. replace the pattern in the string 23 | 3. write the new string to an output 24 | 25 | We will use the *replace\_all* function from the *stdlib\_strings* module for this purpose. 26 | The implementation is shown here 27 | 28 | ```{literalinclude} ../../src/tutorial/dependencies/src/demo.f90 29 | :language: fortran 30 | :caption: src/demo.f90 31 | ``` 32 | 33 | Finally, we need a command line driver to make use of our new function. 34 | 35 | ```{code-block} fortran 36 | :caption: app/main.f90 37 | program main 38 | use, intrinsic :: iso_fortran_env, only : output_unit 39 | use demo, only : substitute 40 | implicit none 41 | character(len=256) :: pattern, replacement, input_file 42 | integer :: input 43 | 44 | call get_command_argument(1, pattern) 45 | call get_command_argument(2, replacement) 46 | call get_command_argument(3, input_file) 47 | 48 | open(newunit=input, file=input_file, status='old') 49 | call substitute(input, output_unit, trim(pattern), trim(replacement)) 50 | close(input) 51 | end program main 52 | ``` 53 | 54 | We can check our command line driver by running it with fpm: 55 | 56 | ```{code-block} text 57 | :emphasize-lines: 2 58 | ❯ fpm run -- demo substitute fpm.toml 59 | name = "substitute" 60 | version = "0.1.0" 61 | 62 | [dependencies] 63 | stdlib = "*" 64 | ``` 65 | 66 | 67 | ## Adding a testing framework 68 | 69 | Before we continue implementing new features, we want to add some tests to verify that our implementation keeps working as we modify it. 70 | A minimalist testing framework is available with [test-drive]. 71 | Since the testing framework is only required when developing the package itself, but not for other packages which might in the future make use of our modules, we add it as a development dependency. 72 | The *test-drive* package is added in the *dev-dependencies* table as shown below 73 | 74 | [test-drive]: https://github.com/fortran-lang/test-drive 75 | 76 | ```{literalinclude} ../../src/tutorial/dependencies/fpm.toml 77 | :language: toml 78 | :caption: fpm.toml 79 | :lines: 1-10 80 | :emphasize-lines: 7-9 81 | ``` 82 | 83 | :::{note} 84 | For a development dependency like a testing framework we choose a strict version pin by specifying the *tag* we want to use. 85 | ::: 86 | 87 | Now we can write a simple unit test, since our function works with units, we will create scratch units to create the input and capture the output. 88 | For now we will add a simple one line substitution as single test case 89 | 90 | ```{literalinclude} ../../src/tutorial/dependencies/test/main.f90 91 | :language: fortran 92 | :caption: test/main.f90 93 | ``` 94 | 95 | We run our new test using fpm 96 | 97 | ```{code-block} text 98 | ❯ fpm test 99 | Starting substitute ... (1/1) 100 | ... substitute [PASSED] 101 | ``` 102 | 103 | Creating the scratch units for multiple unit tests will be repetitive, this kind of tasks can usually be done in a separate procedure and reused in several tests. 104 | 105 | 106 | ## Target-specific dependencies 107 | 108 | Dependencies can also be used for specific targets only. 109 | This can be used for adding a command line interface package, which is only used for the executable but not part of the library dependencies. 110 | 111 | ```{literalinclude} ../../src/tutorial/dependencies/fpm.toml 112 | :language: toml 113 | :caption: fpm.toml 114 | :emphasize-lines: 13-14 115 | ``` 116 | 117 | We restructure our main program a bit for using [M\_CLI2] to handle the command line input. 118 | The *unnamed* array contains all positional command line arguments, we still use the first two as pattern and replacement, and use all remaining arguments as input. 119 | We also add an option to redirect the output. 120 | Our final main program looks like 121 | 122 | [M\_CLI2]: https://github.com/urbanjost/M_CLI2 123 | 124 | ```{literalinclude} ../../src/tutorial/dependencies/app/main.f90 125 | :language: fortran 126 | :caption: app/main.f90 127 | ``` 128 | 129 | Again we run a quick check using fpm 130 | 131 | ```{code-block} text 132 | :emphasize-lines: 2, 12 133 | ❯ fpm run -- demo substitute fpm.toml 134 | name = "substitute" 135 | version = "0.1.0" 136 | 137 | [dependencies] 138 | stdlib = "*" 139 | 140 | [dev-dependencies] 141 | test-drive.git = "https://github.com/fortran-lang/test-drive" 142 | test-drive.tag = "v0.4.0" 143 | 144 | [[executable]] 145 | name = "substitute" 146 | [executable.dependencies] 147 | M_CLI2.git = "https://github.com/urbanjost/M_CLI2" 148 | ``` 149 | 150 | The output looks as expected with two substitutions. 151 | 152 | 153 | :::{admonition} Summary 154 | :class: tip 155 | In this tutorial you learned how to 156 | 157 | - depend on another fpm project in the package manifest 158 | - add development dependencies for testing 159 | - use dependencies for executables 160 | ::: 161 | -------------------------------------------------------------------------------- /pages/how-to/selective-cleaning.md: -------------------------------------------------------------------------------- 1 | # Cleaning build artifacts with fpm 2 | 3 | The `fpm clean` command allows you to remove build artifacts to free up disk space or ensure a fresh build. This guide covers both general cleaning and selective cleaning options. 4 | 5 | ## Overview 6 | 7 | By default, `fpm clean` prompts for confirmation before deleting directories in the `build/` folder while preserving dependencies. The command supports several modes of operation: 8 | 9 | - **Interactive cleaning** (default): Prompts for confirmation 10 | - **Automatic cleaning**: Skip prompts with `--skip` or `--all` 11 | - **Selective cleaning** *(fpm v0.14.0+)*: Target specific executable types 12 | - **Registry cache cleaning**: Remove cached registry data 13 | 14 | ## General cleaning options 15 | 16 | ### Default behavior 17 | 18 | ```bash 19 | fpm clean 20 | ``` 21 | 22 | Prompts for confirmation before deleting build artifacts, excluding dependencies. This is the safest option for regular use. 23 | 24 | ### Skip confirmation, preserve dependencies 25 | 26 | ```bash 27 | fpm clean --skip 28 | ``` 29 | 30 | Deletes build directories without prompting but preserves dependency builds. Useful in automated scripts where you want to clean your project but keep external dependencies intact. 31 | 32 | ### Clean everything including dependencies 33 | 34 | ```bash 35 | fpm clean --all 36 | ``` 37 | 38 | Deletes all build directories without prompting, including dependencies. Use this when you need a completely fresh build environment or when dependency issues require rebuilding everything from scratch. 39 | 40 | ### Clean registry cache 41 | 42 | ```bash 43 | fpm clean --registry-cache 44 | ``` 45 | 46 | Removes cached registry data. Useful when registry metadata becomes stale or when troubleshooting package resolution issues. 47 | 48 | ### Custom configuration file 49 | 50 | ```bash 51 | fpm clean --config-file /path/to/config.toml 52 | ``` 53 | 54 | Use a custom global configuration file location for the clean operation. 55 | 56 | ## Selective cleaning options 57 | 58 | :::{note} 59 | Available since fpm v0.14.0 60 | ::: 61 | 62 | Selective cleaning allows you to remove only specific types of executables, which speeds up recompilation by preserving other build outputs. 63 | 64 | ### Available selective cleaning flags 65 | 66 | - `--test`: Clean only test executables 67 | - `--apps`: Clean only application executables 68 | - `--examples`: Clean only example executables 69 | 70 | ### Selective cleaning examples 71 | 72 | #### Clean test executables only 73 | 74 | ```bash 75 | fpm clean --test 76 | ``` 77 | 78 | This removes only the compiled test executables while preserving application executables, example executables, and all object files. Useful when you've modified test code and want to ensure tests are rebuilt from scratch. 79 | 80 | #### Clean application executables only 81 | 82 | ```bash 83 | fpm clean --apps 84 | ``` 85 | 86 | This removes only the compiled application executables while preserving test executables, example executables, and object files. Useful when you've made changes that affect only your main applications. 87 | 88 | #### Clean example executables only 89 | 90 | ```bash 91 | fpm clean --examples 92 | ``` 93 | 94 | This removes only the compiled example executables while preserving application and test executables, and object files. Useful when working on documentation examples. 95 | 96 | ### Combining selective flags 97 | 98 | You can combine multiple flags to clean several types of executables simultaneously: 99 | 100 | ```bash 101 | # Clean both test and application executables 102 | fpm clean --test --apps 103 | 104 | # Clean all executable types (equivalent to targeting all executables) 105 | fpm clean --test --apps --examples 106 | ``` 107 | 108 | ## Use cases and workflows 109 | 110 | ### Common scenarios 111 | 112 | #### Debugging failing tests 113 | 114 | When tests are failing and you suspect cached executables might be the issue: 115 | 116 | ```bash 117 | fpm clean --test 118 | fpm test 119 | ``` 120 | 121 | This ensures test executables are rebuilt from scratch while preserving your application builds. 122 | 123 | #### Preparing for release 124 | 125 | Before building release versions of your applications: 126 | 127 | ```bash 128 | fpm clean --apps 129 | fpm build --release 130 | ``` 131 | 132 | This ensures your applications are built fresh while preserving test and example builds for ongoing development. 133 | 134 | ### Working on examples 135 | 136 | When updating documentation examples: 137 | 138 | ```bash 139 | fpm clean --examples 140 | fpm run --example my_example 141 | ``` 142 | 143 | This rebuilds only the example you're working on without affecting your main application or tests. 144 | 145 | ### Managing disk space efficiently 146 | 147 | For large projects where full rebuilds are time-consuming: 148 | 149 | ```bash 150 | # Clean only what you're currently working on 151 | fpm clean --test # If working on tests 152 | fpm clean --apps # If working on applications 153 | fpm clean --examples # If working on examples 154 | ``` 155 | 156 | ## Command reference 157 | 158 | ### Complete option summary 159 | 160 | | Command | What gets removed | Dependencies | Prompts | Use when | 161 | |---------|------------------|--------------|---------|----------| 162 | | `fpm clean` | All build artifacts | Preserved | Yes | Safe interactive cleaning | 163 | | `fpm clean --skip` | All build artifacts | Preserved | No | Automated scripts, preserve deps | 164 | | `fpm clean --all` | All build artifacts | Removed | No | Fresh start, dependency issues | 165 | | `fpm clean --registry-cache` | Registry cache only | N/A | No | Registry troubleshooting | 166 | | `fpm clean --test` | Test executables only | Preserved | Variable | Test-specific issues | 167 | | `fpm clean --apps` | Application executables only | Preserved | Variable | Application changes | 168 | | `fpm clean --examples` | Example executables only | Preserved | Variable | Documentation updates | 169 | 170 | ### Combining options 171 | 172 | You can combine general and selective cleaning options: 173 | 174 | ```bash 175 | # Clean test and apps without prompting, preserve dependencies 176 | fpm clean --skip --test --apps 177 | 178 | # Clean everything including dependencies and registry cache 179 | fpm clean --all --registry-cache 180 | ``` 181 | 182 | ## Performance benefits 183 | 184 | Selective cleaning provides several advantages: 185 | 186 | - **Faster rebuilds**: Preserves object files and unmodified executables 187 | - **Targeted workflow**: Clean only what you're working on 188 | - **Disk space management**: Remove executables while keeping compiled objects 189 | - **Parallel development**: Different team members can clean different components 190 | 191 | ## Best practices 192 | 193 | 1. **Use selective cleaning during development**: Avoid full `fpm clean` unless necessary 194 | 2. **Clean specific targets when troubleshooting**: If tests fail, try `fpm clean --test` first 195 | 3. **Combine with build flags**: `fpm clean --apps && fpm build --release` for release builds 196 | 4. **Clean examples regularly**: Examples often have different build requirements than main code 197 | 198 | :::{tip} 199 | If you're unsure which executables to clean, start with the most specific flag (e.g., `--test` if working on tests) and escalate to broader cleaning only if needed. 200 | ::: -------------------------------------------------------------------------------- /pages/spec/metapackages.md: -------------------------------------------------------------------------------- 1 | # Built-in dependencies ("Metapackages") 2 | 3 | :::{note} 4 | Metapackages are experimental! Please help us improve them by submitting issues to the [fpm repository](https://github.com/fortran-lang/fpm). 5 | ::: 6 | 7 | Most real-world applications require dependencies that are not self-contained Fortran packages; but rather involve libraries with system-dependent installation steps, often provided with multiple language interfaces. 8 | As of 0.8.3, `fpm` supports the automated discovery, and binding, of a subset of such libraries to packages via the `metapackage` feature. 9 | 10 | Metapackages can be enabled in the manifest in the `[dependencies]` section, just by recalling their name. Here is how one enables OpenMP in a package: 11 | 12 | ```{code-block} toml 13 | :emphasize-lines: 2 14 | name = "my_openmp_package" 15 | dependencies.openmp = "*" 16 | ``` 17 | 18 | which is equivalent to 19 | 20 | ```{code-block} toml 21 | :emphasize-lines: 3 22 | name = "my_openmp_package" 23 | [dependencies] 24 | openmp = "*" 25 | ``` 26 | 27 | :::{note} 28 | Metapackages are enabled using the `"*"` wildcard, meaning _any version_, not with a boolean flag. Version requirements are not yet supported and will be introduced in a future release. 29 | ::: 30 | 31 | Several pre-built examples can be found in `fpm`'s `example_packages/metapackage_*` folders under the fpm installation directory. 32 | 33 | ## fortran-lang Standard Library (stdlib) 34 | 35 | This dependency automatically downloads the latest release of the [fortran-lang standard library](https://stdlib.fortran-lang.org) and adds it to the project as a git dependency. 36 | 37 | ```toml 38 | name = "with_stdlib" 39 | dependencies.stdlib = "*" 40 | ``` 41 | 42 | Starting with **fpm version 0.12.0**, if both the `stdlib` and `blas` metapackages are enabled, the standard library will be configured to link against the external BLAS/LAPACK implementation provided by the `blas` metapackage. 43 | 44 | When this configuration is active, the following preprocessor macros are automatically defined: 45 | 46 | * `STDLIB_EXTERNAL_BLAS` 47 | * `STDLIB_EXTERNAL_LAPACK` 48 | 49 | These macros disable internal fallback routines in `stdlib` and enable use of the external BLAS/LAPACK library. 50 | 51 | To enable this setup: 52 | 53 | ```toml 54 | [dependencies] 55 | stdlib = "*" 56 | blas = "*" 57 | ``` 58 | 59 | An example is provided in: 60 | 61 | [`example_packages/metapackage_stdlib_extblas`](https://github.com/fortran-lang/fpm/tree/main/example_packages/metapackage_stdlib_extblas) 62 | 63 | ## fortran-lang MINPACK 64 | 65 | This dependency automatically downloads the release v2.0.0-rc1 of the modernized [fortran-lang MINPACK](https://github.com/fortran-lang/minpack) and adds it to the project as a git dependency. 66 | 67 | ```{code-block} toml 68 | :emphasize-lines: 2 69 | name = "with_minpack" 70 | dependencies.minpack = "*" 71 | ``` 72 | 73 | ## OpenMP 74 | 75 | This dependency automatically adds appropriate compiler flags to enable OpenMP support compiling and running fpm targets. 76 | 77 | ```{code-block} toml 78 | :emphasize-lines: 2 79 | name = "my_openmp_package" 80 | dependencies.openmp = "*" 81 | ``` 82 | 83 | ## MPI 84 | 85 | ```{code-block} toml 86 | :emphasize-lines: 2 87 | name = "my_parallel_app" 88 | dependencies.mpi = "*" 89 | ``` 90 | 91 | MPI is supported for Fortran, C and C++ languages. `fpm` will perform system-specific steps to find and match available MPI libraries on your system with the `fpm` compiler. 92 | `fpm` will first search for standard MPI compiler wrappers (`mpifort`, `mpif90`, `mpif77`, `mpicc`, `mpicxx`, ...), then try to match them with the current `fpm` compiler for Fortran, C and C++. 93 | 94 | If no wrappers are available in your path, they can be enabled setting environment variables `MPICC`, `MPICXX`, `MPIFC`, `MPIF90` or `MPIF77` in your shell. 95 | For IntelMPI, fpm will also look up environment variables `I_MPI_CC`, `I_MPI_CXX` and `I_MPI_f90` for wrappers as well as `I_MPI_ROOT`. 96 | When a wrapper-compiler match is found, its queried to retrieve the appropriate compiler and runner commands, as well as build and link flags. 97 | 98 | Special steps are taken on Windows for the MSMPI package. the [MS-MPI SDK](https://learn.microsoft.com/en-us/message-passing-interface/microsoft-mpi) should be installed to enable building projects with MS-MPI support. 99 | Furthermore, MS-MPI is only available in combination with the [MSYS2](https://www.msys2.org) GNU compiler suite and [pre-built Fortran modules](https://packages.msys2.org/package/mingw-w64-x86_64-msmpi) for MS-MPI. 100 | The MS-MPI installation is looked up through the `MSMPI_BIN` environment variable, by searching for `mpiexec.exe` in the local path, or in the default folder, `C:\Program Files\Microsoft MPI\Bin\`. 101 | 102 | MPI applications can be run manually using `mpirun` or `mpiexec`, or directly via fpm using the `fpm run` command. In the latter case, the MPI runner will use the default number of processes on the current node. 103 | To customize the MPI runner command, the `--runner` and `--runner-args` options should be used, for example: 104 | 105 | ```{code-block} 106 | ./fpm run --runner=" sbatch script.sh" 107 | ./fpm run --runner-args=" -np 12 -N 2" 108 | ``` 109 | 110 | Note that `--runner` can be used to override the default runner command (`mpiexec` or `mpirun`), while `--runner-args` should be used to pass arguments to the runner itsef, e.g., the number of processes. 111 | 112 | Currently verified system configurations are: 113 | - MacOS/x86_64 + GCC + OpenMPI (via brew) 114 | - MacOS/x86_64 + GCC + MPICH (via brew) 115 | - Linux/x86_64 + GCC + OpenMPI (via apt) 116 | - Linux/x86_64 + GCC + MPICH (via apt) 117 | - Linux/x86_64 + Intel + IntelMPI (via apt) 118 | - Windows/x86_64 + MinGW + MSMPI (via msys2) 119 | - Windows/x86_64 + Intel oneAPI + IntelMPI (via offline installer) 120 | 121 | :::{note} 122 | MPI C++ support on macOS is missing because homebrew is built with `clang`, whose C++ ABI is incompatible with the GNU C++ ABI needed to link against gfortran. 123 | ::: 124 | 125 | ## HDF5 126 | 127 | ```{code-block} toml 128 | :emphasize-lines: 2 129 | name = "my_science_app" 130 | dependencies.hdf5 = "*" 131 | ``` 132 | 133 | HDF5 is supported for Fortran, C and C++ languages. The `pkg-config` backend is employed by `fpm` to find a valid local HDF5 installation, so, please ensure that `pkg-config` is also available when using this metapackage. 134 | 135 | Both the default and the high-level (`HL`) interfaces are linked against if available. 136 | - On Ubuntu, special steps are taken to ensure `HL` are added. 137 | - On Ubuntu with oneAPI compilers, `CMake` HDF5 installations are supported (`apt` versions only support `gfortran`). 138 | 139 | :::{note} 140 | Codes using HDF5 built with `oneAPI` compilers should not have the `-standard-semantics` flag: it changes module name mangling from `_mp_` to `_MP_` which makes HDF5 modules unavailable. 141 | ::: 142 | 143 | 144 | ## NetCDF 145 | 146 | ```{code-block} toml 147 | :emphasize-lines: 2 148 | name = "my_geoscience_app" 149 | dependencies.netcdf = "*" 150 | ``` 151 | 152 | The `netcdf` metapackage will automatically link against the NetCDF Fortran and C libraries. 153 | It exposes the `netcdf` module for Fortran90, `netcdf_f03` and `netcdf4_f03` for 154 | Fortran 2003, as well as the underlying lower-level modules. Similar to HDF5, `fpm` 155 | uses `pkg-config` to find a valid local NetCDF installation. 156 | 157 | 158 | ## BLAS 159 | 160 | ```{code-block} toml 161 | :emphasize-lines: 2 162 | name = "my_linear_algebra_app" 163 | dependencies.blas = "*" 164 | ``` 165 | 166 | The `blas` metapackage will automatically discover and link against BLAS libraries. 167 | The search order is `Apple Accelerate`, `Intel MKL`, `OpenBLAS` and finally usual `BLAS`. 168 | ======= 169 | -------------------------------------------------------------------------------- /pages/registry/naming.md: -------------------------------------------------------------------------------- 1 | # Module name requirements 2 | 3 | :::{note} 4 | Module naming requirements only apply to packages which are uploaded to a fpm registry; by default, no naming rules are enforced for local fpm projects. 5 | ::: 6 | 7 | :::{note} 8 | TL;DR Always prefix all your module names with a standardized package prefix. 9 | - A default prefix (package name + double underscore: `my_package__*`) is always reserved by the registry 10 | - A custom prefix (no-symbols + single underscore: `mypkg_*`) can be specified, but it is subject to not being reserved in the registry yet. 11 | - Set default (`module-naming=true`) or custom (`module-naming="mypfx"`) prefix in `fpm.toml` `[build]`. 12 | ::: 13 | 14 | The Fortran language does not support namespaces. This means that all public names (modules, but also global subroutines and functions) must be unique in the build space. 15 | Any build that contains duplicate names will fail because it is impossible to resolve a name to a unique object. 16 | For this reason, fpm by default requires all packages to comply with simple naming conventions that apply to both the package name and its modules. 17 | 18 | 19 | ## Fortran names: general rules 20 | 21 | As of Fortran 2003 onward, valid Fortran names need to comply with the following rules: 22 | 23 | - Up to 63 characters long; 24 | - Letters are case insensitive; 25 | - Must begin with a letter; 26 | - Only alphanumeric characters (letters, numbers) and underscores `_` are allowed. 27 | 28 | *Examples of invalid Fortran names:* 29 | 30 | ```{code-block} fortran 31 | 1_package ! Begins with # 32 | package$ ! Contains invalid symbol 33 | _package ! Does not begin with letter 34 | my package ! Contains space 35 | ``` 36 | 37 | *Examples of valid Fortran names:* 38 | 39 | ```{code-block} fortran 40 | my_module ! Case insensitive: all versions valid, 41 | My_Module ! but resolving to the same object 42 | MY_MODULE 43 | MyModule 44 | mypackage 45 | package_module ! Underscores allowed 46 | my_package_123 47 | ``` 48 | 49 | ## fpm registry names: rules for packages and modules 50 | 51 | To reduce the chance of name collisions, any Fortran module name in a package must begin with a unique prefix. 52 | Two options are offered. 53 | 54 | ### Default Module names 55 | 56 | The default option is always valid for all packages, as it is uniquely bound to the package name. It features a fortrannized package name, followed by a double underscore, with these rules: 57 | 58 | 1. Must begin with their package name; 59 | 2. The ``default separator`` `__` between the package name chunk and what follows must be used; 60 | 3. Neither the module nor the package name shall contain the default separator sequence elsewhere. 61 | 62 | :::{note} 63 | The default separator is a *double* underscore, single underscores are allowed anywhere except at the end of a package name. 64 | ::: 65 | 66 | *Valid enforced module names* 67 | 68 | When the naming conventions are enforced, these are example modules in a package named `my_pkg` to illustrate the rules: 69 | 70 | ```{code-block} fortran 71 | 72 | module my_pkg ! Global API 73 | module my_pkg__1 ! We can now number them 74 | module my_pkg__123 75 | module my_pkg__core 76 | module my_pkg__utils 77 | module my_pkg__with_very_long_name 78 | ``` 79 | 80 | *Invalid enforced module names* 81 | 82 | Considering the same package `my_pkg`, the following names will be invalid according to the naming rules: 83 | 84 | ```{code-block} fortran 85 | 86 | module my_pkg__ ! Nothing follows the separator 87 | module my_pkg__1__2 ! Separator must be unique 88 | module my_pkg__90123456789012345678901234567890123456789012345678901234 ! 64 chars: too long 89 | module my_pkg__util$ ! non-Fortran name 90 | ``` 91 | 92 | ### Custom Module names 93 | 94 | Optionally, one can specify a custom prefix for the package's modules. The custom prefix must be: 95 | 96 | 1. A valid Fortran name; 97 | 2. Alphanumeric only characters (no spaces, symbols, dashes, underscores allowed). 98 | 99 | Different from the default option, a custom prefix needs to be validated by the registry, which keeps a 100 | list of unique custom prefixes to prevent name collisions. 101 | 102 | Module names with the custom prefix are followed by a ``single underscore`` `_`, which makes this option more flexible and backward compatible with existing packages. 103 | When a custom module prefix is specified, the default one is still available. Considering for example a package named `date-time`, with chosen prefix `dt`, the following are all valid module names: 104 | 105 | ```{code-block} fortran 106 | 107 | module date_time ! Same as package name 108 | module dt ! Same as custom prefix 109 | module date_time__utils ! use standard naming -> double underscore 110 | module dt_utils ! custom prefix -> single underscore 111 | module dt_123 ! custom prefix 112 | module dt_1 113 | module dt__1 ! also valid 114 | ``` 115 | 116 | ### Package names 117 | 118 | All packages in FPM registries must have unique names, hence they must abide to the following rules 119 | 120 | 1. All package names shall be valid Fortran names; 121 | 2. Dash characters (`-`) are also allowed, and are treated by fpm as underscores; 122 | 3. Package names may contain uppercase and lowercase characters, but their unique identification is made case insensitive; 123 | 4. No duplicate package names are allowed within the same namespace. 124 | 125 | *Examples of valid package names:* 126 | 127 | ```{code-block} fortran 128 | my_package ! 1 underscore allowed 129 | My_Package ! same as the former 130 | mypackage123 ! Numbers OK 131 | my-package ! Will be read by fpm as "my_package" 132 | ``` 133 | 134 | *Examples of invalid package names:* 135 | 136 | ```fortran 137 | my__package ! Contains package__module separator 138 | package__ ! Contains separator 139 | package_ ! Ends with underscore 140 | my pac$age ! Spaces and all symbols besides `_` not allowed 141 | _my_package ! Does not begin with letter 142 | 123package ! Does not begin with letter 143 | ``` 144 | 145 | ## Manifest Settings 146 | 147 | :::{note} 148 | Key facts: 149 | - FPM does not apply naming requirements by default. If you want them, enable them in `fpm.toml` 150 | - FPM registries mandatorily require them. Ensure `fpm.toml` enables them. 151 | - Enable standard prefix with `module-naming=true`, custom prefix with `module-naming="prefixname"`. 152 | ::: 153 | 154 | Module naming requirements can be enabled in `fpm.toml` under the `build` section, using the boolean flag `module-naming`. 155 | By default, `module-naming = false`, so no registry name enforcing is checked during the build. 156 | 157 | *Example:* 158 | 159 | ```{code-block} toml 160 | :emphasize-lines: 5 161 | [build] 162 | auto-executables = true 163 | auto-examples = false 164 | auto-tests = false 165 | module-naming = true # Use default naming convention 166 | external-modules = "netcdf" 167 | ``` 168 | 169 | ```{code-block} toml 170 | :emphasize-lines: 5 171 | [build] 172 | auto-executables = true 173 | auto-examples = false 174 | auto-tests = false 175 | module-naming = "tomlf" # Use custom prefix, "tomlf" 176 | external-modules = "netcdf" 177 | ``` 178 | 179 | ## Guidelines 180 | 181 | :::{note} 182 | These are non-mandatory styling suggestions to improve code readability and uniformity. 183 | ::: 184 | 185 | It's recommended that the public API of each package is contained in a top-level module, whose name is same as the package name. 186 | For example, assuming a package ``DateTime`` deals with time and date in Fortran, one could have several modules deal with parts of it: 187 | 188 | ```{code-block} fortran 189 | module datetime__dates ; end module 190 | module datetime__time ; end module 191 | module datetime__julian; end module 192 | ``` 193 | 194 | and a unique public API that's contained in the top-level module: 195 | 196 | ```{code-block} fortran 197 | module datetime 198 | use datetime__dates, only: [...] 199 | use datetime__time, only: [...] 200 | use datetime__julian, only: [...] 201 | implicit none(type,external) 202 | private 203 | 204 | ! Publish API 205 | public :: sub_1 206 | public :: fun_123 207 | 208 | end module datetime 209 | ``` 210 | 211 | ## References 212 | 213 | [1] Metcalf, Reid, Cohen, "[Modern Fortran Explained](https://dl.acm.org/doi/book/10.5555/2090092)", Oxford University Press. 214 | 215 | [2] [Style Guide for Python Code](https://peps.python.org/pep-0008/#package-and-module-names) 216 | 217 | -------------------------------------------------------------------------------- /pages/install/index.md: -------------------------------------------------------------------------------- 1 | (install)= 2 | 3 | # Installing fpm 4 | 5 | This how-to guide covers the installation of the Fortran Package Manager (fpm) on various platforms. 6 | 7 | ## {fab}`apple` {fab}`linux` {fab}`windows` Download binaries 8 | 9 | Binaries for macOS, Linux, and Windows (all on x86-64) are available for download for each release of fpm, as well as the latest (bleeding edge) release which mirrors the latest commit in the main branch of fpm. 10 | 11 | Navigate to [fpm releases](https://github.com/fortran-lang/fpm/releases) to see all available releases. 12 | The downloadable files are available at the bottom of each release section under *Assets*. 13 | Click on the appropriate link based on your OS. 14 | For example, to download a macOS fpm binary, click on the link that has *macos* in its name. 15 | After downloading, you will need to make your binary executable. 16 | On Linux and macOS, you can do this by typing 17 | 18 | ```{code-block} bash 19 | chmod +x fpm-0.5.0-linux-x86_64 20 | ``` 21 | 22 | Optionally, place the binary in a directory that is globally accessible (*i.e.* in the ``PATH`` environment variable on Linux and macOS). 23 | You can also rename the binary to just *fpm* for easier use. 24 | 25 | For Windows, both a self-contained binary and a Windows Installer for fpm are available. 26 | 27 | :::{note} 28 | Links that end with ``.sha256`` provide the cryptographic hashes that you can use to verify if the download of your binary was successful. 29 | To verify the integrity of the downloaded binary the checksum can be computed locally and compared with the one provided in the release 30 | 31 | ```{code-block} text 32 | ❯ openssl sha256 -r fpm-0.5.0-linux-x86_64 33 | 387782f29b19eb6fbf14dd5cef76907a4c9cb6d20726d5508a78225ccd131ca8 *fpm-0.5.0-linux-x86_64 34 | ❯ cat fpm-0.5.0-linux-x86_64.sha256 35 | 387782f29b19eb6fbf14dd5cef76907a4c9cb6d20726d5508a78225ccd131ca8 fpm-0.5.0-linux-x86_64 36 | ``` 37 | 38 | If the checksums mismatch, the download was most likely incomplete and the binary non-functional. 39 | In this case, retry the download of the binary and confirm that the checksums match. 40 | ::: 41 | 42 | 43 | ## {fab}`windows` MSYS2 package manager 44 | 45 | [![MSYS2 mingw package](https://repology.org/badge/version-for-repo/msys2_mingw/fpm-fortran-package-manager.svg)](https://packages.msys2.org/base/mingw-w64-fpm) 46 | 47 | The [MSYS2 project](https://www.msys2.org) provides a package manager and makes many common Unix tools available for Windows. 48 | 49 | :::{note} 50 | To install download the ``msys2-x86_64-YYYYMMDD.exe`` installer from the MSYS2 webpage and run it. 51 | MSYS2 will create several new desktop shortcuts, like *MSYS terminal*, *MinGW64 terminal* and *UCRT64 terminal* (more information on MSYS2 terminals are available [here](https://www.msys2.org/docs/terminals/)). 52 | 53 | The Fortran Package Manager is supported for the *UCRT64*, *MinGW64*, or *MinGW32* terminal. 54 | ::: 55 | 56 | Open a new terminal and update your installation with 57 | 58 | ```{code-block} bash 59 | pacman -Syu 60 | ``` 61 | 62 | You might have to update MSYS2 and ``pacman`` first, restart the terminal and run the above command again to update the installed packages. 63 | 64 | If you are using the *MinGW64 terminal* you can install the required software with 65 | 66 | ```{code-block} bash 67 | pacman -S git mingw-w64-x86_64-gcc-fortran mingw-w64-x86_64-fpm 68 | ``` 69 | 70 | :::{tip} 71 | Both *git* and *gfortran* are not mandatory dependencies for running fpm. 72 | If you provide *git* and *gfortran* from outside they will get picked up as well. 73 | ::: 74 | 75 | 76 | ## {fab}`apple` Homebrew package manager 77 | 78 | The Fortran Package Manager (fpm) is available for the [homebrew](https://brew.sh) package manager on MacOS via an additional tap. 79 | To install fpm via brew, include the new tap and install it using 80 | 81 | ```{code-block} bash 82 | brew tap fortran-lang/homebrew-fortran 83 | brew install fpm 84 | ``` 85 | 86 | Binary distributions are available for MacOS 11 (Catalina) and 12 (Big Sur) for x86\_64 architectures. 87 | For other platforms fpm will be built locally from source automatically. 88 | 89 | Fpm should be available and functional after those steps. 90 | 91 | 92 | ## {fab}`apple` Macports 93 | 94 | [![MacPorts package](https://repology.org/badge/version-for-repo/macports/fpm-fortran-package-manager.svg)](https://ports.macports.org/port/fpm/) 95 | 96 | The Fortran Package Manager (fpm) is available via [macports](https://www.macports.org/) and can be installed with 97 | 98 | ```{code-block} bash 99 | sudo port install fpm 100 | ``` 101 | 102 | Fpm should be available and functional after those steps. 103 | 104 | 105 | ## {fab}`apple` {fab}`linux` pip package manager 106 | 107 | [![PyPI](https://img.shields.io/pypi/v/fpm?label=pypi%20package)](https://pypi.org/project/fpm) 108 | ![PyPI - Downloads](https://img.shields.io/pypi/dm/fpm) 109 | 110 | Fpm is available on [PyPI] and may be installed with [pipx] with: 111 | 112 | ```{code-block} bash 113 | pipx install fpm 114 | ``` 115 | 116 | The use of [pipx] instead of `pip` allows automatically managing a dedicated virtual environment without potential clashes with the host operating system. 117 | 118 | :::{note} 119 | The `pipx` package manager can be installed from [sources](https://github.com/pypa/pipx) 120 | or from the package manager of your distribution. 121 | ::: 122 | 123 | [pipx]: https://github.com/pypa/pipx 124 | [PyPI]: https://pypi.org/ 125 | 126 | 127 | ## {fab}`apple` {fab}`linux` Conda package manager 128 | 129 | [![Conda (channel only)](https://img.shields.io/conda/vn/conda-forge/fpm)](https://github.com/conda-forge/fpm-feedstock) 130 | 131 | Fpm is available on [conda-forge], to add conda-forge to your channels use: 132 | 133 | ```{code-block} bash 134 | conda config --add channels conda-forge 135 | ``` 136 | 137 | Fpm can be installed with: 138 | 139 | ```{code-block} bash 140 | conda create -n fpm fpm 141 | conda activate fpm 142 | ``` 143 | 144 | Alternatively, if you want fpm to be always available directly install into your current environment with 145 | 146 | ```{code-block} bash 147 | conda install fpm 148 | ``` 149 | 150 | :::{note} 151 | The conda package manager can be installed from [miniforge](https://github.com/conda-forge/miniforge/releases) 152 | or from [miniconda](https://docs.conda.io/en/latest/miniconda.html). 153 | ::: 154 | 155 | [Conda]: https://conda.io 156 | [conda-forge]: https://conda-forge.org/ 157 | 158 | 159 | ## {fab}`apple` {fab}`linux` Spack package manager 160 | 161 | [![Spack package](https://repology.org/badge/version-for-repo/spack/fpm-fortran-package-manager.svg)](https://packages.spack.io/package.html?name=fpm) 162 | 163 | Fpm is available with spack in its develop version. 164 | To install fpm from spack use 165 | 166 | ```{code-block} sh 167 | spack install fpm 168 | ``` 169 | 170 | You can add `+openmp` to enable parallelization of the target compilation in fpm. 171 | To use fpm in your environment load it with 172 | 173 | ```{code-block} sh 174 | spack load fpm 175 | ``` 176 | 177 | For more details check the package information [here](https://spack.readthedocs.io/en/latest/package_list.html#fpm). 178 | 179 | [Spack]: https://spack.io 180 | 181 | 182 | ## {fab}`linux` Arch Linux user repository 183 | 184 | [![AUR version](https://img.shields.io/aur/version/fortran-fpm)](https://aur.archlinux.org/packages/fortran-fpm) 185 | [![AUR version](https://img.shields.io/aur/version/fortran-fpm-bin)](https://aur.archlinux.org/packages/fortran-fpm-bin) 186 | 187 | The Arch Linux user repository (AUR) contains two packages for the Fortran Package Manager (fpm). 188 | With the [fortran-fpm-bin](https://aur.archlinux.org/packages/fortran-fpm-bin/) installs the statically linked Linux/x86\_64 binary from the release page, while the [fortran-fpm](https://aur.archlinux.org/packages/fortran-fpm/) package will bootstrap fpm from source. 189 | 190 | Select one of the PKGBUILDs and retrieve it with 191 | 192 | ```{code-block} bash 193 | git clone https://aur.archlinux.org/fortran-fpm.git 194 | cd fortran-fpm 195 | ``` 196 | 197 | As usual, first inspect the PKGBUILD before building it. 198 | After verifying the PKGBUILD is fine, build the package with 199 | 200 | ```{code-block} bash 201 | makepkg -si 202 | ``` 203 | 204 | Once the build passed pacman will ask to install the fpm package. 205 | 206 | 207 | ## OpenBSD ports 208 | 209 | [![OpenBSD port](https://repology.org/badge/version-for-repo/openbsd/fpm-fortran-package-manager.svg)](https://openports.pl/path/devel/fpm) 210 | 211 | A port for OpenBSD is available in the default port tree. 212 | To install fpm install the *devel/fpm* port with 213 | 214 | ```{code-block} bash 215 | cd /usr/ports/devel/fpm 216 | make install clean 217 | ``` 218 | 219 | 220 | ## {fab}`windows` WinGet 221 | 222 | [![winget package](https://repology.org/badge/version-for-repo/winget/fpm-fortran-package-manager.svg)](https://github.com/microsoft/winget-pkgs/tree/master/manifests/f/FortranLang/fpm) 223 | 224 | The installer provided from the fpm release can be used via [WinGet] to install fpm: 225 | 226 | ```{code-block} powershell 227 | winget install FortranLang.fpm 228 | ``` 229 | 230 | [WinGet]: https://learn.microsoft.com/en-us/windows/package-manager/ 231 | 232 | 233 | ## Building from source 234 | 235 | To build fpm from source get the latest fpm source, either by cloning the repository from GitHub with 236 | 237 | ```{code-block} none 238 | git clone https://github.com/fortran-lang/fpm 239 | cd fpm 240 | ``` 241 | 242 | or by downloading a source tarball from the latest source 243 | 244 | ```{code-block} none 245 | wget https://github.com/fortran-lang/fpm/archive/refs/heads/main.zip 246 | unzip main.zip 247 | cd fpm-main 248 | ``` 249 | 250 | The available install script allows to bootstrap fpm by using just a Fortran compiler, git and network access. 251 | Invoke the script to start the bootstrap build 252 | 253 | ```{code-block} none 254 | ./install.sh 255 | ``` 256 | 257 | Fpm will be installed in ``~/.local/bin/fpm``. 258 | 259 | :::{note} 260 | Building the bootstrapper binary from the single source file version might take a few seconds, which might make the install script look like it is hanging. 261 | ::: 262 | 263 | :::{tip} 264 | The installation location can be adjusted by passing the ``--prefix=/path/to/install`` option. 265 | ::: 266 | 267 | If you can't run the install script, you can perform the bootstrap procedure manually, with the following three steps: 268 | 269 | 1. Download the single source version of fpm 270 | 271 | :::{code-block} none 272 | wget https://github.com/fortran-lang/fpm/releases/download/current/fpm.F90 273 | ::: 274 | 275 | 2. Build a bootstrap binary from the single source version 276 | 277 | :::{code-block} none 278 | mkdir -p build/bootstrap 279 | gfortran -J build/bootstrap -o build/bootstrap/fpm fpm.F90 280 | ::: 281 | 282 | 3. Use the bootstrap binary to build the feature complete fpm version 283 | 284 | :::{code-block} none 285 | ./build/bootstrap/fpm install 286 | ::: 287 | -------------------------------------------------------------------------------- /locale/ja/LC_MESSAGES/news.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) 2021 Fortran programming language community 3 | # This file is distributed under the same license as the fpm package. 4 | # Tomohiro Degawa , 2022. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: fpm \n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2022-08-10 15:13+0200\n" 12 | "PO-Revision-Date: 2022-03-22 20:58+0900\n" 13 | "Last-Translator: 出川智啓 \n" 14 | "Language-Team: degawa \n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=utf-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Generated-By: Babel 2.10.3\n" 19 | 20 | #: ../../pages/news.md:3 21 | msgid "News" 22 | msgstr "新着情報" 23 | 24 | #: ../../pages/news/2021/09-24-fortrancon.md:7 25 | msgid "Fpm at FortranCon 2021" 26 | msgstr "" 27 | 28 | #: ../../pages/news/2021/09-24-fortrancon.md:9 29 | msgid "" 30 | "As part of the Fortran-lang symposium at the FortranCon 2021 we presented" 31 | " the progress on the Fortran implementation of fpm since the last " 32 | "FortranCon. Furthermore, Jakub Jelínek presented his work on the compiler" 33 | " profile support developed in his Google Summer of Code project." 34 | msgstr "" 35 | 36 | #: ../../pages/news/2021/09-24-fortrancon.md:13 37 | #: ../../pages/news/2021/11-10-packagingcon.md:13 38 | msgid "Recording" 39 | msgstr "" 40 | 41 | #: ../../pages/news/2021/09-24-fortrancon.md:15 42 | msgid "The recording of the talk is available at the FortranCon YouTube channel:" 43 | msgstr "" 44 | 45 | #: ../../pages/news/2021/11-10-packagingcon.md:7 46 | msgid "Presenting fpm at PackagingCon 2021" 47 | msgstr "" 48 | 49 | #: ../../pages/news/2021/11-10-packagingcon.md:9 50 | msgid "" 51 | "We are happy to get the chance to present the Fortran Package Manager at " 52 | "the first PackagingCon. The presentation covers the reasons for creating " 53 | "a package manager and build system for Fortran, what we already " 54 | "accomplished with the early prototype, and highlights open questions and " 55 | "future milestones for the fpm development." 56 | msgstr "" 57 | 58 | #: ../../pages/news/2021/11-10-packagingcon.md:15 59 | msgid "" 60 | "The recording of the talk is available at the PackagingCon YouTube " 61 | "channel:" 62 | msgstr "" 63 | 64 | #: ../../pages/news/2021/11-10-packagingcon.md:20 65 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:55 66 | msgid "Feedback" 67 | msgstr "" 68 | 69 | #: ../../pages/news/2021/11-10-packagingcon.md:22 70 | msgid "[Discourse thread](https://fortran-lang.discourse.group/t/1581)" 71 | msgstr "" 72 | 73 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:7 74 | msgid "Fpm version 0.5.0 released" 75 | msgstr "Fpm 0.5.0をリリースしました" 76 | 77 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:9 78 | msgid "" 79 | "We have a large number of bug fixes in this release and made plenty of " 80 | "improvements to the tooling around fpm, like the continuous delivery and " 81 | "the Windows installer. New features include the possibility for better " 82 | "compiler/linker selection and the improved build backend (test are only " 83 | "build when needed, link dependencies are properly tracked)." 84 | msgstr "このリリースには,多くのバグ修正があり,また継続的デリバリやWindowsインストーラといったfpmの周辺ツールに多くの改善が加えられています.新機能として,コンパイラ・リンカの選択の幅が広がり,バックエンドが改善されました.(テストは必要な場合にのみビルドされ,リンクの依存関係は適切に追跡されます)" 85 | 86 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:12 87 | msgid "" 88 | "Find the full release notes [here](https://github.com/fortran-" 89 | "lang/fpm/releases/tag/v0.5.0)." 90 | msgstr "" 91 | "リリースノートの全文は[こちら](https://github.com/fortran-" 92 | "lang/fpm/releases/tag/v0.5.0)をご覧ください." 93 | 94 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:14 95 | msgid "Changes" 96 | msgstr "" 97 | 98 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:16 99 | msgid "" 100 | "tests are only build for fpm test and not by default anymore " 101 | "([#572](https://github.com/fortran-lang/fpm/pull/572))" 102 | msgstr "" 103 | 104 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:17 105 | msgid "" 106 | "environment variables for setting Fortran and C compiler changed " 107 | "([#549](https://github.com/fortran-lang/fpm/pull/549), " 108 | "[#584](https://github.com/fortran-lang/fpm/pull/584))" 109 | msgstr "" 110 | 111 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:18 112 | msgid "" 113 | "add LFortran optimization flag to release profile " 114 | "([#597](https://github.com/fortran-lang/fpm/pull/597))" 115 | msgstr "" 116 | 117 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:21 118 | msgid "New features" 119 | msgstr "" 120 | 121 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:23 122 | msgid "" 123 | "command line arguments for linker, archiver and C-compiler added " 124 | "([#549](https://github.com/fortran-lang/fpm/pull/549))" 125 | msgstr "" 126 | 127 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:26 128 | msgid "Fixes" 129 | msgstr "" 130 | 131 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:28 132 | msgid "" 133 | "tabs are correctly expanded in source file scanning " 134 | "([#521](https://github.com/fortran-lang/fpm/pull/521))" 135 | msgstr "" 136 | 137 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:29 138 | msgid "" 139 | "installer script will use fpm update to avoid stale dependencies " 140 | "([#557](https://github.com/fortran-lang/fpm/pull/557))" 141 | msgstr "" 142 | 143 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:30 144 | msgid "" 145 | "use multiple build output directories depending on link line options " 146 | "([#575](https://github.com/fortran-lang/fpm/pull/575))" 147 | msgstr "" 148 | 149 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:31 150 | msgid "" 151 | "update truncated help text ([#578](https://github.com/fortran-" 152 | "lang/fpm/pull/578))" 153 | msgstr "" 154 | 155 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:32 156 | msgid "" 157 | "fix directory removal in fpm new tests ([#579](https://github.com" 158 | "/fortran-lang/fpm/pull/579))" 159 | msgstr "" 160 | 161 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:33 162 | msgid "" 163 | "use MSVS like commands for Intel compilers on Windows " 164 | "([#590](https://github.com/fortran-lang/fpm/pull/590))" 165 | msgstr "" 166 | 167 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:34 168 | msgid "" 169 | "add critical section to mkdir in backend ([#613](https://github.com" 170 | "/fortran-lang/fpm/pull/613))" 171 | msgstr "" 172 | 173 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:35 174 | msgid "" 175 | "fix modules listing (for install) ([#612](https://github.com/fortran-" 176 | "lang/fpm/pull/612))" 177 | msgstr "" 178 | 179 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:36 180 | msgid "" 181 | "repair --list option and correct obsolete descriptions of the --list " 182 | "option ([#607](https://github.com/fortran-lang/fpm/pull/607))" 183 | msgstr "" 184 | 185 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:37 186 | msgid "" 187 | "fix incorrect Intel release flag on Windows ([#602](https://github.com" 188 | "/fortran-lang/fpm/pull/602))" 189 | msgstr "" 190 | 191 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:39 192 | msgid "" 193 | "list names without suffix for Windows ([#595](https://github.com/fortran-" 194 | "lang/fpm/pull/595))" 195 | msgstr "" 196 | 197 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:43 198 | msgid "Repository updates" 199 | msgstr "" 200 | 201 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:45 202 | msgid "" 203 | "add files and workflow to make installer on release " 204 | "([#616](https://github.com/fortran-lang/fpm/pull/616))" 205 | msgstr "" 206 | 207 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:46 208 | msgid "" 209 | "issue templates added to guide reporting of bugs, package issues, feature" 210 | " requests and specification proposals ([#558](https://github.com/fortran-" 211 | "lang/fpm/pull/558))" 212 | msgstr "" 213 | 214 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:47 215 | msgid "" 216 | "default branch renamed to *main* ([#565](https://github.com/fortran-" 217 | "lang/fpm/pull/565))" 218 | msgstr "" 219 | 220 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:48 221 | msgid "" 222 | "update documentation on distributions supporting fpm, like spack and " 223 | "MSYS2 ([#562](https://github.com/fortran-lang/fpm/pull/562))" 224 | msgstr "" 225 | 226 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:49 227 | msgid "" 228 | "new workflow to automatically generate single source fpm versions " 229 | "([#563](https://github.com/fortran-lang/fpm/pull/563))" 230 | msgstr "" 231 | 232 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:50 233 | msgid "" 234 | "continuous delivery of current fpm git source implemented " 235 | "([#569](https://github.com/fortran-lang/fpm/pull/569), " 236 | "[#564](https://github.com/fortran-lang/fpm/pull/564))" 237 | msgstr "" 238 | 239 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:51 240 | msgid "" 241 | "update of bootstrapping instructions ([#587](https://github.com/fortran-" 242 | "lang/fpm/pull/587))" 243 | msgstr "" 244 | 245 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:52 246 | msgid "" 247 | "update README.md compiler, archiver, & link flags " 248 | "([#598](https://github.com/fortran-lang/fpm/pull/598))" 249 | msgstr "" 250 | 251 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:57 252 | msgid "[Discourse thread](https://fortran-lang.discourse.group/t/2314)" 253 | msgstr "" 254 | 255 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:58 256 | msgid "[Twitter post](https://twitter.com/fortranlang/status/1462506491752161286)" 257 | msgstr "" 258 | 259 | #: ../../pages/news/2021/new-documentation.md:7 260 | msgid "New documentation" 261 | msgstr "" 262 | 263 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:7 264 | #, fuzzy 265 | msgid "Fpm version 0.6.0 released" 266 | msgstr "Fpm 0.5.0をリリースしました" 267 | 268 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:9 269 | msgid "" 270 | "This release introduces a better visualization for the build output, " 271 | "compiler output is only shown on error to keep the standard output clean " 272 | "for successful builds. Furthermore, fpm can now detect unused modules and" 273 | " avoids compiling modules that are not needed for an application, which " 274 | "improves the compilation speed with large dependencies like stdlib. When " 275 | "creating a new project with fpm the author information are now taken from" 276 | " the git configuration to avoid using placeholders in the manifest. " 277 | "Several more bug fixes and plenty of improvements went into this version " 278 | "as well." 279 | msgstr "" 280 | 281 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:14 282 | #, fuzzy 283 | msgid "" 284 | "Find the full release notes [here](https://github.com/fortran-" 285 | "lang/fpm/releases/tag/v0.6.0)." 286 | msgstr "" 287 | "リリースノートの全文は[こちら](https://github.com/fortran-" 288 | "lang/fpm/releases/tag/v0.5.0)をご覧ください." 289 | 290 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:16 291 | msgid "" 292 | "Many thanks to Pedro Costa ([@p-costa](https://github.com/p-costa)), " 293 | "Sebastian Ehlert ([@awvwgk](https://github.com/awvwgk)), Laurence Kedward" 294 | " ([@lkedward](https://github.com/lkedward)), Wileam Y. Phan " 295 | "([@wyphan](https://github.com/wyphan)), Arteev Raina " 296 | "([@arteevraina](https://github.com/arteevraina)), Simon Rowe " 297 | "([@wiremoons](https://github.com/wiremoons)), Andre Smit " 298 | "([@freevryheid](https://github.com/freevryheid)), John Urban " 299 | "([@urbanjost](https://github.com/urbanjost)), Zuo Zhihua " 300 | "([@zoziha](https://github.com/zoziha)), [@st-maxwell](https://github.com" 301 | "/st-maxwell), and [@noisegul](https://github.com/noisegul) for " 302 | "contributing patches to this release." 303 | msgstr "" 304 | 305 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:19 306 | msgid "Changelog" 307 | msgstr "" 308 | 309 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:21 310 | msgid "" 311 | "Better extraction of the Fortran compiler from the MPI wrapper " 312 | "([#634](https://github.com/fortran-lang/fpm/pull/634))" 313 | msgstr "" 314 | 315 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:22 316 | msgid "" 317 | "Update module output directory command for flang-new/f18 " 318 | "([#645](https://github.com/fortran-lang/fpm/pull/645))" 319 | msgstr "" 320 | 321 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:23 322 | msgid "" 323 | "Respect user provided main-files ([#646](https://github.com/fortran-" 324 | "lang/fpm/pull/646))" 325 | msgstr "" 326 | 327 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:24 328 | msgid "" 329 | "just allow . on new subcommand instead of changing canonical path " 330 | "([#630](https://github.com/fortran-lang/fpm/pull/630))" 331 | msgstr "" 332 | 333 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:25 334 | msgid "" 335 | "get user name and email using git config if available else use defaults " 336 | "([#652](https://github.com/fortran-lang/fpm/pull/652))" 337 | msgstr "" 338 | 339 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:26 340 | #, fuzzy 341 | msgid "" 342 | "Ignore hidden source files ([#654](https://github.com/fortran-" 343 | "lang/fpm/pull/654))" 344 | msgstr "" 345 | "リリースノートの全文は[こちら](https://github.com/fortran-" 346 | "lang/fpm/releases/tag/v0.5.0)をご覧ください." 347 | 348 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:27 349 | msgid "" 350 | "Cleanup the backend output ([#622](https://github.com/fortran-" 351 | "lang/fpm/pull/622))" 352 | msgstr "" 353 | 354 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:28 355 | msgid "" 356 | "Add note about relocation of manifest reference " 357 | "([#648](https://github.com/fortran-lang/fpm/pull/648))" 358 | msgstr "" 359 | 360 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:29 361 | msgid "" 362 | "Fix for backtrace error when file not found in: " 363 | "`src/fpm_source_parsing.f90` ([#675](https://github.com/fortran-" 364 | "lang/fpm/pull/675))" 365 | msgstr "" 366 | 367 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:30 368 | msgid "" 369 | "Fix issue with backend pretty output ([#677](https://github.com/fortran-" 370 | "lang/fpm/pull/677))" 371 | msgstr "" 372 | 373 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:31 374 | msgid "" 375 | "fix: remove remove unnecessary space in fpm new cmd " 376 | "([#684](https://github.com/fortran-lang/fpm/pull/684))" 377 | msgstr "" 378 | 379 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:32 380 | msgid "" 381 | "Small fix for `fpm_model` ([#688](https://github.com/fortran-" 382 | "lang/fpm/pull/688))" 383 | msgstr "" 384 | 385 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:33 386 | msgid "add clean command ([#655](https://github.com/fortran-lang/fpm/pull/665))" 387 | msgstr "" 388 | 389 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:34 390 | msgid "" 391 | "Fix for non-portable GFortran `-J` flag in install script " 392 | "([#692](https://github.com/fortran-lang/fpm/pull/692))" 393 | msgstr "" 394 | 395 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:35 396 | msgid "" 397 | "Fix show-model option ([#693](https://github.com/fortran-" 398 | "lang/fpm/pull/693))" 399 | msgstr "" 400 | 401 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:36 402 | msgid "" 403 | "Tree shaking for modules ([#676](https://github.com/fortran-" 404 | "lang/fpm/pull/676))" 405 | msgstr "" 406 | 407 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:37 408 | msgid "" 409 | "Fix submodule shaking ([#704](https://github.com/fortran-" 410 | "lang/fpm/pull/704))" 411 | msgstr "" 412 | 413 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:38 414 | msgid "" 415 | "fix: remove extra space from help-test cmd ([#686](https://github.com" 416 | "/fortran-lang/fpm/pull/686))" 417 | msgstr "" 418 | 419 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:39 420 | msgid "" 421 | "Fix: to pipe up-to-date message to stderr ([#706](https://github.com" 422 | "/fortran-lang/fpm/pull/706))" 423 | msgstr "" 424 | 425 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:40 426 | msgid "" 427 | "Avoid infinite loop if command \"fpm-\" is in path " 428 | "([#713](https://github.com/fortran-lang/fpm/pull/713))" 429 | msgstr "" 430 | 431 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:41 432 | msgid "" 433 | "Fix --show-model, init `c_source%parent_modules` " 434 | "([#712](https://github.com/fortran-lang/fpm/pull/712))" 435 | msgstr "" 436 | 437 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:42 438 | msgid "" 439 | "Add OMP critical for `make_archive` ([#708](https://github.com/fortran-" 440 | "lang/fpm/pull/708))" 441 | msgstr "" 442 | 443 | -------------------------------------------------------------------------------- /locale/nl/LC_MESSAGES/news.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2022 Fortran programming language community 2 | # This file is distributed under the same license as the fpm package. 3 | # Arjen Markus , 2022. 4 | # 5 | msgid "" 6 | msgstr "" 7 | "Project-Id-Version: fpm\n" 8 | "Report-Msgid-Bugs-To: \n" 9 | "POT-Creation-Date: 2022-08-10 15:13+0200\n" 10 | "PO-Revision-Date: 2022-01-18 12:11+0100\n" 11 | "Last-Translator: Vincent MAGNIN \n" 12 | "Language: fr\n" 13 | "Language-Team: \n" 14 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=utf-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Generated-By: Babel 2.10.3\n" 19 | 20 | #: ../../pages/news.md:3 21 | msgid "News" 22 | msgstr "Actualités" 23 | 24 | #: ../../pages/news/2021/09-24-fortrancon.md:7 25 | msgid "Fpm at FortranCon 2021" 26 | msgstr "" 27 | 28 | #: ../../pages/news/2021/09-24-fortrancon.md:9 29 | msgid "" 30 | "As part of the Fortran-lang symposium at the FortranCon 2021 we presented" 31 | " the progress on the Fortran implementation of fpm since the last " 32 | "FortranCon. Furthermore, Jakub Jelínek presented his work on the compiler" 33 | " profile support developed in his Google Summer of Code project." 34 | msgstr "" 35 | 36 | #: ../../pages/news/2021/09-24-fortrancon.md:13 37 | #: ../../pages/news/2021/11-10-packagingcon.md:13 38 | msgid "Recording" 39 | msgstr "" 40 | 41 | #: ../../pages/news/2021/09-24-fortrancon.md:15 42 | msgid "The recording of the talk is available at the FortranCon YouTube channel:" 43 | msgstr "" 44 | 45 | #: ../../pages/news/2021/11-10-packagingcon.md:7 46 | msgid "Presenting fpm at PackagingCon 2021" 47 | msgstr "" 48 | 49 | #: ../../pages/news/2021/11-10-packagingcon.md:9 50 | msgid "" 51 | "We are happy to get the chance to present the Fortran Package Manager at " 52 | "the first PackagingCon. The presentation covers the reasons for creating " 53 | "a package manager and build system for Fortran, what we already " 54 | "accomplished with the early prototype, and highlights open questions and " 55 | "future milestones for the fpm development." 56 | msgstr "" 57 | 58 | #: ../../pages/news/2021/11-10-packagingcon.md:15 59 | msgid "" 60 | "The recording of the talk is available at the PackagingCon YouTube " 61 | "channel:" 62 | msgstr "" 63 | 64 | #: ../../pages/news/2021/11-10-packagingcon.md:20 65 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:55 66 | msgid "Feedback" 67 | msgstr "Aankondigingen" 68 | 69 | #: ../../pages/news/2021/11-10-packagingcon.md:22 70 | #, fuzzy 71 | msgid "[Discourse thread](https://fortran-lang.discourse.group/t/1581)" 72 | msgstr "[Discussie op Discourse](https://fortran-lang.discourse.group/t/2314)" 73 | 74 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:7 75 | msgid "Fpm version 0.5.0 released" 76 | msgstr "Fpm 0.5.0 uitgebracht" 77 | 78 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:9 79 | msgid "" 80 | "We have a large number of bug fixes in this release and made plenty of " 81 | "improvements to the tooling around fpm, like the continuous delivery and " 82 | "the Windows installer. New features include the possibility for better " 83 | "compiler/linker selection and the improved build backend (test are only " 84 | "build when needed, link dependencies are properly tracked)." 85 | msgstr "" 86 | "In deze release hebben we een groot aantal bugs opgelost en veel " 87 | "verbeteringen doorgevoerd in de tools bij fpm, zoals continue bouw en " 88 | "levering en de installatie voor Windows. Onder de nieuwe functionaliteit " 89 | "vind je betere mogelijkheden om de compiler/linker te selecteren en een " 90 | "slimmere build-backend (testen worden bijvoorbeeld alleen gebouwd indien " 91 | "nodig en link-afhankelijkheden worden netter bijgehouden)." 92 | 93 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:12 94 | msgid "" 95 | "Find the full release notes [here](https://github.com/fortran-" 96 | "lang/fpm/releases/tag/v0.5.0)." 97 | msgstr "" 98 | "Hier vind je alle releasenotes [ici](https://github.com/fortran-" 99 | "lang/fpm/releases/tag/v0.5.0)." 100 | 101 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:14 102 | msgid "Changes" 103 | msgstr "Wijzigingen" 104 | 105 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:16 106 | msgid "" 107 | "tests are only build for fpm test and not by default anymore " 108 | "([#572](https://github.com/fortran-lang/fpm/pull/572))" 109 | msgstr "" 110 | "testen worden alleen gebouwd met fpm test en niet langer bij verstek " 111 | "([#572](https://github.com/fortran-lang/fpm/pull/572))" 112 | 113 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:17 114 | msgid "" 115 | "environment variables for setting Fortran and C compiler changed " 116 | "([#549](https://github.com/fortran-lang/fpm/pull/549), " 117 | "[#584](https://github.com/fortran-lang/fpm/pull/584))" 118 | msgstr "" 119 | "andere environmentvariabelen voor het kiezen van de Fortran en C " 120 | "compilers ([#549](https://github.com/fortran-lang/fpm/pull/549), " 121 | "[#584](https://github.com/fortran-lang/fpm/pull/584))" 122 | 123 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:18 124 | msgid "" 125 | "add LFortran optimization flag to release profile " 126 | "([#597](https://github.com/fortran-lang/fpm/pull/597))" 127 | msgstr "" 128 | "optie voor optimalisatie toegevoegd aan het releaseprofiel voor de " 129 | "LFortran compiler ([#597](https://github.com/fortran-lang/fpm/pull/597))" 130 | 131 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:21 132 | msgid "New features" 133 | msgstr "Nieuwe functonaliteiten" 134 | 135 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:23 136 | msgid "" 137 | "command line arguments for linker, archiver and C-compiler added " 138 | "([#549](https://github.com/fortran-lang/fpm/pull/549))" 139 | msgstr "" 140 | "command-lineargumenten toegevoegd voor linker, archiver en C-compiler " 141 | "([#549](https://github.com/fortran-lang/fpm/pull/549))" 142 | 143 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:26 144 | msgid "Fixes" 145 | msgstr "Verbeteringen" 146 | 147 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:28 148 | msgid "" 149 | "tabs are correctly expanded in source file scanning " 150 | "([#521](https://github.com/fortran-lang/fpm/pull/521))" 151 | msgstr "" 152 | "tabs worden nu correct behandeld bij het scannen van de broncode " 153 | "([#521](https://github.com/fortran-lang/fpm/pull/521))" 154 | 155 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:29 156 | msgid "" 157 | "installer script will use fpm update to avoid stale dependencies " 158 | "([#557](https://github.com/fortran-lang/fpm/pull/557))" 159 | msgstr "" 160 | "installatiescript gebruikt fpm update om verouderde afhankelijkheden te " 161 | "vermijden ([#557](https://github.com/fortran-lang/fpm/pull/557))" 162 | 163 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:30 164 | msgid "" 165 | "use multiple build output directories depending on link line options " 166 | "([#575](https://github.com/fortran-lang/fpm/pull/575))" 167 | msgstr "" 168 | "gebruik meerder uitvoerdirectories afhankelijk van de linkeropties " 169 | "([#575](https://github.com/fortran-lang/fpm/pull/575))" 170 | 171 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:31 172 | msgid "" 173 | "update truncated help text ([#578](https://github.com/fortran-" 174 | "lang/fpm/pull/578))" 175 | msgstr "" 176 | "afgebroken helptekst verbeterd ([#578](https://github.com/fortran-" 177 | "lang/fpm/pull/578))" 178 | 179 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:32 180 | msgid "" 181 | "fix directory removal in fpm new tests ([#579](https://github.com" 182 | "/fortran-lang/fpm/pull/579))" 183 | msgstr "" 184 | "verwijderen van directories verbeterd in fpm new tests " 185 | "([#579](https://github.com/fortran-lang/fpm/pull/579))" 186 | 187 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:33 188 | msgid "" 189 | "use MSVS like commands for Intel compilers on Windows " 190 | "([#590](https://github.com/fortran-lang/fpm/pull/590))" 191 | msgstr "" 192 | "gebruik opdrachten van het type MSVS voor de Intel-compilers op Windows " 193 | "([#590](https://github.com/fortran-lang/fpm/pull/590))" 194 | 195 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:34 196 | msgid "" 197 | "add critical section to mkdir in backend ([#613](https://github.com" 198 | "/fortran-lang/fpm/pull/613))" 199 | msgstr "" 200 | "kritische sectie toegevoegd in het backend voor mkdir " 201 | "([#613](https://github.com/fortran-lang/fpm/pull/613))" 202 | 203 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:35 204 | msgid "" 205 | "fix modules listing (for install) ([#612](https://github.com/fortran-" 206 | "lang/fpm/pull/612))" 207 | msgstr "" 208 | "corrigeer de lijst van modules (voor de installatie) " 209 | "([#612](https://github.com/fortran-lang/fpm/pull/612))" 210 | 211 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:36 212 | msgid "" 213 | "repair --list option and correct obsolete descriptions of the --list " 214 | "option ([#607](https://github.com/fortran-lang/fpm/pull/607))" 215 | msgstr "" 216 | "corrigeer de optie --list et corrigeer de verouderde beschrijvingen van " 217 | "deze optie ([#607](https://github.com/fortran-lang/fpm/pull/607))" 218 | 219 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:37 220 | msgid "" 221 | "fix incorrect Intel release flag on Windows ([#602](https://github.com" 222 | "/fortran-lang/fpm/pull/602))" 223 | msgstr "" 224 | "corrigeer de foutieve Release-optie voor Intel op Windows " 225 | "([#602](https://github.com/fortran-lang/fpm/pull/602))" 226 | 227 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:39 228 | msgid "" 229 | "list names without suffix for Windows ([#595](https://github.com/fortran-" 230 | "lang/fpm/pull/595))" 231 | msgstr "" 232 | "vermeld de namen zonder suffix op Windows ([#595](https://github.com" 233 | "/fortran-lang/fpm/pull/595))" 234 | 235 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:43 236 | msgid "Repository updates" 237 | msgstr "Updates van de fpm repository" 238 | 239 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:45 240 | msgid "" 241 | "add files and workflow to make installer on release " 242 | "([#616](https://github.com/fortran-lang/fpm/pull/616))" 243 | msgstr "" 244 | "bestanden en workflow voor het maken van de release-installatie op " 245 | "Windows toegevoegd ([#616](https://github.com/fortran-lang/fpm/pull/616))" 246 | 247 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:46 248 | msgid "" 249 | "issue templates added to guide reporting of bugs, package issues, feature" 250 | " requests and specification proposals ([#558](https://github.com/fortran-" 251 | "lang/fpm/pull/558))" 252 | msgstr "" 253 | "templates voor het beschrijven van fouten, problemen met pakketten, " 254 | "verzoeken om nieuwe functies en voorstellen voor specificaties " 255 | "([#558](https://github.com/fortran-lang/fpm/pull/558))" 256 | 257 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:47 258 | msgid "" 259 | "default branch renamed to *main* ([#565](https://github.com/fortran-" 260 | "lang/fpm/pull/565))" 261 | msgstr "" 262 | "hoofdtak hernoemd tot *main* ([#565](https://github.com/fortran-" 263 | "lang/fpm/pull/565))" 264 | 265 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:48 266 | msgid "" 267 | "update documentation on distributions supporting fpm, like spack and " 268 | "MSYS2 ([#562](https://github.com/fortran-lang/fpm/pull/562))" 269 | msgstr "" 270 | "documentatie bijgewerkt voor de distributiesystemen die fpm ondersteunen," 271 | " zoals spack en MSYS2 ([#562](https://github.com/fortran-" 272 | "lang/fpm/pull/562))" 273 | 274 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:49 275 | msgid "" 276 | "new workflow to automatically generate single source fpm versions " 277 | "([#563](https://github.com/fortran-lang/fpm/pull/563))" 278 | msgstr "" 279 | "nieuwe workflow voor automatisch genereren van de single-source versies " 280 | "van fpm ([#563](https://github.com/fortran-lang/fpm/pull/563))" 281 | 282 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:50 283 | #, fuzzy 284 | msgid "" 285 | "continuous delivery of current fpm git source implemented " 286 | "([#569](https://github.com/fortran-lang/fpm/pull/569), " 287 | "[#564](https://github.com/fortran-lang/fpm/pull/564))" 288 | msgstr "" 289 | "continue bouw en levering van de broncode in git van fpm " 290 | "([#569](https://github.com/fortran-lang/fpm/pull/569), " 291 | "[#564](https://github.com/fortran-lang/fpm/pull/564))" 292 | 293 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:51 294 | msgid "" 295 | "update of bootstrapping instructions ([#587](https://github.com/fortran-" 296 | "lang/fpm/pull/587))" 297 | msgstr "" 298 | "instructie voor initiële bouw (bootstrap) bijgewerkt " 299 | "([#587](https://github.com/fortran-lang/fpm/pull/587))" 300 | 301 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:52 302 | msgid "" 303 | "update README.md compiler, archiver, & link flags " 304 | "([#598](https://github.com/fortran-lang/fpm/pull/598))" 305 | msgstr "" 306 | "bestand README.md bjigewerkt met de opties voor de compiler, archiver en " 307 | "linker ([#598](https://github.com/fortran-lang/fpm/pull/598))" 308 | 309 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:57 310 | msgid "[Discourse thread](https://fortran-lang.discourse.group/t/2314)" 311 | msgstr "[Discussie op Discourse](https://fortran-lang.discourse.group/t/2314)" 312 | 313 | #: ../../pages/news/2021/11-21-fpm-version-0.5.0.md:58 314 | msgid "[Twitter post](https://twitter.com/fortranlang/status/1462506491752161286)" 315 | msgstr "[Twitterpost](https://twitter.com/fortranlang/status/1462506491752161286)" 316 | 317 | #: ../../pages/news/2021/new-documentation.md:7 318 | msgid "New documentation" 319 | msgstr "" 320 | 321 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:7 322 | #, fuzzy 323 | msgid "Fpm version 0.6.0 released" 324 | msgstr "Fpm 0.5.0 uitgebracht" 325 | 326 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:9 327 | msgid "" 328 | "This release introduces a better visualization for the build output, " 329 | "compiler output is only shown on error to keep the standard output clean " 330 | "for successful builds. Furthermore, fpm can now detect unused modules and" 331 | " avoids compiling modules that are not needed for an application, which " 332 | "improves the compilation speed with large dependencies like stdlib. When " 333 | "creating a new project with fpm the author information are now taken from" 334 | " the git configuration to avoid using placeholders in the manifest. " 335 | "Several more bug fixes and plenty of improvements went into this version " 336 | "as well." 337 | msgstr "" 338 | 339 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:14 340 | #, fuzzy 341 | msgid "" 342 | "Find the full release notes [here](https://github.com/fortran-" 343 | "lang/fpm/releases/tag/v0.6.0)." 344 | msgstr "" 345 | "Hier vind je alle releasenotes [ici](https://github.com/fortran-" 346 | "lang/fpm/releases/tag/v0.5.0)." 347 | 348 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:16 349 | msgid "" 350 | "Many thanks to Pedro Costa ([@p-costa](https://github.com/p-costa)), " 351 | "Sebastian Ehlert ([@awvwgk](https://github.com/awvwgk)), Laurence Kedward" 352 | " ([@lkedward](https://github.com/lkedward)), Wileam Y. Phan " 353 | "([@wyphan](https://github.com/wyphan)), Arteev Raina " 354 | "([@arteevraina](https://github.com/arteevraina)), Simon Rowe " 355 | "([@wiremoons](https://github.com/wiremoons)), Andre Smit " 356 | "([@freevryheid](https://github.com/freevryheid)), John Urban " 357 | "([@urbanjost](https://github.com/urbanjost)), Zuo Zhihua " 358 | "([@zoziha](https://github.com/zoziha)), [@st-maxwell](https://github.com" 359 | "/st-maxwell), and [@noisegul](https://github.com/noisegul) for " 360 | "contributing patches to this release." 361 | msgstr "" 362 | 363 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:19 364 | #, fuzzy 365 | msgid "Changelog" 366 | msgstr "Wijzigingen" 367 | 368 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:21 369 | #, fuzzy 370 | msgid "" 371 | "Better extraction of the Fortran compiler from the MPI wrapper " 372 | "([#634](https://github.com/fortran-lang/fpm/pull/634))" 373 | msgstr "" 374 | "hoofdtak hernoemd tot *main* ([#565](https://github.com/fortran-" 375 | "lang/fpm/pull/565))" 376 | 377 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:22 378 | #, fuzzy 379 | msgid "" 380 | "Update module output directory command for flang-new/f18 " 381 | "([#645](https://github.com/fortran-lang/fpm/pull/645))" 382 | msgstr "" 383 | "verwijderen van directories verbeterd in fpm new tests " 384 | "([#579](https://github.com/fortran-lang/fpm/pull/579))" 385 | 386 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:23 387 | #, fuzzy 388 | msgid "" 389 | "Respect user provided main-files ([#646](https://github.com/fortran-" 390 | "lang/fpm/pull/646))" 391 | msgstr "" 392 | "hoofdtak hernoemd tot *main* ([#565](https://github.com/fortran-" 393 | "lang/fpm/pull/565))" 394 | 395 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:24 396 | #, fuzzy 397 | msgid "" 398 | "just allow . on new subcommand instead of changing canonical path " 399 | "([#630](https://github.com/fortran-lang/fpm/pull/630))" 400 | msgstr "" 401 | "instructie voor initiële bouw (bootstrap) bijgewerkt " 402 | "([#587](https://github.com/fortran-lang/fpm/pull/587))" 403 | 404 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:25 405 | #, fuzzy 406 | msgid "" 407 | "get user name and email using git config if available else use defaults " 408 | "([#652](https://github.com/fortran-lang/fpm/pull/652))" 409 | msgstr "" 410 | "vermeld de namen zonder suffix op Windows ([#595](https://github.com" 411 | "/fortran-lang/fpm/pull/595))" 412 | 413 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:26 414 | #, fuzzy 415 | msgid "" 416 | "Ignore hidden source files ([#654](https://github.com/fortran-" 417 | "lang/fpm/pull/654))" 418 | msgstr "" 419 | "tabs worden nu correct behandeld bij het scannen van de broncode " 420 | "([#521](https://github.com/fortran-lang/fpm/pull/521))" 421 | 422 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:27 423 | #, fuzzy 424 | msgid "" 425 | "Cleanup the backend output ([#622](https://github.com/fortran-" 426 | "lang/fpm/pull/622))" 427 | msgstr "" 428 | "hoofdtak hernoemd tot *main* ([#565](https://github.com/fortran-" 429 | "lang/fpm/pull/565))" 430 | 431 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:28 432 | #, fuzzy 433 | msgid "" 434 | "Add note about relocation of manifest reference " 435 | "([#648](https://github.com/fortran-lang/fpm/pull/648))" 436 | msgstr "" 437 | "kritische sectie toegevoegd in het backend voor mkdir " 438 | "([#613](https://github.com/fortran-lang/fpm/pull/613))" 439 | 440 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:29 441 | #, fuzzy 442 | msgid "" 443 | "Fix for backtrace error when file not found in: " 444 | "`src/fpm_source_parsing.f90` ([#675](https://github.com/fortran-" 445 | "lang/fpm/pull/675))" 446 | msgstr "" 447 | "tabs worden nu correct behandeld bij het scannen van de broncode " 448 | "([#521](https://github.com/fortran-lang/fpm/pull/521))" 449 | 450 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:30 451 | #, fuzzy 452 | msgid "" 453 | "Fix issue with backend pretty output ([#677](https://github.com/fortran-" 454 | "lang/fpm/pull/677))" 455 | msgstr "" 456 | "afgebroken helptekst verbeterd ([#578](https://github.com/fortran-" 457 | "lang/fpm/pull/578))" 458 | 459 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:31 460 | #, fuzzy 461 | msgid "" 462 | "fix: remove remove unnecessary space in fpm new cmd " 463 | "([#684](https://github.com/fortran-lang/fpm/pull/684))" 464 | msgstr "" 465 | "verwijderen van directories verbeterd in fpm new tests " 466 | "([#579](https://github.com/fortran-lang/fpm/pull/579))" 467 | 468 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:32 469 | #, fuzzy 470 | msgid "" 471 | "Small fix for `fpm_model` ([#688](https://github.com/fortran-" 472 | "lang/fpm/pull/688))" 473 | msgstr "" 474 | "corrigeer de lijst van modules (voor de installatie) " 475 | "([#612](https://github.com/fortran-lang/fpm/pull/612))" 476 | 477 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:33 478 | #, fuzzy 479 | msgid "add clean command ([#655](https://github.com/fortran-lang/fpm/pull/665))" 480 | msgstr "" 481 | "hoofdtak hernoemd tot *main* ([#565](https://github.com/fortran-" 482 | "lang/fpm/pull/565))" 483 | 484 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:34 485 | #, fuzzy 486 | msgid "" 487 | "Fix for non-portable GFortran `-J` flag in install script " 488 | "([#692](https://github.com/fortran-lang/fpm/pull/692))" 489 | msgstr "" 490 | "corrigeer de foutieve Release-optie voor Intel op Windows " 491 | "([#602](https://github.com/fortran-lang/fpm/pull/602))" 492 | 493 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:35 494 | #, fuzzy 495 | msgid "" 496 | "Fix show-model option ([#693](https://github.com/fortran-" 497 | "lang/fpm/pull/693))" 498 | msgstr "" 499 | "corrigeer de lijst van modules (voor de installatie) " 500 | "([#612](https://github.com/fortran-lang/fpm/pull/612))" 501 | 502 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:36 503 | #, fuzzy 504 | msgid "" 505 | "Tree shaking for modules ([#676](https://github.com/fortran-" 506 | "lang/fpm/pull/676))" 507 | msgstr "" 508 | "instructie voor initiële bouw (bootstrap) bijgewerkt " 509 | "([#587](https://github.com/fortran-lang/fpm/pull/587))" 510 | 511 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:37 512 | #, fuzzy 513 | msgid "" 514 | "Fix submodule shaking ([#704](https://github.com/fortran-" 515 | "lang/fpm/pull/704))" 516 | msgstr "" 517 | "corrigeer de lijst van modules (voor de installatie) " 518 | "([#612](https://github.com/fortran-lang/fpm/pull/612))" 519 | 520 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:38 521 | #, fuzzy 522 | msgid "" 523 | "fix: remove extra space from help-test cmd ([#686](https://github.com" 524 | "/fortran-lang/fpm/pull/686))" 525 | msgstr "" 526 | "afgebroken helptekst verbeterd ([#578](https://github.com/fortran-" 527 | "lang/fpm/pull/578))" 528 | 529 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:39 530 | #, fuzzy 531 | msgid "" 532 | "Fix: to pipe up-to-date message to stderr ([#706](https://github.com" 533 | "/fortran-lang/fpm/pull/706))" 534 | msgstr "" 535 | "afgebroken helptekst verbeterd ([#578](https://github.com/fortran-" 536 | "lang/fpm/pull/578))" 537 | 538 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:40 539 | #, fuzzy 540 | msgid "" 541 | "Avoid infinite loop if command \"fpm-\" is in path " 542 | "([#713](https://github.com/fortran-lang/fpm/pull/713))" 543 | msgstr "" 544 | "kritische sectie toegevoegd in het backend voor mkdir " 545 | "([#613](https://github.com/fortran-lang/fpm/pull/613))" 546 | 547 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:41 548 | #, fuzzy 549 | msgid "" 550 | "Fix --show-model, init `c_source%parent_modules` " 551 | "([#712](https://github.com/fortran-lang/fpm/pull/712))" 552 | msgstr "" 553 | "verwijderen van directories verbeterd in fpm new tests " 554 | "([#579](https://github.com/fortran-lang/fpm/pull/579))" 555 | 556 | #: ../../pages/news/2022/06-19-fpm-version-0.6.0.md:42 557 | #, fuzzy 558 | msgid "" 559 | "Add OMP critical for `make_archive` ([#708](https://github.com/fortran-" 560 | "lang/fpm/pull/708))" 561 | msgstr "" 562 | "kritische sectie toegevoegd in het backend voor mkdir " 563 | "([#613](https://github.com/fortran-lang/fpm/pull/613))" 564 | 565 | --------------------------------------------------------------------------------