git-cryptをcygwin環境でビルドしてみる [ソフトウェア/PC関係]
特に脈絡もない話題だが,cygwin環境でgit-cryptを使用する必要に迫られたので調べてみた。
git-cryptはパスワードなどの情報を暗号化してgitレポジトリに格納するための透過的な仕組みであるが,gitの標準的なパッケージには含まれていないため,別途用意する必要がある。ところが残念ながら,cygwinにはパッケージが用意されていない。Linuxのubuntuにもないようなので,それはまぁ仕方ないところだろう。それじゃ自分でビルドしてやろう,ということになるわけだ。
git-cryptはgithub上のレポジトリ,https://github.com/AGWA/git-crypt で公開されている。レポジトリのファイルの中に,ビルドの仕方についてのドキュメントも含まれている。それによると,ビルドにはGNU makeとg++,libssl-devの3つのパッケージが必須のようだ。cygwinにも相当のものはあるので,cygwinのインストーラー(setup.exe)で事前にインストールしておこう。もちろんgit-cryptを動作させるためにも,git-cryptのレポジトリをクローンするためにもgitのパッケージが必要である。
で,まず手始めに,適当なディレクトリで「git clone」を実行して git-cryptのレポジトリをクローンする。次に,git-cryptのディレクトリに移って,makeを実行する。
cd git-crypt make
これであっさりうまくいくかと思いきや,util.cppのコンパイル中にあえなくコンパイルエラーが発生する。
g++ -Wall -pedantic -Wno-long-long -O2 -std=c++11 -c -o util.o util.cpp In file included from util.cpp:156: util-unix.cpp: In member function ‘void temp_fstream::open(std::ios_base::openmode)’: util-unix.cpp:79:38: error: ‘mkstemp’ was not declared in this scope; did you mean ‘mkdtemp’? 79 | int fd = mkstemp(path); | ^~~~~~~ | mkdtemp util-unix.cpp: In function ‘std::string our_exe_path()’: util-unix.cpp:135:51: error: ‘realpath’ was not declared in this scope 135 | char* resolved_path_p = realpath(argv0, nullptr); | ^~~~~~~~ make: *** [<builtin>: util.o] Error 1mkstemp関数が宣言されていないとはどういうこと? stdlib.hもインクルードしてるのに。狐につままれたような気分でmkstemp関数だけを呼び出すテストコードを書いてみたら,問題なくコンパイル出来た。違いはなにかというと,コンパイル・オプションだろうか。上記の出力を見ると一目瞭然だが,git-cryptの方は「-std=c++11」が指定されている。C++11仕様でコンパイルするという指定だ。C++11でmkstemp周りが変更されたという認識はなかったが,試しにこのオプションを外してみることにした。C++11じゃないとコンパイルできないコードがあればエラーになるだろう。と思っていたが結果的に何のエラーもなくビルドが完了した。それならわざわざ「-std=c++11」を指定してる理由は何なのだろう。このまま使っているとなにか不具合が起きるのだろうか。取り敢えず手元の暗号化/復号化は動作しているようなのであまり深く追求する気はない。しばらく様子見としよう。
本日のつぶやき: まとめ 2022/07/11
- 【読了】『丸の内で就職したら、幽霊物件担当でした。 (角川文庫)』竹村優希 ☆3 https://t.co/4K9TOpDxeT #booklog 07/10 13:39
- ここ数日,非常に読み辛い,読むのに時間のかかる長編に取り組んでいて,あまりの読み進みの遅さに辟易して,ち...『丸の内で就職したら、幽霊物件担当でした。 (...』竹村優希 ☆3 https://t.co/O4SSwhmUD0 #booklog 07/10 13:39
- 【読了】『丸の内で就職したら、幽霊物件担当でした。2 (角川文庫)』竹村優希 ☆3 https://t.co/p1KMWTC9CI #booklog 07/11 02:55