2008-09-21

MacPorts のルーチンワーク

$ sudo port -d selfupdate
$ sudo port -d sync
$ port outdated
$ sudo port -d upgrade installed

active でないものを消す

$ sudo port -uf uninstall

2008-08-27

Garage Band Jam Pack

Garage Band Jam Pack (Logic Studio 付属) はインストールすると本体のハードディスクにインストールされる.これを外部ディスクに追い出すにはどうするか?

1. 外部ディスクにディレクトリを作成

$ mkdir -p "/Volumes/LagrangeExt/Library/Audio/Apple Loops/Apple"

2. 本体にインストールされた Jam Pack を mv する.

$ mv "/Library/Audio/Apple Loops/Apple/Jam*" "/Volumes/LagrangeExt/Library/Audio/Apple Loops/Apple"

3. 本体の Apple Loops ディレクトリにシンボリックリンクを作成する.

$ cd "/Volumes/LagrangeExt/Library/Audio/Apple Loops/Apple"
$ ln -s "/Volumes/LagrangeExt/Library/Audio/Apple Loops/Apple/" LagrangeExt

4. Garage Band の Loop Index を作成し直す

  • ディレクトリ /Library/Audio/Apple Loops Index 内のファイルを消して GarageBand を起動する.

2008-06-23

SCons で一つのソースから複数のターゲットを作る

SCons で一つのソースから複数のターゲットを作るときにうまくいかないのでテストしてみる.

def XXXBuilder():
    return Builder(action = "perl xcommand $SOURCES")

def YYYBuilder():
    return Builder(action = "perl ycommand $SOURCES")

env = Environment(BUILDERS = { "XXX":  XXXBuilder(), "YYY": YYYBuilder() })

env.XXX("src.aaa.xxx", "src.aaa")
env.YYY("src.aaa.yyy", "src.aaa")

ここで,xcommand file は file から file.xxx を生成,また,ycommand file は file から file.yyy を生成.

これを実行するとうまくいった.

うまくいかないと思い込んでいたのは,

env.XXX(None, "src.aaa")
env.YYY(None, "src.aaa")

のようにしていたため.このようにしていたのは,この場合の一つのコマンドが一つのソースから複数のターゲットを生成するのに対応しようとしたため.(→そうではなく,scons -c で消去されないようにするためだった)

あらためて,一つのコマンドで一つのファイルから複数のターゲットを生成する方法を検証してみると,以下で全く問題なかった(もちろん xcommand で .xxx と .yyy を生成するようにした上で).

env.XXX(["src.aaa.xxx", "src.aaa.yyy"], "src.aaa")