2016-08-07 5 views
0

Windows 10에서 Haskell Stack을 사용합니다.Haskell Stack에서 종속 된 패키지의 잘못된 .cabal 파일을 어떻게 수정합니까?

gtk를 내 패키지의 의존성으로 설치할 때 다음 메시지가 표시됩니다.

glib-0.13.2.2: configure 
glib-0.13.2.2: build 
Progress: 1/5 
-- While building package glib-0.13.2.2 using: 
     C:\Users\junyoung\AppData\Local\Temp\stack6012\glib-0.13.2.2\.stack-work\dist\2672c1f3\setup\setup --builddir=.stack-work\dist\2672c1f3 build --ghc-options " -ddump-hi -ddump-to-file" 
    Process exited with code: ExitFailure 1 
    Logs have been written to: C:\Users\junyoung\Documents\HaskellProject\StackProject\Hotepad\.stack-work\logs\glib-0.13.2.2.log 

    [1 of 2] Compiling SetupWrapper  (SetupWrapper.hs, C:\Users\junyoung\AppData\Local\Temp\stack6012\glib-0.13.2.2\.stack-work\dist\2672c1f3\setup\SetupWrapper.o) 
    [2 of 2] Compiling Main    (C:\Users\junyoung\AppData\Local\Temp\stack6012\glib-0.13.2.2\Setup.hs, C:\Users\junyoung\AppData\Local\Temp\stack6012\glib-0.13.2.2\.stack-work\dist\2672c1f3\setup\Main.o) 
    Linking C:\Users\junyoung\AppData\Local\Temp\stack6012\glib-0.13.2.2\.stack-work\dist\2672c1f3\setup\setup.exe ... 
    [1 of 2] Compiling Gtk2HsSetup  (Gtk2HsSetup.hs, dist\setup-wrapper\Gtk2HsSetup.o) 
    [2 of 2] Compiling Main    (SetupMain.hs, dist\setup-wrapper\Main.o) 
    Linking dist/setup-wrapper\setup.exe ... 
    Configuring glib-0.13.2.2... 
    Building glib-0.13.2.2... 
    Preprocessing library glib-0.13.2.2... 
    .stack-work\dist\2672c1f3\build\System\Glib\StoreValue_hsc_utils.o:StoreValue_hsc_utils.c:(.text+0x0): multiple definition of `__debugbreak' 
    .stack-work\dist\2672c1f3\build\System\Glib\StoreValue_hsc_make.o:StoreValue_hsc_make.c:(.text+0x0): first defined here 
    collect2.exe: error: ld returned 1 exit status 
    linking .stack-work\dist\2672c1f3\build\System\Glib\StoreValue_hsc_make.o failed (exit code 1) 
    command was: C:\Users\junyoung\AppData\Local\Programs\stack\x86_64-windows\ghc-7.10.3\mingw\bin\gcc.exe .stack-work\dist\2672c1f3\build\System\Glib\StoreValue_hsc_make.o .stack-work\dist\2672c1f3\build\System\Glib\StoreValue_hsc_utils.o -o .stack-work\dist\2672c1f3\build\System\Glib\StoreValue_hsc_make.exe -LC:\Users\junyoung\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\lib -LC:/msys64/mingw64/lib -lgobject-2.0 -lglib-2.0 -lintl -LC:\Users\junyoung\AppData\Roaming\stack\snapshots\f21484d8\lib\x86_64-windows-ghc-7.10.3\utf8-string-1.0.1.1-L8eKHa7Iv9q7FVKUYW6u4b -LC:\Users\junyoung\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\lib -LC:\Users\junyoung\AppData\Roaming\stack\snapshots\64a043b0\lib\x86_64-windows-ghc-7.10.3\text-1.2.2.1-HmqVQnZSpjaC156ABqPhne -LC:\Users\junyoung\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\lib -LC:\Users\junyoung\AppData\Local\Programs\stack\x86_64-windows\ghc-7.10.3\lib\binar_3uXFWMoAGBg0xKP9MHKRwi -LC:\Users\junyoung\AppData\Local\Programs\stack\x86_64-windows\ghc-7.10.3\lib\conta_2C3ZI8RgPO2LBMidXKTvIU -LC:\Users\junyoung\AppData\Local\Programs\stack\x86_64-windows\ghc-7.10.3\lib\bytes_6VWy06pWzJq9evDvK2d4w6 -LC:\Users\junyoung\AppData\Local\Programs\stack\x86_64-windows\ghc-7.10.3\lib\deeps_6vMKxt5sPFR0XsbRWvvq59 -LC:\Users\junyoung\AppData\Local\Programs\stack\x86_64-windows\ghc-7.10.3\lib\array_67iodizgJQIIxYVTp4emlA -LC:\Users\junyoung\AppData\Local\Programs\stack\x86_64-windows\ghc-7.10.3\lib\base_HQfYBxpPvuw8OunzQu6JGM -lwsock32 -luser32 -lshell32 -LC:\Users\junyoung\AppData\Local\Programs\stack\x86_64-windows\ghc-7.10.3\lib\integ_2aU3IZNMF9a7mQ0OzsZ0dS -LC:\Users\junyoung\AppData\Local\Programs\stack\x86_64-windows\ghc-7.10.3\lib\ghcpr_8TmvWUcS1U1IKHT0levwg3 -LC:\Users\junyoung\AppData\Local\Programs\stack\x86_64-windows\ghc-7.10.3\lib/rts -lm -lwsock32 -lgdi32 -lwinmm 

나는이 메시지 때문에 입심-0.13.2.2에서 glib.cabal 파일 버그의 것을 발견, 그래서 별도로 입심을 설치하려고 할 때, 나는 glib.cabal 편집 (CPP에 -D___attribute__(A)= 옵션을 제거) 설치 분명히.

그러나 스택을 사용하여 설치하려고하면 stack install gtk 명령은 항상 설치된 glib 패키지 대신 Hackage 1 명령을 사용합니다.

간단히 말해서, 제 질문은, 어떻게 별도로 설치된 glib을 사용할 수 있습니까? 또는 옵션을 사용하여 패키지를 설치하는 동안 .cabal 파일을 수정할 수있는 방법이 있습니까?

+1

패키지를 로컬 시스템에서 사용하고 'stack.yaml'의'packages' 섹션 아래를 가리 키십시오. – Sibi

+0

@Sibi 이것을 처리하는 다른 우아한 방법이 있습니까? 적어도 나는 패키지 관리자를 사용하여 이점을 버리고 프로젝트가 이식성을 잃어 버리게 만들 것이라고 생각한다. 그렇지 않습니까? –

+0

@JunyoungClareJang 좀 더 우아한 방법이라고 생각하니? –

답변

2

스택을 사용하면 로컬 디렉토리 또는 github 저장소의 종속성을 사용할 수 있습니다. 그러므로 프로젝트를 포크하고 수정하고, PR을하고, 이것을 패키지에 넣으십시오. "패키지"섹션 아래에있는

- location: 
    git: https://github.com/user/repo 
    commit: a1b3559090e9c75ce1d46969085fe4f918b2fa82