OpenXcom Forum

Modding => Released Mods => XPiratez => Topic started by: liamdawe on April 13, 2016, 03:39:22 pm

Title: Linux version?
Post by: liamdawe on April 13, 2016, 03:39:22 pm
Hey there, since OpenXcom works multi-platform, what are the chances of getting Linux builds of this mod too?
Title: Re: Linux version?
Post by: ivandogovich on April 13, 2016, 04:19:07 pm
I don't believe anyone is compiling Linux builds of Meridian's OXCE+ right now, but if you are willing to compile them yourself, it should be possible.  Meridian has the link to his build on Github in the first post of his thread.
https://openxcom.org/forum/index.php/topic,4187.0.html
Title: Re: Linux version?
Post by: niculinux on April 13, 2016, 04:20:41 pm
I'd too would be very interested, maybe someone may wnat to make a generic binary executable file (.bin) that may be relased within the next xpiratez update?
Title: Re: Linux version?
Post by: liamdawe on April 13, 2016, 04:51:23 pm
I've actually tried the Linux exe included in the linked post, but it complaints about a missing libSDL1.2, which I do have installed :(
Title: Re: Linux version?
Post by: ivandogovich on April 13, 2016, 05:04:17 pm
I see.  Well, I would refer all questions to that thread, as Meridian is the author of the current executable.
Title: Re: Linux version?
Post by: Meridian on April 13, 2016, 06:07:51 pm
I've actually tried the Linux exe included in the linked post, but it complaints about a missing libSDL1.2, which I do have installed :(

I have almost no experience with Linux, sorry :(
If there are any Linux gurus here, please help.

PS: That Linux executable I shared in the post was compiled by me on Kubuntu (using Makefile.simple) and it works fine for me.
Title: Re: Linux version?
Post by: Arthanor on April 13, 2016, 09:44:45 pm
I compile it (and tweak some of the code) for my personal use. I think if you are a Linux user, you should just DIY, since that's sort of the point of Linux too ;)

Step 1: Make sure you have the dependencies (https://www.ufopaedia.org/index.php?title=Compiling_%28OpenXcom%29#Dependencies)
It's super easy to "sudo apt-get Package name", as they are listed between parenthesis on the webpage. Get them all, obviously. You can also use the command here (https://www.ufopaedia.org/index.php?title=Compiling_%28OpenXcom%29#Installing_Dependencies), presumably.

Step 2: Get the code
Either download it from the github webpage or git clone it. There are link in the first post of Meridian's exe to the github page.

Step 3: Compile
As listed in the page linked above, there are a few options. I have had success with CMake option (https://www.ufopaedia.org/index.php/Compiling_with_CMake_%28OpenXcom%29), although the webpage is now a bit confusing with information overload. So here's my checklist:

 0.    make installation directory (called "srcdir" in these notes)
 1.    git clone git@github.com:MeridianOXC/OpenXcom.git srcdir (or just move the files you downloaded from github into your srcdir)
 2.    {copy patched XCOM assets into srcdir/bin/data}
 3.    mkdir srcdir/build
 4.    cd srcdir/build
 5.    cmake ..
 6.    ccmake .. (this opens a little "gui-lite" in the terminal. Things to do in the gui are in {}
 7.    {set CMAKE_BUILD_TYPE to Release (or Debug if you want useful stack traces, but that slows the game a lot)}
 8.    {set CMAKE_INSTALL_PREFIX to /path/to/where/you/want/the/game/to/be/
 9.    {set DATADIR to define folder in which OpenXCom will look for the data subfolder (ex.: you can do /path/to/where/you/want/the/game/to/be/data/}
10.    {configure, then generate and exit}
11.    make -j3
12.    make install

This will give you a "openxcom" executable in /path/to/where/you/want/the/game/to/be/bin/.

Next to the bin folder you'll also get a user folder, in which to put the Piratez files from the user directory that is in the archive that Dioxine distributes (it annoys me that you have to download the whole thing with a Windows executable and dig out the mod, but Dioxine is convinced Windows users are clueless about how to set things up and need everything pre-set.. so Linux users have to do the extra work).

I actually do things slightly differently, where I have separate user and data directories, so I run OpenXCom with a little script:

Code: [Select]
#!/bin/bash
usrPath='/path/to/where/you/want/the/user/folder/to/be/user'
cfgPath='/path/to/where/you/want/the/config/to/be/config'
dataPath='/path/to/where/you/want/the/data/to/be/data'
/path/to/where/you/want/the/game/to/be/bin/openxcom -user $usrPath -cfg $cfgPath -data $dataPath 1>/path/to/where/you/want/the/Log/to/be/XPiratezLog.txt 2>&1

This allows me to define a specific user directory, config directory and data directory, and to get a log of the executable in case it crashes so I can maybe have a bit of info on what went wrong. The user and data directories are especially useful as you can make 1000% sure that the game is looking where you want it to instead of wherever it might think the things are.
Title: Re: Linux version?
Post by: DoktorV on April 13, 2016, 11:32:32 pm
If you're on a 64-bit installation, the game won't run even if you install all the dependencies because the system will install the 64-bit versions by default while the program is 32-bit and needs 32-bit versions of the libraries it's referencing. To install the 32-bit versions of the dependencies, you have to have multiarch installed, and then specify that you want to install the 32 bit versions like so:

apt-get install X:i386

Replace X with each library (libsdl1.2, etc) until you have them all.
Title: Re: Linux version?
Post by: R1dO on April 14, 2016, 12:45:46 am
If you're on a 64-bit installation, the game won't run even if you install all the dependencies because the system will install the 64-bit versions by default while the program is 32-bit and needs 32-bit versions of the libraries it's referencing. To install the 32-bit versions of the dependencies, you have to have multiarch installed, and then specify that you want to install the 32 bit versions like so:

apt-get install X:i386

Replace X with each library (libsdl1.2, etc) until you have them all.

Are you sure? Or do you specifically refer to extended.  I can't remember ever needing to do that on multiple machines, and except for 1 those are all 64 bit.
Title: Re: Linux version?
Post by: DoktorV on April 14, 2016, 08:28:59 pm
It might only be required for extended, or possibly my own configuration required manually installing 32 bit libraries instead of them being installed automatically. I can imagine, though I'm not sure, that there may be some setting I don't know about.

I revise my advice: If you are on a 64 bit system and you installed the dependencies but it still doesn't run, try manually specifying you want to install the 32 bit versions of the dependencies and try again.
Title: Re: Linux version?
Post by: Stoddard on June 12, 2016, 08:55:18 pm
I set up a buildbot that builds binaries on the three current ubuntu releases. Results can be had here: https://lxnt.wtf/oxem/

The bot should pick up any changes in github repo in a day or so.

Libyaml is 0.5.3 statically linked. Libsdl1.2 is pretty much the same across the releases, so the main difference would be the compilers, and gcc 5.2/5.3 spits way more warnings (than 4.8 in trusty).

Title: Re: Linux version?
Post by: lusciouspear on June 14, 2016, 09:41:17 am
I use Wine on OSX -- takes about 8 minutes to load but works great :D
Title: Re: Linux version?
Post by: Stoddard on June 14, 2016, 12:38:06 pm
Unfortunately, OSX builds on my system are not possible. OSX doesn't run very well under virtualization, not to mention this doesn't fit with the licensing stuff. That's why there's a bunch of companies renting out measly mac minis for like 80 euro a month.

Title: Re: Linux version?
Post by: Crazy Photon on June 15, 2016, 02:05:28 am
Is your OSX too old for homebrew? I run the latest builds of OpenXcom on both OSX and Linux by running make -f Makefile.simple (OSX requires a small tweak though, there is a conflict of the boost library version).
Title: Re: Linux version?
Post by: lusciouspear on June 16, 2016, 08:52:35 am
Unfortunately, OSX builds on my system are not possible. OSX doesn't run very well under virtualization, not to mention this doesn't fit with the licensing stuff. That's why there's a bunch of companies renting out measly mac minis for like 80 euro a month.

Can't you run wine on Linux?
Title: Re: Linux version?
Post by: Stoddard on June 16, 2016, 03:57:37 pm
Can't you run wine on Linux?

Of course I can, but what this has to do with the lack of cross-compilers targeting OSX?
Title: Re: Linux version?
Post by: Star_Treasure on July 13, 2016, 12:43:52 am
I've compiled OXCE on linux, but I haven't found any instructions on how to install the mod and only play Xpiratez on my windows computer from the pre-installed binary. Can anybody instruct me here?
Title: Re: Linux version?
Post by: Searmay on July 13, 2016, 08:29:27 pm
You can probably use the one Meridian links to in his thread: https://openxcom.org/forum/index.php/topic,4187.0.html

If that doesn't work (it didn't for me), try:
Code: [Select]
git clone https://github.com/MeridianOXC/OpenXcom.git -b oxce3.0-plus-proto
mkdir OpenXcom/build
cd OpenXcom/build
sed -i "/ModScript.cpp/d" ../src/CMakeLists.txt
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j3
sudo make install
Then from Dioxine's XPiratez rar, copy user/mod into ~/.local/share/openxcom/ and user/options.cfg to ~/.config/openxcom/. Oh, and the UFO/TFTD files can go in ~/.local/share/openxcom/{UFO,TFTD}.

If that doesn't work it might help if your distro has a openxcom in its repo to get working first.
Title: Re: Linux version?
Post by: Stoddard on July 14, 2016, 04:07:13 pm
Frankly, the attempts to use standard  data/user dirs on linux ( ~/.local, etc) are a bit of a mess.

I just extract the mod somewhere, for example ~/games/oxp99,
put the UFO:EU data into ~/games/oxp99/share/openxcom/UFO,
put the latest binary somewhere like ~/games/oxp99/bin/openxcom

then use a run.sh script to launch the game:

Code: [Select]
#!/bin/sh
prefix=/home/stdrd/games/oxp99
usrPath=$prefix/user
cfgPath=$usrPath
dataPath=$prefix

bin=$prefix/bin/openxcom

$bin -user $usrPath -cfg $cfgPath -data $dataPath

setting paths explicitly saves much time and hair-pulling

also, linux binaries are available here (https://lxnt.wtf/oxem/)

Title: Re: Linux version?
Post by: Star_Treasure on July 14, 2016, 11:23:29 pm
No precompiled binaries exist for Ubuntu 16.04 (Xenial) sadly.
Title: Re: Linux version?
Post by: Star_Treasure on July 14, 2016, 11:37:05 pm
You can probably use the one Meridian links to in his thread: https://openxcom.org/forum/index.php/topic,4187.0.html

If that doesn't work (it didn't for me), try:
Code: [Select]
git clone https://github.com/MeridianOXC/OpenXcom.git -b oxce3.0-plus-proto
mkdir OpenXcom/build
cd OpenXcom/build
sed -i "/ModScript.cpp/d" ../src/CMakeLists.txt
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j3
sudo make install
Then from Dioxine's XPiratez rar, copy user/mod into ~/.local/share/openxcom/ and user/options.cfg to ~/.config/openxcom/. Oh, and the UFO/TFTD files can go in ~/.local/share/openxcom/{UFO,TFTD}.

If that doesn't work it might help if your distro has a openxcom in its repo to get working first.

Where does the bin end up when you compile this way? The way I was doing it earlier it showed up in OpenXcom/bin/ but I can't find it this time.
Title: Re: Linux version?
Post by: Stoddard on July 15, 2016, 11:23:05 am
No precompiled binaries exist for Ubuntu 16.04 (Xenial) sadly.

Here you go https://lxnt.wtf/oxem/builds/oxce3.0-plus-proto-4009675-2016-07-14-j11-xenial-x86_64.7z (https://lxnt.wtf/oxem/builds/oxce3.0-plus-proto-4009675-2016-07-14-j11-xenial-x86_64.7z) while I fix the names and rest of builds.

EDIT:

Okay, fixed it all, plus fancy lister w/sort: https://lxnt.wtf/oxem/ (https://lxnt.wtf/oxem/)
Title: Re: Linux version?
Post by: Searmay on July 15, 2016, 08:40:17 pm
Quote
Where does the bin end up when you compile this way?
Make will create it in OpenXcom/build/bin, and make install should put it in /usr/local/bin. The build directory is just a way to keep the compilation separated from everything else so it's easy to remove when you bugger it up.
Title: Re: Linux version?
Post by: Star_Treasure on July 15, 2016, 09:41:19 pm
Something must have gone wrong, neither folders have anything in them.

This is what I got when I tried again.

Code: [Select]
collect2: error: ld returned 1 exit status
src/CMakeFiles/openxcom.dir/build.make:8577: recipe for target 'bin/openxcom' failed
make[2]: *** [bin/openxcom] Error 1
CMakeFiles/Makefile2:103: recipe for target 'src/CMakeFiles/openxcom.dir/all' failed
make[1]: *** [src/CMakeFiles/openxcom.dir/all] Error 2
Makefile:149: recipe for target 'all' failed
make: *** [all] Error 2

Title: Re: Linux version?
Post by: Stoddard on July 15, 2016, 09:57:19 pm
Something must have gone wrong, neither folders have anything in them.

Very strange that OpenXcom/build is empty. The cmake -DCMAKE_BUILD_TYPE=Release .. command should have left at least something there. Was there any output?


Besides, my buildbots don't use Cmake, they essentially do:

Code: [Select]
cd OpenXcom/src
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
make -j 8 -f Makefile.simple

The PKG_CONFIG_PATH is needed since OpenXcom doesn't work with libyaml-cpp version 0.5.2, so you need to get version 0.5.3 from https://github.com/jbeder/yaml-cpp/releases/tag/release-0.5.3 (https://github.com/jbeder/yaml-cpp/releases/tag/release-0.5.3), install its build dependencies - libboost-dev package, build and install it under /usr/local prefix. (And preferably also uninstall  libyaml-cpp-dev package).

Then you can run the above commands and it'll put the binary in OpenXcom/bin.



Title: Re: Linux version?
Post by: Star_Treasure on July 15, 2016, 10:08:32 pm
 I used to be able to compile by using
Code: [Select]
make -f Makefile.simple as instructed on https://www.ufopaedia.org/index.php/Compiling_with_Make_(OpenXcom)
Title: Re: Linux version?
Post by: Stoddard on July 15, 2016, 10:11:32 pm
I used to be able to compile by using
Code: [Select]
make -f Makefile.simple as instructed on https://www.ufopaedia.org/index.php/Compiling_with_Make_(OpenXcom)

Did it cease to work? Any error output (simple makefiles are that much simpler to debug than CMake) ?

Because I have no problems building it that way.  In any case, it seems some dependency is missing. Could you post more output?

PS: CMake build indeed seems to be broken. Here's the fix: https://github.com/MeridianOXC/OpenXcom/pull/4 (https://github.com/MeridianOXC/OpenXcom/pull/4)
Title: Re: Linux version?
Post by: Star_Treasure on July 15, 2016, 10:50:52 pm
Oh yeah,
Code: [Select]
make -f Makefile.simpleworked. And I got the mod installed. But I do see how this method is messier and wonder why the other way wasn't working.
Title: Re: Linux version?
Post by: Yankes on July 15, 2016, 11:37:56 pm
Oh yeah,
Code: [Select]
make -f Makefile.simpleworked. And I got the mod installed. But I do see how this method is messier and wonder why the other way wasn't working.
Possible this: https://openxcom.org/forum/index.php/topic,4187.msg67028.html#msg67028
Couple of releases of OXCE and OXCE+ have bugged cmake script. It will be fix in next version (meanwhile you can cherry-pick this commit https://github.com/Yankes/OpenXcom/commit/19feeef6bd2a1d9868ff77ffccd03197926c6c1e to fix it).
Title: Re: Linux version?
Post by: Stoddard on July 15, 2016, 11:40:08 pm
Possible this: https://openxcom.org/forum/index.php/topic,4187.msg67028.html#msg67028
Couple of releases of OXCE and OXCE+ have bugged cmake script. It will be fix in next version (meanwhile you can cherry-pick this commit https://github.com/Yankes/OpenXcom/commit/19feeef6bd2a1d9868ff77ffccd03197926c6c1e to fix it).

I managed to make it work with https://github.com/MeridianOXC/OpenXcom/pull/4 (https://github.com/MeridianOXC/OpenXcom/pull/4)

Seemed faster to just patch than to search the forum. But whatever.





The archives with linux binaries now contain all data files so that there's one less step when installing from scratch (no need to download 2016-07-08-OpenXcomExPlus31-full.zip, just extract the linux archive on top of the mod).

https://lxnt.wtf/oxem/ (https://lxnt.wtf/oxem/)

Please ignore 'oxce3.0' in the file name, it does not mean the builds are not 3.2 or whatever latest version there is.
Instead pay attention to the date in the file name, and download the latest.

Builds commence within an hour of any updates appearing on the github.

Title: Re: Linux version?
Post by: niculinux on September 04, 2016, 01:12:55 pm
Tryed in Ubuntu 16.04, but in terminal got error:

Code: [Select]
error while loading shared libraries: libSDL_gfx.so.15: cannot open shared object file: No such file or directory

because 16.04 uses a different version of libSDL. any ways to install other version of these libraries? Thanks :)
Title: Re: Linux version?
Post by: Stoddard on September 04, 2016, 02:36:16 pm
Tryed in Ubuntu 16.04, but in terminal got error:

Code: [Select]
error while loading shared libraries: libSDL_gfx.so.15: cannot open shared object file: No such file or directory

because 16.04 uses a different version of libSDL. any ways to install other version of these libraries? Thanks :)

Ubuntu 16.04 is called Xenial Xerus.

Did you download the archive with 'xenial' in its name?
Title: Re: Linux version?
Post by: niculinux on September 04, 2016, 06:46:05 pm
Ubuntu 16.04 is called Xenial Xerus.

Did you download the archive with 'xenial' in its name?

Yes, thanks i know  :) Downloaded the highlighted file found in this post (https://openxcom.org/forum/index.php/topic,4526.msg67283.html#msg67283) and executed it via terminal because in nautilus, once givwn the executable permission, double clicking on it had no effects at all. Of course, i'm on a x86_64 laptop.

Title: Re: Linux version?
Post by: Stoddard on September 04, 2016, 11:26:10 pm
Please make sure the package
Code: [Select]
libsdl-gfx1.2-5:amd64 is installed.

Please post the output of the following command:

Code: [Select]
dpkg-query -l | grep sdl
Title: Re: Linux version?
Post by: niculinux on September 12, 2016, 12:17:14 pm
Thnaks, but for the toppic's sake, here's may be the continue (https://openxcom.org/forum/index.php/topic,4923.0.html) :)