2015-09-29 39 views
16

Sytuacja jest taka, próbuję zainstalować Netwire przy użyciu Stack. W najnowszym netwire 5.0.1 jest jednak problem, jak donosi dhobbs: http://hub.darcs.net/ertes/netwire/issue/13Jak zainstalować/użyć lokalnej wersji pakietu za pomocą Stack?

Ponieważ nie wiem, kiedy problem zostanie naprawiony, pobrałem repozytorium i sam je wprowadziłem. Jednak nie rozumiem, jak zainstalować taką lokalnie poprawioną wersję. stack install nie instaluje tego w ~/.stack. Czy ktoś ma pomysł?

Aktualizacja

Teraz Zajmuję się kilka innych bibliotek za pomocą stosu. Jak sprawić, by inny projekt korzystał z tych bibliotek? Trudne kodowanie względnej ścieżki wygląda niesamowicie brzydko.

Odpowiedz

11

Więc masz projekt, w którym chcesz, aby cię wykorzystać lokalnie poprawionych wersji Netwire w swoim projekcie masz stack.yml, jako przykład:

flags: {} 
packages: 
- '.' 
extra-deps: {} 
resolver: lts-3.7 

możliwość mają również zależność od netwire zadeklarował w swoim cabal plik.

Aby użyć połatany Netwire w tym projekcie twojej wystarczy umieścić połatany pakiet Netwire w podkatalogu projektu, być może o nazwie netwire i zaktualizuj stack.yml jako takie:

flags: {} 
packages: 
- '.' 
- netwire 
extra-deps: {} 
resolver: lts-3.7 

Teraz stack build zbuduje Twój projekt z załataną wersją Netwire.

Można również umieścić zmodyfikowaną źródło w Internecie (jeśli pozwala na to licencyjnych) oraz zapoznać się z źródłowego przy użyciu adresu URL archiwum ze

- https://example.com/netwire.tar.gz 

lub git repozytorium i zobowiązać odniesienie:

- location: 
    git: [email protected]/netwire 
    commit: 6a86ee32e5b869a877151f74064572225e1a0398 

(Zapoznaj się z dokumentacją, aby uzyskać więcej informacji: https://docs.haskellstack.org/en/stable/yaml_configuration/#packages-and-extra-deps)

+1

Znam tę metodę. Chciałbym jednak umieścić bibliotekę sieciową w wygodniejszym miejscu, odizolowanym od źródła. Wykonanie tego, co powiedziałeś, sprawia, że ​​czuję się jak skompilowanie pakietu oprogramowania/usr i przechowywanie źródeł właśnie tutaj. –

+0

Lub, chciałbym, gdybym używał 'stack ghci' w dowolnym miejscu, mogę zaimportować' Control.Wire' –

+0

Nie jestem w 100%, ale nie sądzę, że jest to obsługiwany przypadek użycia. – adamse