Problem compiling 2.49 + SSGI patch

I am trying to compiling 2.49 source with the last SSGI patch as I did a few days ago with 2.48 + SSGI without problems. Here it is the error:

source/blender/blenkernel/intern/node.c:31:20: error: Python.h: No existe el fichero ó directorio
scons: *** [/home/otomo/Escritorio/build/linux2/source/blender/blenkernel/intern/node.o] Error 1
scons: building terminated because of errors.

No existe el fichero ó directorio=File or directory not found

Anyone know what could happened? Thanks in advance :spin:

You’ve got the right version of python running? Hasn’t 2.49 revereted back to 2.5.2?

I have both 2.5 and 2.6 python dev packages installed as usual.

check the python section of your scons config. The compiler is not finding the include files from your python installation. Most likely the paths in the python section are not configured correctly.

Ok, tomorrow I will check this and post results, its strange because I compiled so many versions and until now I didn’t have problems.

BF_PYTHON = ‘/usr’
BF_PYTHON_VERSION = ‘2.5’
WITH_BF_STATICPYTHON = False
BF_PYTHON_INC = ‘${BF_PYTHON}/include/python${BF_PYTHON_VERSION}’
BF_PYTHON_BINARY = ‘${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}’
BF_PYTHON_LIB = ‘python${BF_PYTHON_VERSION}’ #BF_PYTHON+’/lib/python’+BF_PYTHON_VERSION+’/config/libpython’+BF_PYTHON_VERSION+’.a’
BF_PYTHON_LINKFLAGS = [’-Xlinker’, ‘-export-dynamic’]
BF_PYTHON_LIB_STATIC = ‘${BF_PYTHON}/lib/libpython${BF_PYTHON_VERSION}.a’

With the same python part 2.48 compiles fine, I still don’t know what happens :no:

Not sure if 2.49 demands for python 2.6. But if that is the case you need to change BF_PYTHON_VERSION=‘2.5’ to BF_PYTHON_VERSION=‘2.6’ in the file you posted the extract of. Otherwise scons will use python 2.5 nonetheless

Well first start by figuring out where “Python.h” is and checking it against the path used.

What does “locate Python.h” give you?

(Should return multiple locations if you have multiple versions of python installed)

/usr/include/python2.5/Python.h
/usr/include/python2.6/Python.h

I tried with 2.6 and 2.5 without success. The last week with the same pc and operating system I compiled 2.48 as many other times successfully.

Are you using Ubuntu? Did you recently update to Jaunty? If so, your dev package of Python 2.6 may have gone away. The very same thing just happened to me today (no Python.h error in node.c). Went into Synaptic Package Manager and Lo! My previously installed Py2.6 Dev package was no longer installed. Reinstalled it compile went right through. If you’ve recently done a linux system upgrade, make sure your 2.6 Python dev package is still there!

Yes I have Jaunty, but I installed it fresh. I checked and I have both 2.5 and 2.6 python dev packages. Also a reinstalled 2.6 python dev package and give error anyway when compiling. I will drop here my linux config:

-- coding: utf-8 --

LCGDIR = ‘…/lib/linux2’
LIBDIR = “${LCGDIR}”

WITH_BF_VERSE = True
BF_VERSE_INCLUDE = “#extern/verse/dist”

def py_version_string():
‘’’
returns py version - “2.5”, “2.6” etc
‘’’
import platform
ver = platform.python_version_tuple()
return ‘%d.%d’ % (int(ver[0]), int(ver[1])) # py2.5 uses strings, 2.6 ints

BF_PYTHON = ‘/usr’
BF_PYTHON_VERSION = ‘2.6’
WITH_BF_STATICPYTHON = False
BF_PYTHON_INC = ‘${BF_PYTHON}/include/python${BF_PYTHON_VERSION}’
BF_PYTHON_BINARY = ‘${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}’
BF_PYTHON_LIB = ‘python${BF_PYTHON_VERSION}’ #BF_PYTHON+‘/lib/python’+BF_PYTHON_VERSION+‘/config/libpython’+BF_PYTHON_VERSION+‘.a’
BF_PYTHON_LINKFLAGS = [‘-Xlinker’, ‘-export-dynamic’]
BF_PYTHON_LIB_STATIC = ‘${BF_PYTHON}/lib/libpython${BF_PYTHON_VERSION}.a’

WITH_BF_OPENAL = True
WITH_BF_STATICOPENAL = False
BF_OPENAL = ‘/usr’
BF_OPENAL_INC = ‘${BF_OPENAL}/include’
BF_OPENAL_LIB = ‘openal’
BF_OPENAL_LIB_STATIC = ‘${BF_OPENAL}/lib/libopenal.a’

BF_CXX = ‘/usr’
WITH_BF_STATICCXX = False
BF_CXX_LIB_STATIC = ‘${BF_CXX}/lib/libstdc++.a’

WITH_BF_SDL = True
BF_SDL = ‘/usr’ #$(shell sdl-config --prefix)
BF_SDL_INC = ‘${BF_SDL}/include/SDL’ #$(shell $(BF_SDL)/bin/sdl-config --cflags)
BF_SDL_LIB = ‘SDL’ #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer

WITH_BF_OPENEXR = True
WITH_BF_STATICOPENEXR = False
BF_OPENEXR = ‘/usr’

when compiling with your own openexr lib you might need to set…

BF_OPENEXR_INC = ‘${BF_OPENEXR}/include/OpenEXR ${BF_OPENEXR}/include’

BF_OPENEXR_INC = ‘${BF_OPENEXR}/include/OpenEXR’
BF_OPENEXR_LIB = 'Half IlmImf Iex Imath ’
BF_OPENEXR_LIB_STATIC = ‘${BF_OPENEXR}/lib/libHalf.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_OPENEXR}/lib/libIex.a ${BF_OPENEXR}/lib/libImath.a ${BF_OPENEXR}/lib/libIlmThread.a’

BF_OPENEXR_LIBPATH = ‘${BF_OPENEXR}/lib’

WITH_BF_DDS = True

WITH_BF_JPEG = True
BF_JPEG = ‘/usr’
BF_JPEG_INC = ‘${BF_JPEG}/include’
BF_JPEG_LIB = ‘jpeg’

WITH_BF_PNG = True
BF_PNG = ‘/usr’
BF_PNG_INC = ‘${BF_PNG}/include’
BF_PNG_LIB = ‘png’

BF_TIFF = ‘/usr’
BF_TIFF_INC = ‘${BF_TIFF}/include’

WITH_BF_ZLIB = True
BF_ZLIB = ‘/usr’
BF_ZLIB_INC = ‘${BF_ZLIB}/include’
BF_ZLIB_LIB = ‘z’

WITH_BF_INTERNATIONAL = True

BF_GETTEXT = ‘/usr’
BF_GETTEXT_INC = ‘${BF_GETTEXT}/include’
BF_GETTEXT_LIB = ‘gettextlib’
BF_GETTEXT_LIBPATH = ‘${BF_GETTEXT}/lib’

WITH_BF_FTGL = True
BF_FTGL = ‘#extern/bFTGL’
BF_FTGL_INC = ‘${BF_FTGL}/include’
BF_FTGL_LIB = ‘extern_ftgl’

WITH_BF_GAMEENGINE = True
WITH_BF_PLAYER = True

WITH_BF_ODE = False
BF_ODE = LIBDIR + ‘/ode’
BF_ODE_INC = BF_ODE + ‘/include’
BF_ODE_LIB = BF_ODE + ‘/lib/libode.a’

WITH_BF_BULLET = True
BF_BULLET = ‘#extern/bullet2/src’
BF_BULLET_INC = ‘${BF_BULLET}’
BF_BULLET_LIB = ‘extern_bullet’

BF_SOLID = ‘#extern/solid’
BF_SOLID_INC = ‘${BF_SOLID}’
BF_SOLID_LIB = ‘extern_solid’

WITH_BF_YAFRAY = False

#WITH_BF_NSPR = True
#BF_NSPR = $(LIBDIR)/nspr
#BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
#BF_NSPR_LIB =

Uncomment the following line to use Mozilla inplace of netscape

#CPPFLAGS += -DMOZ_NOT_NET

Location of MOZILLA/Netscape header files…

#BF_MOZILLA = $(LIBDIR)/mozilla
#BF_MOZILLA_INC = -I$(BF_MOZILLA)/include/mozilla/nspr -I$(BF_MOZILLA)/include/mozilla -I$(BF_MOZILLA)/include/mozilla/xpcom -I$(BF_MOZILLA)/include/mozilla/idl
#BF_MOZILLA_LIB =

Will fall back to look in BF_MOZILLA_INC/nspr and BF_MOZILLA_LIB

if this is not set.

Be paranoid regarding library creation (do not update archives)

#BF_PARANOID = True

enable freetype2 support for text objects

BF_FREETYPE = ‘/usr’
BF_FREETYPE_INC = ‘${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2’
BF_FREETYPE_LIB = ‘freetype’

WITH_BF_QUICKTIME = False # -DWITH_QUICKTIME
BF_QUICKTIME = ‘/usr/local’
BF_QUICKTIME_INC = ‘${BF_QUICKTIME}/include’

WITH_BF_ICONV = False
BF_ICONV = LIBDIR + “/iconv”
BF_ICONV_INC = ‘${BF_ICONV}/include’
BF_ICONV_LIB = ‘iconv’
BF_ICONV_LIBPATH = ‘${BF_ICONV}/lib’

WITH_BF_BINRELOC = True

enable ffmpeg support

WITH_BF_FFMPEG = True # -DWITH_FFMPEG
BF_FFMPEG = ‘#extern/ffmpeg’
BF_FFMPEG_LIB = ‘’

Uncomment the following two lines to use system’s ffmpeg

BF_FFMPEG = ‘/usr’

BF_FFMPEG_LIB = ‘avformat avcodec swscale avutil avdevice’

BF_FFMPEG_INC = ‘${BF_FFMPEG}’
BF_FFMPEG_LIBPATH=‘${BF_FFMPEG}/lib’

enable ogg, vorbis and theora in ffmpeg

WITH_BF_OGG = False # -DWITH_OGG
BF_OGG = ‘/usr’
BF_OGG_INC = ‘${BF_OGG}/include’
BF_OGG_LIB = ‘ogg vorbis vorbisenc theoraenc theoradec’

WITH_BF_OPENJPEG = True
BF_OPENJPEG = ‘#extern/libopenjpeg’
BF_OPENJPEG_LIB = ‘’
BF_OPENJPEG_INC = ‘${BF_OPENJPEG}’
BF_OPENJPEG_LIBPATH=‘${BF_OPENJPEG}/lib’

WITH_BF_REDCODE = False
BF_REDCODE = ‘#extern/libredcode’
BF_REDCODE_LIB = ‘’

BF_REDCODE_INC = ‘${BF_REDCODE}/include’

BF_REDCODE_INC = ‘${BF_REDCODE}/…/’ #C files request “libredcode/format.h” which is in “#extern/libredcode/format.h”, stupid but compiles for now.
BF_REDCODE_LIBPATH=‘${BF_REDCODE}/lib’

Mesa Libs should go here if your using them as well…

WITH_BF_STATICOPENGL = False
BF_OPENGL = ‘/usr’
BF_OPENGL_INC = ‘${BF_OPENGL}/include’
BF_OPENGL_LIB = ‘GL GLU X11 Xi’
BF_OPENGL_LIBPATH = ‘/usr/X11R6/lib’
BF_OPENGL_LIB_STATIC = ‘${BF_OPENGL_LIBPATH}/libGL.a ${BF_OPENGL_LIBPATH}/libGLU.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a ${BF_OPENGL_LIBPATH}/libX11.a ${BF_OPENGL_LIBPATH}/libXi.a ${BF_OPENGL_LIBPATH}/libXext.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a’

CC = ‘gcc’
CXX = ‘g++’
##ifeq ($CPU),alpha)

CFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -mieee

CCFLAGS = [‘-pipe’,‘-fPIC’,‘-funsigned-char’,‘-fno-strict-aliasing’]

CPPFLAGS = [‘-DXP_UNIX’]
CXXFLAGS = [‘-pipe’,‘-fPIC’,‘-funsigned-char’,‘-fno-strict-aliasing’]

optimizaciones otomo

CCFLAGS.extend( [ ‘-march=core2’, ‘-O3’, ‘-msse’, ‘-msse2’, ‘-msse3’, ‘-fomit-frame-pointer’, ‘-mmmx’, ‘-mfpmath=sse,387’ ] )
CXXFLAGS.extend( [ ‘-march=core2’, ‘-O3’, ‘-msse’, ‘-msse2’, ‘-msse3’, ‘-fomit-frame-pointer’, ‘-mmmx’, ‘-mfpmath=sse,387’ ] )
##########################

REL_CFLAGS = [‘-O2’]
REL_CCFLAGS = [‘-O2’]
##BF_DEPEND = True

#ar = ar
##ARFLAGS = ruv
##ARFLAGSQUIET = ru

C_WARN = [‘-Wno-char-subscripts’, ‘-Wdeclaration-after-statement’]

CC_WARN = [‘-Wall’]

##FIX_STUBS_WARNINGS = -Wno-unused

LLIBS = [‘util’, ‘c’, ‘m’, ‘dl’, ‘pthread’, ‘stdc++’]
##LOPTS = --dynamic
##DYNLDFLAGS = -shared $(LDFLAGS)

BF_PROFILE = False
BF_PROFILE_CCFLAGS = [‘-pg’,‘-g’]
BF_PROFILE_LINKFLAGS = [‘-pg’]

BF_DEBUG = False
BF_DEBUG_CCFLAGS = [‘-g’]

BF_BUILDDIR = ‘…/build/linux2’
BF_INSTALLDIR=‘…/install/linux2’
BF_DOCDIR=‘…/install/doc’

#Link against pthread
PLATFORM_LINKFLAGS = [‘-pthread’]

Maybe try BF_PYTHON_VERSION = py_version_string() instead of BF_PYTHON_VERSION = ‘2.6’.

Works for me…

Also might want to figure out which version of python is set as the default since it could be trying to link to the wrong one. On my box opening up a python interpreter and typing in;

import platform
platform.python_version_tuple()

shows that all is well in the world.

I already tried with py_version_string() because it was in by default :frowning: in the config file without success.

The output of

import platform
platform.python_version_tuple()

was

 ('2', '6', '2')

blender 2.49 does this now


def py_version_string():
    '''
    returns py version - "2.5", "2.6" etc
    '''
    import platform
    ver = platform.python_version_tuple()
    return '%d.%d' % (int(ver[0]), int(ver[1])) # py2.5 uses strings, 2.6 ints

BF_PYTHON_VERSION = py_version_string()

You want “2.6” ,“2.5” etc, not “2.6.2”

Yes, I know, I tried to compile it with with this text in the config file by default

BF_PYTHON_VERSION = py_version_string()
also with
BF_PYTHON_VERSION = ‘2.6’
and
BF_PYTHON_VERSION = ‘2.5’
but I get the same error :frowning:

You could try just hard wiring the lookup directories directly instead of using variables.

(i.e. stuff like: BF_PYTHON_INC = ‘/usr/include/python2.5’ )

if that still doesn’t work you could set a flag for the include dir directly as one of your CFLAGS and CXXFLAGS by adding “-I /usr/include/python2.5”

It sounds almost as if something is screwed up with your install of scons.

I use Gentoo, so I don’t really know the status of Ubuntu and it’s dev packages.

I solved that problem, and one similar I had with OpenEXR, but now I have that :(:(:(:(:(:

/usr/bin/ld: cannot find -l/scratch/jessica/python-2.4/SunOS5.8/lib/python2.4/config/libpython2.4
collect2: ld devolvió el estado de salida 1

/usr/bin/ld: cannot find -l/scratch/jessica/python-2.4/SunOS5.8/lib/python2.4/config/libpython2.4

What’s this for?

I don’t know its the first time I saw it :frowning: Very weird. I compiled Blender many many times and I don’t understand why is the reason of this error. In fact in the same pc I could compile 2.48 without problems, but 2.49 no, even without patches or editing the config file.