Как я могу настроить Cabal для использования разных папок для 32-битных и 64-битных пакетов?

Я провожу тестирование 64-битного GHC в Windows в тандеме с переносом кода на GHC 7.6.1. Это означает, что у меня установлены как 32-битная, так и 64-битная версии GHC 7.6.1, поэтому я могу отличить специфические проблемы 64-битной версии от общих проблем с 7.6.1.

Мой конфигурационный файл клики ($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