[fluxus] Fluxus 0.9rc1 segfaults upon loading+running scripts on Ubuntu/Breezy i386

Javier Candeira javier at candeira.com
Fri Mar 10 11:01:46 PST 2006


Dave Griffiths wrote:
> hmm, you have no debugging symbols? the SConstruct should have -ggdb in it
> somewhere...

It still has the --ggdb in it. I am building the package with debuild, and
the Sconstruct is very tenuously altered (mostly changing /usr/local to
/usr. /usr/share/local to /usr/share, and that's it).

The Debian makefile, which is called debian/rules, has this instructions for
the build target:

build: build-stamp

build-stamp: configure-stamp
        dh_testdir
        scons
        touch build-stamp

And the Sconstruct file I am using is this one:

#                                                              -*- python -*-

import os, os.path

Target       = "fluxus"

Prefix = "/usr"
Install      = Prefix + "/bin"

GuileVersionMajMin = "1.6"
GuilePrefix        = "/usr/share"
GuileDataPrefix    = GuilePrefix + "/guile"
GuileSchemePrefix  = GuileDataPrefix + "/" + GuileVersionMajMin

SchemePrefix = GuileSchemePrefix + "/site/fluxus"

LibPaths     = ["/usr/lib"]
# First member of each list is a library, second - a header or headers list
# to be passed to the CheckLibWithHeader(...) at configure time.
# We may add extra libraries later on per platform basis
LibList      = [["m", "math.h"],
                ["jack", "jack/jack.h"],
                ["sndfile", "sndfile.h"],
                ["guile", "guile/gh.h"],
                ["fftw3", "fftw3.h"],
                ["ode", "ode/ode.h"],
                ["lo", "lo/lo.h"],
                ["pthread", "pthread.h"],
                ["jpeg", ["stdio.h", "stdlib.h", "jpeglib.h"]],
                ["tiff", "tiff.h"],
                ["z", "zlib.h"],
                ["png", "libpng/png.h"]]

IncludePaths = Split("/usr/include libfluxus/src libfluxphysics/src")
Source = Split("libfluxus/src/PData.cpp \
                libfluxus/src/PDataOperator.cpp \
                libfluxus/src/PDataContainer.cpp \
                libfluxus/src/PDataArithmetic.cpp \
                libfluxus/src/GraphicsUtils.cpp \
                libfluxus/src/Lifeforms.cpp \
                libfluxus/src/PNGLoader.cpp \
                libfluxus/src/PolyPrimitive.cpp \
                libfluxus/src/TextPrimitive.cpp \
                libfluxus/src/CompiledPrimitive.cpp \
                libfluxus/src/LinePrimitive.cpp \
                libfluxus/src/ParticlePrimitive.cpp \
                libfluxus/src/NURBSPrimitive.cpp \
                libfluxus/src/Primitive.cpp \
                libfluxus/src/Light.cpp \
                libfluxus/src/Renderer.cpp \
                libfluxus/src/SceneGraph.cpp \
                libfluxus/src/State.cpp \
                libfluxus/src/TexturePainter.cpp \
                libfluxus/src/Tree.cpp \
                libfluxus/src/dada.cpp \
                libfluxus/src/SearchPaths.cpp \
                libfluxphysics/src/Physics.cpp \
                src/AudioCollector.cpp \
                src/FluxusMain.cpp \
                src/FluxusBinding.cpp \
                src/JackClient.cpp \
                src/TurtleBuilder.cpp \
                src/GLEditor.cpp \
                src/Utils.cpp \
                src/OSCServer.cpp \
                src/Recorder.cpp \
                src/main.cpp")
FluxusVersion = "0.9b3-artm"

env = Environment(CCFLAGS = '-ggdb -pipe -Wall -O3 -ffast-math -Wno-unused
-fPIC',
                  LIBPATH = LibPaths,
                  CPPPATH = IncludePaths,
                  VERSION_NUM = FluxusVersion)

Default(env.Program(source = Source, target = Target))

if env['PLATFORM'] == 'darwin':
        env.Replace(LINK = "macos/libtool --mode=link g++")
        env.Prepend(LINKFLAGS = ["-static"])
else:
        LibList += [
                # FIXME: detect or accept command line
                # for xorg
                 ["X11", "X11/Xlib.h"],
                # for X11
                #[Split("Xi Xmu Xext Xt SM ICE X11"), None],
                ["glut", "GL/glut.h"],["GL", "GL/gl.h"],
                ["GLU", "GL/glu.h"]]
        env.Append(LIBPATH = ["/usr/X11R6/lib"])

if not GetOption('clean'):
        print '--------------------------------------------------------'

        print 'Fluxus: Configuring Build Environment'
        print '--------------------------------------------------------'

        conf = Configure( env )

        # all libraries are required, but they can be checked for independently
(hence autoadd=0),
        # which allows us to speed up the tests ...
        Libs = []
        for (lib,headers) in LibList:
                if ((headers == None) and (not conf.CheckLib(lib, autoadd =
0))) or \
                            ((headers != None) and (not
conf.CheckLibWithHeader(lib, headers, 'C', autoadd = 0))):
                        print "ERROR: '%s' must be installed!" % (lib)
                        Exit(1)
                if isinstance(lib, str):
                        Libs.append(lib)
                else:
                        Libs.extend(lib)

        env = conf.Finish()
        # ... but we shouldn't forget to add them to LIBS manually
        env.Replace(LIBS = Libs)

# packaging / installing
if env['PLATFORM'] == 'darwin':
        from macos.osxbundle import *
        TOOL_BUNDLE(env)
        # We add frameworks after configuration bit so that testing is faster.
        env.Replace(FRAMEWORKS = Split("GLUT OpenGL CoreAudio"))
        env.Alias("app", env.MakeBundle("Fluxus.app",
                                        "fluxus",
                                        "key",
                                        "macos/fluxus-Info.plist",
                                        typecode='APPL',
                                        icon_file='macos/fluxus.icns'))
        GuileScripts = "Fluxus.app/Contents/Resources/guile_scripts"
        SchemePrefix = GuileScripts + "/site/fluxus"
        for where, dirs, files in os.walk(GuileSchemePrefix):
                dest = os.path.join(GuileScripts,
where[len(GuileSchemePrefix)+1:])
                for f in files:
                        env.Install(dest, os.path.join(where,f))

        env['BUILDERS']['DiskImage'] = Builder(action = BuildDmg)
        DmgFiles = [File("COPYING"), Dir("Fluxus.app"), Dir("docs"),
Dir("examples"), Dir("scm")]
        env.Alias("dmg", env.DiskImage('Fluxus-' + FluxusVersion + '.dmg',
                                       DmgFiles))
else:
        env.Install(Install, Target)
        env.Alias('install', Prefix)

-- javier




More information about the Fluxus mailing list