-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Help Building on Arch #23
Comments
You need to |
ah yes, oops forgot about init submodules, I'll fix the readme |
I'll leave this open in case you have further difficulties |
Trying to build this on Debian Jessie. Does this require gcc 5.0+? If so, can it be built with clang? When building I did get some initial errors about missing sys/cdefs.h, which was resolved installing libc6-dev:i386, for one. So far, on a Debian system, these are needed:
So far, my build stops here (cmake completes, make output below): |
For some reason, when make is issued, the Makefile generated by cmake tries to use
The full build log is above. |
Ok the build works it seems with clang (in my test, 3.8). I had to link /usr/bin/cc to /usr/bin/clang-3.8. I'm sure there is a clean way to update the /usr/bin/cc alternative, so that was just a test. gcc 4.9 must be too old it seems. Not sure why python 3.5 has to download each time. Maybe there is a check on 3.5+? My repository sources have 3.4 but it still downloads it. |
I tried again using the git --recursive option as suggested by @z33ky - thanks :) Dependencies I try this
I get this
I'm running gcc (GCC) 6.2.1 20160830 |
Progress update - I was able to pass the 100% compile mark before running into what looked like errors linking to 32-bit system libraries. I removed boost-python and python from he ges-code/CMakeLists.txt file and commented out compiling the server as it had some error in ges-code/game/CMakeLists.txt line 79 to 113. Here's what I did
Here was the last bit of output I was able to build the 64-bit version easier so my current plan is to remove "-m32" flags from the project and try again to see if it will build. Attached is my custom |
I've built it on Arch it requires Python 3.4, It won't build against Python 3.5, here's a tree of the layout of what's built |
@ElectricPrism how did you force python-cmake to download and build python 3.4? |
Build Instructions I use gcc-multilib, python34 [AUR], boost, boost-libs lib32-glibc, etc...
|
"how did you force python-cmake to download and build python 3.4?" @vincent-t - I downloaded python 3.4 via my package manager - Yaourt aka:
In my situation I have both Python 3.4 and 3.5 installed side by side. |
@vincent-t - The output of the build was confusing to me, or maybe its just getting late, the wife and I gotta sleep, gonna pick this back up tomorrow. Here's what $PROJECT/build/game containd -- I have yet to figure out what to do with it It's my understanding that the mod should install to ~/.local/share/Steam/steamapps/sourcemods/gesource If you learn anything new let me know, and let me know how it goes :) cheers |
You guys are both putting in way too much effort on this. First off, this MUST be built as 32-bit (which the CMAKE script does for you. Valve does not support 64-bit Linux as all of their platform libraries in the SDK-2013 are 32-bit. Second,
Means you are missing critical libraries in order to build properly. You need to have libm dev and libutil dev installed on your system. This builds great running Fedora 24 x64 with all pre-reqs installed. Thirdly, Python library is downloading ONCE unless you perform a make clean or build in a different folder, then it'll download it again. The download and build of python is cached in your build folder. |
@droidmonkey, for the uninitiated with building Source SDK projects, some of us just didn't know that. I use pbuilder/mock, so I now made sure to use a 32 bit chroot and things are building great. The question still remains though, why is python always being downloaded? Does it need 3.5.2+ specifically, or is it compiled every time for consistency? I don't build locally for many good reasons. I'll post the full list once I work out the entire build. I had my build stop not finding Also everyone posting huge code snippets, use a paste bin, please*. |
Python is download prior to building for the first time because of consistency in the process. Before, we provided prebuilt Python that was not portable across build envs. If you maintain your build directory it SHOULD NOT download everytime you make. The cmake scripts could use some more upfront prerequisite checking, but hey it's a strong start, gimme some cred for cleaning up Valve's atrocious build process with the sdk runtime. |
@droidmonkey , i'm sorry I came across that way, I IMMENSELY appreciate this! I play on maintaining an Arch AUR / Debian package once I work out the smaller details here. Current build script with Debian Jessie (verbose make): http://sprunge.us/cUIT. If anyone is interested, by in progress Debian build files are here. Have some ld errors to work through yet (pyexpat/zlib). For those on this thread using "VERBOSE=1" or "V=1" with make will expose commands to work through any problems you have linking. Perhaps I should just drop including libexpat/zlib in the build. Sometimes, I believe linker ordering (-l ) causes this. hmm. This is why I build with a clean chroot, to iron out these things. I'll try building without expat/zlib in my package lists. Listing the packages you installed in a clean chroot / VM would help several here as well. The line of the build log for that is:
I can fork and create a Travis CI config file. Once that is working, that would be a good indicator of a working build for continuous integration testing with Linux folks. |
Hah no worries. Travis would be good, but I hate that they are stuck on Ubuntu 14.04 and their builds are slower than mud... Jenkins might be more appropriate to allow for local CI with reporting. |
I am missing some libs yet. Upon checking the code, folks here should be aware that libm is for libmagic*. It could be that the undefined references are due to including too many packages, and libexpat/zlib was being picked up since I included it, but not defined in the linker. I'd imagine though that having those in your system for a local build would cause those issues on Debian derivatives though. If they are permitted, i'd think that they would need an additional It would possibly beneficial for some if you list your Fedora packages you installed. |
git submodule init --recursive This doesn't work
Instead this works
I'm determined to get as far as I can, if some of my choices seem noobish please forgive me as I'm new at this. I'm writing a PKGBUILD right now for [AUR] to see if I can get it to autocompile - I'll post it if I get it into pretty good shape. |
I'm going to take a break. I did start to convert my installation instructions into a PKGBUILD. It's working on my system currently, however I'm sure I'll have to revise it to figure out how to get the server part in /game/server to compile
copy PKGBUILD to ~/Builds/ges/ Compile .tar.xz for pacman to merge using pacman -U |
Line 25 and 26 of CMakeLists.txt seems to set the compiler to target Intel Core 2 Duo with the core2 flag on -march and -mtune
Shouldn't it be set to i686 because the binary built should be 32-bit? |
No the -m32 flag sets the architecture. ;) |
Thanks, I've started to organize my efforts over here: |
That should be noted in the readme. Also, building in a clean chroot will indicate you also need other libs for bzip2, expat, zlib, etc.. On October 24, 2016 6:56:29 AM EDT, Jonathan White [email protected] wrote:
Sent from my Android device with K-9 Mail. Please excuse my brevity. |
I never built a Source SDK release project, so pardon me. I use pbuilder as well. I'll adjust to build in a 32 bit chroot and add those libs. I assume you build with mock or local with rpmbuild. Thank you. On October 24, 2016 6:56:29 AM EDT, Jonathan White [email protected] wrote:
Sent from my Android device with K-9 Mail. Please excuse my brevity. |
@ProfessorKaos64 - The readme technically needs work as it is as the git submodule init command is incomplete. I had to search for a similar version and came up with I unfortunately am not a Level 60 compiler mage, and I've only ever built very few things (No Source SDK either.) Could you link me or dump a list of dependencies you've found here? Thanks On arch I've started to build with I'm not sure why but it seems like game/CMakeLists.txt also needs to be modified as it's trying to link to boost and failing on vanilla. droidmonkey said it compiles on Fedora - It might be awkward but I wonder if it'll compile to something usable and then the RPM or whatever could be exploded and repackaged into .dev and whatever else if that's the case. |
I'll work on attempting a compile on another platform and document my mage skillz. Thanks for keeping this alive, I honestly have not ported it to any other platforms besides Fedora. |
@ElectricPrism , I typically just use git clone --recursive , but you should just follow the proper update/init routines with git, outlined in the AUR guideline for VCS. I always follow that for my AUR packages. In my case on my OS, including those extra system libs then tries to link them later on. Follow my advice and setup a clean chroot for bulding. I was planning on submitted an AUR package later on, but if you intend to, follow the Arch Linux guidelines for a git package. Edit: Sorry, here is the Arch Linux page for building in a clean i686 chroot. |
I'm going to keep working to see if I can build this with a vanilla clone of the repo vs. the fork / modifications ElectricPrism made and his fork of the repo. The undefined references, like my Debian/SteamOS build, is conflicting with system libs (at least it seems). I'll try adding options to ges_python.cmake to disable sqlite/zlib etc, as it seems those are having issues. What is the danger of just using a distro's python 3.5+ (assuming the build works)? |
@ProfessorKaos64 You probably would be better suited to make the AUR than me since It would be my first submission but I wanted to grow my skills in developing PKGBUILD's. From building in the i686 chroot it seemed that the CMakeLists.txt for some reason wasn't recognizing where the Boost_ Include directory was? I think it might need to be manually declared somewhere before or near find_package(), and also I'm not sure but the current Boost Libraries is version 1.61 on Arch whereas the CMake asks for 1.52, I'm not sure if it looks for that exact version or up? I'll do my best to take your instructions and document them I have both a aur-ges and ges-code repo where I'm logging my work. I'm very excited for us and the progress & work you're doing - when its all finalized we can hit up gamingonlinux.com and I'm sure they'll give GE:S a bunch of Linux gamers to come and enjoy with us all :) |
You can't work around the linking issues it seems, like I did by just not including extra packages on Debian 8 / SteamOS. If you disable zlib,sqlite, or gdbm modules (forgive if the yare required, just testing around), you get this error and set of link flags:
Regardless of this test being wrong or right, that is one strange set of linker flags. So many duplicates. I suppose I'll try turning off/on using system versions of an libs mentioned above. |
The 32 bit Arch Linux build via Travis CI / docker gets father now after the latest 20161101 commit. I noticed the CI build didn't die after 16 minutes :) See: https://travis-ci.org/ProfessorKaos64/ges-code/jobs/176164141 |
Is there an option to tell the build to use the system version of Python rather than trying to use the bundled one? (where is where all the errors appear to come from at the end right now). |
@mdeguzis Do you have a link to your current build instructions, I'm curious to see if anything has changed and if it will get farther or not. @Enverex I personally had to manually disable GES python, maybe @droidmonkey knows of a better way to enable/disable to use system python. |
If you want to use system python then you need to replace the section in cmakelists.txt regarding python project with a simple find_library call. |
Sorry for necro-bumping this thread after all these years, but since it's still flagged as open I guess I'll take my shot.
I'm not a C/C++ guru so please, help me and the linux community to build this awesome game. |
This project hasn't been touched in 6 years or so. Recommend using vcpkg now adays as that is the modern way to handle dependencies. |
As I said, I'm not an expert but it doesn't look like a dependency issue. Anyway, thanks for the tip, I'll try. |
Here's what I do:
Here's the output:
What does this mean and how do I fix it?
The text was updated successfully, but these errors were encountered: