Mailinglist Archive: opensuse-packaging (114 mails)

< Previous Next >
Re: [opensuse-packaging] EXE-File of mono application is not included in OBS generated package
On Thu, Dec 12, 2013 at 3:08 PM, Dirk Brünig <dirk@xxxxxxxxxx> wrote:
Hello

I try to packaging the mono application Tracer2Server for openSUSE.
https://build.opensuse.org/package/show/home:dBruenig:Tracer2Server/Tracer2Server
But I still have some issues I don't understand.

1. EXE-File of mono application is not included
The generation of i586 package ends with succeeded. But in the RPM file the
tracer2server.exe is not included. I don't know way this happens. Because
the compilation succeeded (13 warnings).

To be included the binary has to be both built and installed. You say
the compile worked, so the install must not have.

Your specfile has:

=====================================================
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT

#install -m 755 -d $RPM_BUILD_ROOT/%{_sbindir}
#ln -s ../bin/trace2server $RPM_BUILD_ROOT/%{_sbindir}
=====================================================

It looks you (or someone) tried to explicitly install trace2server,
but then changed their mind. That effort may have failed because "ln
-s" makes a symbolic link which is not what you want in this case.
You want the file to be copied. The typical explicit tool for that
would be "install" without the -d argument on the second call.

Anyway, either "make install" has to but the binary in the final
install location (eg. $RPM_BUILD_ROOT/%{_sbindir}) or you have to do
it by calling "install" explicitly.

2. Package generation for x86_64 failed
While the generation for i586 succeeded. The generation for x86_64 failed.
So where are the difference between these too.

64 bit and 32 bit libraries end up in different directories. Thus
%{_libdir} is different based on architecture. I'm guessing that is
causing your explicit references to /usr/lib to fail. /usr/lib is the
directory for 32-bit libraries thus only 32-bit builds are putting
anything there.

===
%dir /usr/lib/tracer2server
/usr/lib/tracer2server/GPL-v2.0.txt
/usr/lib/tracer2server/GPL-v3.0.txt
/usr/lib/tracer2server/README
===

The reality is none of those 3 files should be in %{_libdir} (eg.
/usr/lib*) anyway. They belong in the documentation support
directory. Assuming all 3 of those files are in the root of your
tarball you should replace those 4 lines with this I think:

===
%doc GPL-v2.0.txt GPL-v3.0.txt README
%exclude %{_libdir}/tracer2server
===

The first line will copy the doc files to the right final location and
cause them to be included in the RPM. The last line I think will keep
the wrongly installed files from being included.

Once the RPM builds and you do a test install, you should find the 3
doc files in /usr/share/doc/packages/tracer2server/*

I've never known "make install" to put anything in that directory, so
if you happen to be the maintainer of the makefile, just quit doing
anything with those 3 files. Leave it to the %doc macro to do the
magic for you.

I am a newbie in Linux, so please help me to get this working.

Welcome to the community.

Greg
--
To unsubscribe, e-mail: opensuse-packaging+unsubscribe@xxxxxxxxxxxx
To contact the owner, e-mail: opensuse-packaging+owner@xxxxxxxxxxxx

< Previous Next >
Follow Ups
References