new package: wine-stable (#18866)
Co-authored-by: kawanakaiku <80381779+kawanakaiku@users.noreply.github.com>
This commit is contained in:
parent
5d69c8532d
commit
407939c3db
|
@ -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 );
|
||||
|
|
@ -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"
|
|
@ -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
|
|
@ -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;
|
|
@ -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" );
|
|
@ -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)
|
||||
{
|
|
@ -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
|
||||
}
|
Loading…
Reference in New Issue