Compiling - lickx/opensim-lickx GitHub Wiki
For building in Linux you need the 'git', 'dotnet8' and 'libgdiplus' packages. Mono is not needed.
For building in Windows you need git and the .NET 8 SDK. Visual Studio is not needed when using compile.bat.
I won't give a git tutorial on this page, only the commands you need. It is best to make a toplevel "opensim-dev" or such folder for all OpenSim related stuff, and clone everything below in that folder.
It's best to compile addon modules yourself and not use addon binaries, as those probably target specific old/mono versions of OpenSim and may be incompatible.
mkdist is for creating a zips with the compiled binaries. If you want to use this script, you'll need zip from the InfoZip project and have it in your path. In Debian/Ubuntu the package name is 'zip'.
git clone https://github.com/lickx/opensim-lickx.git
cd opensim-lickx
git checkout lickx
cd ..
Almost every grid uses this. It provides places/parcel search among other things.
Since 2024-08-22, this is already included in opensim-lickx
An improved mute list that stores your mutes on the grid instead of just in your viewer cache
Windows:
git clone https://github.com/lickx/OpenSimMutelist.git
cd OpenSimMutelist
git checkout lickx
cd ..
xcopy /s /i OpenSimMutelist\OpenSimMutelist opensim-lickx\addon-modules\OpenSimMutelist
Linux:
git clone https://github.com/lickx/OpenSimMutelist.git
cd OpenSimMutelist
git checkout lickx
cd ..
cp -R OpenSimMutelist/OpenSimMutelist opensim-lickx/addon-modules
A hypergrid-compatible OpenSim currency
Windows:
git clone https://github.com/lickx/opensim-moneymodule-gloebit.git
cd opensim-moneymodule-gloebit
git checkout lickx
cd ..
xcopy /s /i opensim-moneymodule-gloebit\addon-modules\Gloebit opensim-lickx\addon-modules\Gloebit
copy addon-modules\Gloebit\GloebitMoneyModule\Gloebit.ini.example bin\Gloebit.ini.example
Linux:
git clone https://github.com/lickx/opensim-moneymodule-gloebit.git
cd opensim-moneymodule-gloebit
git checkout lickx
cd ..
cp -R opensim-moneymodule-gloebit/addon-modules/Gloebit opensim-lickx/addon-modules
cp addon-modules/Gloebit/GloebitMoneyModule/Gloebit.ini.example bin/Gloebit.ini.example
cd opensim-lickx
runprebuild.bat
compile.bat
mkdist.bat
Alternatively, instead of compile.bat use start OpenSim.sln
which will start Visual Studio with the solution. Make sure to set 'Release' target instead of 'Debug' for maximum runtime performance.
cd opensim-lickx
./runprebuild.sh
./compile.sh
./mkdist.sh
Notice that since the switch away from Mono to .NET, OpenSim.exe and Robust.exe are replaced respectively by OpenSim.dll and Robust.dll. They are to be run prefixed with 'dotnet', like 'dotnet OpenSim.dll' instead of 'mono OpenSim.exe'.
Anytime you want to update to the latest code, within the opensim-lickx folder execute:
git pull
(and prebuild and compile again)
The addons rarely get updated so no need to copy them over again.
Do this once:
git remote add upstream https://github.com/opensim/opensim.git
Do this once, to create your own work branch based on lickx:
git checkout lickx
git branch yourbranchname
Then from now on you can sync with master like this:
git checkout master
git pull upstream master
git push (if you have your fork also on github)
git checkout yourbranchname
git merge master
-> Sometimes you may have to resolve merge conflicts.
Edit the files git tells you, search (CTRL-F) for HEAD (uppercase) will find each conflict
Select which code fragments to keep in each conflict, our code or master's code and save the file
When all conflicts have been resolved, git add the files: 'git add somefile.cs'
('git status' will tell you which files are already staged/added for commit)
Finally 'git commit' will complete the merge
git push (if you have your fork also on github)
Don't like a commit I made? Look up the commit hash:
git checkout yourbranch
git log
/searchstring
Then revert it:
git checkout yourbranch
git branch testrevert
git checkout testrevert
git revert <commithash>
(then compile, test etc. if all is ok, proceed to next steps:)
git checkout yourbranch
git merge testrevert
git branch -d testrevert
Note that any related commits after that one commit you want to revert, may also need to be reverted otherwise the project might not compile at all anymore! Here comes a bit of skill/insight into play that can differ per case. Undoing multiple related commits is done from newest to oldest.