summaryrefslogtreecommitdiffhomepage
path: root/vhosts/blog/content/posts/2025-04-24
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-06-27 23:39:31 +0900
committernsfisis <nsfisis@gmail.com>2025-06-27 23:39:31 +0900
commit674fe965550444db87edc7937ff6932e1a918d9d (patch)
treee8a80dd958d3e082485286bf5785a7992b6e6b0e /vhosts/blog/content/posts/2025-04-24
parentfe4d1d625b53796c5f20399790e5ff8c7a7e1608 (diff)
downloadnsfisis.dev-674fe965550444db87edc7937ff6932e1a918d9d.tar.gz
nsfisis.dev-674fe965550444db87edc7937ff6932e1a918d9d.tar.zst
nsfisis.dev-674fe965550444db87edc7937ff6932e1a918d9d.zip
feat(meta): rename vhosts/ directory to services/
Diffstat (limited to 'vhosts/blog/content/posts/2025-04-24')
-rw-r--r--vhosts/blog/content/posts/2025-04-24/composer-patches-v2-does-not-require-gnu-patch-even-on-macos.dj73
1 files changed, 0 insertions, 73 deletions
diff --git a/vhosts/blog/content/posts/2025-04-24/composer-patches-v2-does-not-require-gnu-patch-even-on-macos.dj b/vhosts/blog/content/posts/2025-04-24/composer-patches-v2-does-not-require-gnu-patch-even-on-macos.dj
deleted file mode 100644
index b64b7981..00000000
--- a/vhosts/blog/content/posts/2025-04-24/composer-patches-v2-does-not-require-gnu-patch-even-on-macos.dj
+++ /dev/null
@@ -1,73 +0,0 @@
----
-[article]
-uuid = "087e98f2-743c-48d8-9f67-e9b57e354845"
-title = "【Composer】 composer-patches v2 では macOS でも GNU patch のインストールが不要になる (予定)"
-description = "composer-patches は BSD patch に対応しておらず、一部のパッチの適用に失敗する。現在ベータ版である v2 では patch コマンドに依存しなくなり、macOS で使うときのストレスが解消される見込み。"
-tags = [
- "composer",
- "macos",
- "php",
-]
-
-[[article.revisions]]
-date = "2025-04-10"
-remark = "デジタルサーカス株式会社の社内記事として公開"
-isInternal = true
-
-[[article.revisions]]
-date = "2025-04-24"
-remark = "公開"
----
-::: note
-この記事は、2025-04-10 に [デジタルサーカス株式会社](https://www.dgcircus.com/) の社内 Qiita Team に公開された記事をベースに、加筆修正して一般公開したものです。
-:::
-
-{#intro}
-# はじめに
-
-[Composer](https://getcomposer.org/) は PHP におけるデファクトスタンダードなパッケージ管理システムである。
-
-Composer を拡張するプラグインの一つに、[composer-patches](https://github.com/cweagans/composer-patches) という Composer パッケージがある。
-これは、Composer でパッケージをインストールするときにそのパッケージへ任意のパッチを当てるプラグインである。
-
-社内で発見しすぐに適用しなければならないバグ修正や、Pull Request こそあるもののなかなかマージされない機能等をすぐさま適用してリリースすることができる。
-
-弊社でも多くのプロジェクトで活用されており、のべ数では数百ものパッチが当てられている。
-
-{#on-macos}
-# macOS での問題点
-
-`composer-patches` は、macOS で一部のパッチの適用に失敗することが知られている。
-関連 issues:
-
-* https://github.com/cweagans/composer-patches/issues/522
-* https://github.com/cweagans/composer-patches/issues/326
-
-これは、`composer-patches` の想定する `patch` コマンドが GNU 実装の patch であることに由来する。
-macOS にプリインストールされている `patch` はいわゆる BSD patch であり、GNU patch とは完全な互換性がない。
-
-ワークアラウンドとして、macOS にも GNU patch をインストールしてしまうという方法がある。
-例:
-
-```
-$ brew install gpatch
-$ echo 'PATH="/opt/homebrew/opt/gpatch/libexec/gnubin:$PATH"' >> ~/.zshrc
-```
-
-GNU patch を Homebrew などの手段でインストールし、BSD patch よりも優先されるパスに配置すれば問題が解消する。
-
-{#in-version-2}
-# v2 では
-
-現在ベータ版である `composer-patches` v2 では、このワークアラウンドが不要になる (見込み)。
-
-最新の実装では、`git apply` コマンドが最優先で使われる。
-また、Git リポジトリがない場合 (`config.preferred-install` を `dist` に設定している場合など。デフォルトではそうなる) には `git init` を使って一時的にリポジトリを作成し、その上で `git apply` を実行するようになった。
-
-この変更により、環境ごとに差異のある `patch` コマンドへの依存がなくなるので、macOS で `composer-patches` を使うときの厄介事は解消されるものと思われる。
-
-[2.0.0-beta1](https://github.com/cweagans/composer-patches/releases/tag/2.0.0-beta1) のリリースノートより:
-
-> * Only have git patchers and freeform patcher? by [*@cweagans*](https://github.com/cweagans) in [#472](https://github.com/cweagans/composer-patches/pull/476)
-
-この変更で `patch` コマンドへの依存が排除された。