2014-11-06 34 views
12

Ben çizgileri görmüyorum, yani, recompiled değil, en Hiç HsColour programı yüklü varsayalım ve yine QuickCheck yüklerseniz ben QuickCheckHsColour ikili kuvvetlerinin varlığı/yokluğu neden QuickCheck kitaplığını yeniden derlemeli?

$ cd /tmp/ 
$ cabal get QuickCheck 
$ cd QuickCheck 
$ cabal install 
... 
[ 1 of 15] Compiling Test.QuickCheck.Random 
... 
[15 of 15] Compiling Test.QuickCheck 
... 
Installed QuickCheck-2.7.6 

yüklemek

[ 1 of 15] Compiling Test.QuickCheck.Random 
... 
[15 of 15] Compiling Test.QuickCheck 

Ancak HsColour güncel sürümünü (1.20.3) yükler ve QuickCheck'i tekrar yüklerseniz, QuickCheck yeniden derlenir.

  1. Ben HsColour yükleyin
  2. Ben QuickCheck yükleyin
  3. Ben HsColour ikili çıkarılıp
  4. Ben QuickCheck yüklerseniz

    QuickCheck da derlenmiş çekirdekler.

Ben ghc 7.8.3, Cabal'a 1.20.0.2 ile bu davranışı test edilmiş ve 1.20.0.3 cabal yükleyin ve Cabal'a ve geliştirilmesi versiyonları (https://github.com/haskell/cabal/commit/5ef7d84bb25cc5d53ad124978922f2c96bedb7d4 kullanarak) cabal yükleyin.

+0

Garip. Kütüphane belgeleriniz açık mı? –

+0

Hayır, bu seçeneğin açık olmaması. – asr

+0

Bu davranışı bir sanal alandaki "cabal install --disable-documentation" ile kopyalayabilirim. Dahası, ben de bunu basit eski "runhaskell Setup.lhs configure --user && runhaskell Setup.lhs" ile çoğaltabiliyorum (böylece belgelerin etkinleştirilmesi/devre dışı bırakılması gerçekten buna dahil değildir); En iyi tahminim, yapılandırma değiştiği için, her şeyi yeniden inşa etmek istemesidir. – ivanm

cevap

1

Uzman değilim, ancak kabalının farkında olduğu ve bulabildiği tüm yapım araçlarını yapılandırdığına inanıyorum. Oluştururken, cabal, oluşturma aracı sürümünü sınamak için bir makroyla cabal_macros.h dosyası oluşturur. CPP uzantısı etkinleştirildiyse, dosya her yerde bulunur ve her şey cabal_macros.h'daki herhangi bir değişiklik için yeniden oluşturulur.

+0

Not: Ödül alıyorsunuz, çünkü bir fikriniz var gibi görünüyor ve çaba harcadı, ve ödülün boşa gitmesini istemem. Cevabım gerçekten doğruysa * hiçbir fikrim yok *. – dfeuer

+0

Test etmenin bir yolu: 'cabal-macros.h' dosyasını al, yeniden yapılandır, yeni ile eskiyi değiştir ve yeni olanı yenisiyle değiştirip değiştirmemeye devam et. – ivanm

+0

@ivanm 'cabal-macros.h' değişkenini değiştirerek kesinlikle 'CPP' ile modüllerin yeniden derlenmesini sağlar. Bunu her gün görüyorum (ve bu nedenle CPP'nin kullanımını minimuma indirmeye çalışıyorum.) Cabal'ın neden * all * build araçları yapılandırdığını bilmiyorum. Muhtemelen bir sebep var, ama ben bir tane bilmiyorum. – Yuras