[インデックス 10423] ファイルの概要
このコミットは、Go言語の標準ライブラリのビルドシステムにおいて、実験的なSSHパッケージ (exp/ssh
) を src/pkg/Makefile
に追加するものです。これにより、exp/ssh
パッケージがGoのビルドプロセスの一部としてコンパイルされるようになります。
コミット
commit 8fdd6c05b1771a8e3a75f0fb073732c593472fcb
Author: Christopher Wedgwood <cw@f00f.org>
Date: Wed Nov 16 17:34:18 2011 -0500
exp/ssh: add to pkg Makefile
R=rsc, dave
CC=golang-dev
https://golang.org/cl/5399045
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/8fdd6c05b1771a8e3a75f0fb073732c593472fcb
元コミット内容
exp/ssh: add to pkg Makefile
R=rsc, dave
CC=golang-dev
https://golang.org/cl/5399045
変更の背景
このコミットが行われた2011年当時、Go言語はまだ発展途上にあり、標準ライブラリも活発に開発されていました。exp
ディレクトリ(src/pkg/exp
)は、Goの標準ライブラリに将来的に組み込まれる可能性のある、しかしまだ安定版とは見なされていない実験的なパッケージを格納するために使用されていました。
exp/ssh
パッケージは、Secure Shell (SSH) プロトコルをGoで実装するための実験的な試みでした。このパッケージを src/pkg/Makefile
に追加する目的は、Goのビルドシステムがこの新しいSSHパッケージを認識し、Goの標準ライブラリの一部として(ただし実験的なものとして)ビルドできるようにすることでした。これにより、開発者は exp/ssh
をGoのツールチェーンを使って簡単にコンパイルし、テストできるようになります。
前提知識の解説
Go言語のパッケージ構造 (2011年頃)
2011年頃のGo言語のソースコードリポジトリは、現在とは異なる構造を持っていました。当時は、標準ライブラリのパッケージは主に src/pkg
ディレクトリ以下に配置されていました。例えば、fmt
パッケージは src/pkg/fmt
に、net/http
パッケージは src/pkg/net/http
にありました。
src/pkg/exp
ディレクトリは、Goの標準ライブラリに最終的に組み込まれることを意図しているものの、まだAPIが安定しておらず、変更される可能性が高い実験的なパッケージを置くための場所でした。これらのパッケージは、Go 1の互換性保証の対象外であり、将来的に削除されたり、大幅に変更されたりする可能性がありました。
Makefile
Makefile
は、プログラムのコンパイルやビルドプロセスを自動化するためのファイルです。make
コマンドによって解釈され、ソースコードから実行可能ファイルやライブラリを生成するための一連のルールと依存関係を定義します。
このコミットで変更されている src/pkg/Makefile
は、Go言語の標準ライブラリ全体をビルドするための主要なMakefileでした。このMakefileは、DIRS
変数にリストされたサブディレクトリ(各パッケージのディレクトリ)に再帰的に make
コマンドを実行することで、すべてのパッケージをビルドしていました。
Secure Shell (SSH) プロトコル
Secure Shell (SSH) は、ネットワークを介して安全にコンピュータを操作するための暗号化されたネットワークプロトコルです。主にリモートコマンド実行、リモートログイン、ファイル転送(SCP、SFTP)などに使用されます。SSHは、クライアントとサーバー間の通信を暗号化し、認証メカニズムを提供することで、盗聴や改ざんからデータを保護します。
技術的詳細
このコミットは、Go言語のビルドシステムにおけるパッケージの検出とビルド方法に関するものです。当時のGoのビルドシステムは、src/pkg/Makefile
を中心としていました。このMakefileには DIRS
という変数が定義されており、Goの標準ライブラリに含まれるすべてのパッケージのディレクトリがリストされていました。
make
コマンドが src/pkg
ディレクトリで実行されると、この Makefile
が読み込まれ、DIRS
にリストされている各ディレクトリに対して再帰的に make
が実行されました。これにより、各パッケージの Makefile
が実行され、そのパッケージがコンパイルされていました。
exp/ssh
を DIRS
リストに追加するということは、src/pkg/Makefile
が exp/ssh
ディレクトリもビルド対象として認識し、その中の Makefile
(もし存在すれば)を実行して exp/ssh
パッケージをコンパイルするようになることを意味します。これにより、exp/ssh
はGoの標準ライブラリの他のパッケージと同様に、make install
などのコマンドでビルドおよびインストールされるようになります。
この変更は、exp/ssh
パッケージがGoの標準的な開発ワークフローに統合され、他のGoパッケージと同様にビルドおよびテストが可能になることを示しています。ただし、exp
ディレクトリにあることから、このパッケージはまだ実験段階であり、APIの変更や削除の可能性があることを示唆しています。
コアとなるコードの変更箇所
diff --git a/src/pkg/Makefile b/src/pkg/Makefile
index 8971f7c1d0..0e4ec8b828 100644
--- a/src/pkg/Makefile
+++ b/src/pkg/Makefile
@@ -83,6 +83,7 @@ DIRS=\
exp/gui\
exp/gui/x11\
exp/norm\
+\texp/ssh\
exp/spdy\
exp/sql\
exp/sql/driver\
コアとなるコードの解説
変更は src/pkg/Makefile
の1行の追加のみです。
+\texp/ssh\
この行は、DIRS
変数に exp/ssh
というエントリを追加しています。DIRS
変数は、src/pkg/Makefile
がビルド対象とするサブディレクトリのリストを保持しています。このリストに exp/ssh
を追加することで、make
コマンドが src/pkg
ディレクトリで実行された際に、exp/ssh
ディレクトリもビルド対象として含まれるようになります。
具体的には、make
は exp/ssh
ディレクトリに移動し、そのディレクトリ内の Makefile
(もし存在すれば)を実行して、exp/ssh
パッケージのコンパイルとインストールを行います。これにより、exp/ssh
パッケージがGoのビルドシステムに正式に組み込まれ、他の標準ライブラリパッケージと同様にビルドされるようになります。
関連リンク
- Go CL 5399045: https://golang.org/cl/5399045
参考にした情報源リンク
- 特になし (コミット内容と当時のGoのビルドシステムに関する一般的な知識に基づく)