-
-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Co-authored-by: kawanakaiku <[email protected]>
- Loading branch information
1 parent
5d69c85
commit 407939c
Showing
7 changed files
with
386 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
diff -uNr a/dlls/crypt32/unixlib.c b/dlls/crypt32/unixlib.c | ||
--- a/dlls/crypt32/unixlib.c | ||
+++ b/dlls/crypt32/unixlib.c | ||
@@ -619,6 +619,7 @@ | ||
"/usr/local/share/certs/", | ||
"/etc/sfw/openssl/certs", | ||
"/etc/security/cacerts", /* Android */ | ||
+ "@TERMUX_PREFIX@/etc/tls" /* Termux */ | ||
}; | ||
|
||
static void load_root_certs(void) | ||
diff -uNr a/dlls/dbghelp/macho_module.c b/dlls/dbghelp/macho_module.c | ||
--- a/dlls/dbghelp/macho_module.c | ||
+++ b/dlls/dbghelp/macho_module.c | ||
@@ -1578,7 +1578,7 @@ | ||
{ | ||
const WCHAR* fallback = process_getenv(pcs, L"DYLD_FALLBACK_LIBRARY_PATH"); | ||
if (!fallback) | ||
- fallback = L"/usr/local/lib:/lib:/usr/lib"; | ||
+ fallback = L"@TERMUX_PREFIX@/lib:/usr/local/lib:/lib:/usr/lib"; | ||
ret = search_unix_path(p, fallback, macho_load_file_cb, &load_params); | ||
} | ||
if (!ret && p == filename) | ||
diff -uNr a/dlls/dbghelp/module.c b/dlls/dbghelp/module.c | ||
--- a/dlls/dbghelp/module.c | ||
+++ b/dlls/dbghelp/module.c | ||
@@ -671,10 +671,10 @@ | ||
fmap_link = HeapAlloc(GetProcessHeap(), 0, sizeof(*fmap_link)); | ||
if (!fmap_link) return NULL; | ||
|
||
- p = malloc(sizeof(L"/usr/lib/debug/.build-id/") + | ||
+ p = malloc(sizeof(L"@TERMUX_PREFIX@//lib/debug/.build-id/") + | ||
(idlen * 2 + 1) * sizeof(WCHAR) + sizeof(L".debug")); | ||
if (!p) goto fail; | ||
- wcscpy(p, L"/usr/lib/debug/.build-id/"); | ||
+ wcscpy(p, L"@TERMUX_PREFIX@//lib/debug/.build-id/"); | ||
z = p + wcslen(p); | ||
if (idlen) | ||
{ | ||
@@ -778,7 +778,7 @@ | ||
if (!ret) | ||
{ | ||
dst = HeapAlloc(GetProcessHeap(), 0, | ||
- sizeof(L"/usr/lib/debug/.build-id/") + (3 + filename_len + idlen * 2) * sizeof(WCHAR)); | ||
+ sizeof(L"@TERMUX_PREFIX@/lib/debug/.build-id/") + (3 + filename_len + idlen * 2) * sizeof(WCHAR)); | ||
if (dst) | ||
{ | ||
WCHAR* p; | ||
@@ -788,7 +788,7 @@ | ||
* where the alternate file is... | ||
* so try both | ||
*/ | ||
- p = memcpy(dst, L"/usr/lib/debug/.build-id/", sizeof(L"/usr/lib/debug/.build-id/")); | ||
+ p = memcpy(dst, L"@TERMUX_PREFIX@/lib/debug/.build-id/", sizeof(L"@TERMUX_PREFIX@/lib/debug/.build-id/")); | ||
p += wcslen(dst); | ||
MultiByteToWideChar(CP_UNIXCP, 0, data, -1, p, filename_len); | ||
ret = image_check_debug_link_gnu_id(dst, fmap_link, id, idlen); | ||
diff -uNr a/dlls/msvcrt/tests/environ.c b/dlls/msvcrt/tests/environ.c | ||
--- a/dlls/msvcrt/tests/environ.c | ||
+++ b/dlls/msvcrt/tests/environ.c | ||
@@ -41,7 +41,8 @@ | ||
"/lib/mingw32/3.4.2/;" | ||
"/lib/;" | ||
"/usr/lib/mingw32/3.4.2/;" | ||
- "/usr/lib/"; | ||
+ "/usr/lib/;" | ||
+ "@TERMUX_PREFIX@/lib/"; | ||
|
||
static char ***(__cdecl *p__p__environ)(void); | ||
static WCHAR ***(__cdecl *p__p__wenviron)(void); | ||
diff -uNr a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c | ||
--- a/dlls/ntdll/unix/server.c | ||
+++ b/dlls/ntdll/unix/server.c | ||
@@ -1257,10 +1257,10 @@ | ||
else | ||
snprintf( tmp + p, sizeof(tmp) - p, "%lx", (unsigned long)ino ); | ||
|
||
-#ifdef __ANDROID__ /* there's no /tmp dir on Android */ | ||
+#if defined(__ANDROID__) && ! defined(__TERMUX__) /* there's no /tmp dir on Android */ | ||
asprintf( &dir, "%s/.wineserver/server-%s", config_dir, tmp ); | ||
#else | ||
- asprintf( &dir, "/tmp/.wine-%u/server-%s", getuid(), tmp ); | ||
+ asprintf( &dir, "@TERMUX_PREFIX@/tmp/.wine-%u/server-%s", getuid(), tmp ); | ||
#endif | ||
return dir; | ||
} | ||
diff -uNr a/programs/winebrowser/main.c b/programs/winebrowser/main.c | ||
--- a/programs/winebrowser/main.c | ||
+++ b/programs/winebrowser/main.c | ||
@@ -116,6 +116,7 @@ | ||
{ | ||
static const WCHAR defaultbrowsers[] = | ||
L"xdg-open\0" | ||
+ "@TERMUX_PREFIX@/bin/open\0" | ||
"/usr/bin/open\0" | ||
"firefox\0" | ||
"konqueror\0" | ||
@@ -141,7 +142,8 @@ | ||
static int open_mailto_url( const WCHAR *url ) | ||
{ | ||
static const WCHAR defaultmailers[] = | ||
- L"/usr/bin/open\0" | ||
+ L"@TERMUX_PREFIX@/bin/open" | ||
+ "/usr/bin/open\0" | ||
"xdg-email\0" | ||
"mozilla-thunderbird\0" | ||
"thunderbird\0" | ||
diff -uNr a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c | ||
--- a/programs/winemenubuilder/winemenubuilder.c | ||
+++ b/programs/winemenubuilder/winemenubuilder.c | ||
@@ -1708,7 +1708,7 @@ | ||
if (_wgetenv( L"XDG_DATA_DIRS" )) | ||
dirs = xwcsdup( _wgetenv( L"XDG_DATA_DIRS" )); | ||
else | ||
- dirs = xwcsdup( L"/usr/local/share/:/usr/share/" ); | ||
+ dirs = xwcsdup( L"@TERMUX_PREFIX@/share:/usr/local/share/:/usr/share/" ); | ||
|
||
ret = add_mimes(xdg_data_dir, mime_types); | ||
if (ret) | ||
diff -uNr a/server/request.c b/server/request.c | ||
--- a/server/request.c | ||
+++ b/server/request.c | ||
@@ -657,15 +657,15 @@ | ||
|
||
/* create the base directory if needed */ | ||
|
||
-#ifdef __ANDROID__ /* there's no /tmp dir on Android */ | ||
+#if defined(__ANDROID__) && ! defined(__TERMUX__) /* there's no /tmp dir on Android */ | ||
len += strlen( config_dir ) + sizeof("/.wineserver"); | ||
if (!(server_dir = malloc( len ))) fatal_error( "out of memory\n" ); | ||
strcpy( server_dir, config_dir ); | ||
strcat( server_dir, "/.wineserver" ); | ||
#else | ||
- len += sizeof("/tmp/.wine-") + 12; | ||
+ len += sizeof("@TERMUX_PREFIX@/tmp/.wine-") + 12; | ||
if (!(server_dir = malloc( len ))) fatal_error( "out of memory\n" ); | ||
- sprintf( server_dir, "/tmp/.wine-%u", getuid() ); | ||
+ sprintf( server_dir, "@TERMUX_PREFIX@/tmp/.wine-%u", getuid() ); | ||
#endif | ||
create_dir( server_dir, &st2 ); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
diff -uNr a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c | ||
--- a/dlls/ntdll/unix/loader.c | ||
+++ b/dlls/ntdll/unix/loader.c | ||
@@ -74,7 +74,7 @@ | ||
# define _POSIX_SPAWN_DISABLE_ASLR 0x0100 | ||
# endif | ||
#endif | ||
-#ifdef __ANDROID__ | ||
+#if defined(__ANDROID__) && ! defined(__TERMUX__) | ||
# include <jni.h> | ||
#endif | ||
|
||
@@ -622,7 +622,7 @@ | ||
if (!(build_dir = remove_tail( ntdll_dir, "/dlls/ntdll" ))) | ||
{ | ||
if (!(dll_dir = remove_tail( ntdll_dir, so_dir ))) dll_dir = ntdll_dir; | ||
-#if (defined(__linux__) && !defined(__ANDROID__)) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) | ||
+#if (defined(__linux__) && !(defined(__ANDROID__) && ! defined(__TERMUX__))) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) | ||
bin_dir = realpath_dirname( "/proc/self/exe" ); | ||
#elif defined (__FreeBSD__) || defined(__DragonFly__) | ||
{ | ||
@@ -2108,7 +2108,7 @@ | ||
server_init_process_done(); | ||
} | ||
|
||
-#ifdef __ANDROID__ | ||
+#if defined(__ANDROID__) && ! defined(__TERMUX__) | ||
|
||
#ifndef WINE_JAVA_CLASS | ||
#define WINE_JAVA_CLASS "org/winehq/wine/WineActivity" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
--- a/dlls/ntdll/unix/socket.c | ||
+++ b/dlls/ntdll/unix/socket.c | ||
@@ -54,7 +54,7 @@ | ||
# include <linux/types.h> | ||
# endif | ||
# include <linux/ipx.h> | ||
-# ifdef SOL_IPX | ||
+# if defined(SOL_IPX) && !defined(__ANDROID__) | ||
# define HAS_IPX | ||
# endif | ||
#endif | ||
--- a/dlls/ws2_32/unixlib.c | ||
+++ b/dlls/ws2_32/unixlib.c | ||
# include <linux/types.h> | ||
# endif | ||
# include <linux/ipx.h> | ||
-# ifdef SOL_IPX | ||
+# if defined(SOL_IPX) && !defined(__ANDROID__) | ||
# define HAS_IPX | ||
# endif | ||
#endif | ||
--- a/server/sock.c | ||
+++ b/server/sock.c | ||
@@ -71,7 +71,7 @@ | ||
# include <linux/types.h> | ||
# endif | ||
# include <linux/ipx.h> | ||
-# ifdef SOL_IPX | ||
+# if defined(SOL_IPX) && !defined(__ANDROID__) | ||
# define HAS_IPX | ||
# endif | ||
#endif |
21 changes: 21 additions & 0 deletions
21
x11-packages/wine-stable/0004-no-pthread_mutexattr_setprotocol.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
`pthread_mutexattr_setprotocol` is introduced in Android 28. | ||
|
||
--- a/dlls/winepulse.drv/pulse.c | ||
+++ b/dlls/winepulse.drv/pulse.c | ||
@@ -217,12 +217,16 @@ | ||
|
||
static NTSTATUS pulse_process_attach(void *args) | ||
{ | ||
+#ifdef __ANDROID__ | ||
+ if (1) | ||
+#else | ||
pthread_mutexattr_t attr; | ||
|
||
pthread_mutexattr_init(&attr); | ||
pthread_mutexattr_setprotocol(&attr, PTHREAD_PRIO_INHERIT); | ||
|
||
if (pthread_mutex_init(&pulse_mutex, &attr) != 0) | ||
+#endif | ||
pthread_mutex_init(&pulse_mutex, NULL); | ||
|
||
return STATUS_SUCCESS; |
21 changes: 21 additions & 0 deletions
21
x11-packages/wine-stable/9998-fix-winegcc-build-target.patch.beforehostbuild
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
--- a/tools/winegcc/winegcc.c.orig | ||
+++ b/tools/winegcc/winegcc.c | ||
@@ -325,8 +325,17 @@ | ||
{ | ||
if (opts->target_alias) | ||
{ | ||
+ if (strstr(opts->target_alias, "android")) { | ||
+ if (strstr(opts->target_alias, "arm")) { | ||
+ str = strmake( "%s24", "armv7a-linux-androideabi" ); | ||
+ } else { | ||
+ str = strmake( "%s24", opts->target_alias ); | ||
+ } | ||
+ } else { | ||
+ str = strmake( "%s", opts->target_alias ); | ||
+ } | ||
strarray_add( &ret, "-target" ); | ||
- strarray_add( &ret, opts->target_alias ); | ||
+ strarray_add( &ret, str ); | ||
} | ||
strarray_add( &ret, "-Wno-unused-command-line-argument" ); | ||
strarray_add( &ret, "-fuse-ld=lld" ); |
11 changes: 11 additions & 0 deletions
11
x11-packages/wine-stable/9999-fix-winebuild-as-type.patch.beforehostbuild
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
--- a/tools/winebuild/utils.c | ||
+++ b/tools/winebuild/utils.c | ||
@@ -293,7 +293,7 @@ | ||
struct strarray args = empty_strarray; | ||
const char *file; | ||
unsigned int i; | ||
- int using_cc = 0; | ||
+ int using_cc = 1; | ||
|
||
if (cc_command.count) | ||
{ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
TERMUX_PKG_HOMEPAGE=https://www.winehq.org/ | ||
TERMUX_PKG_DESCRIPTION="A compatibility layer for running Windows programs" | ||
TERMUX_PKG_LICENSE="LGPL-2.1" | ||
TERMUX_PKG_LICENSE_FILE="\ | ||
LICENSE | ||
LICENSE.OLD | ||
COPYING.LIB" | ||
TERMUX_PKG_MAINTAINER="@termux" | ||
TERMUX_PKG_VERSION=9.0 | ||
TERMUX_PKG_SRCURL=https://dl.winehq.org/wine/source/${TERMUX_PKG_VERSION:0:3}/wine-$TERMUX_PKG_VERSION.tar.xz | ||
TERMUX_PKG_SHA256=7cfd090a5395f5b76d95bb5defac8a312c8de4c070c1163b8b58da38330ca6ee | ||
TERMUX_PKG_DEPENDS="fontconfig, freetype, krb5, libandroid-spawn, libc++, libgmp, libgnutls, libxcb, libxcomposite, libxcursor, libxfixes, libxrender, mesa, opengl, pulseaudio, sdl2, vulkan-loader, xorg-xrandr" | ||
TERMUX_PKG_ANTI_BUILD_DEPENDS="vulkan-loader" | ||
TERMUX_PKG_BUILD_DEPENDS="libandroid-spawn-static, vulkan-loader-generic" | ||
TERMUX_PKG_NO_STATICSPLIT=true | ||
TERMUX_PKG_HOSTBUILD=true | ||
TERMUX_PKG_EXTRA_HOSTBUILD_CONFIGURE_ARGS=" | ||
--without-x | ||
--disable-tests | ||
" | ||
|
||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" | ||
enable_wineandroid_drv=no | ||
exec_prefix=$TERMUX_PREFIX | ||
--with-wine-tools=$TERMUX_PKG_HOSTBUILD_DIR | ||
--enable-nls | ||
--disable-tests | ||
--without-alsa | ||
--without-capi | ||
--without-coreaudio | ||
--without-cups | ||
--without-dbus | ||
--with-fontconfig | ||
--with-freetype | ||
--without-gettext | ||
--with-gettextpo=no | ||
--without-gphoto | ||
--with-gnutls | ||
--without-gstreamer | ||
--without-inotify | ||
--with-krb5 | ||
--with-mingw | ||
--without-netapi | ||
--without-opencl | ||
--with-opengl | ||
--with-osmesa | ||
--without-oss | ||
--without-pcap | ||
--with-pthread | ||
--with-pulse | ||
--without-sane | ||
--with-sdl | ||
--without-udev | ||
--without-unwind | ||
--without-usb | ||
--without-v4l2 | ||
--with-vulkan | ||
--with-xcomposite | ||
--with-xcursor | ||
--with-xfixes | ||
--without-xinerama | ||
--with-xinput | ||
--with-xinput2 | ||
--with-xrandr | ||
--with-xrender | ||
--without-xshape | ||
--without-xshm | ||
--without-xxf86vm | ||
" | ||
|
||
# Enable win64 on 64-bit arches. | ||
if [ "$TERMUX_ARCH_BITS" = 64 ]; then | ||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --enable-win64" | ||
fi | ||
|
||
# Enable new WoW64 support on x86_64. | ||
if [ "$TERMUX_ARCH" = "x86_64" ]; then | ||
TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" --enable-archs=i386,x86_64" | ||
fi | ||
|
||
TERMUX_PKG_BLACKLISTED_ARCHES="arm" | ||
|
||
_setup_llvm_mingw_toolchain() { | ||
# LLVM-mingw's version number must not be the same as the NDK's. | ||
local _llvm_mingw_version=16 | ||
local _version="20230614" | ||
local _url="https://github.com/mstorsjo/llvm-mingw/releases/download/$_version/llvm-mingw-$_version-ucrt-ubuntu-20.04-x86_64.tar.xz" | ||
local _path="$TERMUX_PKG_CACHEDIR/$(basename $_url)" | ||
local _sha256sum=9ae925f9b205a92318010a396170e69f74be179ff549200e8122d3845ca243b8 | ||
termux_download $_url $_path $_sha256sum | ||
local _extract_path="$TERMUX_PKG_CACHEDIR/llvm-mingw-toolchain-$_llvm_mingw_version" | ||
if [ ! -d "$_extract_path" ]; then | ||
mkdir -p "$_extract_path"-tmp | ||
tar -C "$_extract_path"-tmp --strip-component=1 -xf "$_path" | ||
mv "$_extract_path"-tmp "$_extract_path" | ||
fi | ||
export PATH="$PATH:$_extract_path/bin" | ||
} | ||
|
||
termux_step_host_build() { | ||
# Setup llvm-mingw toolchain | ||
_setup_llvm_mingw_toolchain | ||
|
||
# Make host wine-tools | ||
(unset sudo; sudo apt update; sudo apt install libfreetype-dev:i386 -yqq) | ||
"$TERMUX_PKG_SRCDIR/configure" ${TERMUX_PKG_EXTRA_HOSTBUILD_CONFIGURE_ARGS} | ||
make -j "$TERMUX_MAKE_PROCESSES" __tooldeps__ nls/all | ||
} | ||
|
||
termux_step_pre_configure() { | ||
# Setup llvm-mingw toolchain | ||
_setup_llvm_mingw_toolchain | ||
|
||
# Fix overoptimization | ||
CPPFLAGS="${CPPFLAGS/-Oz/}" | ||
CFLAGS="${CFLAGS/-Oz/}" | ||
CXXFLAGS="${CXXFLAGS/-Oz/}" | ||
|
||
# Disable hardening | ||
CPPFLAGS="${CPPFLAGS/-fstack-protector-strong/}" | ||
CFLAGS="${CFLAGS/-fstack-protector-strong/}" | ||
CXXFLAGS="${CXXFLAGS/-fstack-protector-strong/}" | ||
LDFLAGS="${LDFLAGS/-Wl,-z,relro,-z,now/}" | ||
|
||
LDFLAGS+=" -landroid-spawn" | ||
} | ||
|
||
termux_step_make_install() { | ||
make -j $TERMUX_MAKE_PROCESSES install | ||
} |