Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

はじめに

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 ガー、って言ってるのでエラー文そのまま聞いてみる。

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

更新

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

上げたもの

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

問題はビルド処理だった

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

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

$ 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>

: 上記の ACA86*** のやつ。

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

SSL hand shake でのエラー

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

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

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

一旦自分で用意する workaround

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

core をダウンロード

手動で置く

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

$ 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>'

恐らく 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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away