Summary: | rpm: поддержка архитектуры LoongArch | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Alexey Sheplyakov <asheplyakov> |
Component: | rpm | Assignee: | Alexey Sheplyakov <asheplyakov> |
Status: | ASSIGNED --- | QA Contact: | qa-sisyphus |
Severity: | enhancement | ||
Priority: | P5 | CC: | asheplyakov, at, glebfm, imz, iv, ldv, liannnix, nir, placeholder, sin, vt |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux | ||
Bug Depends on: | |||
Bug Blocks: | 45802 |
Description
Alexey Sheplyakov
2023-04-06 12:34:39 MSK
#318149 TESTED #1 [test-only] sisyphus rpm.git=4.13.0.1-alt37 #324286 EPERM #2 sisyphus rpm.git=4.13.0.1-alt38 apt.git=0.5.15lorg2-alt85 А зачем нужно вот это? +#if defined(__loongarch64) + strcpy(un.machine, "loongarch64"); +#endif (Ответ для Gleb F-Malinovskiy на комментарий #3) > А зачем нужно вот это? > > +#if defined(__loongarch64) > + strcpy(un.machine, "loongarch64"); > +#endif Чтобы работало. (Ответ для Gleb F-Malinovskiy на комментарий #3) > А зачем нужно вот это? > > +#if defined(__loongarch64) > + strcpy(un.machine, "loongarch64"); > +#endif Функция defaultMachine (в файле lib/rpmrc.c) чуть менее чем полностью состоит из кода вида: # if defined(__linux__) && defined(__riscv__) if (rstreq(un.machine, "riscv")) { if (sizeof(long) == 4) strcpy(un.machine, "riscv32"); else if (sizeof(long) == 8) strcpy(un.machine, "riscv64"); else if (sizeof(long) == 16) strcpy(un.machine, "riscv128"); } # endif /* riscv */ (Ответ для Alexey Sheplyakov на комментарий #5) > (Ответ для Gleb F-Malinovskiy на комментарий #3) > > А зачем нужно вот это? > > > > +#if defined(__loongarch64) > > + strcpy(un.machine, "loongarch64"); > > +#endif > > Функция defaultMachine (в файле lib/rpmrc.c) чуть менее чем полностью > состоит из кода вида: > > # if defined(__linux__) && defined(__riscv__) > if (rstreq(un.machine, "riscv")) { > if (sizeof(long) == 4) > strcpy(un.machine, "riscv32"); > else if (sizeof(long) == 8) > strcpy(un.machine, "riscv64"); > else if (sizeof(long) == 16) > strcpy(un.machine, "riscv128"); > } > # endif /* riscv */ А причина существования функции defaultMachine в том, что название архитектуры с точки зрения ядра (Linux) и rpm не всегда совпадают. Ядру, например, безразлично, какой там ABI в userspace, а для rpm это архиважно. (In reply to Alexey Sheplyakov from comment #4) > Чтобы работало. А без этого разве не работает? Вы в целом ответили на вопросы, ответ на которые я знаю, а на мой вопрос не очень ответили. Мне кажется очевидным, что если на loongarch64 будут какие-то изменения такого типа, то и этот код придётся менять, а сейчас этот код заменяет loongarch64 на loongarch64. Ну пусть будет, вреда никакого. |