AppScript を Xcode 4.0.2 の環境にインストール

色々とあって iTunes のライブラリにサーバのあちこちに散らばっている曲データを入れなければならなくなった。
とりあえずサーバのどこにファイルがあるか?というリストはできたので、後はそれを iTunes に加えるだけなんだけどさすがに手で数百のファイルを移動出来ないし…。
というわけで、AppleScript でやろうかな?と思って調べたら、Python でアプリケーションの AppleScript をいぢれる? AppScript というものを発見。
早速入れてみようと思ったらなぜか面倒なことになったのでメモ。

AppScript のインストール(失敗したパターン)

まずは Snow LeopardXcode 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 LeopardXcode 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 でいけるみたい…。