Shogo's Blog

Feb 4, 2024 - 1 minute read - github github-actions mysql redis

actions-setup-mysqlとactions-setup-redisがApple M1上で動くようになりました

GitHub Actions に Apple Silicon がやってきました!

先日Perlをビルドして遊んでみました。

今回はMySQLとRedisをビルドしてみたお話です。

actions-setup-mysql v1.31.0, actions-setup-redis リリースのお知らせ

actions-setup-mysql v1.31.0, actions-setup-redis v1.33.0 から M1 macOS に対応しています。 runs-on: キーに macos-14 を指定すると M1 を利用できます。

jobs:
  build:
    runs-on: macos-14
    steps:
      - uses: actions/checkout@v4
      - name: Set up MySQL
        uses: shogo82148/actions-setup-mysql@v1.31.0

M1による高速化

今日現在(2024-02-04)のMySQL最新安定版リリースは 8.0.36 です。 MySQL 8.0.36 のビルドにx64では 49m 45s かかりました。 M1 macOSでビルドしたところ 23m 16s で完了しました。 53.2%の高速化 です。

修正点

x64と同じ手順でビルドしたところ、いくつかのバージョンでは素直にビルドが通りませんでした。 そのようなバージョンにはいくつかパッチを当てました。 Perl は素直にビルドが通ってすごいですね。まあ、だいたい Devel::PatchPerl のおかげ。

Xcodeに付属するclangを使ってMySQLをビルドするように修正

x86上ではbrewで新しいClangをインストールしてビルドに使っていました。 MySQL 8.0にC++20の新しい構文が使用されており、Xcode に付属するClangは古すぎてビルドできなかったためです。

しかし macos-14 ではリンクに失敗してしまいました。 エラーメッセージでググったところ以下のIssueがヒットしました。

「Xcodeに付属するClangを使用せよ」とのこと。 macos-14 の Clang は十分に新しいので、この方法で解決しました。

MariaDBにPCRE2を同梱しました

shogo82148/actions-setup-mysql では MariaDB も提供しているので、 MariaDBのビルドも必要です。 今までと同じ手順で macos-14 向けのビルドをしたところ、 pcre2posix.h が見つからずにエラーになってしまいました。

   /Users/runner/work/_temp/mariadb-10.5.23/client/mysqltest.cc:49:10: fatal error: 'pcre2posix.h' file not found
  #include "pcre2posix.h" /* pcreposix regex library */
           ^~~~~~~~~~~~~~
  1 error generated.

PCRE2のファイルっぽいので、PCRE2をインストールして解決しました。

古いRedis がmacos-14でビルドできない

古いRedisが macos-14 でビルドできない問題に遭遇しました。 最新版のRedisでは修正されているので、バックポートして修正しました。

まとめ

shogo82148/actions-setup-mysqlshogo82148/actions-setup-redis が Apple Silicon 上で動くようになりました。 かなりの高速化が期待できるので、ぜひお試しください。

参考