Realm 1.0.1 に Carthage で上げようとしたらたくさん躓いたのでメモ

# はじめに

Mac 環境を前提としております。
Realm のバージョン上げようと思っただけなのに、関係ないとこも含めて色々な場所で躓いたので記録です。
同じ躓きがあった場合に少しでも参考になれば、くらいの気持ちで書いています。


# やりたかったこと

**そうだ、 Realm を最新版にあげようっと！**

0.98.2 だったので、最新版に更新したいなって思った。

- Cartfile

```
github "realm/realm-cocoa"
```

今も家で Objective-C を書いていますが私は元気です。
https://realm.io/docs/objc/latest/


# 発生している問題

```
$ carthage update
```

としてみたら、以下のように失敗しまくり。

```
*** Fetching realm-cocoa
*** Skipped downloading realm-cocoa.framework binary due to the error:
    "GitHub API request failed: Bad credentials"
*** Checking out realm-cocoa at "v1.0.1"
*** xcodebuild output can be found in /var/folders/8_/7ynxtz2n43z1l4qc5162hbw00000gn/T/carthage-xcodebuild.jpYJHU.log
*** Building scheme "RealmSwift" in RealmExamples.xcworkspace
2016-07-02 20:47:13.575 xcodebuild[16829:2491443] [MT] PluginLoading: Required plug-in compatibility UUID ACA8656B-FEA8-4B6D-8E4A-93F4C95C362C for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/RealmPlugin.xcplugin' not present in DVTPlugInCompatibilityUUIDs
** BUILD FAILED **

The following build commands failed:
    PhaseScriptExecution Download\ Core /Users/user/Library/Developer/Xcode/DerivedData/RealmExamples-gmwzyfdylnwkvhapnnnzxwbmywjh/Build/Intermediates/Realm.build/Release-watchos/Realm.build/Script-5D659E7F1BE04556006515A0.sh
(1 failure)
Downloading core failed:\ncurl: (35) Server aborted the SSL handshake
A shell task failed with exit code 65:
2016-07-02 20:47:13.575 xcodebuild[16829:2491443] [MT] PluginLoading: Required plug-in compatibility UUID ACA8656B-FEA8-4B6D-8E4A-93F4C95C362C for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/RealmPlugin.xcplugin' not present in DVTPlugInCompatibilityUUIDs
** BUILD FAILED **

The following build commands failed:
    PhaseScriptExecution Download\ Core /Users/user/Library/Developer/Xcode/DerivedData/RealmExamples-gmwzyfdylnwkvhapnnnzxwbmywjh/Build/Intermediates/Realm.build/Release-watchos/Realm.build/Script-5D659E7F1BE04556006515A0.sh
(1 failure)
```

# 先生に聞く

なんか Credential ガー、って言ってるのでエラー文そのまま聞いてみる。

- .gitconfig に Credential 設定しよう
    - https://github.com/Carthage/Carthage/issues/1188#issuecomment-195918921

手順 2 の private repo を clone する方法わからず。。。


# 更新

何はともあれツール類を最新に上げたら何か変わるかもしれない！

## 上げたもの

- Carthage : 0.14.0 -> 0.17.0
- git : 2.6.4 -> 2.9.0

# 問題はビルド処理だった

色々更新したので carthage update を実行してみたら、 keychain の認証ダイアログ出た。
そこで承認するも・・・・・・解決せず。

おかしいなと思ってログを再度読み返したところ 「UUID か！」と気づく（遅い）
（Bad Credentials の部分はバイナリ落とそうとしてやめた、のようなので気にしなくてよかったかもしれません。）

- 最新のXcodeでXcode Plug-insを動くようにする（Xcode 7動作確認済）
    - http://qiita.com/radioboo/items/392fd3bd532972d75c73

```
$ defaults read /Applications/Xcode.app/Contents/Info.plist DVTPlugInCompatibilityUUID
ACA8656B-FEA8-4B6D-8E4A-93F4C95C362C
```

```
$ find ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -name Info.plist | xargs -IFILE defaults write FILE DVTPlugInCompatibilityUUIDs -array-add <UUID>
```

<UUID> : 上記の ACA86*** のやつ。

Xcode を再起動し、ダイアログが表示されたら Load Bundles を指定
ダイアログは出なかったが、 update を実行しても UUID に関するビルドエラーは出なくなった。


# SSL hand shake でのエラー

まだ解決しない。。。
どうやら問題は 2 つあったようだ。（最初から 2 つ出てた）

## core のダウンロードを成功するよう対応

原因・方法わかりませんでした。。。
わかりましたら追記するようにします（覚えていれば）。

## 一旦自分で用意する workaround

core をダウンロードして所定の場所に配置しておけば、ビルド時にそれを使ってくれます。

- Realm が Downloading core failed. によって pod install に失敗する場合の対処療法
    - http://qiita.com/usagimaru/items/46d82fd7bb23b4a5be8e

### core をダウンロード

- Realm v1.0.1 core ( = 1.1.1 )
    - https://static.realm.io/downloads/core/realm-core-1.1.1.tar.bz2

### 手動で置く

ファイル名を変更しておく必要があるので注意。

```
$ cp realm-core-1.1.1.tar.bz2 $TMPDIR/core_bin/core-1.1.1.tar.bz2
```

$TMPDIR : /var/folders/8_/7ynxtz2n43z1l4qc5162hbw00000gn/T/ こんな感じのディレクトリ。 carthage の log が置かれるパス参照。

# ビルド

必要なものは取得済みなので、ビルドのみ実行します。

$ carthage build

```
*** xcodebuild output can be found in /var/folders/8_/7ynxtz2n43z1l4qc5162hbw00000gn/T/carthage-xcodebuild.PHesq5.log
*** Building scheme "RealmSwift" in RealmExamples.xcworkspace
*** Building scheme "Realm" in RealmExamples.xcworkspace
*** Building scheme "PlaygroundFrameworkWrapper" in RealmExamples.xcworkspace
```

最初 build 実行した時は全然進んでいる気配がなかったので再実行しました。
log にビルドログが吐き出されていれば進んでいるし、うんともすんとも言ってなかったら止まってます。

そこそこ時間がかかりつつも、無事ビルドが通りました。
お疲れ様でした（まだ開発始まってないけど）。


# おまけでハマったもの

## brew を実行しようとしたら常にエラーが出る場合

brew をどの引数で叩いても以下のように出力される現象にぶち当たりましたのでメモ。

- brew : 0.9.9
- ruby : ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]

brew をどの引数でもいいので実行すると以下のように出る。というかどの引数でも以下のようにしか出ない。

```
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mach (LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Library/brew.rb:15:in `<main>'
```

- Homebrewを久々にupdateしたら出来なかった時の対処法
    - http://qiita.com/takezoux2@github/items/aa2a5f0bef19cd0d8508

恐らく macOS の更新の影響ではないか説
変更されたファイル群を元に戻します。

```
$ cd /usr/local
$ git reset --hard && git clean -df
```

[メモ]git status で確認してみたところ、確かにいろいろファイルが消されていたようです。
それぞれの内容までは追えていませんが、 Homebrew 系のファイルも消えていました。

```
    deleted:    Library/Homebrew/cmd/aspell-dictionaries.rb
    deleted:    Library/Homebrew/cmd/update.rb
    deleted:    Library/Homebrew/keg_fix_install_names.rb
    deleted:    Library/Homebrew/mach.rb
    deleted:    Library/Homebrew/test/.gitignore
    deleted:    Library/Homebrew/test/test_cmd_cleanup.rb
```

ファイルを戻したら権限を変えておきます。

```
$ sudo chown -R $(whoami):admin /usr/local
```

最後にアップデートしておきましょう。

```
$ brew update
```