Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 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/sshDIRS リストに追加するということは、src/pkg/Makefileexp/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 ディレクトリもビルド対象として含まれるようになります。

具体的には、makeexp/ssh ディレクトリに移動し、そのディレクトリ内の Makefile(もし存在すれば)を実行して、exp/ssh パッケージのコンパイルとインストールを行います。これにより、exp/ssh パッケージがGoのビルドシステムに正式に組み込まれ、他の標準ライブラリパッケージと同様にビルドされるようになります。

関連リンク

参考にした情報源リンク

  • 特になし (コミット内容と当時のGoのビルドシステムに関する一般的な知識に基づく)