hamonikr / nimf

다국어 입력기 프레임워크 Nimf is a lightweight, fast and extensible input method framework
GNU Lesser General Public License v3.0
143 stars 24 forks source link

Fedora 33에서 빌드시 오류가 납니다. #39

Closed Nevuly closed 3 years ago

Nevuly commented 3 years ago

Fedora 33에서 빌드를 진행할 경우 2가지의 오류가 발생하여 수정을 요청드립니다. 제가 빌드한 버전은 1.3.0 버전이고, Fedora에서 구동을 위해 빌드를 진행하였습니다.

그러면서 2가지의 오류를 겪었고, 한개는 해결하였으나, 한개는 해결을 실패하고 지금도 원인을 찾는중입니다.

먼저 첫번재는 nimf.spec에 적힌 package version이 20200428로 되어 있어 빌드할 경우 오류가 발생한다는 점입니다. 해당 부분은 패키지의 제일 최신 버전에 맞게 업데이트 될 경우 같이 변경되어야 하는 부분으로, 확인 후 수정 부탁드립니다.

그리고 다른 하나는 rpm package build작업이나 수동으로 make 작업을 진행할 경우

nimf-libhangul.c:657:42: error: 'HANGUL_IC_OPTION_AUTO_REORDER' undeclared (first use in this function) 657 | hangul_ic_set_option (hangul->context, HANGUL_IC_OPTION_AUTO_REORDER, | ^~~~~~~~~ nimf-libhangul.c:657:42: note: each undeclared identifier is reported only once for each function it appears in nimf-libhangul.c: In function 'on_changed_auto_reordering': nimf-libhangul.c:669:42: error: 'HANGUL_IC_OPTION_AUTO_REORDER' undeclared (first use in this function) 669 | hangul_ic_set_option (hangul->context, HANGUL_IC_OPTION_AUTO_REORDER, | ^~~~~~~~~ nimf-libhangul.c: In function 'nimf_libhangul_init': nimf-libhangul.c:747:42: error: 'HANGUL_IC_OPTION_AUTO_REORDER' undeclared (first use in this function) 747 | hangul_ic_set_option (hangul->context, HANGUL_IC_OPTION_AUTO_REORDER, | ^~~~~~~~~

위와 같은 오류가 발생하며 빌드가 실패합니다.

제가 무언가를 빠트렸거나 혹시 libhangul과 또 필요한 패키지가 존재하나요?

Nevuly commented 3 years ago

오류의 원인을 찾았습니다.

hangul.h 파일이 해당 디렉터리에 존재하지 않음으로써 발생하는 오류였습니다.

include 이부분을 사용하기 위해 파일을 추가해 주시거나 아니면 다른 방법으로 연결할 방법을 찾아주시면 감사하겠습니다.

chaeya commented 3 years ago

@Nevuly 1.3.0 버전을 빌드해보니 fedora 33에 설치되는 libhangul 라이브러리에 포함되지 않은 함수를 호출해서 생기는 문제로 보입니다. 오류나는 부분을 제거하고 빌드한 rpm 을 아래 링크에 공유했으니 설치 해보시면 될 것 같습니다.

참고) imsettings-switch nimf 로 입력기를 설정이 안되어서 sudo alternatives --config xinputrc 로 입력기를 설정했습니다. ref : https://www.fedoralinux.or.kr/forums/topic/12269

piutranq commented 3 years ago

다른 배포판에서 (Void Linux) 같은 문제를 겪었기에 적어봅니다.

패키지로서 설치되는 libhangul에 hangul_ic_set_option 함수가 없어서 생기는 문제였습니다.

그래서 저는 https://github.com/libhangul/libhangul 에서 libhangul의 마스터 브랜치를 받아서 직접 빌드했고, 이후 nimf의 마스터 브랜치도 수정 없이 빌드가 가능했습니다.

Nevuly commented 3 years ago

현재 저같은 경우 빌드는 성공했으나, Fedora의 불안정 문제로 인해 데비안으로 돌아간 상태입니다.

그때 당시 빌드할 때 include로 hangul.h 라이브러리를 불러오는게 소스코드 내부에 존재했고, 저같은 경우 hangul.h를 libhangul master branch에서 데리고 와 수동으로 추가하여 넣고 빌드하였습니다.

빌드는 정상적으로 이루어졌고요.