void-linux / void-packages

The Void source packages collection
https://voidlinux.org
Other
2.6k stars 2.16k forks source link

Package request: box64 #49599

Open jaminW55 opened 8 months ago

jaminW55 commented 8 months ago

Package name

box64

Package homepage

https://github.com/ptitSeb/box64

Description

Box64 lets you run x86_64 Linux programs (such as games) on non-x86_64 Linux systems, like ARM, Termux, Android, and more.

Does the requested package meet the package requirements?

System, Compiled

Is the requested package released?

Yes

jaminW55 commented 8 months ago

Hello,

I have actually been trying to build this package to run on Musl in an attempt to bypass restrictions in running certain programs on Musl.

I have not managed to successfully build it on Musl, but I did manage to build it on Glibc.

A) If someone would please like to build and test this package on Glibc, I would most appreciate it. B) If anyone wouldn't mind looking into how to possibly build on Musl, if possible, I would also most appreciate it.

If the build passes all tests and requirements, please let me know and I will work to update my local void-packages repository and make a merge request to get this officially added to the repositories.

jaminW55 commented 8 months ago
# Template file for 'box64'
pkgname=box64
version=0.2.6
revision=1
build_style=cmake
hostmakedepends="cmake python3 git"
makedepends="libstdc++ gcc"
short_desc="Linux Userspace x86_64 Emulator with a twist"
maintainer="jaminW55 <jaminW@proton.me>"
license="MIT"
homepage="https://box64.org"
distfiles="https://github.com/ptitSeb/box64/archive/refs/tags/v${version}.tar.gz"
checksum=ef002041aeefec49efb9a2cb276ab4a99d048df0be06416b93b22e507e263f61
chrysos349 commented 8 months ago

I have not managed to successfully build it on Musl.

Nobody did. It's not supported. Read here - https://github.com/ptitSeb/box64/issues/998#issuecomment-1742037374 I found the answer. So can you next time ;-) !

fixed template (not tested) You will need specific builds for, e.g., rpi4, or rk3588. Generic aarch64 won't work for those. See all the supported platforms here.

# Template file for 'box64'
pkgname=box64
version=0.2.6
revision=1
build_style=cmake
configure_args="-DNOGIT=1 -DNO_LIB_INSTALL=1"
hostmakedepends="perl python3"
short_desc="Linux Userspace x86_64 Emulator with a twist"
maintainer="jaminW55 <jaminW@proton.me>"
license="MIT"
homepage="https://box86.org"
changelog="https://raw.githubusercontent.com/ptitSeb/box64/main/docs/CHANGELOG.md"
distfiles="https://github.com/ptitSeb/box64/archive/v${version}.tar.gz"
checksum=ef002041aeefec49efb9a2cb276ab4a99d048df0be06416b93b22e507e263f61
conf_files="/etc/box64.box64rc"
nopie=yes

case "$XBPS_TARGET_MACHINE" in
    aarch64) configure_args+=" -DARM_DYNAREC=ON"         ;;
    riscv64) configure_args+=" -DRV64=1"                 ;;
    x86_64)  configure_args+=" -DLD80BITS=1 -DNOALIGN=1" ;;
    *)       broken="platform not supported"             ;;
esac

do_install() {
    vbin build/box64
    vdoc docs/USAGE.md
    vdoc docs/X64WINE.md
    vconf system/box64.box64rc
    vlicense LICENSE
    pod2man --center "Manual" --release "box64 ${version}" \
        docs/box64.pod > box64.1
    vman box64.1
}

fix-pod.patch

diff --git a/docs/box64.pod b/docs/box64.pod
index 3da39c71a..489f158a4 100644
--- a/docs/box64.pod
+++ b/docs/box64.pod
@@ -481,4 +481,6 @@ script. yyyy needs to be a full path to a valid x86_64 version of bash
     * 1 : Launch `gdb` when a segfault, bus error or illegal instruction signal is trapped, attached to the offending process and go in an endless loop, waiting. When in gdb, you need to find the correct thread yourself (the one with `my_box64signalhandler` in is stack) then probably need to `finish` 1 or 2 functions (inside `usleep(..)`) and then you'll be in `my_box64signalhandler`, just before the printf of the Segfault message. Then simply  `set waiting=0` to exit the infinite loop.
     * 2 : Launch `gdbserver` when a segfault, bus error or illegal instruction signal is trapped, attached to the offending process, and go in an endless loop, waiting. Use `gdb /PATH/TO/box64` and then `target remote 127.0.0.1:1234` to connect to the gdbserver (or use actual IP if not on the machine). After that, the procedure is the same as with ` BOX64_JITGDB=1`. This mode can be usefullwhen programs redirect all console output to a file (like Unity3D Games)

+=back
+
 =cut
ahesford commented 8 months ago

If you're going to work on templates, please do so in a draft pull request, not as a series of comments in an issue.

jaminW55 commented 8 months ago

If you're going to work on templates, please do so in a draft pull request, not as a series of comments in an issue.

I'm pretty new to GH collaboration. Is there a similar project I could review as an example? I do have a local pull of the repo that I update. I'd like to follow whatever is accepted practice here.

I did read CONTRIBUTING.MD, I simply want to see how it should look when done properly is all.

jaminW55 commented 8 months ago

I have not managed to successfully build it on Musl.

Nobody did. It's not supported. Read here - ptitSeb/box64#998 (comment) I found the answer. So can you next time ;-) !

fixed template (not tested) You will need specific builds for, e.g., rpi4, or rk3588. Generic aarch64 won't work for those. See all the supported platforms here.

# Template file for 'box64'
pkgname=box64
version=0.2.6
revision=1
build_style=cmake
configure_args="-DNOGIT=1 -DNO_LIB_INSTALL=1"
hostmakedepends="perl python3"
short_desc="Linux Userspace x86_64 Emulator with a twist"
maintainer="jaminW55 <jaminW@proton.me>"
license="MIT"
homepage="https://box86.org"
changelog="https://raw.githubusercontent.com/ptitSeb/box64/main/docs/CHANGELOG.md"
distfiles="https://github.com/ptitSeb/box64/archive/v${version}.tar.gz"
checksum=ef002041aeefec49efb9a2cb276ab4a99d048df0be06416b93b22e507e263f61
conf_files="/etc/box64.box64rc"
nopie=yes

case "$XBPS_TARGET_MACHINE" in
  aarch64) configure_args+=" -DARM_DYNAREC=ON"         ;;
  riscv64) configure_args+=" -DRV64=1"                 ;;
  x86_64)  configure_args+=" -DLD80BITS=1 -DNOALIGN=1" ;;
  *)       broken="platform not supported"             ;;
esac

do_install() {
  vbin build/box64
  vdoc docs/USAGE.md
  vdoc docs/X64WINE.md
  vconf system/box64.box64rc
  vlicense LICENSE
  pod2man --center "Manual" --release "box64 ${version}" \
      docs/box64.pod > box64.1
  vman box64.1
}

fix-pod.patch


diff --git a/docs/box64.pod b/docs/box64.pod
index 3da39c71a..489f158a4 100644
--- a/docs/box64.pod
+++ b/docs/box64.pod
@@ -481,4 +481,6 @@ script. yyyy needs to be a full path to a valid x86_64 version of bash

WOW. I've not seen some of these options in other packages. I'll add to my glibC Chroot environment and give it some test runs before making any needed additions.

Thanks for the info as well!