Mitglied-3353 hat geschrieben:Momentan stehen wir vor folgendem Problem;
Wir haben uns die aktuellen Pol-OpenSource Files runtergeladen und wollten etwas experimentieren, bzw. auf unserem Pol-Shard immer die neuste Pol-Version nutzen. Diese aber muss man ja selbst compilieren. Hat jemand eine Idee, wie diese am besten zu compilieren ist, mit welcher VS-Version, usw.. Mit Visual Studio 2013 Express (die kostenlose Version) hatten wir keinen Erfolg. Wir können uns auch eine andere Version besorgen.
Über jegliche Hilfe wären wir sehr dankbar.
Das ist eine größere Sache, den Core zu kompilieren. Es ist natürlich möglich, aber ehrlich gesagt würde ich niemals die jeweils letzte Version einfach kompilieren und nutzen. Die Frage ist also, wozu...
Aber egal, hier einige Hinweise:
Allgemein: Wir verwenden eine alte 099 Version, und haben einige der neueren Features nicht, weil wir sie auch nicht brauchen. (Alle unsere Scripts sind selbst geschrieben, und alle klappt. Ich hab keine Lust, nach jedem Core-Update 20 Scripts zu ändern, und Fehler zu suchen, die es vorher nicht gab).
POL nutzt als C++ Programm die Sdtlib. Ganz ursprünglich wurde die von Microsoft verwendet. Weils einfach heiter ist, hier der uralte Eintrag dazu:
- Code:
06-05 Syzygy
The .NET build now uses STLport 4.5.3 instead of MS's crappy implementation.
It seems to be a bit faster now.
Some comparison sysload numbers, using Xandros' huge shard data:
.NET old: 100(33018), 100(16326), 100(62705), 100(64700), 100(66679), 100(67030), 100(67030), 93(53725), 5(0), idle
VC6 05-24: 98(33533), 100(18338), 25(1519), 0(0), idle
.NET now: 35(19292), 6(1), idle
Tatsächlich hat der Core massiv an Stabilität gewonnen und wurde deutlich schneller, als man auf STLPort (eine open source stdlib) umgestiegen ist. Diese STLPort-Library wurde vor einiger Zeit entfernt, aber wir nutzen sie unter Windows noch, eben wegen der älteren Version. Da wir früher einen Windows-Server hatten (was ca. 30% meiner sarkastischen Kommentare zu Microsoft erklären sollte), haben wir den auch als Server verwendet und nicht nur zum Testen daheim. Lief sehr stabil und gut.
Statt der STLPort-Lib wird nun die moderne und vielseitige Boost-Lib genutzt, sie ist sowohl unter Windows als auch unter Linux nutzbar. Frühere Linux-Versionen haben weder STLPort noch Boost genutzt, sondern einfach die ausgezeichnete stdlib von GNU zum C++ Compiler. Die nutze ich derzeit auch, da auch unter Linux unsere Version eingesetzt wird.
Die Boost-Lib ist riesig, und daher sind eigene Schritte zum Kompilieren nötig, die aber dokumentiert sind. Wichtig ist, dass man immer denselben Kompiler verwendet.
1) Windows: Hier kann man die Sourcen elegant holen und verwalten mit Tortoise-SVN. Das kann ich nur empfehlen. Wir verwenden das auch für unsere Scripts in einem eigenen SVN.
Holt erstmal den kompletten SVN-Tree. Unter trunk/devmachine findet ihr Hinweise, ebenso gibt es Scripts.
Es gibt für Visual Studio 2012 und 2013 .sln Files, die eigentlich fertig sind. Also sollte das laufen...
ABER: Das ist jeweils für die Vollversionen, wenn ich mich recht erinnere. Da fehlen leider einige Teile, was aber nicht tragisch ist, da diese Teile nicht gebraucht werden.
Hier ein Link (http://forums.polserver.com/viewtopic.php?f=20&t=3414&p=16755&hilit=compile+POL+core#p16755) zu einem alten Post, das einiges erklärt. Allerdings passt es auch zu einer älteren Version von POL. Beachtet vor allem, was zum Thema V-Studio-Express versus V-Studio gesagt wurde...
Mit VS2013 hab ich es nicht versucht, mit VS2012 sollte es klappen (bitte sehr darauf achten, dass man mit VS2012 auch das richtige (pol-2012.sln) öffnet, denn ansonsten beginnt Microsoft in bekannter Intelligenz zu 'wandeln' und Unmengen an sinnlosen bzw. unverständlichen Meldungen auszugeben. Am Ende steht ein Verzeichnis, in dem gar nicht mehr geht.)
Auch mit Boost sollte das klappen, einfach das volle SVN-Verzeichnis holen und Hinweise und Scripts lesen, da kommt man nicht herum...
2) Linux: Sourcen kopieren oder holen (besser holen). Ich mache das in einer VM mit Linux unter WIndows. (Am Server kompilieren setzt voraus, dass alles mögliche Zeugs dort installiert ist, was unnötig ist).
Bei Linux braucht man STLPort nicht, und bei unserer Version auch Boost (noch) nicht. Da gibt es auch einen Script bzw. ein makefile dazu.
WICHTIG: Bei unserer alten Version war ein 64-bit-core noch nicht vorgesehen. Er kompiliert zwar und laeuft auf den ersten Blick tadellos, hat aber seltsame Fehler, die man nicht sofort bemerkt. Deswegen kompiliere ich als 32-bit-Version. Ich verwende die static gelinkte Version (also eine Version, die keine Laufzeitbibliotheken nutzt). Diese Version läuft ohne irgendwelche Mucken nun seit Monaten stabil auf einem Linux-x64-Server. Die Kompilierung ergibt auch keine Fehler.
Das Core-Team verwendet allerdings eine eigene buildmachine (siehe POLSVN/trunk/devmachine/.., basiert auch auf einer VM), und mit neueren Versionen klappt auch x-64-build. Über die Stabilität kann ich nichts sagen, da ich bisher eben unseren alten 099-core verwende.
Wenn ihr euch das also antun wollt, empfiehlt es sich:
1) Legt ein POLSVN-Verzeichnis an und baut jeweils den Build-Prozess auf, einmal für Windows, wenn nötig und einmal unter Linux. Ich empfehle hier VM-Player und eine VM mit Linux, das klappt gut. Hinweise findet man in den diversen Verzeichnissen, trunk/... des POLSVN.
2) Falls ihr selbst mal was fixt in den Sourcen, macht das nichts. Ihr könnt es natürlich nicht commiten, aber die Änderungen werden beim SVN-Update nicht überschrieben, und wenn es Konflikte gibt, werdet ihr darauf hingewiesen.
3) Plant durchaus einige Tage ein, bis das sauber läuft, es ist einiges einzurichten, es ist nur dann auf Knopfdruck, wenn ihr es exakt so macht, wie das core-Team. Man braucht auch etwas Erfahrung, es ist einfach ein riesiges Programm, und es werden ja auch ecompile und die Tools übersetzt. Wenn man die Sourcen nicht wenigstens lesen und teilweise verstehen kann, sollte man sich das nicht antun...
(Anmerkung: Falls ihr unter Linux seltsame Probleme mit den Realms von UO habt, das ist ein core-Bug, ich hab nen Fix dafür. Aber möglicherweise wird der in neueren Versionen nicht mehr gebraucht).
Ehrlich gesagt empfehle ich, dass ihr die letzte Version, die offiziell verteilt wurde nutzt, und nur dann umsteigt, wenn ihr ein neues Feature wirklich haben wollt. Selbst Kompilieren macht nur Sinn, wenn man Bugs findet und rasch beheben will. Ich habe mit dem Kompilieren in erster Linie deswegen begonnen, weil damals (2011) keine wirklich neue vorkompilierte Version vorhanden war und weil ich beim Test mit 099 echt üble Bugs gesehen habe (die hab ich damals gemeldet und Fixes gepostet, die inzwischen im core drin sind). Aber nun, da ich eigentlich alles habe, was ich brauche, nehme ich mir lieber die Zeit für andere Dinge.
Das Problem mit dem ständig neu Kompilieren ist, dass man dann plötzlich Bugs hat, von denen man nicht weiß, woher sie kommen. Noch dazu treten die dann selten auf, und es dauert eine Weile, bis sie auffallen. Dann geht die Suche los, zuerst die Scripts, dann der Core usw. Ich glaube nicht, dass es das wert ist, speziell wenn die dazu gekommenen Features nicht wirklich gebraucht werden. Aber das ist nur meine persönliche Meinung dazu...
Horus