Comments (8)
Fpm is now available in spack develop branch: spack/spack#25799
from fpm.
I think rather than writing a spack package from fpm as first step, we should enable fpm to work as build system for spack by
- providing a way to satisfy fpm dependencies by spack (maybe #439)
- create libraries usable by other spack packages (maybe #681)
from fpm.
Will take a stab at writing a spack package for fpm. Once we have this it should be easy to package any fpm project in spack without extra effort in fpm.
from fpm.
I haven't used spack
yet, but was always tempted to try it (the somewhat second-class support for my favorite build system, meson, hold me back so far). From what I got so far about spack
it seems similar to homebrew
, in the way that package files are not written in a configuration language or DSL, but in Python (like formulas in homebrew
are written in Ruby) and the main packages are stored inside the package manager's monolithic repository.
How can we actually create a package for spack
with fpm? First, this would require to have fpm as spack
package first, wouldn't it? It might be easier to follow #69 and just use spack
's support for CMake to build any fpm project instead.
from fpm.
@awvwgk there are multiple ways this can be achieved, I don't know yet the best way forward. I think our requirements are:
- Work with upstream fpm packages (say
stdlib
,f-toml
, etc.) with their upstream sources (whether git or tarball) without the need to host a separate spack specific tarball - We submit the package to Spack, so there will be a Python formula for it, just like other Spack packages
It looks like we have at least two paths forward:
Option 1
The Spack formula calls fpm
to build the package ---- Spack itself handles downloading of the tarball (or git) and unpacking it, as well as building all dependencies. But fpm
could be used from the Spack formula, we would have to probably implement some command line options to tell it where spack put all the dependencies (presumably also built with fpm
underneath), then fpm
would build the current package and hand it over to Spack.
Option 2
The Spack formula would call fpm
to generate a CMake
based build system, and then it would just call cmake
. The issues how to find dependencies would be similar (if not identical) to Option 1.
As such, we just have to get started and get it figured out one way or another, and if some extra arguments for fpm
have to be implemented, then we can do it.
from fpm.
Note that to fix this issue, I am imagining something like fpm --create-spack-package
and it will take the current fpm package in the current directory, and spit out the spack Python file that can be used with Spack to build it.
from fpm.
@awvwgk I agree, that is higher priority.
from fpm.
Like I mentioned on Fortran Discourse forum, I recently patched the fpm
package in Spack with spack/spack#30158 and spack/spack#30342 . Would love to see Option 1 happen!
from fpm.
Related Issues (20)
- fails with non-standard Fortran usage using ifx(1) compiler
- ordering of link flags before archive, thus flag ignored by linker
- Compilation fails with BOZ literal constant
- `-ffree-line-length-none` should be used by default in tests HOT 1
- Dependency level macro definitions continuously trigger dependency state changes
- Issue with running multiple examples in fpm version 0.10.1 HOT 2
- Issue with running multiple examples in fpm version 0.10.1 HOT 2
- Memory profiling reveals multiple "Conditional jump or move depends on uninitialised value(s)" errors HOT 2
- Release candidate fpm.F90 uses gfortran-specific backslash line continuations HOT 1
- CI for Metapackages broken for Macos openmpi and mpich
- build issue with ambiguous generic `OPERATOR(==)` interface HOT 1
- [build] Nonportable usage in fpm-0.10.1.F90 HOT 2
- App is not installed if source is not main.f90 HOT 1
- MPI-code can not be built with Intel compiler when using standard flags HOT 6
- target option being ignored
- Preprocess macros not work when building via `fpm build` or `fpm run` HOT 1
- fpm test with --runner HOT 8
- bug(ci): uploaded artefacts not pinned to specific GCC version HOT 2
- Implicit interface not working with lfortran HOT 2
- Linker flags are not parsed correctly by the command-line interface HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fpm.