daid / EmptyEpsilon

Open source bridge simulator. Build with the SeriousProton engine.
https://daid.github.io/EmptyEpsilon/
GNU General Public License v2.0
528 stars 177 forks source link

Alpine-linux compiling #1966

Open Szasdragon opened 1 year ago

Szasdragon commented 1 year ago

I followed the docs but when try to install the debian package there is an error:

dpkg: error processing archive EmptyEpsilon.deb (--install):
package arcitecture () does not match system (musl-linux-amd64)

This is the same pc, wich compiled the game. Did I missed some step or cmake or ninja had to have more arguments?

kwadroke commented 1 year ago

Alpine Linux uses .apk packages & not .deb packages. It looks like the wiki page you linked to has wrong information in it for installation. Probably was a copy and paste of the Debian instructions.

I started working on an APKBUILD file for EmptyEpsilon a while back. I should probably get back to it and share it.

Szasdragon commented 1 year ago

Thanks. I was thinking, something is off. New in Alpine Linux. I found recommendation of Alpine Linux, because it use little resources. Just get started reusing some old hardware as Empty Epsilon kiosk. Can you provide link to your guide?

kwadroke commented 1 year ago

I'll update the Wiki page hopefully this weekend with updated instructions.

Szasdragon commented 1 year ago

Thx.

kwadroke commented 1 year ago

Here is my APKBUILD file for EmptyEpsilon. Tested on x86 Edge. Should work on 3.17 on x86_64. These instructions assume you're building for _x8664, if not replace that with your CPU Arch in the commands below. You won't need to change the APKBUILD file to change your CPU Arch.

You'll need to install alpine-sdk doas apk install alpine-sdk Configure your Signing Key once with abuild-keygen -a -i

Create a couple of directories in your home directory: mkdir -p ~/alpine-build/emptyepsilon Create a file and save it as ~/alpine-build/emptyepsilon/APKBUILD with the contents below.

# Contributor:
# Maintainer:
pkgname=emptyepsilon
## Change pkgver to the latest release version
pkgver=2022.10.28  
pkgrel=0
pkgdesc="Starship Bridge Simulator game"
url="https://github.com/daid/EmptyEpsilon"
## build for all but s390x - no 3D GPU
arch="all !s390x"
license="GPL-2.0-only"
depends="sdl2"
makedepends="
  pkgconf
  sdl2
  sdl2-dev
  opus-dev
  freetype-dev
  cmake
  ninja
  build-base 
  "
checkdepends=""
install=""
subpackages="" 
source="
  EE-${pkgver}.tar.gz::https://github.com/daid/EmptyEpsilon/archive/refs/tags/EE-${pkgver}.tar.gz
  SP-${pkgver}.tar.gz::https://github.com/daid/SeriousProton/archive/refs/tags/EE-${pkgver}.tar.gz
"
builddir="$srcdir/"

prepare() {
    default_prepare
}

build() {
    cd EmptyEpsilon-EE-${pkgver}
        ## Scripting this here as it has to be updated for every new $pkgver instead of updating a .patch for every update - just change the $pkgver at top
        echo set\(PROJECT_VERSION ${pkgver}\) > version.cmake
        echo set\(PROJECT_VERSION_MAJOR $(echo ${pkgver} | cut -d'.' -f1)\) >> version.cmake
        echo set\(PROJECT_VERSION_MINOR $(echo ${pkgver} | cut -d'.' -f2)\) >> version.cmake
        echo set\(PROJECT_VERSION_PATCH $(echo ${pkgver} | cut -d'.' -f3)\) >> version.cmake

    mkdir _build
    cd _build
    cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX:PATH=/usr -DSERIOUS_PROTON_DIR=$PWD/../../SeriousProton-EE-${pkgver}/ -DCMAKE_PROJECT_EmptyEpsilon_INCLUDE=./version.cmake
        ninja
}

check() {
    # Replace with proper check command(s)
    :
}

package() {
    cd EmptyEpsilon-EE-${pkgver}/_build
    DESTDIR="$pkgdir" ninja install
}

sha512sums="
"

To update the checksums in the APKBUILD file, run abuild checksum. Only needs to be ran once per EE version. This will need to be ran again if the version in pkgver is changed To Build: run abuild -r

If it compiles successfully you should have a EmptyEpsilon APK file in your home directory at _~/packages/alpine-build/x8664/emptyepsilon-2022.10.28-r0.apk Install it with: doas apk add ~/packages/alpine-build/x86_64/emptyepsilon-2022.10.28-r0.apk

There should be a Icon in your Applications menu (or wherever your Window Manager keeps your Icons for application launcher) The binary for EE is located at /usr/bin/EmptyEpsilon

kwadroke commented 1 year ago

Hopefully I didn't miss anything. Let me know if you still have issues. And sorry it took so long to get this posted. I'll be updating the wiki with these instructions later on.

daid commented 1 year ago

FYI: Listed license is slightly wrong. The code is GPLv2, but not all assets are. Common mistake, and most packaging systems have easy way to deal with this except for packing the assets in a 2nd package.

kwadroke commented 1 year ago

FYI: Listed license is slightly wrong. The code is GPLv2, but not all assets are. Common mistake, and most packaging systems have easy way to deal with this except for packing the assets in a 2nd package.

I'm aware of this. One of the reasons I haven't updated the Wiki yet. For self packaging & installing this should be fine for right this moment. Basically: it compiles; ship it. For inclusion into the Alpine Linux Repositories and to make it right: more work will need to be done to split it up into 2 (or more) sets of packages. It's possible the non-free assets may make it not able to be included in the Alpine Repos. I plan on eventually submitting it to the Repos once the package is split up and see if it can be added.

daid commented 1 year ago

You could put it with a "custom" license in the APKBUILD on the wiki, that would at least archive the instructions better.