v0.2 Build Issues

Programmers discuss here anything related to FreeOrion programming. Primarily for the developers to discuss.

Moderator: Committer

Post Reply
Message
Author
leiavoia
Space Kraken
Posts: 167
Joined: Sun Jul 20, 2003 6:22 pm

v0.2 Build Issues

#1 Post by leiavoia »

I'm trying to get v0.2 to compile on a Debian Testing box. I used

$ ./update-configure.sh
$ ./configure

I have no clue what it wants or how to fix it. it borks in this section of the config:

Code: Select all

configure:7533: checking log4cpp/Category.hh usability
configure:7545: g++ -c  -DFREEORION_LINUX  conftest.cc >&5
conftest.cc:87:31: log4cpp/Category.hh: No such file or directory <-----------------------------------------
configure:7551: $? = 1
configure: failed program was:
| /* confdefs.h.  */
| 
| #define PACKAGE_NAME "FreeOrion"
| #define PACKAGE_TARNAME "freeorion"
| #define PACKAGE_VERSION "0.2"
| #define PACKAGE_STRING "FreeOrion 0.2"
| #define PACKAGE_BUGREPORT "http://www.sourceforge.net/projects/freeorion"
| #define PACKAGE "freeorion"
| #define VERSION "0.2"
| #ifdef __cplusplus
| extern "C" void std::exit (int) throw (); using std::exit;
| #endif
| #define STDC_HEADERS 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_STDDEF_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYSLOG_H 1
| #define HAVE_UNISTD_H 1
| #define RETSIGTYPE void
| #define HAVE_FLOOR 1
| #define HAVE_GETHOSTBYADDR 1
| #define HAVE_GETHOSTBYNAME 1
| #define HAVE_MEMMOVE 1
| #define HAVE_MEMSET 1
| #define HAVE_MUNMAP 1
| #define HAVE_POW 1
| #define HAVE_SELECT 1
| #define HAVE_SOCKET 1
| #define HAVE_STRCASECMP 1
| #define HAVE_LIBPTHREAD 1
| #define HAVE_GL_GL_H 1
| #define HAVE_GL_GLU_H 1
| #define HAVE_LIBBOOST_FILESYSTEM 1
| #define HAVE_LIBBOOST_SIGNALS 1
| /* end confdefs.h.  */
| #include <stdio.h>
| #if HAVE_SYS_TYPES_H
| # include <sys/types.h>
| #endif
| #if HAVE_SYS_STAT_H
| # include <sys/stat.h>
| #endif
| #if STDC_HEADERS
| # include <stdlib.h>
| # include <stddef.h>
| #else
| # if HAVE_STDLIB_H
| #  include <stdlib.h>
| # endif
| #endif
| #if HAVE_STRING_H
| # if !STDC_HEADERS && HAVE_MEMORY_H
| #  include <memory.h>
| # endif
| # include <string.h>
| #endif
| #if HAVE_STRINGS_H
| # include <strings.h>
| #endif
| #if HAVE_INTTYPES_H
| # include <inttypes.h>
| #else
| # if HAVE_STDINT_H
| #  include <stdint.h>
| # endif
| #endif
| #if HAVE_UNISTD_H
| # include <unistd.h>
| #endif
| #include <log4cpp/Category.hh>

Tyreth
FreeOrion Lead Emeritus
Posts: 885
Joined: Thu Jun 26, 2003 6:23 am
Location: Australia

#2 Post by Tyreth »

Obvious question, do you have log4cpp installed? Have to get this question out of the way first :)

leiavoia
Space Kraken
Posts: 167
Joined: Sun Jul 20, 2003 6:22 pm

#3 Post by leiavoia »

uh... it is now :-) i didn't know it was a whole lib. I might have to look into it for my own projects.

$apt-get install log4cpp*

man, i love Debian!

Next question:

Where do i get libGiGI from? it's not on the sourceforge downloads page. Seeing as how that's the case and since i could not easily find it, a convenient link somewhere in plain site would be appreciated for future builders.

Tyreth
FreeOrion Lead Emeritus
Posts: 885
Joined: Thu Jun 26, 2003 6:23 am
Location: Australia

#4 Post by Tyreth »

This page has tips for compiling FreeOrion, including a link to GiGi information and download location:
http://www.freeorion.org/wiki/index.php?title=Compile

Click on GiGi there and it will give you a URL.

leiavoia
Space Kraken
Posts: 167
Joined: Sun Jul 20, 2003 6:22 pm

#5 Post by leiavoia »

Okay, GiGi compiled fine but now i'm getting the following when compiling FO. I know it's looking for headers or some custom automake jazz, but i'm not certain what exactly. Please help! :

Code: Select all

leiavoia@levbox:~/games/FreeOrion$ make
 cd . && /bin/sh /home/leiavoia/games/FreeOrion/missing --run automake-1.8 --foreign  Makefile
/home/leiavoia/games/FreeOrion/missing: line 46: automake-1.8: command not found
WARNING: `automake-1.8' is missing on your system.  You should only need it if
         you modified `Makefile.am', `acinclude.m4' or `configure.ac'.
         You might want to install the `Automake' and `Perl' packages.
         Grab them from any GNU archive site.
 cd . && /bin/sh ./config.status Makefile depfiles
config.status: creating Makefile
config.status: executing depfiles commands
make  all-am
make[1]: Entering directory `/home/leiavoia/games/FreeOrion'
if g++ -DHAVE_CONFIG_H -I. -I. -I.  -I/usr/include/freetype2 -I/usr/include/SDL -D_REENTRANT  -I/usr/include/SDL -D_REENTRANT -DFREEORION_BUILD_SERVER  -DFREEORION_LINUX    -MT server/server-ServerApp.o -MD -MP -MF "server/.deps/server-ServerApp.Tpo" -c -o server/server-ServerApp.o `test -f 'server/ServerApp.cpp' || echo './'`server/ServerApp.cpp; \
then mv -f "server/.deps/server-ServerApp.Tpo" "server/.deps/server-ServerApp.Po"; else rm -f "server/.deps/server-ServerApp.Tpo"; exit 1; fi
In file included from universe/Universe.h:6,
                 from server/ServerApp.h:6,
                 from server/ServerApp.cpp:1:
util/SitRepEntry.h:6:20: XMLDoc.h: No such file or directory
In file included from util/SitRepEntry.h:39,
                 from universe/Universe.h:6,
                 from server/ServerApp.h:6,
                 from server/ServerApp.cpp:1:
util/VarText.h:9:20: XMLDoc.h: No such file or directory
In file included from util/SitRepEntry.h:39,
                 from universe/Universe.h:6,
                 from server/ServerApp.h:6,
                 from server/ServerApp.cpp:1:
util/VarText.h:32: error: parse error before `::' token
util/VarText.h:34: error: syntax error before `::' token
util/VarText.h:40: error: syntax error before `::' token
util/VarText.h:41: error: semicolon missing after declaration of `VarText'
util/VarText.h:41: error: ISO C++ forbids defining types within return type
util/VarText.h:41: error: `string' specified as declarator-id
util/VarText.h:41: error: syntax error before `&' token
util/VarText.h: In function `void SetText(std::string&)':
util/VarText.h:42: error: `m_text' undeclared (first use this function)
util/VarText.h:42: error: (Each undeclared identifier is reported only once for 
   each function it appears in.)
util/VarText.h: At global scope:
util/VarText.h:51: error: parse error before `protected'
util/VarText.h:53: error: `std::string m_text' used prior to declaration
util/VarText.h:54: error: parse error before `}' token
In file included from universe/Universe.h:6,
                 from server/ServerApp.h:6,
                 from server/ServerApp.cpp:1:
util/SitRepEntry.h:71: error: parse error before `::' token
util/SitRepEntry.h:76: error: syntax error before `::' token
In file included from universe/Universe.h:39,
                 from server/ServerApp.h:6,
                 from server/ServerApp.cpp:1:
util/MultiplayerCommon.h:5:19: GGClr.h: No such file or directory
util/MultiplayerCommon.h:6:20: XMLDoc.h: No such file or directory
In file included from universe/Universe.h:39,
                 from server/ServerApp.h:6,
                 from server/ServerApp.cpp:1:
util/MultiplayerCommon.h:11: error: `GG' was not declared in this scope
util/MultiplayerCommon.h:11: error: parse error before `::' token
util/MultiplayerCommon.h:18: error: parse error before `::' token
util/MultiplayerCommon.h:22: error: syntax error before `::' token
util/MultiplayerCommon.h:28: error: syntax error before `::' token
util/MultiplayerCommon.h:36: error: parse error before `::' token
util/MultiplayerCommon.h:40: error: syntax error before `::' token
util/MultiplayerCommon.h:44: error: syntax error before `::' token
In file included from server/ServerApp.h:6,
                 from server/ServerApp.cpp:1:
universe/Universe.h:46:20: GGEnum.h: No such file or directory
In file included from server/ServerApp.h:6,
                 from server/ServerApp.cpp:1:
universe/Universe.h:69: error: ISO C++ forbids declaration of `ENUM_MAP_BEGIN' 
   with no type
universe/Universe.h: In function `int GG::ENUM_MAP_BEGIN(PlanetType)':
universe/Universe.h:69: error: parse error before `(' token
universe/Universe.h:70: error: ISO C++ forbids declaration of `ENUM_MAP_INSERT' 
   with no type
universe/Universe.h:70: error: syntax error before `(' token
universe/Universe.h:85: error: ISO C++ forbids declaration of `ENUM_STREAM_IN' 
   with no type
universe/Universe.h: In function `int GG::ENUM_STREAM_IN(PlanetType)':
universe/Universe.h:85: error: parse error before `(' token
universe/Universe.h:88: error: ISO C++ forbids declaration of `ENUM_STREAM_OUT' 
   with no type
universe/Universe.h: In function `int GG::ENUM_STREAM_OUT(PlanetType)':
universe/Universe.h:88: error: parse error before `{' token
universe/Universe.h:162: error: invalid declaration of member template `const 
   T* GG::ENUM_STREAM_OUT(PlanetType)::Universe::Object(int) const' in local 
   class
universe/Universe.h:163: error: invalid declaration of member template `T* 
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::Object(int)' in local class
universe/Universe.h:167: error: invalid declaration of member template `
   std::vector<const UniverseObject*, std::allocator<const UniverseObject*> > 
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjects(Pred) const' in local 
   class
universe/Universe.h:171: error: invalid declaration of member template `
   std::vector<UniverseObject*, std::allocator<UniverseObject*> > 
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjects(Pred)' in local class
universe/Universe.h:174: error: invalid declaration of member template `
   std::vector<const T*, std::allocator<const T*> > 
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjects() const' in local 
   class
universe/Universe.h:177: error: invalid declaration of member template `
   std::vector<T*, std::allocator<T*> > 
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjects()' in local class
universe/Universe.h:181: error: invalid declaration of member template `
   std::vector<int, std::allocator<int> > 
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs(Pred) const' in 
   local class
universe/Universe.h:184: error: invalid declaration of member template `
   std::vector<int, std::allocator<int> > 
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() const' in local 
   class
universe/Universe.h:269: error: template-argument `
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::vertex_system_pointer_t' uses 
   local type `
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::vertex_system_pointer_t'
universe/Universe.h:269: error: ISO C++ forbids declaration of `
   vertex_property_t' with no type
universe/Universe.h:283: error: template-argument `
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::vertex_system_pointer_t' uses 
   local type `
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::vertex_system_pointer_t'
universe/Universe.h:283: error: ISO C++ forbids declaration of `const_type' 
   with no type
universe/Universe.h:283: error: parse error before `;' token
universe/Universe.h:284: error: template-argument `
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::vertex_system_pointer_t' uses 
   local type `
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::vertex_system_pointer_t'
universe/Universe.h:284: error: ISO C++ forbids declaration of `type' with no 
   type
universe/Universe.h:284: error: parse error before `;' token
universe/Universe.h:328: error: invalid declaration of member template `class 
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::NumberedElementFactory<T>' in 
   local class
universe/Universe.h:348: error: local class `class 
   GG::ENUM_STREAM_OUT(PlanetType)::Universe' shall not have static data member 
   `double GG::ENUM_STREAM_OUT(PlanetType)::Universe::s_universe_width'
universe/Universe.h:348: error: field `
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::s_universe_width' in local class 
   cannot be static
In file included from Empire/EmpireManager.h:11,
                 from Empire/ServerEmpireManager.h:7,
                 from server/ServerApp.h:10,
                 from server/ServerApp.cpp:1:
Empire/Empire.h:9:19: GGClr.h: No such file or directory
Empire/Empire.h:13:20: XMLDoc.h: No such file or directory
In file included from Empire/Empire.h:21,
                 from Empire/EmpireManager.h:11,
                 from Empire/ServerEmpireManager.h:7,
                 from server/ServerApp.h:10,
                 from server/ServerApp.cpp:1:
Empire/TechManager.h: In member function `std::vector<int, std::allocator<int> 
   > GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() const':
Empire/TechManager.h:30: error: template-argument `
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() const::Tech*' 
   uses local type `GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() 
   const::Tech'
Empire/TechManager.h:30: error: template argument 4 is invalid
Empire/TechManager.h:30: error: ISO C++ forbids declaration of `iterator' with 
   no type
Empire/TechManager.h:30: error: parse error before `;' token
Empire/TechManager.h:31: error: template-argument `
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() const::Tech*' 
   uses local type `GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() 
   const::Tech'
Empire/TechManager.h:31: error: template argument 4 is invalid
Empire/TechManager.h:31: error: ISO C++ forbids declaration of `const_iterator' 
   with no type
Empire/TechManager.h:31: error: parse error before `;' token
Empire/TechManager.h:80: error: template-argument `
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() const::Tech*' 
   uses local type `GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() 
   const::Tech'
Empire/TechManager.h:80: error: template argument 4 is invalid
Empire/TechManager.h:80: error: ISO C++ forbids declaration of `m_tech_map' 
   with no type
In file included from universe/Ship.h:6,
                 from Empire/Empire.h:26,
                 from Empire/EmpireManager.h:11,
                 from Empire/ServerEmpireManager.h:7,
                 from server/ServerApp.h:10,
                 from server/ServerApp.cpp:1:
universe/UniverseObject.h:105: error: local class `class 
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() 
   const::UniverseObject' shall not have static data member `const double 
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() 
   const::UniverseObject::INVALID_POSITION'
universe/UniverseObject.h:106: error: local class `class 
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() 
   const::UniverseObject' shall not have static data member `const int 
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() 
   const::UniverseObject::INVALID_OBJECT_ID'
universe/UniverseObject.h:107: error: local class `class 
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() 
   const::UniverseObject' shall not have static data member `const int 
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() 
   const::UniverseObject::MAX_ID'
universe/UniverseObject.h:105: error: field `
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() 
   const::UniverseObject::INVALID_POSITION' in local class cannot be static
universe/UniverseObject.h:106: error: field `
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() 
   const::UniverseObject::INVALID_OBJECT_ID' in local class cannot be static
universe/UniverseObject.h:107: error: field `
   GG::ENUM_STREAM_OUT(PlanetType)::Universe::FindObjectIDs() 
   const::UniverseObject::MAX_ID' in local class cannot be static
universe/UniverseObject.h:118: confused by earlier errors, bailing out
make[1]: *** [server/server-ServerApp.o] Error 1
make[1]: Leaving directory `/home/leiavoia/games/FreeOrion'
make: *** [all] Error 2

Tyreth
FreeOrion Lead Emeritus
Posts: 885
Joined: Thu Jun 26, 2003 6:23 am
Location: Australia

#6 Post by Tyreth »

Try out this version of GG - it may be that you are using a version that is too old, or that FreeOrion hasn't been updated to work with the latest CVS of GG:
http://freeorion.sourceforge.net/gg.zip

Edit: XMLDoc.h is a part of GG, or at least a part of the GG version I'm using. Remember to 'make install' GG also when you finish compiling it.

tzlaine
Programming Lead Emeritus
Posts: 1092
Joined: Thu Jun 26, 2003 1:33 pm

#7 Post by tzlaine »

FYI, you need to use the latest GG CVS.

leiavoia
Space Kraken
Posts: 167
Joined: Sun Jul 20, 2003 6:22 pm

#8 Post by leiavoia »

I got it working. I used the newer GG lib. However i had to add the PKG_CONFIG_WHATEVER to my .bashrc file to put it in my path. This is bad, that should be in the makefile or on the command line or something. I should not have to edit my environmental variables by hand to install software. should just be a simple straight

./configure
./make

But i did get it working. It crashes whenever i click on a star though :-(

freeorion: /usr/include/boost/shared_ptr.hpp:238: T* boost::shared_ptr<T>::operator->() const [with T = GG::Texture]: Assertion `px != 0' failed.
Aborted
leiavoia@levbox:~/games/FreeOrion$ 1092289305 DEBUG : ServerApp::PlayerDisconnected : Host player disconnected; server now in mode 6 (SERVER_DYING).
1092289305 DEBUG : ServerNetworkCore::DumpAllConnections : Connection to player 0 localhost on socket 2 terminated.
1092289305 FATAL : Initiating Exit (code 1 - error termination)
1092289305 DEBUG : ServerNetworkCore::DumpAllConnections : Connection to player 1 localhost on socket 3 terminated.
1092289305 DEBUG : SDLQuit() complete.

LaplaceOperator
Space Squid
Posts: 60
Joined: Wed Sep 08, 2004 3:20 pm
Location: Switzerland

#9 Post by LaplaceOperator »

Hm could you fix it? If not. It's about some missing artwork. To fix it just comment out the part that looks for it:
in SidePanel.cpp line 513.

Code: Select all

 int GetPlanetTextures(const Planet &planet,std::vector<boost::shared_ptr<GG::Texture> > &textures, int &start_frame, double &fps)
  {
 /*   try 
    {
      return GetPlanetTexturesDynamic(GetPlanetArtNodeName(planet),planet.Size(),planet.ID(),textures,start_frame,fps);
    }
    catch(...)
    {*/
      textures.push_back(GetPlanetTextureStatic(planet));
      return textures.size();
    //}
  }
In my version it happened only the second time i tried to open a SidePanel with planet-images. Because the function GetPlanetTexturesDynamic throws an error but a shared_ptr to a nonexisting textureobject is created. Now the next time the function finds this shared_ptr and thinks that it has found the texture. And that's when the error happens.

EDIT: hm seems already to be outdated, i didn't notice the date on the msg..

Post Reply