[Rpm-maint] how to store source in separate dirs w/o causing random build breaks...?
Linda Walsh
rpm at tlinx.org
Sat Aug 13 22:35:18 UTC 2011
In order that my sources don't all get unpacked into 1 'sources' dir,
(files from different sources/versions could overwrite each other),
I have:
%_sourcedir %{_topdir}/SOURCES/%{name}-%{version}
This works for *most* builds ... but some faily miserably and I'm
wondering if there's a different way to get rpm to do what I want,
or if the spec files are maybe not following some standard, or what,
but example of problem:
on suse, they have the bash-4.1-xxx-src rpm, -- in it, it builds
a bunch of subpackages.
bash-doc-4.1
bash-lang-4.1
bash-devel-4.1
bash-loadables-4.1
libreadline6-6.1
libreadline-devel-6.1
readline-doc-6.1
The problem is each package requires a 'version statement' --
That causes unpacking the sources to fail:
error: File /usr/src/packages/SOURCES/bash-6.1/readline-6.1.tar.bz2: No
such file or directory
Of course the file is in the directory where the rpm was unpacked:
<U/S/P>/SOURCES/bash-4.1/readline-6.1.tar.bz2
But it's using the version number from readline together with the name
from the rpm, -- and no way that could ever be right! I mean it might have
some prayer of a chance if it matched the name with the right version,
but I don't know if rpm supports unpacking sources for separate packages
into
separate directories -- I wouldn't expect so.
FWIW, I already don't like the fact that all my specs are simply named
'NAME'.spec, as I've installed the source rpm for more that one version
of the
same package, and -- only 1 .spec file gets left --- if it doesn't work
for both versions (usually not)... But when I want to build the prod,
having to remember the version isn't automatic. But Rpm knows the
version it unpacks into -- as it's in the spec file and rpm unpacked it!
So how to get a problem situation like the above to work?
I'd prefer something that would fix my 'macro' --
OR maybe it is a bug in RPM? I.e. if it is is checking 'Source[x]', it
should use the 'Version' number of the 'rpm', and not the package?
Is there a different 'macro' for the 'rpm-version' (vs. the package
being built version?)
I've tried to play with defining a pkg_version, but haven't haven't
been able to figure out if it is possible...i.e.:
hoped if pkg_version wasn't defined, would be defined to be version and
pickup 1st version in file, then it would be 'def'ed, and simply
return itself...:
%pkg_version %{!?pkg_version:%{version}}
%_sourcedir %{_topdir}/SOURCES/%{name}-%{pkg_version}
But really need like a way to do a conditional & else in a macro,
then I could
%pkg_version ${?pkg_version:%{pkg_version}:%{version}}
like the 3-arg "?:" in perl a= (cond)?exp1:exp2;
Is this possible? or how to?
Thanks much!
More information about the Rpm-maint
mailing list