lam mpi 7.1.4 RPM creation..

I am having some issues understanding how and why parts of the build process happen. To quickly sum it up…
I change the spec file to to this…
%define config_options --disable-tv-queue --program-prefix=/opt/mpi/%name-%{version}-%{release}/bin/

I am doing this, because I want to separate the contents of each version completely independent of one another. I know there are more switches, for libs and such. I have backed those off because I can’t get this basic switch to work. When I build using “rpm -ab lammpi.spec” I get an error stating that it couldn’t find the files in the directory structure I specified. The output of that structure is correct. Everything builds ok, it’s when it prepares to build the RPM package it’s self that it breaks. It’s almost as if it placed the files in something other than “/opt/mpi/%name-%{version}-%{release}/bin/” If I do an ls in the build dir, the files are there. But they are in {build_dir}/bin and so on. I am seriously lost and need to understand how to make this thing go into a completely different directory structure.


Can you paste a copy of the full spec file up on post the
link back here.

Cheers Malcolm °¿° (Linux Counter #276890)
SUSE Linux Enterprise Desktop 11 (x86_64) Kernel
up 6 days 21:12, 5 users, load average: 0.39, 0.30, 0.27
GPU GeForce 8600 GTS Silent - CUDA Driver Version: 190.53

I posted both the spec file and build output from the rpmbuild -ba <specfile> command.
They are separated by <name> </name> The RPM now builds, and creates the RPMS, but doesn’t place the files from the rpms in /opt/mpich/%{mpichver}.%{mpichrelease} etc… Eventually I want to get to the point that the libs and everything are all contained with in the same directory structure.

Any help is GREATLY appreciated.



./configure --host=x86_64-suse-linux --build=x86_64-suse-linux --target=x86_64-suse-linux 
--program-prefix= **--prefix=/usr** --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin 
--sysconfdir=/etc/lam --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 
--libexecdir=/usr/lib64 --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man 
--infodir=/usr/share/info --with-rpi=usysv --disable-tv-queue **--prefix=/opt/mpi/lam-7.1.4-2/**

Now make an educated guess, why this will not put anything into /opt (which BTW is no longer allowed according to openSUSE packaging guidelines).

Packaging/SUSE Package Conventions/Filesystem Structure - openSUSE

" --program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --prefix=/opt/mpi/lam-7.1.4-2/"

I totally get what it’s doing up there, isn’t right… “I think…” But I am passing the --prefix=blah command to the script from the spec file and it’s not using it. At least it’s not using it correctly as I understand it. Further, I don’t understand where it’s getting what it’s overriding with, although it could be coming from the configure script it’s self. Which I am looking at right now.
Does anyone have any GOOD reads about creating RPMS? I have read the basic stuff that a google search presents, and I have not been impressed so far.
Also, are you stating that building different versions of a package and keeping them 100% separate is not supported by Novell?

Thanks in advance!,


Wrong, rpmbuild is doing exactly what you are telling him to do, %configure is a macro and not the same as ./configure.

Just search $SEARCH_ENGINE_OF_YOUR_CHOICE for subjects like “creating RPMs” or (more specific) “creating RPMs $DISTRO” and you will find lots of it.

Don’t know what you read, but my experience is quite different on that.

No, I don’t, read the linked packaging guidelines.

In fact, there are quite a few packages “allowed” (and even installable) in different versions (java, gcc …).

Is there anyone out there that has anything to add that may actually be useful?


“Useful”? Like in “more useful than what Akoellh wrote”?

He provided a pretty neat handful of hints and links, why don’t you just read and follow them? It’s not like he invented those guidelines, he just tells you what is fact.