[packages/box64] new

atler atler at pld-linux.org
Sat Nov 6 22:38:42 CET 2021


commit 6ed9ae3f794bccdadf8c1228b1af26c805a4548e
Author: Jan Palus <atler at pld-linux.org>
Date:   Sat Nov 6 22:36:55 2021 +0100

    new

 box64.spec      | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++
 glibc2.34.patch | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 121 insertions(+)
---
diff --git a/box64.spec b/box64.spec
new file mode 100644
index 0000000..bc3bd6f
--- /dev/null
+++ b/box64.spec
@@ -0,0 +1,57 @@
+# Conditional build:
+%bcond_with	rk3326		# target Rockchip RK3326 device
+%bcond_with	rk3399		# target Rockchip RK3399 device
+%bcond_with	rpi4		# target Raspberry Pi 4
+%bcond_with	tegrax1		# target Tegra X1
+
+Summary:	Linux Userspace x86_64 Emulator
+Name:		box64
+Version:	0.1.4
+Release:	1
+License:	MIT
+Group:		Applications
+Source0:	https://github.com/ptitSeb/box64/archive/v%{version}/%{name}-%{version}.tar.gz
+# Source0-md5:	64d026a02f8e48b802cb321d430684e9
+Patch0:		glibc2.34.patch
+URL:		https://box86.org
+BuildRequires:	cmake >= 3.4
+BuildRequires:	python3
+BuildRequires:	rpmbuild(macros) >= 1.605
+ExclusiveArch:	aarch64
+BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%define		_noautostrip	.*x86_64.*
+
+%description
+Box64 lets you run x86_64 Linux programs (such as games) on non-x86_64
+Linux systems, like ARM (host system needs to be 64bit little-endian).
+
+%prep
+%setup -q
+%patch0 -p1
+
+%build
+%cmake -B build \
+	%{?with_rk3326:-DRK3326=ON} \
+	%{?with_rk3399:-DRK3399=ON} \
+	%{?with_rpi4:-DRPI4ARM64=ON} \
+	%{?with_tegrax1:-DTEGRAX1=ON}
+%{__make} -C build
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+%{__make} -C build install \
+	DESTDIR=$RPM_BUILD_ROOT
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(644,root,root,755)
+%doc docs/{CHANGELOG.md,README.md,USAGE.md}
+%{_sysconfdir}/binfmt.d/box64.conf
+%attr(755,root,root) %{_bindir}/box64
+%dir /usr/lib/x86_64-linux-gnu
+%attr(755,root,root) /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
+%attr(755,root,root) /usr/lib/x86_64-linux-gnu/libstdc++.so.6
diff --git a/glibc2.34.patch b/glibc2.34.patch
new file mode 100644
index 0000000..dfd0c3e
--- /dev/null
+++ b/glibc2.34.patch
@@ -0,0 +1,64 @@
+From b1d0dde0b428f5d08a821405e1c04fffe5e38c82 Mon Sep 17 00:00:00 2001
+From: ptitSeb <sebastien.chev at gmail.com>
+Date: Wed, 20 Oct 2021 22:54:42 +0200
+Subject: [PATCH] Proper fix for link issue on glibc 2.34+ (for #120)
+
+---
+ src/libtools/threads.c | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/src/libtools/threads.c b/src/libtools/threads.c
+index 3105211..8f94692 100755
+--- a/src/libtools/threads.c
++++ b/src/libtools/threads.c
+@@ -8,6 +8,7 @@
+ #include <errno.h>
+ #include <setjmp.h>
+ #include <sys/mman.h>
++#include <dlfcn.h>
+ 
+ #include "debug.h"
+ #include "box64context.h"
+@@ -28,8 +29,12 @@
+ #include "dynablock.h"
+ #endif
+ 
+-void _pthread_cleanup_push_defer(void* buffer, void* routine, void* arg);	// declare hidden functions
+-void _pthread_cleanup_pop_restore(void* buffer, int exec);
++//void _pthread_cleanup_push_defer(void* buffer, void* routine, void* arg);	// declare hidden functions
++//void _pthread_cleanup_pop_restore(void* buffer, int exec);
++typedef void (*vFppp_t)(void*, void*, void*);
++typedef void (*vFpi_t)(void*, int);
++static vFppp_t real_pthread_cleanup_push_defer = NULL;
++static vFpi_t real_pthread_cleanup_pop_restore = NULL;
+ void _pthread_cleanup_push(void* buffer, void* routine, void* arg);	// declare hidden functions
+ void _pthread_cleanup_pop(void* buffer, int exec);
+ 
+@@ -668,7 +673,7 @@ EXPORT int my_pthread_cond_wait(x64emu_t* emu, pthread_cond_t* cond, void* mutex
+ EXPORT void my__pthread_cleanup_push_defer(x64emu_t* emu, void* buffer, void* routine, void* arg)
+ {
+     (void)emu;
+-	_pthread_cleanup_push_defer(buffer, findcleanup_routineFct(routine), arg);
++	real_pthread_cleanup_push_defer(buffer, findcleanup_routineFct(routine), arg);
+ }
+ 
+ EXPORT void my__pthread_cleanup_push(x64emu_t* emu, void* buffer, void* routine, void* arg)
+@@ -680,7 +685,7 @@ EXPORT void my__pthread_cleanup_push(x64emu_t* emu, void* buffer, void* routine,
+ EXPORT void my__pthread_cleanup_pop_restore(x64emu_t* emu, void* buffer, int exec)
+ {
+     (void)emu;
+-	_pthread_cleanup_pop_restore(buffer, exec);
++	real_pthread_cleanup_pop_restore(buffer, exec);
+ }
+ 
+ EXPORT void my__pthread_cleanup_pop(x64emu_t* emu, void* buffer, int exec)
+@@ -1135,6 +1140,9 @@ emu_jmpbuf_t* GetJmpBuf()
+ 
+ void init_pthread_helper()
+ {
++	real_pthread_cleanup_push_defer = (vFppp_t)dlsym(NULL, "_pthread_cleanup_push_defer");
++	real_pthread_cleanup_pop_restore = (vFpi_t)dlsym(NULL, "_pthread_cleanup_pop_restore");
++
+ 	InitCancelThread();
+ 	pthread_key_create(&jmpbuf_key, emujmpbuf_destroy);
+ }
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/box64.git/commitdiff/6ed9ae3f794bccdadf8c1228b1af26c805a4548e



More information about the pld-cvs-commit mailing list