Итак имеем лог файл оставшийся от rpmbuild --rebuild packetname.src.rpm > logfile.log
По кривости девелоперов сей файл не собрался из за неправильного .spec файла.
Итак задача.
Дано:
срк.рпм пакет. Он содержит патчи, архив с сурсами и файл .spec, который используется для сборки пакета.
лог файл неудачной сборки. Он содержит в себе к примеру следущие строки (беру из лога):
Код: Выделить всё
+ rm -fr /var/tmp/GConf2-2.8.1-root
+ make install DESTDIR=/var/tmp/GConf2-2.8.1-root
+ chmod 755 /var/tmp/GConf2-2.8.1-root//etc/gconf/gconf.xml.defaults
+ chmod 755 /var/tmp/GConf2-2.8.1-root//etc/gconf/gconf.xml.mandatory
+ rm -f /var/tmp/GConf2-2.8.1-root//usr/lib/GConf/2/libgconfbackend-xml.a
+ rm -f /var/tmp/GConf2-2.8.1-root//usr/lib/GConf/2/libgconfbackend-oldxml.a
+ rm -f /var/tmp/GConf2-2.8.1-root//usr/lib/libgconf-2.la
+ rm -f '/var/tmp/GConf2-2.8.1-root//usr/lib/GConf/2/*.la'
+ /usr/lib/rpm/redhat/find-lang.sh /var/tmp/GConf2-2.8.1-root GConf2
+ /usr/lib/rpm/find-debuginfo.sh /usr/src/redhat/BUILD/GConf-2.8.1
1795 blocks
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
error: File not found by glob: /var/tmp/GConf2-2.8.1-root/usr/lib/GConf/2/*.so
error: File not found: /var/tmp/GConf2-2.8.1-root/usr/lib/GConf
error: File not found: /var/tmp/GConf2-2.8.1-root/usr/lib/GConf/2
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd GConf-2.8.1
+ DOCDIR=/var/tmp/GConf2-2.8.1-root/usr/share/doc/GConf2-2.8.1
+ export DOCDIR
+ rm -rf /var/tmp/GConf2-2.8.1-root/usr/share/doc/GConf2-2.8.1
+ /bin/mkdir -p /var/tmp/GConf2-2.8.1-root/usr/share/doc/GConf2-2.8.1
+ cp -pr COPYING ChangeLog NEWS README /var/tmp/GConf2-2.8.1-root/usr/share/doc/GConf2-2.8.1
+ exit 0
File not found by glob: /var/tmp/GConf2-2.8.1-root/usr/lib/GConf/2/*.so
File not found: /var/tmp/GConf2-2.8.1-root/usr/lib/GConf
File not found: /var/tmp/GConf2-2.8.1-root/usr/lib/GConf/2
Как видите еррор весьма понятен. Так что перехватить имена файлов которые стали причиной легко.
Теперь же глянем в .spec файл.
%postun -p /sbin/ldconfig
Код: Выделить всё
%files -f %{name}.lang
%defattr(-, root, root)
%doc COPYING ChangeLog NEWS README
%config %{_sysconfdir}/gconf/2/path
%dir %{_sysconfdir}/gconf/2
%dir %{_sysconfdir}/gconf/gconf.xml.defaults
%dir %{_sysconfdir}/gconf/gconf.xml.mandatory
%{_bindir}/*
%{_libexecdir}/*
%{_libdir}/*.so.*
%{_libdir}/GConf/2/*.so <!>
%{_datadir}/sgml
%{_mandir}/man1/*
%dir %{_libdir}/GConf <!>
%dir %{_libdir}/GConf/2 <!>
%files devel
%defattr(-, root, root)
%{_libdir}/*.a
%{_libdir}/*.so
%{_includedir}/gconf
%{_datadir}/aclocal/*.m4
%{_datadir}/gtk-doc
%{_libdir}/pkgconfig/*
%changelog
Строки отмеченные <!> и стали причиной несборки пакета. Увы в оригинальном спек файле их нет .
Так вот задача такова.
1. Обнаружить и извлечь из логфайла пути/файлы которые не были найдены.
2. Каким то образом преобразовать что бы получить строки в .спек файле которые нужно закоменнтировать.