Yapılandırılmış bir Haskell paketinin version >= x.y
kontrol edilmesini nasıl yapılandırabilirim?Haskell paketi sürümleri ./configure içinde nasıl kontrol edilir?
sayesinde ben çok yaklaşık configure
bilmiyorum
Yapılandırılmış bir Haskell paketinin version >= x.y
kontrol edilmesini nasıl yapılandırabilirim?Haskell paketi sürümleri ./configure içinde nasıl kontrol edilir?
sayesinde ben çok yaklaşık configure
bilmiyorum
Kullanım cabalvchk: sürüm kısıtı memnun olup olmadığını
$ cabalvchk parsec '>= 0.4'
dönüş kodu sıfır olacaktır: http://hackage.haskell.org/package/cabalvchk-0.2
Örneğin, ihraç edebileceği, Parsec sürümü> = 0.4 olduğunu doğrulamak için ve sıfırdan farklı. Sürüm kısıtlaması, kabalenin anlayabileceği herhangi bir şey olabilir. İsteğe bağlı üçüncü parametre, ayrıntılı çıktı almak için boş bırakılamaz.
; Belirli bir komutu çalıştırmasını ister misiniz? Eğer öyleyse, ghc-pkg latest
size yardımcı olmalıdır.
% ghc-pkg latest zlib
zlib-0.5.3.1
% ghc-pkg latest --global zlib
zlib-0.5.3.1
% ghc-pkg latest --user zlib
ghc-pkg: cannot find package zlib
zsh: exit 1 ghc-pkg latest --user zlib
--global
sistem genelinde kurulumlar için kullanılmalıdır ve kullanıcıya özgü yüklemeler için hiçbir bayrak: Örneğin, burada zlib
paket için benim makinede bir çalışma bu. --user
bayrağının yalnızca bir kullanıcının yerel bir paket yüklemesi olup olmadığını (global olanı geçersiz kılabilir) kontrol etmek istediğinizde kullanılması gerekir.
Yapmamanız için bir nedeniniz olmadıkça, configure
'u cabal
lehine öneriyorum. cabal
için çözüm burada o zaman yarattı .cabal
dosyada böyle bir çizgi var olmadığını kontrol projenizin dizininde ilk cabal init
şudur: (
build-depends: zlib >= 0.5
cabal
araç zinciri Haskell projeleri için standarttır bunun nedeni bağımlılık-kovalama da dahil olmak üzere birçok şeyi otomatikleştirir ve kolaylaştırır. Başka bağımlılıklar varsa, cabal
numaralı telefonu da configure
numaralı telefonu çağırmasını isteyebilirsiniz. Bununla ilgili daha fazla bilgi edinmek isterseniz ayrı bir soru açın.
Cevabınız için teşekkürler.Ben zaten ghc-pkg kullanıyorum, ama '' x.y' sürümüne ihtiyacım var '' demenin bir yolunu bilmiyorum. 'Configure'i kullanmanın nedeni, haskell betiklerinin çoğunlukla python'da yazılmış daha büyük bir programın bir parçası olmasıdır ve tüm bağımlılıklar zaten yapılandırılarak yönetilmektedir. –
ghc-pkg list
'u kullanarak, bir paketin yüklü sürümlerinin listesini artan sırada alabilirsiniz. Bu listeyi bir eşleşme arayanlara göre filtreleyebilmeliydiniz. (Bunu configure
ile nasıl yapacağımı bilmiyorum). Böyle
$ ghc-pkg list yesod
/home/ahammar/.haskell/lib/ghc-7.0.2/package.conf.d
/home/ahammar/.ghc/x86_64-linux-7.0.2/package.conf.d
yesod-0.8.2.1
yesod-0.9.1
yesod-0.9.2.2
deneyin şey:
# Find ghc-pkg, so we can do version checks
AC_ARG_VAR([GHC_PKG], [Path to ghc-pkg])
AC_PATH_PROG([GHC_PKG], [ghc-pkg])
AS_IF([test -z "$GHC_PKG"], [AC_MSG_ERROR([Cannot find ghc-pkg.])])
# Check that the package actually exists
AC_MSG_CHECKING([for Haskell package foo])
AS_IF([$GHC_PKG latest foo > /dev/null 2>&1],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_ERROR([Cannot find foo])])
# Check its version
AC_MSG_CHECKING([if foo is new enough])
foo_ver=`$GHC_PKG latest foo | sed 's/^foo-//'`
# At this point you have the version of foo and the minimum version you want.
# The rest of the test is pretty easy to write, use cut and test to compare the
# version numbers. If it's new enough, AC_MSG_RESULT([yes]).
# If not, AC_MSG_RESULT([no]) and AC_MSG_ERROR([foo is not new enough.])
Belki daha iyi bir soru şudur: ki? Belirli bir sürüm numarasını kontrol etmek, autoconf dünyasındaki en büyük argümanlardan biridir ve tartışmanın genel galibi, asla yapmamanız gerektiğini söyleyen taraftır. Haskell'in hangi özelliklerine ihtiyacınız var? Bunun için test et. Basit bir örnek olarak (haskell ile ilgisi yok), programınızın inotify'ı kullandığını varsayın, böylece yapılandırmanın kullanılabilir olup olmadığını test etmesini istiyorsunuz. Eğer çekirdek versiyonunun> 2.6.13 olduğunu test edebilirdiniz, ama Joe programınızı 2.4.xx versiyonunda inotify yeteneğine yatırarak çalıştığında çalıştığında, programınızın olmayacağı konusunda gerçekten rahatsızlık duyacak. iş.
Haskell> x.y mevcut ise umurunda değilsiniz. Bunun yerine, Haskell'in x.y'de tanıtılmasını istediğiniz belirli bir özelliği var; Bu özellik için test edin.
Bu gerçekten harika, çünkü yeni bir bağımlılık getirmem gerekiyor demektir. –
Teşekkürler! Uzun vadede, kabile aracı milletine bu işlevselliği doğrudan bağımlılıklara indirgeyecek şekilde cabal olarak eklemek için dilek verebilirim, ancak bu ek bağımlılık acil ihtiyaçlarınız için gerekli olacaktır. –