Thank your for comments.
1) I'am using
GNU bash, version 3.00.15(1)-release (i686-redhat-linux-gnu)
To see the problem with the original
eval "set %{configure_options}"
I start the configure_options with -- in buildrpm.sh, like this:
configure_options="--with-tm=/usr/local FC=pgf90 F77=pgf90 CC=pgcc CXX=pgCC
CFLAGS=-Msignextend CXXFLAGS=-Msignextend --with-wrapper-cflags=-Msignextend
--with-wrapper-cxxflags=-Msignextend FFLAGS=-Msignextend FCFLAGS=-Msignextend
--with-wrapper-fflags=-Msignextend --with-wrapper-fcflags=-Msignextend"
Or to see the problem directly, I go to the shell:
sh; set --w
sh: set: --: invalid option
set: usage: set [--abefhkmnptuvxBCHP] [-o option] [arg ...]
2)
if ("\$LD_LIBRARY_PATH" !~ *%{_libdir}*) then
is the only possibility which works for me.
I'am using
tcsh 6.13.00 (Astron) 2004-05-19 (i386-intel-linux) options
8b,nls,dl,al,kan,rh,color,dspm,filec
If I use "%{_libdir}", then every time I
source /opt/openmpi/1.2/bin/mpivars-1.2.csh
a new entry of opemnpi is prepended, so the LD_LIBRARY_PATH is growing.
The same if I use
"*%{_libdir}*"
it seems that with the double quotes the shell despite the pattern comparison
requested by !~ uses literal matching.
3)
using
setenv MANPATH %{_mandir}:
(with the colon (:) included), if I start from empty MANPATH
unsetenv MANPATH
and run
source /opt/openmpi/1.2/bin/mpivars-1.2.csh
I get
echo $MANPATH
/opt/openmpi/1.2/man:
I tried to google for something like
also include the default MANPATH
but I cannot find anything. What is the meaning of this colon at the end?
Marcin
Jeff Squyres wrote:
On Apr 4, 2007, at 4:50 AM, Marcin Dulak wrote:
Thank you for the links.
I tried the Revision 14205 of openmpi.spec and it works for me
only after some changes:
- in the mpivars-1.2.csh script part,
- and related to the line 330 in the original (14205) openmpi.spec:
eval "set %{configure_options}"
which will fail, if configure_options starts with --, in which case
it will be interpreted as an option to set.
Hmm. I did not have this problem. What version of shell are you using?
I can apply this change because it's harmless, but I'm curious as to
why I did not see the same problem.
See below for more comments.
--- openmpi.spec 2007-04-04 09:34:12.397722000 +0200
+++ openmpi-fixed.spec 2007-04-04 10:25:26.648442000 +0200
@@ -327,7 +327,8 @@
if test "$using_gcc" = "1"; then
# Do wretched things to find a CC=* token
- eval "set %{configure_options}"
+ # Remove starting --*, as it is interpreted as an option to set
+ eval "set `echo %{configure_options} | sed 's/--*//'`"
See comment above.
compiler=
while test "$1" != "" -a "$compiler" = ""; do
case "$1" in
@@ -449,7 +450,7 @@
# LD_LIBRARY_PATH
if ("1" == "\$?LD_LIBRARY_PATH") then
- if ("\$LD_LIBRARY_PATH" =~ "'*%{_libdir}*'") then
+ if ("\$LD_LIBRARY_PATH" !~ *%{_libdir}*) then
setenv LD_LIBRARY_PATH %{_libdir}:\${LD_LIBRARY_PATH}
endif
else
@@ -458,11 +459,11 @@
# MANPATH
if ("1" == "\$?MANPATH") then
- if ("\$MANPATH" =~ '*%{_mandir}*'") then
+ if ("\$MANPATH" !~ *%{_mandir}*) then
Fixed the above 2 typos, although the *'s should also disappear and
the double quotes should remain (the %{_mandir} one was actually
broken).
setenv MANPATH %{_mandir}:\${MANPATH}
endif
else
- setenv MANPATH %{_mandir}:
+ setenv MANPATH %{_mandir}
The : at the end of the string is intentional. Its presence means
"also include the default MANPATH".