Re: Building optimized and non-optimized versions of the same rpm

Carter Sanders <[email protected]> Tue, 24 Jun 2008 14:48:52 -0700
Newsgroups gmane.linux.redhat.rpm.general
Message-ID <[email protected]>
Oh! I see. I overlooked the 'provides' stuff before. Thanks. I'll try
both ways.

devzero2000 wrote:

On Tue, Jun 24, 2008 at 8:37 PM, Carter Sanders <[email protected] >
wrote:

Thanks,
but I don't think that will work for me, because I will have have
packages that require <PACKAGENAME>, and if I add -opt to the end
of it, I won't be able to swap out the unoptimized for the optimized
without ingoredeps, which I sometime do for debugging.

Try my example and your notice that, as i have told, there is not
problem for package that required PACKAGENAME. The procedure i have
described is a standard way to rename package without problem, e.g.
without "ingoredeps".

I noticed the optflags field, but I'm concerned it won't be readily
apparent to the support engineers the way a change in the build number
would be (they may not know about "rpm -q --qf "). So I think I'll
stick with my idea of appending the _opt or _unopt to the end of
"Release". It will have some funny effects on update logic, but I can
handle it.

Sure, it is an idea. But it not demostrate, because it is not merged in
rpm metadata, anything

at anywhone: it is just a "belive me because i have told you this thing"

JHMO, YMMV

Regards

devzero2000 wrote:

An idea could be the following.

Let me call the package as <PKGNAME> for this example. I also
suppose that exists only, in a certain time, a single version of the
package: the "optimized" or the "notoptimized" installed and that i
want the packages distinguished not only for name but for some metadata
informations. In particular in rpm this metadata information is in the
optflags tag.

So:

First Package SPEC snip (e.g without optimization) (named as
PACKAGENAME-without-opt.spec)

--------------------------------------------------------------------------

%define optflags <what do you thinks are the flags without opt >

############################################

# for one example if one want the default without -g this is :

# %{expand:%%define optflags %( echo %optflags | sed 's/-g//g') }

#############################################

Name: <PACKAGENAME>-opt

Version : 1.0

Release: 1

Provides: <PACKAGENAME> = %{version}-%{release}

Obsoletes: <PACKAGENAME> <= %{version}

.

.

.

%build

###################

# use %configure or

# something like this

#

# CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ;

# CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ;

# FFLAGS="${FFLAGS:-%optflags}" ; export FFLAGS ;

# ./configure ......

Second Package SPEC snip (e.g with optimization) (named
PACKAGENAME-opt.spec)

--------------------------------------------------------------------------

%define optflags <what do you thinks must go for opt flags >

############################################

# for example the default with -g always appended as this

# %{expand:%%define optflags %( echo "%optflags -g") }

#############################################

Name: <PACKAGENAME>-without-opt

Version : 1.0

Release: 1

Provides: <PACKAGENAME> = %{version}-%{release}

Obsoletes: <PACKAGENAME> <= %{version}

%build

# as before in the first package

Now you have

1- only a package installable : <PACKAGENAME>-opt or
<PACKAGENAME>-without-opt

2 - if you have <PACKANAME>-opt installed and you do : rpm -Uvh
<PACKAGENAME>-without-opt-1.0-1.<arch>.rpm

you have <PACKAGENAME>-without-opt installed and
<PACKANAME>-opt disinstalled : it is also true the reverse.

3 - The package dependency from <PACKAGENAME>, if exists, are
preserved

4- And, for control, you can do an rpm query thereafter on optflags.
For example

rpm -q --qf '%{optflags}' <PACKAGENAME>-opt and see if the
optflags are correct

hth

_______________________________________________

Rpm-list mailing list

[email protected]

https://www.redhat.com/mailman/listinfo/rpm-list

----------

_______________________________________________
Rpm-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/rpm-list

_______________________________________________
Rpm-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/rpm-list