compilation problems on x86_64 (ubuntu) using revision 2067

Questions, problems and discussion about compiling FreeOrion.

Moderator: Oberlus

Message
Author
User avatar
loonycyborg
Compilation Expert
Posts: 219
Joined: Thu Jul 06, 2006 10:30 pm
Location: Russia/Moscow

#16 Post by loonycyborg »

I've added command line options and configuration checks for Python and boost_python:

Code: Select all

Index: SConscript
===================================================================
--- SConscript	(revision 2073)
+++ SConscript	(working copy)
@@ -71,7 +71,8 @@
         'universe/Universe.cpp',
         'util/AppInterface.cpp',
         'AI/AIInterface.cpp',
-        'AI/ReferenceAI.cpp'
+        'AI/ReferenceAI.cpp',
+        'AI/PythonAI.cpp'
         ]
     target = 'ai'
 
Index: AI/PythonAI.h
===================================================================
--- AI/PythonAI.h	(revision 2073)
+++ AI/PythonAI.h	(working copy)
@@ -1,9 +1,9 @@
-#include "AIInterface.h"

-

 #include <boost/python.hpp>

 

 #include <string>

 

+#include "AIInterface.h"

+

 class PythonAI : public AIBase

 {

 public:

Index: SConstruct
===================================================================
--- SConstruct	(revision 2073)
+++ SConstruct	(working copy)
@@ -62,6 +62,9 @@
 options.Add('with_gg', 'Root directory of GG installation')
 options.Add('with_gg_include', 'Specify exact include dir for GG headers')
 options.Add('with_gg_libdir', 'Specify exact library dir for GG library')
+options.Add('with_python_include', 'Specify exact include dir for Python headers')
+options.Add('with_python_libdir', 'Specify exact library dir for Python library')
+options.Add('python_version', 'Version of python to link against. For example python_version=2.4 will link against libpython2.4.so or python2.4.dll')
 if str(Platform()) == 'win32':
     options.Add('with_zlib', 'Root directory of zlib installation')
     options.Add('with_zlib_include', 'Specify exact include dir for zlib headers')
@@ -180,6 +183,42 @@
         else:
             print 'Configuring unknown system (assuming the system is POSIX-like) ...'
 
+        # Python
+        if str(Platform()) == 'posix':
+            python_include = ''
+            python_version = ''
+            python_libdir = ''
+            if env.has_key('with_python_include') and env['with_python_include'] != '':
+                python_include = env['with_python_include']
+            else:
+                for version in ['2.4', '2.5']:
+                    include_path_guess = '/usr/include/python' + version
+                    if os.access(include_path_guess, os.R_OK):
+                        python_include = include_path_guess
+                        python_version = version
+                    if python_include == '':
+                        print 'Failed to guess location of python headers.'
+                        print 'Use with_python_include, with_python_libdir and python_version command line options.'
+                        Exit(1)
+            if env.has_key('with_python_libdir') and env['with_python_libdir'] != '':
+                python_libdir = env['with_python_libdir']
+            else:
+                python_libdir = '/usr/lib'
+            if env.has_key('python_version') and env['python_version'] != '': python_version = env['python_version']
+        else:
+            if not (env.has_key('with_python_include') and env.has_key('with_python_libdir') and env.has_key('python_version')):
+                print 'Use with_python_include, with_python_libdir and python_version command line options.'
+                Exit(1)
+            else:
+                python_include = env['with_python_include']
+                python_libdir = env['with_python_libdir']
+                python_version = env['python_version']
+
+        env.AppendUnique(CPPPATH=[python_include])
+        env.AppendUnique(LIBPATH=[python_libdir])
+        if not conf.CheckLibWithHeader('python' + python_version, 'Python.h', 'C', 'Py_Initialize();'):
+            Exit(1)
+
         ####################################################################
         # Configure GG requirements; use GG pkg-config first, if available #
         ####################################################################
@@ -194,7 +233,8 @@
 
         freeorion_boost_libs = [
             ('boost_serialization', 'boost/archive/binary_iarchive.hpp', 'boost::archive::binary_iarchive::is_saving();'),
-            ('boost_iostreams', 'boost/iostreams/filtering_stream.hpp', '')
+            ('boost_iostreams', 'boost/iostreams/filtering_stream.hpp', ''),
+            ('boost_python', 'boost/python.hpp', 'boost::python::throw_error_already_set();')
             ]
 
         if found_gg_pkg_config:
Index: client/AI/AIClientApp.cpp
===================================================================
--- client/AI/AIClientApp.cpp	(revision 2073)
+++ client/AI/AIClientApp.cpp	(working copy)
@@ -1,3 +1,6 @@
+#include "../../AI/PythonAI.h"
+#include "../../AI/ReferenceAI.h"
+
 #include "AIClientApp.h"
 
 #include "../../util/MultiplayerCommon.h"
@@ -26,9 +29,6 @@
 
 #include <boost/filesystem/fstream.hpp>
 
-#include "../../AI/ReferenceAI.h"
-//#include "../../AI/PythonAI.h"
-
 // static member(s)
 AIClientApp*  AIClientApp::s_app = 0;
 
@@ -137,8 +137,8 @@
 
 void AIClientApp::Initialize()
 {
-    m_AI = new ReferenceAI();
-    //m_AI = new PythonAI();
+    //m_AI = new ReferenceAI();
+    m_AI = new PythonAI();
     // join game at server
     const int MAX_TRIES = 5;
     int tries = 0;
I've found this in Python documentation:
Warning: Since Python may define some pre-processor definitions which affect the standard headers on some systems, you must include Python.h before any standard headers are included.
boost/python.hpp #includes Python.h so it must be #included before standard headers and headers that may #include standard headers.
In Soviet Russia, forum posts YOU!!

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

#17 Post by Geoff the Medio »

In windows, it's "python24.dll" (or similar) not "python2.4.dll"

Is it necessary to have a command-line option for the python version, or could you just use whichever you find, or the newest version in case of multiples?

The other packages also seem to use fancy stuff like:

Code: Select all

conf.CheckVersionHeader(...)
and ocassionay a regex seems to be involved.

The other dependencies have something along the lines of...

Code: Select all

if pkg_config:
    if conf.CheckPkg('freetype2', ft_pkgconfig_version):
        ...etc...
Could you add something equilvalent for Python?

Could you put the Python stuff after the GG stuff, to be consistent with the ordering already in the file?

Your use of

Code: Select all

if str(Platform()) == 'posix':
is also inconsistent with the rest of the file, which checks instead

Code: Select all

if str(Platform()) != 'win32':
and hase the else cover the other cases... which seems reversed from your method, which is worrisome for other platforms...

Could you also make this change, and then get SCons working again...?

Code: Select all

Index: chmain.cpp
===================================================================
--- chmain.cpp  (revision 2072)
+++ chmain.cpp  (working copy)
@@ -1,4 +1,4 @@
-#include "HumanClientAppSoundFMOD.h"
+#include "HumanClientAppSoundOpenAL.h"
 #include "../../util/OptionsDB.h"
 #include "../../util/Directories.h"
 #include "../../util/XMLDoc.h"
@@ -60,7 +60,7 @@
         return 1;
     }

-    HumanClientAppSoundFMOD app;
+    HumanClientAppSoundOpenAL app;

     try {
         app(); // run app (intialization and main process loop)
Thanks.

User avatar
loonycyborg
Compilation Expert
Posts: 219
Joined: Thu Jul 06, 2006 10:30 pm
Location: Russia/Moscow

#18 Post by loonycyborg »

Geoff the Medio wrote:In windows, it's "python24.dll" (or similar) not "python2.4.dll"
Then python_version=24 must be used instead.
Is it necessary to have a command-line option for the python version, or could you just use whichever you find, or the newest version in case of multiples?
I don't know of any platform independent ways of looking for python headers and library. Suffix of the python library name depends on version and platform so it must be provided.
The other dependencies have something along the lines of...

Code: Select all

if pkg_config:
    if conf.CheckPkg('freetype2', ft_pkgconfig_version):
        ...etc...
Could you add something equilvalent for Python?
This works only for libraries that use pkgconfig. Python does not.
Could you put the Python stuff after the GG stuff, to be consistent with the ordering already in the file?
Configuration checks for boost_python require python.
Your use of

Code: Select all

if str(Platform()) == 'posix':
is also inconsistent with the rest of the file, which checks instead

Code: Select all

if str(Platform()) != 'win32':
and hase the else cover the other cases... which seems reversed from your method, which is worrisome for other platforms...
Code after "if str(Platform()) == 'posix'" tries to guess location of python headers and library in a way that will likely work on modern linux distributions only. Otherwise it requires command-line options.
In Soviet Russia, forum posts YOU!!

User avatar
loonycyborg
Compilation Expert
Posts: 219
Joined: Thu Jul 06, 2006 10:30 pm
Location: Russia/Moscow

#19 Post by loonycyborg »

loonycyborg wrote: I don't know of any platform independent ways of looking for python headers and library.
Fixed :D

Here's more advanced version that is hopefully platform independent:

Code: Select all

Index: SConstruct
===================================================================
--- SConstruct	(revision 2073)
+++ SConstruct	(working copy)
@@ -62,6 +62,9 @@
 options.Add('with_gg', 'Root directory of GG installation')
 options.Add('with_gg_include', 'Specify exact include dir for GG headers')
 options.Add('with_gg_libdir', 'Specify exact library dir for GG library')
+options.Add('with_python_include', 'Specify exact include dir for Python headers')
+options.Add('with_python_libdir', 'Specify exact library dir for Python library')
+options.Add('python_suffix', 'Suffix of python library to link against. For example python_suffix=2.4 will link against libpython2.4.so or python2.4.dll')
 if str(Platform()) == 'win32':
     options.Add('with_zlib', 'Root directory of zlib installation')
     options.Add('with_zlib_include', 'Specify exact include dir for zlib headers')
@@ -180,6 +183,23 @@
         else:
             print 'Configuring unknown system (assuming the system is POSIX-like) ...'
 
+        # Python
+        import distutils.sysconfig
+        env.AppendUnique(LINKFLAGS=[Split(distutils.sysconfig.get_config_var('LINKFORSHARED'))])
+        if not (env.has_key('with_python_include') and env.has_key('with_python_libdir') and env.has_key('python_suffix')):
+            python_include = distutils.sysconfig.get_python_inc()
+            python_libdir = distutils.sysconfig.get_config_var('LIBDIR')
+            python_suffix = distutils.sysconfig.get_config_var('VERSION')
+        else:
+            python_include = env['with_python_include']
+            python_libdir = env['with_python_libdir']
+            python_suffix = env['python_suffix']
+
+        env.AppendUnique(CPPPATH=[python_include])
+        env.AppendUnique(LIBPATH=[python_libdir])
+        if not conf.CheckLibWithHeader('python' + python_suffix, 'Python.h', 'C', 'Py_Initialize();'):
+            Exit(1)
+
         ####################################################################
         # Configure GG requirements; use GG pkg-config first, if available #
         ####################################################################
@@ -194,7 +214,8 @@
 
         freeorion_boost_libs = [
             ('boost_serialization', 'boost/archive/binary_iarchive.hpp', 'boost::archive::binary_iarchive::is_saving();'),
-            ('boost_iostreams', 'boost/iostreams/filtering_stream.hpp', '')
+            ('boost_iostreams', 'boost/iostreams/filtering_stream.hpp', ''),
+            ('boost_python', 'boost/python.hpp', 'boost::python::throw_error_already_set();')
             ]
 
         if found_gg_pkg_config:
I'm not sure whether it will work on Windows. It depends on whether distutils.sysconfig.get_config_var('VERSION') is the right suffix.
In Soviet Russia, forum posts YOU!!

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

#20 Post by Geoff the Medio »

What about the OpenAL stuff?

Also: libboost-graph-dev isn't checked for...

User avatar
loonycyborg
Compilation Expert
Posts: 219
Joined: Thu Jul 06, 2006 10:30 pm
Location: Russia/Moscow

#21 Post by loonycyborg »

Geoff the Medio wrote:What about the OpenAL stuff?
I'll work on it. Maybe add command-line option to choose sound API?
:shock: That check would be too distribution specific. Maybe it means check for BGL? Header-only library? Should be checks for stdio.h added too? :lol:
In Soviet Russia, forum posts YOU!!

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

#22 Post by Geoff the Medio »

loonycyborg wrote:
Geoff the Medio wrote:What about the OpenAL stuff?
I'll work on it. Maybe add command-line option to choose sound API?
I don't see any reason to keep FMOD, even as an option.
libboost-graph-dev
:shock: That check would be too distribution specific. Maybe it means check for BGL? Header-only library? Should be checks for stdio.h added too? :lol:
Is there a difference between libboost-graph-dev and BGL...? I assume libboost-graph-dev is part of boost, though I can't find a relevant-looking lib or dll in C:\Boost\lib on WinXP... How is it different from the other boost libraries? It's obviously not a standard language component like stdio, though...

Regardless, the not checking for libboost-graph-dev has been submitted as a bug twice now, so is probably something we should make some attempt at...

User avatar
loonycyborg
Compilation Expert
Posts: 219
Joined: Thu Jul 06, 2006 10:30 pm
Location: Russia/Moscow

#23 Post by loonycyborg »

Geoff the Medio wrote: I don't see any reason to keep FMOD, even as an option.
No sound is an option too.
Is there a difference between libboost-graph-dev and BGL...? I assume libboost-graph-dev is part of boost, though I can't find a relevant-looking lib or dll in C:\Boost\lib on WinXP... How is it different from the other boost libraries? It's obviously not a standard language component like stdio, though...

Regardless, the not checking for libboost-graph-dev has been submitted as a bug twice now, so is probably something we should make some attempt at...
I've seen mentions of *-dev packages in discussions related to ubuntu.

BGL is Boost Graph Library. It's implemented entirely in headers, therefore no BGL .so or .dll exist. I think libboost-graph-dev is BGL. It's possible to make checks for BGL headers.
In Soviet Russia, forum posts YOU!!

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

#24 Post by Geoff the Medio »

loonycyborg wrote:
Geoff the Medio wrote:I don't see any reason to keep FMOD, even as an option.
No sound is an option too.
If you mean it's an option now, that's probably because the license for FMOD was non-free, so people wanted a way to build FO without it. OpenAL does not have this issue.
I've seen mentions of *-dev packages in discussions related to ubuntu.

BGL is Boost Graph Library. It's implemented entirely in headers, therefore no BGL .so or .dll exist. I think libboost-graph-dev is BGL. It's possible to make checks for BGL headers.
I see... so are people downloading just part of boost and not getting graph-dev?

I guess Ubuntu is popular enough to be worth supporting specially for this particular issue...

User avatar
loonycyborg
Compilation Expert
Posts: 219
Joined: Thu Jul 06, 2006 10:30 pm
Location: Russia/Moscow

#25 Post by loonycyborg »

Here's check for BGL:

Code: Select all

Index: build_support.py
===================================================================
--- build_support.py    (revision 2073)
+++ build_support.py    (working copy)
@@ -238,6 +238,14 @@
             ret = lib_name
     return ret

+def CheckBGL(context, conf):
+    if not conf.CheckHeader('boost/graph/dijkstra_shortest_paths.hpp', '<>', 'C++'):
+        context.Message('Boost configuration... ')
+        context.Result(False)
+        return False
+    else:
+        return True
+
 def CheckBoost(context, required_version, lib_tuples, conf, check_libs):
     AppendPackagePaths('boost', context.env)
     if not conf.CheckCXXHeader('boost/shared_ptr.hpp'):
@@ -250,6 +258,8 @@
         context.Result(False)
         return False
     if check_libs:
+        if not CheckBGL(context, conf):
+            return False
         for i in lib_tuples:
             lib = CheckBoostLib(context, i, conf)
             if not lib:
In Soviet Russia, forum posts YOU!!

User avatar
loonycyborg
Compilation Expert
Posts: 219
Joined: Thu Jul 06, 2006 10:30 pm
Location: Russia/Moscow

#26 Post by loonycyborg »

Here's OpenAL checks and command-line options:

Code: Select all

Index: SConstruct
===================================================================
--- SConstruct  (revision 2073)
+++ SConstruct  (working copy)
 options.Add('with_fmod', 'Root directory of FMOD installation')
 options.Add('with_fmod_include', 'Specify exact include dir for FMOD headers')
 options.Add('with_fmod_libdir', 'Specify exact library dir for FMOD library')
+options.Add('with_openal', 'Root directory of OpenAL installation')
+options.Add('with_openal_include', 'Specify exact include dir for OpenAL headers')
+options.Add('with_openal_libdir', 'Specify exact library dir for OpenAL library')
+options.Add('with_alut', 'Root directory of ALUT installation')
+options.Add('with_alut_include', 'Specify exact include dir for ALUT headers')
+options.Add('with_alut_libdir', 'Specify exact library dir for ALUT library')
 options.Add('with_graphviz', 'Root directory of GraphViz installation')
 options.Add('with_graphviz_include', 'Specify exact include dir for GraphViz headers')
 options.Add('with_graphviz_libdir', 'Specify exact library dir for GraphViz library')
 @@ -327,6 +354,19 @@
         else:
             env.AppendUnique(LIBS = [fmod_win32_lib_name])

+        # OpenAL
+        AppendPackagePaths('openal', env)
+        if pkg_config:
+            if conf.CheckPkg('openal', '0.0.8'):
+                env.ParseConfig('pkg-config --cflags --libs openal')
+        else:
+            if not conf.CheckLibWithHeader('openal', 'AL/alc.h', 'C', 'alcGetCurrentContext();'):
+                Exit(1)
+        AppendPackagePaths('alut', env)
+        env.ParseConfig('freealut-config --cflags --libs')
+        if not conf.CheckLibWithHeader('alut', 'AL/alut.h', 'C', 'alutInitWithoutContext(0,0);', autoadd = 0):
+            Exit(1)
+
         # GraphViz
         AppendPackagePaths('graphviz', env)
         if pkg_config:
Index: SConscript
===================================================================
--- SConscript  (revision 2073)
+++ SConscript  (working copy)
@@ -79,8 +80,8 @@
     target_sources = [
         'client/ClientApp.cpp',
         'client/human/HumanClientApp.cpp',
-        'client/human/HumanClientAppSoundFMOD.cpp',
-#        'client/human/HumanClientAppSoundOpenAL.cpp',
+#        'client/human/HumanClientAppSoundFMOD.cpp',
+        'client/human/HumanClientAppSoundOpenAL.cpp',
         'client/human/chmain.cpp',
         'network/ClientNetworkCore.cpp',
         'UI/About.cpp',
In Soviet Russia, forum posts YOU!!

MareviQ
Space Kraken
Posts: 100
Joined: Tue Aug 09, 2005 6:47 pm
Location: Somewhere in Poland

#27 Post by MareviQ »

as for OpenAL I did some custom stuff to my SConstruct to allow using it back when I implemented it. As far as I remember it needs a change in chmain.cpp. What I did was add a sound_system option value in SConstruct

In SConstruct:

Code: Select all

options.Add('sound_system','Specify the sound system to be used (fmod,openal,none)','fmod')
and added two c defines:
FREEORION_FMOD
and
FREEORION_OPENAL

my SConstruct part of sound detection looks like this:

Code: Select all

        # Sound
        if str(OptionValue('sound_system',env)) == 'fmod':
            AppendPackagePaths('fmod', env)
            env.AppendUnique(CPPDEFINES = [
                'FREEORION_FMOD'])
            found_it_with_pkg_config = False
            if pkg_config:
                if conf.CheckPkg('fmod', fmod_version):
                    env.ParseConfig('pkg-config --cflags --libs fmod')
                    found_it_with_pkg_config = True
            if not found_it_with_pkg_config:
                version_regex = re.compile(r'FMOD_VERSION\s*(\d+\.\d+)', re.DOTALL)
                if not conf.CheckVersionHeader('fmod', 'fmod.h', version_regex, fmod_version, True):
                    Exit(1)
            if not conf.CheckCHeader('fmod.h'):
                Exit(1)
            if str(Platform()) != 'win32':
                if not conf.CheckLib('fmod-' + fmod_version, 'FSOUND_GetVersion', header = '#include <fmod.h>'):
                    Exit(1)
            else:
                env.AppendUnique(LIBS = [fmod_win32_lib_name])
        elif str(OptionValue('sound_system',env)) == 'openal':
            AppendPackagePaths('openal',env)
            AppendPackagePaths('alut',env)
            env.AppendUnique(CPPDEFINES = [
                'FREEORION_OPENAL'])
            found_it_with_pkg_config = False
            if pkg_config:
                if str(OptionValue('alut_system',env)) == 'freealut':
                    if conf.CheckPkg('freealut',alut_version):
                        env.ParseConfig('pkg-config --cflags --libs freealut')
                        found_it_with_pkg_config = True
                elif str(OptionValue('alut_system',env)) == 'alut':
                    if conf.CheckPkg('alut',alut_version):
                        env.ParseConfig('pkg-config --cflags --libs alut')
                        found_it_with_pkg_config = True
                else:
                    Exit(1) #unknown alut implementation
            if not found_it_with_pkg_config:
                Exit(1) #I currently have no idea how the non-pkg-config detection works. So I won't try it
            if not conf.CheckCHeader('AL/al.h'):
                Exit(1)
            if not conf.CheckCHeader('AL/alut.h'):
                Exit(1)
            
            # Vorbisfile needed for OpenAL music system
            AppendPackagePaths('vorbisfile',env)
            found_it_with_pkg_config = False
            if pkg_config:
                if conf.CheckPkg('vorbisfile',vorbisfile_version):
                    env.ParseConfig('pkg-config --cflags --libs vorbisfile')
                    found_it_with_pkg_config = True
            if not found_it_with_pkg_config:
                Exit(1) #I currently have no idea how the non-pkg-config detection works. So I won't try it
            if not conf.CheckCHeader('vorbis/vorbisfile.h'):
                Exit(1)
Which may not be a correct way to do this, but I wasn't concerned about that then.

SConscript part:

Code: Select all

    if str(OptionValue('sound_system',env)) == 'fmod':
        target_sources += ['client/human/HumanClientAppSoundFMOD.cpp']
    if str(OptionValue('sound_system',env)) == 'openal':
        target_sources += ['client/human/HumanClientAppSoundOpenAL.cpp']
    target = 'human'
chmain.cpp part1:

Code: Select all

#ifdef FREEORION_FMOD
    #include "HumanClientAppSoundFMOD.h"
#else
    #ifdef FREEORION_OPENAL
        #include "HumanClientAppSoundOpenAL.h"
    #else
        #include "HumanClientApp.h"
    #endif
#endif
chmain.cpp part2:

Code: Select all

#ifdef FREEORION_FMOD
    HumanClientAppSoundFMOD app;
#else
    #ifdef FREEORION_OPENAL
        HumanClientAppSoundOpenAL app;
    #else
        HumanClientApp app;
    #endif
#endif
Theese aren't diffs, it's just a suggestion how to tackle the openal/fmod/no sound problem (and DO include checks for vorbisfile when using openal)

User avatar
loonycyborg
Compilation Expert
Posts: 219
Joined: Thu Jul 06, 2006 10:30 pm
Location: Russia/Moscow

#28 Post by loonycyborg »

MareviQ wrote:and DO include checks for vorbisfile
:oops: I missed that because I didn't disable fmod checks.
In Soviet Russia, forum posts YOU!!

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

#29 Post by Geoff the Medio »

Another request: http://freeorion.org/forum/viewtopic.php?t=1651

Also, have you tested the updated scripts in some reasonably rigourous manner? (ie. on a system on which compilation wouldn't have worked even without the updates, as applicable) I don't want to commit totally untested changes...

User avatar
loonycyborg
Compilation Expert
Posts: 219
Joined: Thu Jul 06, 2006 10:30 pm
Location: Russia/Moscow

#30 Post by loonycyborg »

Geoff the Medio wrote:Another request: http://freeorion.org/forum/viewtopic.php?t=1651
It's good idea. Since freeorion is only app that uses GG, using shared GG library is pointless, there is no one to share it with. GG's scons script builds only dynamic libs by default, so freeorion's scons script should invoke GG's scons script telling it to build static library.
Also, have you tested the updated scripts in some reasonably rigourous manner? (ie. on a system on which compilation wouldn't have worked even without the updates, as applicable) I don't want to commit totally untested changes...
I have access to only one computer, so I only tested them only on my computer and executed them mentally. Why can't you test them?
Python and BGL patches should be safe to commit, but OpenAL might have problems. I'm sure that OpenAL patches won't work without pkgconfig installed.
In Soviet Russia, forum posts YOU!!

Post Reply