CDDA-Game-Launcher icon indicating copy to clipboard operation
CDDA-Game-Launcher copied to clipboard

Make a linux build

Open OtakuSenpai opened this issue 5 years ago • 16 comments

Please make a linux build so that linux users can use your software.

OtakuSenpai avatar May 06 '19 11:05 OtakuSenpai

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.

remyroy avatar May 06 '19 14:05 remyroy

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)

Ramblurr avatar May 19 '19 10:05 Ramblurr

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.

remyroy avatar May 20 '19 03:05 remyroy

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 [email protected] 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 https://github.com/remyroy/CDDA-Game-Launcher/issues/329?email_source=notifications&email_token=AD55SE3TU7NYALA54EHCH2DPWIJCFA5CNFSM4HK7ILSKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVXSWUA#issuecomment-493824848, or mute the thread https://github.com/notifications/unsubscribe-auth/AD55SEYENOVMUF7QTIKJAOTPWIJCFANCNFSM4HK7ILSA .

OtakuSenpai avatar May 22 '19 18:05 OtakuSenpai

Building in a Docker container would solve dependency issues and make it able to run cleanly on all Linux distributions.

Djent- avatar May 24 '20 18:05 Djent-

@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.

remyroy avatar May 24 '20 23:05 remyroy

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?

ElonSatoshi avatar Jul 05 '20 16:07 ElonSatoshi

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 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 avatar Jul 14 '20 14:07 Dudecake

@Dudecake Have you tested this script with a recent version of those distributions?

remyroy avatar Jul 14 '20 14:07 remyroy

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.

Dudecake avatar Jul 14 '20 15:07 Dudecake

@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.

Dudecake avatar Jul 14 '20 21:07 Dudecake

@remyroy I have put my hands on porting CDD-Game-Launcher to Linux. Here is my fork: https://github.com/PassionateAngler/CDDA-Game-Launcher It is WiP. What works now is downloading stable game and launching it, but every evening it gets better :) Small discussion here: https://www.reddit.com/r/cataclysmdda/comments/j6dk5d/cdda_game_launcher_remyroy_linux_port/

PassionateAngler avatar Oct 07 '20 22:10 PassionateAngler

@PassionateAngler This is awesome! Keep up the good work 💪

remyroy avatar Oct 07 '20 22:10 remyroy

@PassionateAngler Hey just tried to open this up on my system but getting an error when building with Python 3.9.

CDDA Game Launcher started: 1.4.12
Global error:
Launcher version: 1.4.12
Type: <class 'AttributeError'>
Value: 'NoneType' object has no attribute 'strip'
Traceback:
  File "/home/USER/git/CDDA-Game-Launcher/cddagl/ui/views/main.py", line 3326, in run
    build_changes = list(unique(build_changes))
  File "/home/USER/git/CDDA-Game-Launcher/cddagl/functions.py", line 35, in unique
    for x in seq:
  File "/home/USER/git/CDDA-Game-Launcher/cddagl/ui/views/main.py", line 3324, in <lambda>
    build_changes = map(lambda x: html.escape(x.text.strip(), True),

I'd have posted this on your fork but doesn't look like issues are enabled there.

rodneyrod avatar Jan 15 '21 01:01 rodneyrod

Launcher is freezeing on my end. @PassionateAngler Is this a reported bug? 104960328-c939ef00-59b2-11eb-8548-1b2e740af6c6 Pop! OS. i7 16gb GTX 960m

scanevaro avatar Jan 18 '21 22:01 scanevaro

Hi guys @scanevaro @rodneyrod thank you for feedback. I have enabled issues on my repo. https://github.com/PassionateAngler/CDDA-Game-Launcher/issues Please create tickets there.

PassionateAngler avatar Jan 19 '21 10:01 PassionateAngler