Skip to content
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

Fedora 지원 관련 #555

Closed
LinuxSnapshot opened this issue Jan 7, 2022 · 6 comments
Closed

Fedora 지원 관련 #555

LinuxSnapshot opened this issue Jan 7, 2022 · 6 comments

Comments

@LinuxSnapshot
Copy link

LinuxSnapshot commented Jan 7, 2022

현재 저는 아치 리눅스를 사용하다가, 가상 머신에 깔린 페도라가 마음에 들어 넘어가기로 하였습니다.

그러나, kime은 Fedora를 지원하지 않는다는 것이 최대의 단점으로 꼽혔습니다.

Q. 한글 입력기라는 중요한 소프트웨어임에도 불구, 데비안 계열, 아치, NixOS만 지원하는 이유가 있나요?
(현재 COPR이 운영되고 있다는 사실 확인했습니다)

@hellojaccc
Copy link

#259 (comment)

lindoli님의 kime.spec으로 직접 rpm을 빌드하시면 됩니다

@LinuxSnapshot
Copy link
Author

#259 (comment)

lindoli님의 kime.spec으로 직접 rpm을 빌드하시면 됩니다

좋은 정보 감사합니다!

@Riey
Copy link
Owner

Riey commented Jan 7, 2022

딱히 이유가 있다기보단 그냥 손이 부족해서 구현이 안된겁니다

@ToroidalFox
Copy link
Contributor

ToroidalFox commented Dec 21, 2023

서드파티로 COPR프로젝트 운영 시작했습니다. 패키지 관리가 처음이라 README 수정 PR은 저 이외 다른 분들도 시도해보고 적당해 보이면 그때 하겠습니다. #68

@ToroidalFox
Copy link
Contributor

개인적으로 답답해서 lindoli님의 spec 보고 오기로 뛰어들었다가 처음에 실수 좀 많이 했는데 눈에 띄는건 다 정리하고 깔끔해졌습니다. kime-git도 추가했고 지금 이것도 wayland plasma 에서 작성할 정도로 순조롭네요. 조금 더 살펴보고 README 요청하겠습니다.

하다 보니 clang-devel(=libclang) 18 이상에서는 c바인딩이 정상적이지 않다는 것을 발견해서 Fedora 40 부터는 clang17-devel 을 쓰고 있습니다. 아래와 같은 오류가 뜨고

error[E0425]: cannot find function `kime_api_version` in module `ffi`
  --> src/engine/cffi/src/lib.rs:22:19
   |
22 |     unsafe { ffi::kime_api_version() == ffi::KIME_API_VERSION }
   |                   ^^^^^^^^^^^^^^^^ help: a constant with a similar name exists: `KIME_API_VERSION`
   |
  ::: /builddir/build/BUILD/kime-f82ce419f697d4f836e79bf6c3de074f35f96f23/target/release/build/kime-engine-cffi-dbe1cfbf704a70ee/out/bindings.rs:3:1
   |
3  | pub const KIME_API_VERSION : usize = 7 ; # [repr (i32)] # [derive (Debug , Copy , Clone , Hash , PartialEq , Eq)] pub enum IconColor { Wh...
   | ---------------------------------------- similarly named constant `KIME_API_VERSION` defined here

bindings.rs 의 내용은 이렇습니다.

pub const KIME_API_VERSION: usize = 7;
#[repr(i32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum IconColor {
    White = 0,
    Black = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum InputCategory {
    Latin = 0,
    Hangul = 1,
}
#[doc = " Preprocessed engine config"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct Config {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DaemonConfig {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct IndicatorConfig {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct InputEngine {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct LogConfig {
    _unused: [u8; 0],
}
pub type InputResult = u32;
pub const InputResult_CONSUMED: InputResult = 1;
pub const InputResult_LANGUAGE_CHANGED: InputResult = 2;
pub const InputResult_HAS_PREEDIT: InputResult = 4;
pub const InputResult_HAS_COMMIT: InputResult = 8;
pub const InputResult_NOT_READY: InputResult = 16;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct RustStr {
    pub ptr: *const u8,
    pub len: usize,
}
pub type ModifierState = u32;
pub const ModifierState_SHIFT: ModifierState = 1;
pub const ModifierState_CONTROL: ModifierState = 2;
pub const ModifierState_SUPER: ModifierState = 4;
pub const ModifierState_ALT: ModifierState = 8;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct RustSlice {
    pub ptr: *const u8,
    pub len: usize,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct FontData {
    pub font_data: RustSlice,
    pub index: u32,
    pub size: f32,
}

kime-engine-capi에 있는 함수들 바인딩이 전혀 안되고 있더군요. 당장은 버전 낮추면 되니 문제는 없지만 나중을 위한 기록입니다.

@jayong93
Copy link

하다 보니 clang-devel(=libclang) 18 이상에서는 c바인딩이 정상적이지 않다는 것을 발견해서 Fedora 40 부터는 clang17-devel 을 쓰고 있습니다. 아래와 같은 오류가 뜨고

어제 arch linux에서 설치하다가 같은 문제를 겪었는데요. bindgencbindgen CLI를 설치해서 테스트 해 본 결과, bindgen 을 최신버전(현재 0.69.4)으로 업데이트하면 clang 18 이상에서도 제대로 빌드가 됩니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants