From ef56462867ad87d6f9450f8e9ee45d46f5fda969 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Thu, 27 May 2021 16:21:11 -0500 Subject: [PATCH] Add fuse virtual dependency, new macfuse package (#23904) --- etc/spack/defaults/darwin/packages.yaml | 10 ++-- etc/spack/defaults/packages.yaml | 1 + .../packages/fuse-overlayfs/package.py | 2 +- .../repos/builtin/packages/libfuse/package.py | 2 + .../repos/builtin/packages/macfuse/package.py | 46 +++++++++++++++++++ .../builtin/packages/py-fusepy/package.py | 1 + .../builtin/packages/squashfuse/package.py | 4 +- .../repos/builtin/packages/sshfs/package.py | 2 +- 8 files changed, 58 insertions(+), 10 deletions(-) create mode 100644 var/spack/repos/builtin/packages/macfuse/package.py diff --git a/etc/spack/defaults/darwin/packages.yaml b/etc/spack/defaults/darwin/packages.yaml index 8ce443a9fd..cd3dca60a3 100644 --- a/etc/spack/defaults/darwin/packages.yaml +++ b/etc/spack/defaults/darwin/packages.yaml @@ -21,12 +21,10 @@ packages: - gcc - intel providers: - elf: - - libelf - unwind: - - apple-libunwind - uuid: - - apple-libuuid + elf: [libelf] + fuse: [macfuse] + unwind: [apple-libunwind] + uuid: [apple-libuuid] apple-libunwind: buildable: false externals: diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index d42c815fd1..bc6a1c110d 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -24,6 +24,7 @@ packages: elf: [elfutils] fftw-api: [fftw, amdfftw] flame: [libflame, amdlibflame] + fuse: [libfuse] gl: [mesa+opengl, mesa18, opengl] glu: [mesa-glu, openglu] glx: [mesa+glx, mesa18+glx, opengl] diff --git a/var/spack/repos/builtin/packages/fuse-overlayfs/package.py b/var/spack/repos/builtin/packages/fuse-overlayfs/package.py index 81bed7cd1d..81103c3103 100644 --- a/var/spack/repos/builtin/packages/fuse-overlayfs/package.py +++ b/var/spack/repos/builtin/packages/fuse-overlayfs/package.py @@ -24,4 +24,4 @@ class FuseOverlayfs(AutotoolsPackage): depends_on('automake', type='build') depends_on('libtool', type='build') depends_on('m4', type='build') - depends_on('libfuse') + depends_on('fuse') diff --git a/var/spack/repos/builtin/packages/libfuse/package.py b/var/spack/repos/builtin/packages/libfuse/package.py index 298c0decdf..14788f3672 100644 --- a/var/spack/repos/builtin/packages/libfuse/package.py +++ b/var/spack/repos/builtin/packages/libfuse/package.py @@ -34,7 +34,9 @@ def url_for_version(self, version): "which typically sets up udev rules and " "and init script in /etc/init.d")) + provides('fuse') conflicts("+useroot", when='~system_install', msg="useroot requires system_install") + conflicts('platform=darwin', msg='libfuse does not support OS-X, use macfuse instead') # Drops the install script which does system configuration patch('0001-Do-not-run-install-script.patch', when='@3: ~system_install') diff --git a/var/spack/repos/builtin/packages/macfuse/package.py b/var/spack/repos/builtin/packages/macfuse/package.py new file mode 100644 index 0000000000..8061e3dabe --- /dev/null +++ b/var/spack/repos/builtin/packages/macfuse/package.py @@ -0,0 +1,46 @@ +# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack import * + + +class Macfuse(Package): + """FUSE for macOS allows you to extend macOS via third party file systems.""" + + homepage = "https://osxfuse.github.io/" + git = "https://github.com/osxfuse/osxfuse.git" + has_code = False # only distributed in binary form + + version('4.1.2') + + provides('fuse') + conflicts('platform=linux', msg='macfuse does not support linux, use libfuse instead') + conflicts('platform=cray', msg='macfuse does not support cray, use libfuse instead') + + def install(self, spec, prefix): + msg = """ +macFUSE is only distributed in binary form. +To use macFUSE with Spack, manually download the .dmg from: + + https://github.com/osxfuse/osxfuse/releases + +and double-click to install. Once macFUSE is installed, +add it as an external package by running: + + $ spack config edit packages + +and add an entry like so: + + packages: + macfuse: + buildable: false + externals: + - spec: macfuse@4.1.2 + prefix: /Library/Frameworks/macFUSE.framework""" + + raise InstallError(msg) + + def setup_dependent_run_environment(self, env, dependent_spec): + env.set('FUSE_LIBRARY_PATH', self.prefix.macFUSE) diff --git a/var/spack/repos/builtin/packages/py-fusepy/package.py b/var/spack/repos/builtin/packages/py-fusepy/package.py index 2c3ba9a971..6c648e719b 100644 --- a/var/spack/repos/builtin/packages/py-fusepy/package.py +++ b/var/spack/repos/builtin/packages/py-fusepy/package.py @@ -17,3 +17,4 @@ class PyFusepy(PythonPackage): version('2.0.4', sha256='10f5c7f5414241bffecdc333c4d3a725f1d6605cae6b4eaf86a838ff49cdaf6c') depends_on('py-setuptools', type='build') + depends_on('fuse@2.6:') diff --git a/var/spack/repos/builtin/packages/squashfuse/package.py b/var/spack/repos/builtin/packages/squashfuse/package.py index 7bce4a6b2a..7a4e995b82 100644 --- a/var/spack/repos/builtin/packages/squashfuse/package.py +++ b/var/spack/repos/builtin/packages/squashfuse/package.py @@ -31,8 +31,8 @@ class Squashfuse(AutotoolsPackage): conflicts('~shared', when='~static', msg="Enable shared, static or both") - depends_on('libfuse@2.5:') - depends_on('libfuse@:2.99', when='@:0.1.103') + depends_on('fuse@2.5:') + depends_on('fuse@:2.99', when='@:0.1.103') # Note: typically libfuse is external, but this implies that you have to make # pkg-config external too, because spack's pkg-config doesn't know how to diff --git a/var/spack/repos/builtin/packages/sshfs/package.py b/var/spack/repos/builtin/packages/sshfs/package.py index 6145b9a16e..400c1604c4 100644 --- a/var/spack/repos/builtin/packages/sshfs/package.py +++ b/var/spack/repos/builtin/packages/sshfs/package.py @@ -18,7 +18,7 @@ class Sshfs(MesonPackage): version('3.7.1', sha256='fe5d3436d61b46974889e0c4515899c21a9d67851e3793c209989f72353d7750') depends_on('glib') - depends_on('libfuse@3.1.0:') + depends_on('fuse@3.1.0:') # used for libfuse; when libfuse is external, make sure that pkgconfig is # external too, since spack's pkgconfig might not be able to locate libfuse.