Как мога да конфигурирам cabal да използва различни папки за 32-битови и 64-битови пакети?

Правя известно тестване на 64-битов GHC на Windows, в тандем с мигриране на код към GHC 7.6.1. Това означава, че имам инсталирани както 32-битовата, така и 64-битовата версия на GHC 7.6.1, така че мога да различа 64-битовите специфични проблеми от общите проблеми с 7.6.1.

Моят cabal конфигурационен файл ($APPDATA/cabal/config) съдържа

libsubdir: $pkgid\$compiler

което означава, че както 32-битовите, така и 64-битовите версии на пакетите, които инсталирам, завършват напр. zip-archive-0.1.1.8/ghc-7.6.1 и взаимно презаписване.

Има ли някаква променлива като $compiler, но разграничаваща 32 и 64 бита, или друга техника, която мога да използвам, за да я накарам да държи пакетите разделени?


person GS - Apologise to Monica    schedule 12.09.2012    source източник


Отговори (2)


Можете да използвате $arch (и/или $os) с достатъчно скорошни версии на Cabal, които ще бъдат заменен с низ като x86_64 (вижте раздела за документация на Cabal "Променливи на пътя в простата система за изграждане" за повече подробности)

person hvr    schedule 01.10.2012
comment
Благодаря! Опитах доста неща, преди да задам въпроса, включително отгатване на променливи, търсене в документите и четене на източника на Cabal, така че не знам как съм пропуснал това. - person GS - Apologise to Monica; 02.10.2012

Това вероятно не е правилният начин да го направя, но на моя лаптоп, където зареждам 32-битови и 64-битови операционни системи, имам хак, настроен да се справя с това. По принцип имам две директории, .cabal-i386 и .cabal-x86_64, и превключвам напред и назад чрез символни връзки. В моя .zshrc:

CabalDir=$HOME/.cabal-`uname -m`
if [ ! -d $CabalDir]; then
    echo WARNING: no cabal directory yet for `uname -m`, creating one.
    mkdir -p $CabalDir/{bin,lib,logs,share}
fi
ln -sft $HOME/.cabal $CabalDir/{bin,lib,logs,share}

Може би можете да приемете някаква подобна стратегия, като си дадете кратка команда за изключване на някои символни връзки (или какъвто и да е аналогът на символните връзки на Windows).

person Daniel Wagner    schedule 12.09.2012
comment
Бих обмислял нещо подобно, но обикновено искам да имам няколко отворени прозореца на конзолата, всеки от които сочи към различен ghc (което правя чрез манипулиране на PATH) и да работя върху тях паралелно. - person GS - Apologise to Monica; 14.09.2012