Bug 34506

Summary: Неверные имена эмуляторов в конфигурационных файлах
Product: Branch p8 Reporter: xdsl
Component: qemu-user-static-binfmtAssignee: Andrey Cherepanov <cas>
Status: NEW --- QA Contact: qa-p8 <qa-p8>
Severity: critical    
Priority: P3 CC: iv, ldv, shaba, viy
Version: не указана   
Hardware: x86_64   
OS: Linux   
URL: https://forum.altlinux.org/index.php?topic=40989.0
Bug Depends on: 37083    
Bug Blocks:    
Attachments:
Description Flags
патч на спек none

Description xdsl 2018-02-02 22:15:27 MSK
Например, файл /lib/binfmt.d/qemu-arm-static.conf из пакета qemu-user-static-binfmt ссылается на /usr/bin/qemu-arm-static, в то время как соответствующий эмулятор из пакета qemu-user-static находится в файле /usr/bin/qemu-arm.static
Comment 1 Ivan A. Melnikov 2018-06-09 11:28:12 MSK
Created attachment 7580 [details]
патч на спек

Эта ошибка воспроизводится и на Сизифе.

В приложенном патче изменение одного символа в спеке, которое решает проблему (at least, works on my machine). Патч сделан поверх сизифного qemu 2.12.0-alt1 (commit a3bb60b).
Comment 2 Dmitry V. Levin 2019-08-09 19:55:06 MSK
Какой ужас в этом спеке:

for i in %buildroot%_binfmtdir/*; do
    mv $i $(echo $i | sed 's/.conf/-dynamic.conf/')
done

%if user_static
for regularfmt in %buildroot%_binfmtdir/*; do
    staticfmt="$(echo $regularfmt | sed 's/-dynamic/-static/g')"
    cat $regularfmt | tr -d '\n' | sed "s/:$/-static:F/" > $staticfmt
done
%endif

Вместо того, чтобы написать что-нибудь простое и понятное, например,

for f in %buildroot%_binfmtdir/*.conf; do
    [ -f "$f" ]
    dynamic="${f%.conf}-dynamic.conf"
    mv "$f" "$dynamic"
%if user_static
    static="${f%.conf}-static.conf"
    sed 's/:$/-static:/' < "$dynamic" > "$static"
%endif
done