А что за пакет? И почему %buildroot дважды?
Тут:
Тема:
Отказ запуска spectrum-fusehttps://forum.altlinux.org/index.php?topic=43866.0Вчера с полудня начал смотреть с перерывами, утром сегодня закончил.
Там путь специфичный:
по первому %buildroot лежит usr
по второму тоже.
В секции %makeinstall,
%prep
%setup -q -n %name-%version
sed -e "s/=fuse/=spectrum-fuse/" -e "s/=Fuse/=Spectrum Fuse/" -e "/Version/a Encoding=UTF-8" -i data/fuse.desktop.in
find -name "Makefile.am" -exec sed -e "s/fuse_/spectrum_fuse_/" -e "s/= fuse/= spectrum-fuse/" -i {} \;
sed -e "s/\[fuse]/[spectrum-fuse]/g" -i configure.ac
sed -e "s/\(^\|\" \|B \"\?\|IR \|TH \)fuse/\1spectrum\\\\-fuse/" -i man/fuse.1
%build
%autoreconf
%configure --disable-ui-joystick --enable-joystick --with-gtk --enable-desktop-integration
%make_build
%install
export DESTDIR=%buildroot
%makeinstall
install -D -m 0644 %buildroot/%buildroot/%_man1dir/fuse.1 %buildroot/%_man1dir/spectrum-fuse.1
rm %buildroot/%buildroot/%_man1dir/fuse.1
cp -ra %buildroot/%buildroot/%_bindir %buildroot/usr/
mv %buildroot/%_desktopdir/%oname.desktop %buildroot%_desktopdir/%name.desktop
mv %buildroot/usr/share/mime/packages/fuse.xml %buildroot/usr/share/mime/packages/spectrum-fuse.xml
find %buildroot%buildroot -type f | while read f; do nf=$(sed "s|%buildroot||" <<< "$f"); echo "== $nf"; install -D -m 644 "$f" "$nf"; install -pm0755 %buildroot/%buildroot/%_bindir/%name %buildroot/%_bindir/%name; rm -f "$f"; done
find %buildroot -name 'fuse.png' -type f | while read f; do nf=$(sed "s|fuse.png|spectrum-fuse.png|" <<< "$f"); echo "== $nf"; install -D -m 644 "$f" "$nf"; rm -f "$f"; done
install -pm0644 %{SOURCE3} .
%files
%doc README.z88sdk
%doc README AUTHORS COPYING ChangeLog THANKS
%_bindir/%name
%_man1dir/*
%_desktopdir/*
%_datadir/%name
%_datadir/mime/*
%_iconsdir/hicolor/*/apps/spectrum-fuse.png
%_iconsdir/hicolor/*/mimetypes/application-x-spectrum.png
вторая строка снизу с добавлением в конце строки
install -pm0755 %buildroot/%buildroot/%_bindir/%name %buildroot/%_bindir/%name;
перед
rm -f "$f"; done
Т.е. то что добавлял,
исполняемый ELF
%buildroot/%buildroot/%_bindir/%name
инсталлируется в сборочный каталог
%buildroot/%_bindir/%name
с сохранением прав на запуск.
После чего
rm -f "$f"
убьёт файлы по списку, среди которых будет и исполняемый ELF.
Мне увиделось так.
Но по оригинальному спэку, неисполняемый ELF попадает и попал в rpm пакет:
Ошибка 38352 (spectrum) - В spectrum-fuse отсутствует exec битhttps://bugzilla.altlinux.org/show_bug.cgi?id=38352Зарегистрирована: 2020-04-14 03:10 MSK
Бажный пакет spectrum-fuse с отказом запуска сейчас в p9.
Оригинальный пакет, который лежит в p9/branch выглядит так:
# rpm -qpvl spectrum-fuse-1.5.7-alt1.x86_64.rpm | grep bin/
-rw-r--r-- 1 root root 1177296 апр 2 2019 /usr/bin/spectrum-fuse