Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pip install firedrake #4011

Draft
wants to merge 57 commits into
base: master
Choose a base branch
from
Draft

pip install firedrake #4011

wants to merge 57 commits into from

Conversation

connorjward
Copy link
Contributor

@connorjward connorjward commented Feb 5, 2025

Die firedrake-install! Die! Die! Die!

Description

  • Changes the officially supported installation method for Firedrake to using pip.
  • Adds a firedrake-configure script to facilitate installation.
  • Updates CI and Docker containers to use the new techniques.
  • firedrake-install/firedrake-update remain but spit out a deprecation warning.

Unlike firedrake-install, firedrake-configure is designed to be very, very dumb. All it does is take in a specification of a desired package manager (apt-x86_64, apt-aarch64, brew-arm64) and "arch" (default or complex) and spits out a string of appropriate system dependencies (--show-system-dependencies) or PETSc configure options (--show-petsc-configure-options). You can also pass --no-package-manager if you aren't using a supported system and this will give you a set of PETSc configure options where everything is downloaded.

TODOs

  • Website documentation
  • CI passing on Mac and Linux
  • All Docker containers set up correctly
  • Zenodo...

Copy link

github-actions bot commented Feb 5, 2025

TestsPassed ✅Skipped ⏭️Failed ❌
Firedrake complex0 ran0 passed0 skipped0 failed

Copy link

github-actions bot commented Feb 5, 2025

TestsPassed ✅Skipped ⏭️Failed ❌
Firedrake real0 ran0 passed0 skipped0 failed

Copy link

github-actions bot commented Feb 12, 2025

TestsPassed ✅Skipped ⏭️Failed ❌
Firedrake default6634 ran6007 passed516 skipped111 failed

Due to actions/setup-python#871. Can't find
libpython.so
* Fix path for IO tests (as not running from root of repo any more)
* macOS prep
* complex arch
@connorjward connorjward changed the title (WIP) Fully switch to pip install firedrake pip install firedrake Feb 13, 2025
@connorjward connorjward changed the title pip install firedrake pip install firedrake Feb 13, 2025
"bison": {
LINUX_APT_X86_64: PETSC_AUTODETECT,
LINUX_APT_AARCH64: PETSC_AUTODETECT,
MACOS_HOMEBREW_ARM64: "/opt/homebrew",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be the output of brew --prefix because users can have a nonstandard location.

Copy link
Contributor Author

@connorjward connorjward Feb 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For macOS on ARM this is the only supported location:

The script installs Homebrew to its default, supported, best prefix (/opt/homebrew for Apple Silicon, /usr/local for macOS Intel and /home/linuxbrew/.linuxbrew for Linux)

Homebrew say:

Technically, you can just extract (or git clone) Homebrew wherever you want. However, you shouldn’t install outside the default, supported, best prefix.

So I think it is extremely unlikely that a user will not have this path.

In general I have been taking a very hard-line approach to limiting what goes in firedrake-configure. We only support (and test!) a very restricted set of platforms (Ubuntu 24 on x86 and ARM and MacOS on ARM). We can add niceties like detecting compilers and package manager paths but we won't be able to test the functionality.

If this is unpopular I can change this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants