Wednesday, September 30, 2009

SBR600 - More RPM Packaging Headaches

After thinking that I got a perfect RPM binary file, tonight I decided to just check it out again before I try it on Koji. But to my surprise, it failed horribly. I find myself with 9 errors all related to these:
non-standard-executable-perm and zero-length,

and 122 warnings related to these:
hidden-file-or-dir, perl-temp-file, /usr/share/doc/ can't be used.

So I jumped onto the seneca channel on our irc freenode server and looked for my teacher Chris.

We spend a total of 3 hours to solve this issue.

The way we solved the issues and warnings are as follows:

for the zero-length error, I did a search on like with the search pattern rpmlint zero-length error
and found a fedora wiki showing me how to solve it.

All I needed to do is under the %install section I just needed to add
for file in $(find %{buildroot} -size 0) ; do
rm -f "$file"
done

which will find all files in my Build Root directory with the size 0 and delete them.

For the non-standard-executable-perm error, Professor Chris and I tried many strategies to overcome this obstacle
1. We changed the directory default attributes to %defattr(0755,root,root,0755), but that caused for errors than less, because now its telling us there are scripts missing the shebang line (#!/bin/bash) for those who are wondering. Of course we set it back to normal

2. In the %files section we changed to order of the directory listing and added another %defattr(-,root,root,-) line, but this time it went before %{_libdir} directory. And same permission settings %defattr(0755,root,root,0755), and again it failed, with the same issues.

3. Professor Chris noted we needed to add a %devel section, since we are using irssi development.
so I added the following sections with section headers

%description devel
Contains headers for irssi development

%files devel
%defattr(-,root,root,-)
%{_includedir}/%{name}/

This solved most of our issues regarding /usr/include we were getting.

4. Finally we both came up with a solution to fix the program and our solution was

Professor Chris :
00:43 <@ctyler> find %{buildroot}/%{_libdir} -name '*.so' -exec chmod 0755 {}
\;

and mine
00:38 <> i found using this command removed those
non-standard-executable errors : chmod -R u+w
$RPM_BUILD_ROOT%{_libdir}/perl5/5.10.0/x86_64-linux-thread-multi/auto/Irssi/

both worked well, and solved this 3 hour long thorn.

Lastly for our warnings, from advice from my professor, he suggested that I use a command that would wipe those files out, and the commands I used to do so was

find %{buildroot}/%{_libdir} -name '.packlist' -exec rm -f {} \;
find %{buildroot}/%{_libdir} -name '*.pod' -exec rm -f {} \;

That got rid of all those files and in the end, rpmlint finally gave me a checkered flag, and I am totally exhausted.


Below is the except, from my conversation with professor chris at the time we began and ended.

Time We Began
22:05 <@ctyler> bochao: pong
22:05 <> hi sir
22:06 <@ctyler> hi Boris
22:06 <@ctyler> how's it going?
....
Time we finished
00:50 <@ctyler> well now that you're down to 0 errors, I'm going to crash :-)
00:50 <@ctyler> goodnight Boris
00:50 <> thanks sir

Oh by the way, before I end it.
Installing Koji was a snap, I found a tutorial on Fedora Wiki that totally guided me from start to finish. Now I just need to figure out how to use it.

Here are my final working rpms.
Source
Binary

0 comments:

Post a Comment