AppScript を Xcode 4.0.2 の環境にインストール
色々とあって iTunes のライブラリにサーバのあちこちに散らばっている曲データを入れなければならなくなった。
とりあえずサーバのどこにファイルがあるか?というリストはできたので、後はそれを iTunes に加えるだけなんだけどさすがに手で数百のファイルを移動出来ないし…。
というわけで、AppleScript でやろうかな?と思って調べたら、Python でアプリケーションの AppleScript をいぢれる? AppScript というものを発見。
早速入れてみようと思ったらなぜか面倒なことになったのでメモ。
AppScript のインストール(失敗したパターン)
まずは Snow Leopard に Xcode 4.0.2 が入ってる iMac でやってみた。
AppScript はココのページにある通りの方法でインストールする。
paraches-iMac:~ paraches$ sudo easy_install appscript Searching for appscript Reading http://pypi.python.org/simple/appscript/ Reading http://appscript.sourceforge.net Best match: appscript 1.0.0 Downloading http://pypi.python.org/packages/source/a/appscript/appscript-1.0.0.tar.gz#md5=6619b637037ea0f391f45870c13ae38a Processing appscript-1.0.0.tar.gz Running appscript-1.0.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-zIruMm/appscript-1.0.0/egg-dist-tmp-kW6b2R /usr/libexec/gcc/powerpc-apple-darwin10/4.2.1/as: assembler (/usr/bin/../libexec/gcc/darwin/ppc/as or /usr/bin/../local/libexec/gcc/darwin/ppc/as) for architecture ppc not installed Installed assemblers are: /usr/bin/../libexec/gcc/darwin/x86_64/as for architecture x86_64 /usr/bin/../libexec/gcc/darwin/i386/as for architecture i386 appscript_2x/ext/ae.c:1511: fatal error: error writing to -: Broken pipe compilation terminated. lipo: can't open input file: /var/tmp//ccYQAVBU.out (No such file or directory) error: Setup script exited with error: command 'gcc-4.2' failed with exit status 1 paraches-iMac:~ paraches$
エラーが出てしまいインストールできない。
Web でインストールで検索してあちこち見てみたけど、普通に Snow Leopard 環境で「sudo easy_install appscript」としてインストールできているみたいなんだけど…。
仕方がないので Snow Leopard に Xcode 3.2.6 が入ってる MacBook Air でやってみた。
MacBookAir:myTest paraches$ sudo easy_install appscript Password: Searching for appscript Reading http://pypi.python.org/simple/appscript/ Reading http://appscript.sourceforge.net Best match: appscript 1.0.0 Downloading http://pypi.python.org/packages/source/a/appscript/appscript-1.0.0.tar.gz#md5=6619b637037ea0f391f45870c13ae38a Processing appscript-1.0.0.tar.gz Running appscript-1.0.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-Pe4mh8/appscript-1.0.0/egg-dist-tmp-KGyWGD zip_safe flag not set; analyzing archive contents... Adding appscript 1.0.0 to easy-install.pth file Installed /Library/Python/2.6/site-packages/appscript-1.0.0-py2.6-macosx-10.6-universal.egg Processing dependencies for appscript Finished processing dependencies for appscript MacBookAir:myTest paraches$ python Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from appscript import * >>>
あれ? ちゃんとインストールできて、実際に Python で import も問題ない。
なんで???
AppScript を setup.py でインストール
両者の環境の違いは Xcode のバージョン。問題ないのは 3.2.6 で、ダメなのは 4.0.2。
エラーメッセージを見るとなんか ppc 用のアセンブラが入ってないって怒られてる気がする。って、なんで ppc 用のアセンブラが必用なんだ?
ま、そんなわけでアチコチ調べてみたりしたけどそのものズバリの答えは見つからなかった。でも、どうもアーキテクチャを指定するのと SDK を指定するのでいけるんじゃないか?という感じになったのでやってみた。
まずは、AppScript のソースファイル?はココからダウンロードしてきて展開。
paraches-iMac:myTest paraches$ curl -O http://pypi.python.org/packages/source/a/appscript/appscript-1.0.0.tar.gz paraches-iMac:myTest paraches$ tar -zxvf appscript-1.0.0.tar.gz
次に setup.py の extra_link_args に MacOSX10.6.sdk のライブラリを加える。(本当にこれが必用かどうかはわからない…)(必要なかった!)
extra_link_args=[ '-framework', 'CoreFoundation', '-framework', 'ApplicationServices', '-framework', 'Carbon', '-L/Developer/SDKs/MacOSX10.6.sdk/usr/lib'],
で、root になってアーキテクチャを「x86_64」に指定してインストールする。
sh-3.2# export ARCHFLAGS="-arch x86_64" sh-3.2# python setup.py install
これで問題なくビルド&インストールができた!
こんな感じで使えます。
paraches-iMac:appscript-1.0.0 paraches$ python Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from appscript import * >>> itunes = app("itunes") >>> itunes.play() >>>
あ〜なんか今更だけどもっとスマートな方法が見つかった感じ。(ココで発見。)
sudo env ARCHFLAGS="-arch x86_64" easy_install appscript
これで root になんかならずに sudo でいけるみたい…。