New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
gtk+-2.0 링킹 삭제 #1
Comments
넵 ㅋㅋ 일단 링킹삭제하고 헤더파일만 포함시켜서 다시 빌드해보려구요 지금 시간이 안나서 아직 못하구 있네요 |
https://github.com/telegramdesktop/tdesktop/pull/5050/files#diff-2e0c3f7ebaacd73ea4d10ace7152258d 여기보면
아래 부분이 있는데
이것을 삭제하는 방향으로 가야할 것 같아요. |
아하 넵 알겠습니다. 단순히 링킹만 삭제해서는 빌드가 안될것 같아서 말씀하신 dlopen 으로 정적 의존성을 다 제거해야 될것 같다는 생각이였어요. 아직 링킹만 삭제하고 빌드가 되는지는 테스트 해보지 못했습니다. |
일단은 말씀해 주신거 바탕으로 제가 나름대로 im-nimf-qt5.cpp 직접 수정해서 gtk 의존성을 dlopen 으로 제거한걸로 테스트해보니깐 텔레그램에서도 이상없이 잘됩니다. 다만 걸리는건 g_debug 하나때문에 glib 라이브러리에 의존하고 있는데 이걸 g_debug 를 대체할수 있는 함수로 대체하던지 아니면 glib도 그냥 똑같이 gtk 의존성 제거하듯이 dlopen으로 작업해야 하는지 고민입니다. 그리고 수정한 im-nimf-qt.cpp 을 근시일내에 이 저장소에 올릴려고 합니다. 해당 내용에대해 @cogniti 님이 검토해주셔도 괜찮을 것 같습니다. |
일단 여기에만 올리자면 이렇습니다.
|
g_signal_connect, g_debug 는 glib 에 있는 함수입니다. 라이브러리 이름이 glib 입니다. 그리고 g_debug 는 매크로 함수이고 qDebug 로 대체할 수 있습니다. g_signal_connect 는 함수 포인터로 대체할 수 있습니다. Qt 에 있는 signal, slot 으로 재작성하는 것이 바람직한 것 같은데, 코드가 조금 더 많아지므로 C언어 자체 기능인 함수 포인터로 대체하는 것이 좋을 것 같습니다. g_signal_connect 가 그 일을 하는 함수입니다. |
빠르면 다음달 11월, 늦으면 내년 2월 작업 예정입니다. |
Nimf 프로젝트에 반영은 @cogniti 님이 직접 수정해서 하신다는 거죠? 저는 저 나름대로 말씀해주신 부분들까지 수정해서 tdesktop 에 일단 PR 제출해도 될까요? |
PR 제출 보류해 주세요. 지금 제출하면 또 수정해야 합니다. |
일단 제가 직접 gtk 의존성 제거하고 g_debug 함수 호출부분만 주석처리한 상태의
두가지 전부 이상없이 텔레그램에서 한글입력 잘 됬습니다. 그리고 g_settings_new 함수에서 없는 스키마 파일 열려고 할때 프로그램이 종료되는 부분도
대강 이런 형태로 스키마 파일이 없을때 gracefully 하게 종료하도록 수정할 예정입니다. 아 그리고 g_signal_connect 는 libgtk-3.so 안에 있더라구요. 그래서
|
g_signal_connect 는 glib 에서 제공하는 함수입니다. gtk 가 glib 를 사용합니다. nimf qt5 모듈에 버그가 있는 것 같습니다. |
아하 그렇군요. 말씀하신대로 일단 작업하시는거 기다리겠습니다. |
사실 제가 컴퓨터가 없어서 오늘에서야 컴퓨터를 조립하여 개발 환경을 준비 중입니다. 기다리시는게 지루하시다는거 알고 있습니다. 제가 최선을 다해 준비 중이니 조금 더 기다려 주시면 고맙겠습니다. 텔레그램을 위한 qt5 업데이트는 하루 이틀 내로는 안되고 우선 순위가 높은 이슈부터 처리한 후에 업데이트 하겠습니다. |
방금 업데이트했습니다.
이런 내용이 있습니다. libnimf 가 glib, gobject, gio 를 링킹하기 때문에, libnimf 하나만 dlopen 하면 될 것 같아 그렇게 작업했습니다. 테스트 해보시고 고쳐야 되는 부분이 있는지 알려주세요. |
schema == NULL 일 때 isValid 함수의 반환값이 false 가 되도록 해야 하는데 깜박 했네요. |
단순히 m_im 을 검사함으로써 해결했습니다.
|
넵 말씀하신 버전으로 근시일내에 조속히 테스트 해보겠습니다. |
생각해보니까 glib api, gio api 등으로 나누는게 안전하겠네요. 조만간 또 업데이트 하겠습니다. |
업데이트 했습니다. |
네 테스트 해보겠습니다. 혹시 g_debug 매크로에서 문제가 발생할 여지는 없을까요? 저 매크로가 실제 어떤 함수로 호출되는지는 헤더파일에 나와있고 환경에 따라 실제 함수가 호출될 수도 있을때 해당 함수가 동적 로딩되어 준비되있지 않으면 문제가 발생할 수도 있지 않나요? |
아 매크로로 처리해두셨군요. 잘못봤습니다. 바로 테스트 해보겠습니다. |
argument 가 잘못된 것을 방금 발견하여 업데이트했습니다. Fixed wrong arguments 참고 바랍니다. 감사합니다. |
일단 빌드해서 테스트 진행 하였는데요. 한글입력이 되지 않고 있습니다. Nimf 2018.08.03 버전 및 Ubuntu 18.04 환경에서 테스트 했습니다. |
빌드된 Telegram 바이너리 내에 nimf 관련 함수들이 포함되어 있는것도 확인 하였습니다.
|
이런 오류가 나고 있습니다.
|
최신 커밋으로 작업해보세요. |
테스트 환경의 nimf가 구버전이라 그러는 것인가요. 일단 확인해보겠습니다. |
테스트 환경에서 소켓파일 등은 존재하는걸로 확인됬습니다.
|
구버전이라 그런 것 같지는 않습니다만, nimf 가 실행 중이 아니거나, nimf 를 데몬화하고 indicator 를 실행시키는 로직에 버그가 있을 수 있습니다. 일단 최신 버전으로 업데이트를 하시는 것을 권장합니다. |
테스트 환경 말고 원래 제가 사용하던 시스템에서도 안되는걸 확인했습니다. 시스템의 님프 버전도 구버전입니다. |
위에 주신 메시지를 보면 |
링크해주신 소스파일을 직접 다운로드 받아서 제가 컴파일했던 텔레그램에 들어있던 im-nimf-qt5.cpp 와 diff 비교해봤는데 아무런 차이점이 없었습니다. 또한 님프를 최신버전으로 업데이트 했는데도 소켓파일을 찾을수 없다고 나오고 있습니다. 님프를 이용한 한글 입력에는 문제가 없지만 텔래그램이 켜지지 않고 텔레그램에서의 한글입력도 문제가 있습니다. 일단 혹시 모르니깐 저는 다시 빌드해보겠습니다. |
|
확인해보겠습니다. |
다시 빌드 하니 됩니다. 빌드 과정에 뭔가 착오가 있었던것 같습니다. 죄송합니다. |
다행이군요. 코드 작성보다 테스트가 더 많은 시간이 소비되는데 수고하셨습니다. |
넵 다시한번 고생많으셨습니다. |
안녕하세요.
gtk+-2.0
링킹을 삭제해도 작동할 것 같은데 삭제해보시는 것은 어떨까요?im-nimf-qt5/nimf.pro
Line 22 in 2986c78
The text was updated successfully, but these errors were encountered: