PDA

View Full Version : Patch for compiling EQEmu with gcc 4.1


eq4me
10-09-2006, 09:31 PM
After looking a bit closer into the matter and getting enlightened by two collegues it turned out to be much more trivial then I thought it was.

Here is a patch against 0.7.0-857. It also includes some changes to the Makefiles I discussed in the Linux Guide.


--- EQEmu-0.7.0-857/Makefile 2006-10-07 07:22:52.000000000 +0000
+++ EQEmu-0.7.0-857-gcc4.1/Makefile 2006-10-10 08:55:04.084514500 +0000
@@ -8,4 +8,2 @@
$(MAKE) -C utils
- $(MAKE) -C eqemucollector
- $(MAKE) -C eqextractor

@@ -35,4 +33,2 @@
$(MAKE) -C eqlaunch clean
- $(MAKE) -C eqemucollector clean
- $(MAKE) -C eqextractor clean

--- EQEmu-0.7.0-857/common/EQStream.h 2006-05-13 02:35:58.000000000 +0000
+++ EQEmu-0.7.0-857-gcc4.1/common/EQStream.h 2006-10-10 08:44:27.344720750 +0000
@@ -225,3 +225,3 @@
inline const EQStreamType GetStreamType() const { return StreamType; }
- static const char *EQStream::StreamTypeString(EQStreamType t);
+ static const char *StreamTypeString(EQStreamType t);

EQEmu-0.7.0-857-gcc4.1/common/rulesys.h
--- EQEmu-0.7.0-857/common/rulesys.h 2006-07-18 13:29:49.000000000 +0000
+++ EQEmu-0.7.0-857-gcc4.1/common/rulesys.h 2006-10-10 08:53:56.692302750 +0000
@@ -85,3 +85,3 @@

- RuleManager::RuleManager();
+ RuleManager();

EQEmu-0.7.0-857-gcc4.1/eqlaunch/makefile
--- EQEmu-0.7.0-857/eqlaunch/makefile 2006-04-17 13:59:13.000000000 +0000
+++ EQEmu-0.7.0-857-gcc4.1/eqlaunch/makefile 2006-10-10 09:13:33.993879500 +0000
@@ -13,3 +13,3 @@
MYSQL_FLAGS=-I/usr/include/mysql
-MYSQL_LIB=-L/usr/include/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -lc -lnss_files -lnss_dns -lresolv -lc -lnss_files -lnss_dns -lresolv
+MYSQL_LIB=-L/usr/include/mysql -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -lc -lnss_files -lnss_dns -lresolv -lc -lnss_files -lnss_dns -lresolv
DFLAGS=-DEQDEBUG=5

--- EQEmu-0.7.0-857/utils/Makefile 2006-01-15 18:31:18.000000000 +0000
+++ EQEmu-0.7.0-857-gcc4.1/utils/Makefile 2006-10-10 08:34:57.997138750 +0000
@@ -2,3 +2,3 @@
all: cleanipc spell_explorer
- gmake -C azone
+ make -C azone

@@ -12,3 +12,3 @@
rm -f cleanipc
- gmake -C azone clean
+ make -C azone clean

EQEmu-0.7.0-857-gcc4.1/zone/PlayerCorpse.h
--- EQEmu-0.7.0-857/zone/PlayerCorpse.h 2006-07-09 19:50:57.000000000 +0000
+++ EQEmu-0.7.0-857-gcc4.1/zone/PlayerCorpse.h 2006-10-10 08:51:00.289278250 +0000
@@ -31,10 +31,10 @@
public:
- static void Corpse::SendEndLootErrorPacket(Client* client);
- static void Corpse::SendLootReqErrorPacket(Client* client, int8 response = 2);
- static Corpse* Corpse::LoadFromDBData(int32 in_corpseid, int32 in_charid, char* in_charname, uchar* in_data, int32 in_datasize, float in_x, float in_y, float in_z, float in_heading, char* timeofdeath, bool rezzed = false);
-
- Corpse::Corpse(NPC* in_npc, ItemList* in_itemlist, int32 in_npctypeid, const NPCType** in_npctypedata, int32 in_decaytime = 600000);
- Corpse::Corpse(Client* client, sint32 in_rezexp);
- Corpse::Corpse(int32 in_corpseid, int32 in_charid, char* in_charname, ItemList* in_itemlist, int32 in_copper, int32 in_silver,
int32 in_gold, int32 in_plat, float in_x, float in_y, float in_z, float in_heading, float in_size, int8 in_gender, int16 in_race, int8
in_class, int8 in_deity, int8 in_level, int8 in_texture, int8 in_helmtexture,int32 in_rezexp);
- Corpse::~Corpse();
+ static void SendEndLootErrorPacket(Client* client);
+ static void SendLootReqErrorPacket(Client* client, int8 response = 2);
+ static Corpse* LoadFromDBData(int32 in_corpseid, int32 in_charid, char* in_charname, uchar* in_data, int32 in_datasize, float in_x, float in_y, float in_z, float in_heading, char* timeofdeath, bool rezzed = false);
+
+ Corpse(NPC* in_npc, ItemList* in_itemlist, int32 in_npctypeid, const NPCType** in_npctypedata, int32 in_decaytime = 600000);
+ Corpse(Client* client, sint32 in_rezexp);
+ Corpse(int32 in_corpseid, int32 in_charid, char* in_charname, ItemList* in_itemlist, int32 in_copper, int32 in_silver, int32 in_gold, int32 in_plat, float in_x, float in_y, float in_z, float in_heading, float in_size, int8 in_gender, int16 in_race, int8 in_class, int8 in_deity, int8 in_level, int8 in_texture, int8 in_helmtexture,int32 in_rezexp);
+ ~Corpse();

--- EQEmu-0.7.0-857/zone/beacon.h 2006-07-09 19:50:57.000000000 +0000
+++ EQEmu-0.7.0-857-gcc4.1/zone/beacon.h 2006-10-10 08:49:32.515792750 +0000
@@ -29,4 +29,4 @@
public:
- Beacon::Beacon(Mob *at_mob, int lifetime);
- Beacon::~Beacon();
+ Beacon(Mob *at_mob, int lifetime);
+ ~Beacon();

--- EQEmu-0.7.0-857/zone/makefile 2006-03-03 04:21:24.000000000 +0000
+++ EQEmu-0.7.0-857-gcc4.1/zone/makefile 2006-10-10 09:12:27.273709750 +0000
@@ -13,3 +13,3 @@
MYSQL_FLAGS=-I/usr/include/mysql
-MYSQL_LIB=-L/usr/include/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -lc -lnss_files -lnss_dns -lresolv -lc -lnss_files -lnss_dns -lresolv
+MYSQL_LIB=-L/usr/include/mysql -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -lc -lnss_files -lnss_dns -lresolv -lc -lnss_files -lnss_dns -lresolv
DFLAGS=-DEQDEBUG=5 -DCATCH_CRASH -DNO_PIDLOG -DSHAREMEM -DSPELL_EFFECT_SPAM -DFIELD_ITEMS -DCOMBINED -DAPP_OPCODE_SIZE=2 -Di386
--- EQEmu-0.7.0-857/zone/map.h 2005-09-09 04:54:36.000000000 +0000
+++ EQEmu-0.7.0-857-gcc4.1/zone/map.h 2006-10-10 08:49:49.312842500 +0000
@@ -112,3 +112,3 @@
public:
- static Map* Map::LoadMapfile(const char* in_zonename, const char *directory = NULL);
+ static Map* LoadMapfile(const char* in_zonename, const char *directory = NULL);
Map();
--- EQEmu-0.7.0-857/zone/net.h 2004-12-21 17:02:43.000000000 +0000
+++ EQEmu-0.7.0-857-gcc4.1/zone/net.h 2006-10-10 08:50:09.986134500 +0000
@@ -39,4 +39,4 @@
public:
- NetConnection::~NetConnection();
- NetConnection::NetConnection();
+ ~NetConnection();
+ NetConnection();

--- EQEmu-0.7.0-857/zone/zone.h 2006-10-03 03:13:21.000000000 +0000
+++ EQEmu-0.7.0-857-gcc4.1/zone/zone.h 2006-10-10 08:51:30.035137250 +0000
@@ -69,4 +69,4 @@
public:
- static bool Zone::Bootup(int32 iZoneID, bool iStaticZone = false);
- static void Zone::Shutdown(bool quite = false);
+ static bool Bootup(int32 iZoneID, bool iStaticZone = false);
+ static void Shutdown(bool quite = false);


Unfortunately this patch might not apply cleanly due to the snap&paste into here. I have no Webspace right now for a direct download.

John Adams
10-10-2006, 01:47 AM
This would so kick ass if I do not have to re-install yet another Linux just to get an old gcc to work. :) Thank you, eq4me. I'll host the file for you if you PM it to me.

Looks clean at first glance, though (copy/paste into a notepad doc). No extra spaces, which I think is what you're talking about.

eq4me
10-10-2006, 02:16 AM
I'll host the file for you if you PM it to me..

Unfortunately you can't attach a file to a PM, I would have to snap&paste it into the message.

You could do the changes manually if the patch does not apply and diff again.

The commandline would be


diff -N -u1 -r <orig-src-dir> <modified-src-dir> >EQEmu-gcc-4.1.patch


I would recommend doing this with a newly untared archive as the compiling, even after a `make clean`, does leave some files which you dont want to clutter your patch with.

John Adams
10-10-2006, 05:37 AM
Ok I'll check that out when I get home. I need to learn this Diff stuff anyway.

John Adams
10-13-2006, 06:10 PM
I am having the worst luck with this. Replacing the lines manually worked perfectly. I can compile and run my world on Linux no problem. Even made a few tweaks to make sure I was really getting it done right.

However, I cannot get this patch above to apply no matter what I do. Even taking just one simple thing (Makefile) and trying to patch gives me an error, thinking it's already been patched and wanting to -R it... but the file still has the extra MAKEs in it, so it's not already patched.

And, I was able to do the diff to re-make the patch the other night perfectly - following your diff example above (except on my Fedora, it says -u1 is obsolete and to use -u 1). Now, tonight, out of nowhere, I cannot even Diff anymore. Now it says my second dir is an extra operand lol... I give up.

Need sleep. I'll try again tomorrow.

John Adams
10-13-2006, 07:19 PM
Stupid edit button. I knew as soon as I cried and whined like a noob, I'd fix it. I finally got the Diff to work again (upper-case U, not lower case u :) oops).

Here's a link to the diff file for anyone interested in what eq4me did above. I tested it on a virgin 070-857 tar and got no errors so I think it's formatted right.

http://members.cox.net/raahvinmt/files/EQEmu-0.7.0-857-gcc41.patch




(btw, it's tomorrow...)

kumado
12-27-2006, 02:14 PM
I was making an attempt to get the installation done under Suse 10.0. gcc 4.1. I had to modify each make file in one place from <errmsg.h> to "errmsg.h". It was not finding the header.
Once I got it to find the mysql*.h files and the libmysqlclient file, I got down to cleanipc error.
I figgure I was stuck, too new gcc and mysql and installed Suse 9.1 to roll back a bit.
It made just fine with no links to mysql or changes to the make files ( EQEmu-0.7.0-940 ) but it halted in the same place - cleanipc.
I mention it in hopes it helps someone else.

I also ask for help on what to do next. I saw a message to do g++ cleanipc.cpp -o cleanipc, which I did. Truthfully, what to do with all the peices in what fashion next is too scattered to find. 'Secially on 24k dial-up.
EQ4ME's wiki shows to copy the exe over to the server folder, what else do you do? Do I go for the data bases? Copy the files from the EQ game installation over ( to where ) is there a better file structure set up and server launch sequence please?

Thanks

Kumado