tmcit-brew tap の作成 - M1 MacBook Air インストール覚書(10)

はじめに

昨日の depends_on :osxfuse に関しては、depends_on :osxfuse for macFUSE · Issue #9401 · Homebrew/brew · GitHubという形で Feature suggestion を送りました。深夜のうちに対応があり、osxfuse に関しては以下のような形になると連絡がありました。

また、前々回の記事 の野良 Cask で対応していた macFUSE 4.0.4 については、Update osxfuse from 3.11.2 to 4.0.4 by weichenw · Pull Request #94187 · Homebrew/homebrew-cask · GitHubというプルリクエストが進んでいました。 しかし、このプルリクエストは 9403 のプルリクエストが来るまで待つようにということになっています。 Homebrew-core との競合がなくなれば、macFUSE 4.0.4 は cask が上がるようになるでしょう。

そんなわけで、macFUSE に依存する sshfs は今後 homebrew-core からは提供されなくなると思います。 これらについては、ユーザが個別に tap を作り対応するようにとのことでした。 とはいえ、それを学生にやらせるのは酷なので、うちの学校で使いそうなアプリの tap を作ろうと考えました。 名前は hkob/tmcit-brew くらいでいいでしょうか。リポジトリ名は hkob/homebrew-tmcit-brew となりますね。

せっかく前回 m1-beta-brew を作ったので、自分のテストはこっちで実施し、うまく動いたものを tmcit-brew に展開する形がよいかと考えています。

sshfs の depends_on の修正

depends_on :osxfuse が使えなくなったので、自分の tap で Requirement を設定する必要があります。昨日の Formula を修正してみます。macFUSE のプルリクエストがまだ止まっていますが、すでに 4.0.4 がインストールしてあれば、この Requirement は通過するはずです。

class MacFuseRequirement < Requirement
  fatal true

  satisfy(:build_env => false) {
    File.exist?("/usr/local/include/fuse/fuse.h") &&
    !File.symlink?("/usr/local/include/fuse")
  }

  def message; <<~EOS
    macFUSE is required; install it via:
      brew install --cask macfuse
    EOS
  end
end

class M1BetaSshfs < Formula
  desc "File system client based on SSH File Transfer Protocol"
  homepage "https://osxfuse.github.io/"
  url "https://github.com/libfuse/sshfs/releases/download/sshfs-2.10/sshfs-2.10.tar.gz"
  sha256 "70845dde2d70606aa207db5edfe878e266f9c193f1956dd10ba1b7e9a3c8d101"
  license "GPL-2.0-or-later"

  depends_on "autoconf" => :build
  depends_on "automake" => :build
  depends_on "libtool" => :build
  depends_on "pkg-config" => :build
  depends_on "glib"
  depends_on MacFuseRequirement

  env do
    ENV.append_path "PKG_CONFIG_PATH", HOMEBREW_LIBRARY/"Homebrew/os/mac/pkgconfig/fuse"

    unless HOMEBREW_PREFIX.to_s == "/usr/local"
      ENV.append_path "HOMEBREW_LIBRARY_PATHS", "/usr/local/lib"
      ENV.append_path "HOMEBREW_INCLUDE_PATHS", "/usr/local/include/fuse"
    end
  end

  patch do
    url "https://github.com/libfuse/sshfs/commit/667cf34622e2e873db776791df275c7a582d6295.patch?full_index=1"
    sha256 "ab2aa697d66457bf8a3f469e89572165b58edb0771aa1e9c2070f54071fad5f6"
  end

  patch :p0, :DATA

  def install
    system "./configure", "--disable-dependency-tracking", "--prefix=#{prefix}"
    system "make", "install"
  end

  test do
    system "#{bin}/sshfs", "--version"
  end
end
__END__
--- sshfs.c.orig   2020-12-03 10:32:25.000000000 +0900
+++ sshfs.c    2020-12-03 10:32:42.000000000 +0900
@@ -14,9 +14,6 @@
 #if !defined(__CYGWIN__)
 #include <fuse_lowlevel.h>
 #endif
-#ifdef __APPLE__
-#  include <fuse_darwin.h>
-#endif
 #include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>

一応、uninstall して install することが確認できました。これを後で、tmcit-brew の方にも展開しようと思います。本家の sshfs が消えるまで使えないので、tb-sshfs のように接頭子付けておいたほうがいいでしょうか。少し様子を見ましょう。

次の記事: 箱出しから初期設定まで - M1 MacBook Air インストール覚書(11) - hkob’s blog

前の記事: 野良 homebrew Formula の作成 - M1 MacBook Air インストール覚書(9) - hkob’s blog

hkob.hatenablog.com