Overview
brew
는 기존 배포판을 맥 환경에 맞도록 수정해 로컬에 설치할 수 있도록 도와준다. 그 과정 중 하나로 애용되는 것이 patch
다. 대부분의 patch
는 정상적으로 적용될 것이나, 패치가 정상적으로 이루어질 수 없다면 brew
는 Hunk FAILED
라면서 설치를 중지한다. 이 경우에는 fomula
를 직접 수정해 잘못된 diff
내용을 수정해주어야 한다.
Example
다음은 kf5-sonnet 설치 중 나타난 에러이다.
1 2 3 4 5 |
patching file src/plugins/nsspellchecker/CMakeLists.txt Hunk #1 FAILED at 7. 1 out of 1 hunk FAILED -- saving rejects to file src/plugins/nsspellchecker/CMakeLists.txt.rej |
다음 명령으로 fomula
를 확인해본다.
1 |
brew edit kf5-sonnet |
patch
가 적용할 diff
내용을 살펴본다.
1 2 3 4 5 6 7 8 9 10 11 12 |
diff --git a/src/plugins/nsspellchecker/CMakeLists.txt b/src/plugins/nsspellchecker/CMakeLists.txt index f8c99d1..f2fa4a9 100644 --- a/src/plugins/nsspellchecker/CMakeLists.txt +++ b/src/plugins/nsspellchecker/CMakeLists.txt @@ -7,6 +7,8 @@ add_library(sonnet_nsspellchecker MODULE ${sonnet_nsspellchecker_PART_SRCS}) target_link_libraries(sonnet_nsspellchecker PRIVATE KF5::SonnetCore "-framework Cocoa") +target_compile_definitions(sonnet_nsspellchecker PRIVATE "QT_NO_EXCEPTIONS") + set_target_properties(sonnet_nsspellchecker PROPERTIES OUTPUT_NAME "nsspellchecker") install(TARGETS sonnet_nsspellchecker DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/sonnet/) |
대조를 위해 kf5-sonnet의 해당 내용를 확인한다.
1 2 3 4 5 6 7 8 9 10 |
set(sonnet_nsspellchecker_PART_SRCS nsspellcheckerclient.mm nsspellcheckerdict.mm ) add_library(sonnet_nsspellchecker MODULE ${sonnet_nsspellchecker_PART_SRCS}) target_link_libraries(sonnet_nsspellchecker PRIVATE KF5::SonnetCore "-framework Cocoa") install(TARGETS sonnet_nsspellchecker DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/sonnet/) |
왜인지 몰라도, set_target_properties(sonnet_nsspellchecker PROPERTIES OUTPUT_NAME "nsspellchecker")
는 위의 +뒤에 와야 하나 개행이 이루어졌음을 알 수 있다. 이를 수정해 준 뒤 다시 brew install
을 수행하면 해당 에러가 발생하지 않는 것을 알 수 있다.
Further reading
patch, diff에 관해 읽어보면 좋다.