Skip to content
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

No apple M1/M2 support #28

Open
alexstaeding opened this issue Dec 1, 2023 · 7 comments
Open

No apple M1/M2 support #28

alexstaeding opened this issue Dec 1, 2023 · 7 comments
Labels
help wanted Extra attention is needed

Comments

@alexstaeding
Copy link

alexstaeding commented Dec 1, 2023

This simple docker-compose works in a debian 12 VM, but not on macOS.
Using a MacBook Pro M2 with macOS Sonoma.

~ ❯ docker-compose --version                                           19:55:00
Docker Compose version v2.23.0-desktop.1
~ ❯ docker --version                                                   19:55:07
Docker version 24.0.7, build afdd53b4e3
version: '3.8'

services:
  server:
    image: jusito/docker-ttt:gmod_ttt_debian
    container_name: ttt-server
    ports:
      - "27015:27015/tcp"
      - "27015:27015/udp"
    environment:
      - SERVER_PORT=27015
      - INSTALL_CSS=true
      - WORKSHOP_COLLECTION_ID=2176094350
      - SERVER_NAME=My Server
      - SERVER_PASSWORD=server-password
      - SERVER_DEFAULT_MAP=ttt_waterworld
[+] Building 0.0s (0/0)                                                                                                                                                                                                                                           docker:desktop-linux
[+] Running 3/0
 ✔ Network ttt_default                                                                                                                                   Created                                                                                                                  0.0s 
 ✔ Container ttt-server                                                                                                                                  Created                                                                                                                  0.0s 
 ! server The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested                                                                                                                          0.0s 
Attaching to ttt-server
ttt-server  | [entrypoint.sh]starting entrypoint.sh
ttt-server  | [entrypoint.sh]installing...
Installed Garrys Mod server as gmodserver
ttt-server  | 
ttt-server  | Remember to check server ports
ttt-server  | ./gmodserver details
ttt-server  | 
fetching GitHub core_trap.sh...OK
ttt-server  | fetching GitHub _default.cfg...OK
ttt-server  | copying _default.cfg...OK
ttt-server  | fetching GitHub check_ip.sh...OK
ttt-server  | fetching GitHub info_game.sh...OK
ttt-server  | fetching GitHub common.cfg...OK
ttt-server  | fetching GitHub secrets-common.cfg...OK
ttt-server  | fetching GitHub gmodserver.cfg...OK
ttt-server  | fetching GitHub secrets-gmodserver.cfg...OK
ttt-server  | fetching GitHub linuxgsm.sh...OK
ttt-server  | fetching GitHub core_getopt.sh...OK
ttt-server  | fetching GitHub command_install.sh...OK
ttt-server  | fetching GitHub check.sh...OK
ttt-server  | fetching GitHub check_version.sh...OK
ttt-server  | fetching GitHub check_tmuxception.sh...OK
ttt-server  | fetching GitHub check_permissions.sh...OK
ttt-server  | fetching GitHub check_glibc.sh...OK
ttt-server  | fetching GitHub info_distro.sh...OK
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | fetching GitHub check_system_requirements.sh...OK
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | fetching GitHub install_header.sh...OK
ttt-server  | 

ttt-server  |                                 mdMMMMbm
ttt-server  |                               mMMMMMMMMMMm
ttt-server  |                               mMMMMMMMMMMMMm
ttt-server  |                              mMMMMMMMMMMMMMMm
ttt-server  |                              hMMMV^VMMV^VMMMh
ttt-server  |                              MMMMM  MM  MMMMM
ttt-server  |                              hMMs   vv   sMMh
ttt-server  |                             hMMM:        :MMMh
ttt-server  |                           .hMMMh          hMMMh.
ttt-server  |                          -dMMMh     __     hMMMd-
ttt-server  |                         :mMMMs      ||      sMMMm:
ttt-server  |                        :MMMM+       || _     +NMMN:
ttt-server  |                       .mMMM+     ========     +MMMm.
ttt-server  |                       yMMMy   ##############   yMMMy
ttt-server  |                       mMMM:   ##############   :MMMm
ttt-server  |                       mMM   nn   nn    nn   nn   MMm
ttt-server  |                       o   nNNNNNNNn    nNNNNNNNn   o
ttt-server  |                          nNNNNNNNNNn  nNNNNNNNNNn
ttt-server  |                         nNNNNNNNNNNN  NNNNNNNNNNNn
ttt-server  |                          +NNNNNNNNN:  :NNNNNNNNN+
ttt-server  |                            nNNNNNNN /\ NNNNNNNn
ttt-server  |                              nnnnn  db  nnnnn
ttt-server  | 
ttt-server  | 888      d8b                             .d8888b.   .d8888b.  888b     d888
ttt-server  | 888      Y8P                            d88P  Y88b d88P  Y88b 8888b   d8888
ttt-server  | 888                                     888    888 Y88b.      88888b.d88888
ttt-server  | 888      888 88888b.  888  888 888  888 888          Y888b.   888Y88888P888
ttt-server  | 888      888 888  88b 888  888  Y8bd8P  888  88888      Y88b. 888 Y888P 888
ttt-server  | 888      888 888  888 888  888   X88K   888    888        888 888  Y8P  888
ttt-server  | 888      888 888  888 Y88b 88Y .d8pq8b. Y88b  d88P Y88b  d88P 888   *   888
ttt-server  | LinuxGSM 888 888  888  Y8888Y  888  888   Y2012P88   Y8888P   888       888
ttt-server  | 
ttt-server  | =================================
ttt-server  | LinuxGSM_
ttt-server  | by Daniel Gibbs
ttt-server  | Version: v23.5.3
ttt-server  | Game: Garry's Mod
ttt-server  | Website: https://linuxgsm.com
ttt-server  | Contributors: https://linuxgsm.com/contrib
ttt-server  | Sponsor: https://linuxgsm.com/sponsor
ttt-server  | =================================
ttt-server  | fetching GitHub install_server_dir.sh...OK
ttt-server  | 
ttt-server  | Server Directory
ttt-server  | =================================
ttt-server  | Warning! A server is already installed here.
ttt-server  | /home/steam
ttt-server  | fetching GitHub install_logs.sh...OK
ttt-server  | 
ttt-server  | Creating log directories
ttt-server  | =================================
ttt-server  | installing log dir: /home/steam/log...OK
ttt-server  | installing LinuxGSM log dir: /home/steam/log/script...OK
ttt-server  | creating LinuxGSM log: /home/steam/log/script/gmodserver-script.log...OK
ttt-server  | installing console log dir: /home/steam/log/console...OK
ttt-server  | creating console log: /home/steam/log/console/gmodserver-console.log...OK
ttt-server  | installing game log dir: /home/steam/serverfiles/garrysmod/logs...OK
ttt-server  | creating symlink to game log dir: /home/steam/log/server -> /home/steam/serverfiles/garrysmod/logs...OK
ttt-server  | fetching GitHub check_deps.sh...OK
ttt-server  | 
ttt-server  | Checking Dependencies
ttt-server  | =================================
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | Cannot open netlink socket: Protocol not supported
fetching GitHub debian-10.csv...OK
ttt-server  | bc
ttt-server  | binutils
ttt-server  | bsdmainutils
ttt-server  | bzip2
ttt-server  | ca-certificates
ttt-server  | cpio
ttt-server  | curl
ttt-server  | distro-info
ttt-server  | file
ttt-server  | gzip
ttt-server  | hostname
ttt-server  | jq
ttt-server  | lib32gcc1
ttt-server  | lib32stdc++6
ttt-server  | libsdl2-2.0-0:i386
ttt-server  | libtinfo5:i386
ttt-server  | netcat
ttt-server  | python3
ttt-server  | tar
ttt-server  | tmux
ttt-server  | unzip
ttt-server  | util-linux
ttt-server  | uuid-runtime
ttt-server  | wget
ttt-server  | xz-utils
ttt-server  | Information! Required dependencies already installed.
ttt-server  | fetching GitHub install_steamcmd.sh...OK
ttt-server  | 
ttt-server  | Installing SteamCMD
ttt-server  | =================================
ttt-server  | fetching GitHub check_steamcmd.sh...OK
ttt-server  | fetching GitHub core_steamcmd.sh...OK
######################################################################## 100.0%
ttt-server  | OK
ttt-server  | extracting steamcmd_linux.tar.gz...OK
ttt-server  | fetching GitHub install_server_files.sh...OK
ttt-server  | 
ttt-server  | Installing Garry's Mod Server
ttt-server  | =================================
ttt-server  | fetching GitHub update_steamcmd.sh...OK
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | Cannot open netlink socket: Protocol not supported
ttt-server  | Cannot open netlink socket: Protocol not supported
[ START ] Installing gmodserver: SteamCMD
ttt-server  | Complete! Installing gmodserver: SteamCMD
[ ERROR ] Installing gmodserver: No appmanifest_4020.acf found
[ INFO ] Installing gmodserver: Forcing update to correct issue
[ START ] Installing gmodserver: SteamCMD
ttt-server  | Complete! Installing gmodserver: SteamCMD
[ FAIL ] Installing gmodserver: Still no appmanifest_4020.acf found
ttt-server  | fetching GitHub core_exit.sh...OK
ttt-server  | [entrypoint.sh]update / installation done!
ttt-server  | [prepareServer.sh]check configurations
ttt-server  | [initConfig.sh]Request for replacing hostname to "My Server", source is found 1 times
ttt-server  | [initConfig.sh]Request for replacing sv_password to "server-password", source is found 1 times
ttt-server  | [initConfig.sh]Request for replacing sv_voiceenable to "1", source is found 1 times
ttt-server  | [prepareServer.sh]force workshop download
ttt-server  | [forceWorkshopDownload.sh]processing workshop collection 2176094350
ttt-server  | [prepareServer.sh]install & mount gamefiles
ttt-server  | [installAndMountAddons.sh]installing & mounting css
ttt-server exited with code 1
@jusito
Copy link
Owner

jusito commented Dec 3, 2023

its another cpu architecture and the same issue as: #3 (comment)

@jusito jusito changed the title [ FAIL ] Installing gmodserver: Still no appmanifest_4020.acf found No apple M1/M2 support Dec 3, 2023
@jusito jusito added help wanted Extra attention is needed wontfix This will not be worked on labels Dec 3, 2023
@alexstaeding
Copy link
Author

alexstaeding commented Dec 4, 2023

I don't think it's entirely due to the different architecture itself - otherwise, it would refuse to start with the same error as in #3 standard_init_linux.go:211: exec user process caused "exec format error".

macOS' translation layer Rosette can run amd64 programs, and this is used by default if an image does natively support the arm architecture.

I even specified the platform explicitly, which leads to an identical result (as above).

 services:
   server:
     image: jusito/docker-ttt:gmod_ttt_debian
+    platform: linux/amd64
     container_name: ttt-server
     ports:
       - "27015:27015/tcp"

In theory, the automatic translation should work; I don't know if something can be done in this image to fix the error related to the file. Searching for the problematic file serverfiles/steamapps/appmanifest_4020.acf, I found this: GameServerManagers/LinuxGSM#3143 (comment)
I haven't looked deeply into it myself, so I don't know how relevant that is.

Also: any solution using Rosetta would only be a "nice to have" as this translation is only provided on a "best effort" basis.

jusito added a commit that referenced this issue Dec 4, 2023
@jusito
Copy link
Owner

jusito commented Dec 4, 2023

thanks for the info, didn't know about this feature. Your best effort link shows issues with debian-10 because its outdated, updated develop to 12 maybe it will fix it. Ah and also added a very simplistic way of logging console to container log.

@jusito jusito removed the wontfix This will not be worked on label Dec 4, 2023
@jusito
Copy link
Owner

jusito commented Dec 10, 2023

Was you able to test the recent "-develop" image on your M2 ?

@alexstaeding
Copy link
Author

Was you able to test the recent "-develop" image on your M2 ?

Sorry for the late update. Yes, I did try it. Unfortunately, it ends with the same error.

@alexstaeding
Copy link
Author

I correct, it is slightly different:

At the very least, there is now an additional warning/error "integer expression expected"

ttt-server  | Checking Garry's Mod Dependencies
ttt-server  | =================================
fetching GitHub debian-12.csv...OK
ttt-server  | bc
ttt-server  | binutils
ttt-server  | bsdmainutils
ttt-server  | bzip2
ttt-server  | ca-certificates
ttt-server  | cpio
ttt-server  | curl
ttt-server  | distro-info
ttt-server  | file
ttt-server  | gzip
ttt-server  | hostname
ttt-server  | jq
ttt-server  | lib32gcc-s1
ttt-server  | lib32stdc++6
ttt-server  | libsdl2-2.0-0:i386
ttt-server  | libtinfo5:i386
ttt-server  | netcat-openbsd
ttt-server  | python3
ttt-server  | grep: /etc/apt/sources.list: No such file or directory
ttt-server  | tar
ttt-server  | tmux
ttt-server  | unzip
ttt-server  | util-linux
ttt-server  | uuid-runtime
ttt-server  | wget
ttt-server  | xz-utils
ttt-server  | Information! Required dependencies already installed.
ttt-server  | fetching GitHub install_steamcmd.sh...OK
ttt-server  |
ttt-server  | Installing SteamCMD
ttt-server  | =================================
ttt-server  | fetching GitHub check_steamcmd.sh...OK
ttt-server  | fetching GitHub core_steamcmd.sh...OK
######################################################################## 100.0%
ttt-server  | OK
ttt-server  | extracting steamcmd_linux.tar.gz...OK
ttt-server  | fetching GitHub install_server_files.sh...OK
ttt-server  |
ttt-server  | Installing Garry's Mod Server
ttt-server  | =================================
ttt-server  | fetching GitHub update_steamcmd.sh...OK
ttt-server  | /home/steam/lgsm/modules/check_system_requirements.sh: line 66: [: 0.5: integer expression expected
[ START ] Installing gmodserver: SteamCMD
ttt-server  | Complete! Installing gmodserver: SteamCMD
[ ERROR ] Installing gmodserver: No appmanifest_4020.acf found
[ INFO ] Installing gmodserver: Forcing update to correct issue
[ START ] Installing gmodserver: SteamCMD
ttt-server  | Complete! Installing gmodserver: SteamCMD
[ FAIL ] Installing gmodserver: Still no appmanifest_4020.acf found
ttt-server  | fetching GitHub core_exit.sh...OK
ttt-server  | [entrypoint.sh]update / installation done!
ttt-server  | [prepareServer.sh]check configurations
ttt-server  | [initConfig.sh]Request for replacing hostname to "My Server", source is found 1 times
ttt-server  | [initConfig.sh]Request for replacing sv_password to "server-password", source is found 1 times
ttt-server  | [initConfig.sh]Request for replacing sv_voiceenable to "1", source is found 1 times
ttt-server  | [prepareServer.sh]force workshop download
ttt-server  | [forceWorkshopDownload.sh]processing workshop collection 2176094350
ttt-server  | [prepareServer.sh]install & mount gamefiles
ttt-server  | [installAndMountAddons.sh]installing & mounting css
ttt-server exited with code 1

@jusito
Copy link
Owner

jusito commented Jan 28, 2024

  1. Don't worry, Open Source works like this; sometimes someone has time, sometimes not. Thanks for your response!
  2. The error from lsgm shouldn't be an issue, this is the line 66: if (($(echo "${physmemtotalgb} < ${ramrequirementgb}" | bc -l))); then, so we can ignore it in the log
  3. Maybe even if the emulation is activated via platform: linux/amd64 steam checks the platform so that it still identifies the arm architecture?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants