-
Notifications
You must be signed in to change notification settings - Fork 104
Make a linux build #329
Comments
Short answer is no, it's not going to happen in the current form. The Linux official builds are known for being difficult to run on various distributions partially because of the dependencies they need. Most Linux players already compile their own game. I've heard people having success with using a compatibility layer like Wine or Proton to run both the launcher and the game. That could be a good alternative. @jhagrid77 started some kind of linux launcher. That could be a good alternative as well. Ultimately, I believe the proper linux way of doing this would be with some kind of automation with the CI server that would push the latest experimental to a Personal Package Archive (PPA) on Launchpad. This way, you could have automated updates on Ubuntu and Debian derivatives using their package manager. |
I'm willing to solve the Linux execution issues for the game, possibly by adding custom compilation and/or automating the creation of distro packages. I actually started working on a new project, coincidentally also using python and Qt, before I realized that CDDAGL also uses PyQt (I assumed it was some windows-only tech like .NET/WPF. Then I discovered this repo and realized it was in fact PyQt based. It wouldn't make much sense to re-implement everything in a separate project just for Linux. Would you accept PRs to make this work within CDDAGL? (I've worked on packaging DF for Linux, as well as the LNP, so this stuff isn't new to me) |
Last time I checked, it was really hard to get the proper dependencies for the official linux build. If you can show me how to use the official linux builds and make it run properly on the top 4 linux distros (something like Ubuntu/Debian/Linux Mint, Arch, Fedora, Gentoo on a clean install), I'll consider adding and supporting a linux launcher. |
I can try to set it up on Void Linux
if its ok
…On Mon, May 20, 2019 at 3:10 AM Rémy Roy ***@***.***> wrote:
Last time I checked, it was really hard to get the proper dependencies for
the official linux build. If you can show me how to use the official
linux builds <https://github.com/CleverRaven/Cataclysm-DDA/releases> and
make it run properly on the top 4 linux distros (something like
Ubuntu/Debian/Linux Mint, Arch, Fedora, Gentoo on a clean install), I'll
consider adding and supporting a linux launcher.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#329?email_source=notifications&email_token=AD55SE3TU7NYALA54EHCH2DPWIJCFA5CNFSM4HK7ILSKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVXSWUA#issuecomment-493824848>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AD55SEYENOVMUF7QTIKJAOTPWIJCFANCNFSM4HK7ILSA>
.
|
Building in a Docker container would solve dependency issues and make it able to run cleanly on all Linux distributions. |
@Djent- If you want to build, test and host those docker distributions somewhere and do so consistently with every experimental releases, let me know and we'll see how to integrate those with the launcher. |
What about a CDDA mod manager? Something that you could just download to whatever folder you have CDDA mods and soundpacks installed in, and then you can run it and download mods and soundpacks? Also, there are now cross-platform package managers for Linux such as Flatpak that will run on any distro that the package manager can be installed on. Maybe we could have some kind of CDDA installer for Flatpak? |
I have created a bash script (see below) that can install the dependencies taken from official packages of CentOS/RHEL, Debian/Ubuntu, Fedora and OpenSUSE. Would that be workable, or would you prefer something in Python? #!/bin/bash
KIND="${1:-tiles}"
. /etc/os-release
unsupported_os() {
os_name=${PRETTY_NAME}
if [[ ! -z ${os_name} ]]; then
os_name="${NAME} ${VERSION_ID}"
fi
echo "OS ${os_name} is not supported" >&2
}
if [[ ${KIND} = "curses" ]]; then
case ${ID} in
centos|rhel)
# Adapted from https://fedora.pkgs.org/32/fedora-updates-x86_64/cataclysm-dda-0.E.2-1.fc32.x86_64.rpm.html
if [[ ${VERSION_ID} -gt 7 ]]; then
dnf install libc.so.6\(\)\(64bit\) libgcc_s.so.1\(\)\(64bit\) libm.so.6\(\)\(64bit\) libncursesw.so.5\(\)\(64bit\) libstdc++.so.6\(\)\(64bit\) libtinfo.so.5\(\)\(64bit\)
else
unsupported_os
exit 1
fi
;;
debian|ubuntu)
# Adapted from https://debian.pkgs.org/sid/debian-main-amd64/cataclysm-dda-curses_0.E-1-1_amd64.deb.html
apt install libc6 libgcc-s1 libncursesw5 libstdc++6 libtinfo5
;;
fedora)
# Adapted from https://fedora.pkgs.org/32/fedora-updates-x86_64/cataclysm-dda-0.E.2-1.fc32.x86_64.rpm.html
dnf install libc.so.6\(\)\(64bit\) libgcc_s.so.1\(\)\(64bit\) libm.so.6\(\)\(64bit\) libncursesw.so.5\(\)\(64bit\) libstdc++.so.6\(\)\(64bit\) libtinfo.so.5\(\)\(64bit\)
;;
opensuse-*)
zypper in libc.so.6\(\)\(64bit\) libgcc_s.so.1\(\)\(64bit\) libm.so.6\(\)\(64bit\) libncursesw.so.5\(\)\(64bit\) libstdc++.so.6\(\)\(64bit\) libtinfo.so.5\(\)\(64bit\)
;;
*)
unsupported_os
exit 1
;;
esac
elif [[ "${KIND}" = "tiles" ]]; then
case ${ID} in
arch|manjaro)
# Adapted from https://archlinux.pkgs.org/rolling/archlinux-community-x86_64/cataclysm-dda-tiles-0.E.2-1-x86_64.pkg.tar.zst.html
pacman -S freetype2 sdl2_image sdl2_mixer sdl2_ttf --needed
;;
centos|rhel)
# Adapted from https://fedora.pkgs.org/32/fedora-updates-x86_64/cataclysm-dda-tiles-0.E.2-1.fc32.x86_64.rpm.html
if [[ ${VERSION_ID} -gt 7 ]]; then
# At the time of writing SDL_image, SDL_mixer and SDL_ttf are not yet available in EPEL, this will probably get rectified in the future
dnf install mesa-dri-drivers mesa-libGL libSDL2-2.0.so.0\(\)\(64bit\) libSDL2_image-2.0.so.0\(\)\(64bit\) libSDL2_mixer-2.0.so.0\(\)\(64bit\) libSDL2_ttf-2.0.so.0\(\)\(64bit\) libc.so.6\(\)\(64bit\) libgcc_s.so.1\(\)\(64bit\) libm.so.6\(\)\(64bit\) libpthread.so.0\(\)\(64bit\) libstdc++.so.6\(\)\(64bit\)
else
unsupported_os
exit 1
fi
;;
debian|ubuntu)
# Adapted from https://debian.pkgs.org/sid/debian-main-amd64/cataclysm-dda-sdl_0.E-1-1_amd64.deb.html
apt install libc6 libgcc-s1 libsdl2-2.0-0 libsdl2-image-2.0-0 libsdl2-mixer-2.0-0 libsdl2-ttf-2.0-0 libstdc++6
;;
fedora)
# Adapted from https://fedora.pkgs.org/32/fedora-updates-x86_64/cataclysm-dda-tiles-0.E.2-1.fc32.x86_64.rpm.html
dnf install mesa-dri-drivers mesa-libGL libSDL2-2.0.so.0\(\)\(64bit\) libSDL2_image-2.0.so.0\(\)\(64bit\) libSDL2_mixer-2.0.so.0\(\)\(64bit\) libSDL2_ttf-2.0.so.0\(\)\(64bit\) libc.so.6\(\)\(64bit\) libgcc_s.so.1\(\)\(64bit\) libm.so.6\(\)\(64bit\) libpthread.so.0\(\)\(64bit\) libstdc++.so.6\(\)\(64bit\)
;;
opensuse-*)
zypper in Mesa-dri libSDL2-2_0-0 libSDL2_image-2_0-0 libSDL2_mixer-2_0-0 libSDL2_ttf-2_0-0 libc.so.6\(\)\(64bit\) libgcc_s.so.1\(\)\(64bit\) libm.so.6\(\)\(64bit\) libpthread.so.0\(\)\(64bit\) libstdc++.so.6\(\)\(64bit\)
;;
*)
unsupported_os
exit 1
;;
esac
else
echo "Usage: $0 [curses|tiles]" >&2
exit 1
fi |
@Dudecake Have you tested this script with a recent version of those distributions? |
I have tested the curses path on CentOS 7 and 8 (7 doesn't work), Ubuntu 20.04, Fedora 32 and OpenSUSE Leap 15.2. The tiles path is tested the same way, but with that testing method SDL naturally can't open the display. Tonight I can test this better. |
@remyroy I have since tested the tiles path and made some changes so CDDA correctly starts. I've edited the script in the previous post. |
@remyroy |
@PassionateAngler This is awesome! Keep up the good work 💪 |
@PassionateAngler Hey just tried to open this up on my system but getting an error when building with Python 3.9.
I'd have posted this on your fork but doesn't look like issues are enabled there. |
Launcher is freezeing on my end. @PassionateAngler Is this a reported bug? |
Hi guys @scanevaro @rodneyrod thank you for feedback. |
Please make a linux build so that linux users can use your software.
The text was updated successfully, but these errors were encountered: