python; configure; ark...

Jim Rowan <[email protected]> Thu, 17 Nov 2005 16:27:46 -0600
Newsgroups gmane.comp.sysutils.ark.devel
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------000304090800020908060406
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Still fighting against this python configure. :(  Following is long and 
complicated, but I would appreciate whatever ideas anyone has!


My earlier discovery that unsetting CONFIG_SHELL allowed me to run 
configure to completion.  However, I have now run into something else 
and I am baffled by the results of my debugging efforts.

The "problem" is that when I ask ark to configure the package, I get an 
error from configure:

...
+ ./configure --prefix=/our/.-ark-deploy/python--2.4.2 --disable-nls
LDFLAGS= -L/our/.-ark-deploy/python--2.4.2/lib 
-Wl,-R/our/.-ark-deploy/python--2.4.2/lib CXXFLAGS=-O2 
-I/our/.-ark-deploy/python--2.4.2/include CFLAGS=-O2 -fstrict-aliasing 
-I/our/.-ark-deploy/python--2.4.2/include CPPFLAGS= 
-I/our/.-ark-deploy/python--2.4.2/include CXX=/our/bin/g++ 
CC=/our/bin/gcc CONFIG_SHELL=
checking MACHDEP... sunos5
checking EXTRAPLATDIR...
checking for --without-gcc... no
checking for --with-cxx=<compiler>... no
checking for c++... /our/bin/g++
checking for C++ compiler default output file name... a.out
checking whether the C++ compiler works... configure: error: cannot run 
C++ compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.


config.log tells us a bit more:

...
configure:1833: result: a.out
configure:1838: checking whether the C++ compiler works
configure:1844: ./a.out
ld.so.1: ./a.out: fatal: libgcc_s.so.1: version `GCC_3.3' not found 
(required by file /our/.-ark-deploy/gcc--3.4.4/lib/libstdc++.so.6)
configure:1847: $? = 137
configure:1854: error: cannot run C++ compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.
...

And this would point fairly clearly to a runtime load library path kind 
of problem...  except that I have very conflicting/confusing other info:

I've tried to recreate this failure by running it in various ways by 
hand, and I cannot recreate it.

0.) If I run configure by hand, (with no args) it works just fine.

1.) I hacked the configure script to save a copy of the a.out that it 
built when run under ark.  I can run a.out just fine.  I don't have 
LD_LIBRARY_PATH set in my environment.

2.) I tracked down the python code in arkbase/ark/think.py that runs the 
shell code that is built up, and uncommented the debug statements near 
line 1800:
        elif lang == 'sh':
            #print 'pre=',`self.preambleSh()`
            #print 'exp=',`self.expandParams(lang)`
            #print 'cod=',`string.strip(code)`
Ran the ark package configure again; saved the resulting statements to a 
file, messed with it to remove/adjust the quoting, and ended up with a 
file (foo) that I can run with the command "sh foo".  This does 
everything that I think ark is doing (certainly the output looks very 
similar).  *It* also runs to completion, and doesn't have trouble with 
the C++ compiler/loader issue.  foo is attached.


This latter one is the most perplexing.  I don't understand how the 
"environment" when run via "ark package configure" might be different 
from what "foo" does -- but it clearly is different enough that it has 
this problem....

Got any ideas?

(I may or may not have a problem with the compiler and libstdc++, but 
even if I do, why does this stuff succeed when run by hand and fail when 
run by ark.?)

(I think I really need to understand this unable-to-recreate-failure, so 
that I can successfully debug any compiler problem I have.)





--------------000304090800020908060406
Content-Type: text/plain;
 name="foo"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="foo"

ARK_PROFILE='/usr2/jmr/.ark_profile';export ARK_PROFILE
VERBOSE='-v'
PRETEND=''
KEEP_GOING=''
HARD_UNDO=''
PATH='/our/bin:/usr/local/bin:/usr/ccs/bin:/usr/bin:/bin:/usr/sbin:/sbin:/pkg/qct/bin:/usr/X/bin';export PATH # don't leave PATH to chance!

# useful shell functions:
sidaiPickProgram () {
    for p in "$@" ; do
	case "$p" in
	  /*|./*|../*)
	    p_w1=`echo $p | sed -e 's/ .*//'`
	    if [ -x "$p_w1" ] ; then
	       echo $p
	       return
	    fi
	    ;;

	  *) # relative path, so don't even try
            echo $p
	    return
	    ;;
	esac
   done
   echo "No executable program among: $*" 2>& 1
   exit 1
}

sidaiClearPkgState () {
   tag=$1
   PKG_STATE_DIR="$PKGS_STATE_DIR/$PKG_ID"
   if [ -d $PKG_STATE_DIR ] ; then
       cd $PKG_STATE_DIR
       f1=$tag
       f2=$f1.xml
       f1f=$f1-FORCED
       f2f=$f2-FORCED
       for i in $f1 $f2 $f1f $f2f ; do
          if [ -f $i ]; then /bin/rm $i ; fi
       done
   fi
}


umask 022 # so we don't pick up something random from ssh/rsh
PKG_BUILD_DIR='/prj/qct/sysadmin/aus-it/arik/ark-builds/python--2.4.2'
PKG_DEPLOY_DIRS='/our/.-ark-deploy/python--2.4.2'

set -e
set -u
set -x

CONFIG_SHELL=''
PKG_PROTO_HOST='sparc-solaris9'
dep_iflags='-I/our/.-ark-deploy/python--2.4.2/include'
dep_lflags='-L/our/.-ark-deploy/python--2.4.2/lib -Wl,-R/our/.-ark-deploy/python--2.4.2/lib'
pre_config_eval='/bin/rm -f Iflags Lflags; echo "$dep_iflags" > Iflags; echo "$dep_lflags" > Lflags'
extra_configure_args='--disable-nls'
FIND='/usr/bin/find'
XARGS='/usr/bin/xargs'
cc='/our/bin/gcc'
cxx='/our/bin/g++'
ccboot='/pkg/gnu_compilers/gcc-3.2.3/bin/gcc'
cxxboot='/pkg/gnu_compilers/gcc-3.2.3/bin/c++'
cppflags=' -I/our/.-ark-deploy/python--2.4.2/include'
cflags='-O2 -fstrict-aliasing -I/our/.-ark-deploy/python--2.4.2/include'
cxxflags='-O2 -I/our/.-ark-deploy/python--2.4.2/include'
ldflags=' -L/our/.-ark-deploy/python--2.4.2/lib -Wl,-R/our/.-ark-deploy/python--2.4.2/lib'
cppflagsboot=' -I/our/.-ark-deploy/python--2.4.2/include'
cflagsboot='-O2 -fstrict-aliasing -I/our/.-ark-deploy/python--2.4.2/include'
cxxflagsboot='-O2 -I/our/.-ark-deploy/python--2.4.2/include'
ldflagsboot=' -L/our/.-ark-deploy/python--2.4.2/lib -Wl,-R/our/.-ark-deploy/python--2.4.2/lib'
in_dir='.'
CONFIGURE='./configure'
configure_args=''
prefix='/our/.-ark-deploy/python--2.4.2'

cd $PKG_BUILD_DIR/$PKG_PROTO_HOST/$in_dir

# better safe than sorry...
$FIND . \( -name 'config*.cache' -o -name autom4te.cache -o -name config.log -o -name config.status -o -name conftest.c \) -print | $XARGS /bin/rm -rf

# don't want any user prefs to trip us up:
if [ "x${CONFIG_SITE:-}" != 'x' ] ; then unset CONFIG_SITE ; fi

cc=`sidaiPickProgram  "$cc"  "$ccboot"`
if [ "x$cc" = "x$ccboot" ] ; then
    cppflags="$cppflagsboot"
    cflags="$cflagsboot"
    ldflags="$ldflagsboot"
fi

cxx=`sidaiPickProgram "$cxx" "$cxxboot"`
if [ "x$cxx" = "x$cxxboot" ] ; then
    cppflags="$cppflagsboot"
    cxxflags="$cxxflagsboot"
    ldflags="$ldflagsboot"
fi

if [ "x${pre_config_eval:-}" != "x" ] ; then
    # this let's you get weird stuff in the environment, for example
    eval "$pre_config_eval"
fi

CONFIG_SHELL="$CONFIG_SHELL" \
CC="$cc"		\
CXX="$cxx"		\
CPPFLAGS="$cppflags"	\
CFLAGS="$cflags"	\
CXXFLAGS="$cxxflags"	\
LDFLAGS="$ldflags"	\
$CONFIGURE --prefix=$prefix $configure_args $extra_configure_args



--------------000304090800020908060406--


-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
Register for a JBoss Training Course.  Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click