Coder Social home page Coder Social logo

macos-crossover-wine-cloud-builder's Introduction

MacOS CrossOver FOSS built from the Cloud

All Contributors

.github/workflows/build_monolithic.yml .github/workflows/build_monolithic.yml

Let's build FOSS CrossOver for macOS in the cloud! I found some gists and I asked myself why don't we use the cloud and the free open source builders to build this? Here it is.

How this works?

  1. See Github Actions
  2. See .github/workflows/build_monolithic.yml
  3. See build_local.sh

Is it working?

In principle yes, see the following image which is notepad.exe running inside wine on a macOS 10.15 machine: Notepad running in wine

Inspiration

I learned about Free and Open Source Software Code for CrossOver and found this gist.

Where to download builds? How can I run them?

Builds are currently available as artifacts from github actions. Simply go to the Actions tab, click the newest green run from the main branch, scroll down to the artifacts and select the version of your choice. See however also #25.

After downloading and unpacking the tarball, e. g. to the ./wine-cx folder, you need to remove the quarantine attribute using sudo xattr -r -d com.apple.quarantine wine-cx. Afterwards inside ./wine-cx/usr/local/bin you will find the wine32on64 and wine64 binaries.

Can I run the build locally?

It will only work if you're on macOS, but yes. Clone the project, read the scripts first, then feel free to run build_local.command 👍. The script is a copy of the steps done in the github action in .github/workflows/build_monolithic.yml. It contains some variables to allow for customizations.

We try to keep build_local.sh synchronized with the action, but sometimes might miss a step. In case of issues with the local build compare the script to the steps in .github/workflows/build_monolithic.yml and possibly open an issue.

Note, that this is an MIT repo. If you break something on your system doing so, it's your fault 😉

Can I contribute?

Definitely. Feel free to send PRs 🚀

References / Links / Possibly helpful resources

See for some technical details.

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Gabriel Le Breton

💻

Mathias

💻

Gcenx

💻

License

MIT © Gabriel Le Breton

macos-crossover-wine-cloud-builder's People

Contributors

allcontributors[bot] avatar dasmy avatar gableroux avatar gcenx avatar nmcc1212 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

macos-crossover-wine-cloud-builder's Issues

Unable to compile locally on Apple Silicon

Hi, trying to compile this locally on my Apple Silicon machine. I'm using the ./build_local script.

error: unable to create target: 'No available targets are compatible with triple "armv4t-apple-macosx10.14.0"'

This error happens when I try and compile wine64. Any ideas?

How to Run?

Possibly a noob question, but after "compiling" (as mentioned in README.md 🌚🌝),
how do I actually run it?
Should I just run wine-cx/usr/local/bin/wine64 path/to/windows/program?

If yes, then isn't it just wine? Where is crossover then?

Thanks.

Features to work on, DXVK & MoltenVK

There were problems attempting to compile the macOS DXVK sources so was skipped.
The custom DXVK also request a custom MoltenVK that fakes some missing extensions to make the custom DXVK happy.

Can't build wine32on64 on mac os 15

The step to build wine32on64 does not succeed.

  • environment:
  • crossover-21.0.0
  • version mac-os: 15.7

wrong pointer : `sources/wine/dlls/bcrypt/macos.c:54:1: error:
array size is negative
C_ASSERT( sizeof(struct key_data) <= sizeof(((struct key *)0)->private) );

/macos-crossover-wine-cloud-builder-main/sources/wine/include/winnt.h:394:51: note:
expanded from macro 'C_ASSERT'
#define C_ASSERT(e) extern void C_ASSERT(int [(e)?1:-1])
`

Tried with version 20.0.0 and can't compile too

Compiler cannot create executables

Hi, I am new here and on Mac OS in general. I recently came across the following error towards the end of the script build_local.sh:

configure: error: C compiler cannot create executables

which directed me to check the config.log file, which I am attaching here forthwith.
config.log

My guess is that Xcode/macOS doesn't allow unknown compilers to compile and create executables. Since this build is using it's own llvm and clang environment, could it be that Xcode doesn't like the same? Any help would be great. Me and my pals are very new to this new ecosystem we have adopted and would love some help/mentoring.

Thanks in advance.

Can we distribute free builds here?

There is probably something tricky in providing the builds. I'm not sure if it can be distributed freely here. If you know the answer, let me know.

wine32on64 doesn't compile on Monterey

I'll preface this issue by saying that I never worked with C in my life, so the errors are alien to me compared to some languages I am familiar with.

During wine32on64 compilation, make seems to error out on dlls/sane.ds/options.o due to a casting error

...
  -Werror=implicit-function-declaration -Werror=incompatible-function-pointer-types \
  -Werror=incompatible-pointer-types-discards-qualifiers -Werror=incompatible-pointer-types \
  -Werror=pointer-to-int-cast-truncates -Werror=pointer-to-int-cast \
  -Werror=int-to-pointer-cast-truncates -Werror=out-of-scope-function -Werror=pointer-arith \
  -Werror=pointer-type-mismatch -Werror=strict-prototypes \
  -Werror=tautological-constant-out-of-range-compare -g -O2 -Wno-implicit-function-declaration -Wno-deprecated-declarations -Wno-format -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
clang -mwine32 -mstorage-address-space=default -minterop64-32-thunk-prefix=wine -minterop64-32-cs32-name=wine_32on64_cs32 -minterop64-32-cs64-name=wine_32on64_cs64 -mstack64 -mdefault-address-space=ptr32 -mstorage-address-space=ptr32 -mno-stack64 -c -o dlls/sane.ds/options.o dlls/sane.ds/options.c \
  -ilocal dlls/sane.ds -ilocal include -I/usr/local/Cellar/sane-backends/1.0.32/include \
  -D__WINESRC__ -D_REENTRANT -fPIC -fasynchronous-unwind-tables -Wall -pipe -fcf-protection=none \
  -fno-stack-protector -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \
  -Wignored-qualifiers -Wno-pragma-pack -Wstrict-prototypes -Wtype-limits -Wvla -Wwrite-strings \
  -Wpointer-arith -gdwarf-2 -gstrict-dwarf -Werror=extra-tokens \
  -Werror=implicit-function-declaration -Werror=incompatible-function-pointer-types \
  -Werror=incompatible-pointer-types-discards-qualifiers -Werror=incompatible-pointer-types \
  -Werror=pointer-to-int-cast-truncates -Werror=pointer-to-int-cast \
  -Werror=int-to-pointer-cast-truncates -Werror=out-of-scope-function -Werror=pointer-arith \
  -Werror=pointer-type-mismatch -Werror=strict-prototypes \
  -Werror=tautological-constant-out-of-range-compare -g -O2 -Wno-implicit-function-declaration -Wno-deprecated-declarations -Wno-format -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

dlls/sane.ds/options.c:95:66: error: casting 'int *' to type '__storage32 void *' changes address space of pointer
    return psane_control_option(h, optno, SANE_ACTION_GET_VALUE, (void *) val, status);
                                                                 ^        ~~~
dlls/sane.ds/options.c:135:70: error: casting 'char *' to type '__storage32 void *' changes address space of pointer
        return psane_control_option(h, optno, SANE_ACTION_GET_VALUE, (void *) val, status);
                                                                     ^        ~~~
dlls/sane.ds/options.c:151:66: error: casting 'char *' to type '__storage32 void *' changes address space of pointer
    return psane_control_option(h, optno, SANE_ACTION_SET_VALUE, (void *) val, status);

A quick Google shows that this error can be resolved by passing a –cl-std=CL2.0 to clang, but I'm having difficulties figuring out where to use that build option.

https://www.intel.com/content/www/us/en/developer/articles/technical/the-generic-address-space-in-opencl-20.html

/dlls/bcrypt/macos.c:54:1: error: array size is negative

I'm trying to compile CrossOver 21.0 on a Mac 15.5. I keep getting this error:

i686-w64-mingw32-gcc -c -o dlls/browseui/aclsource.cross.o /Users/troy/Desktop/macos-crossover-cloud-build/sources/wine/dlls/browseui/aclsource.c
-I dlls/browseui -I /Users/troy/Desktop/macos-crossover-cloud-build/sources/wine/dlls/browseui -I
include -I /Users/troy/Desktop/macos-crossover-cloud-build/sources/wine/include -I
/Users/troy/Desktop/macos-crossover-cloud-build/sources/wine/include/msvcrt -D__WINESRC__ -D_UCRT
-DWINE_CROSS_PE -Wall -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body
-Wignored-qualifiers -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes -Wtype-limits
-Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op -Wabsolute-value
-fno-omit-frame-pointer -gdwarf-2 -gstrict-dwarf -g -O2
/Users/troy/Desktop/macos-crossover-cloud-build/sources/wine/dlls/bcrypt/macos.c:54:1: error: array size is negative
C_ASSERT( sizeof(struct key_data) <= sizeof(((struct key *)0)->private) );
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/troy/Desktop/macos-crossover-cloud-build/sources/wine/include/winnt.h:394:51: note: expanded from macro 'C_ASSERT'
#define C_ASSERT(e) extern void C_ASSERT(int [(e)?1:-1])
^~~~~~~~
1 error generated.
make: *** [dlls/bcrypt/macos.o] Error 1
make: *** Waiting for unfinished jobs....

bug

The Windows app cannot be opened after it is successfully installed

fatal error: too many errors emitted, stopping now [-ferror-limit=], errors in ../../../include/

job is failing at the very last step after 3h 37m 52s:
https://github.com/GabLeRoux/macos-crossover-cloud-build/runs/1590608055

Here are the few last lines of the failing build:

In file included from sysinfo.c:22:
../../../include/msvcrt/stdio.h:132:116: error: expected string literal in 'asm'
int    __cdecl _vsnprintf(char* HOSTPTR,size_t,const char* HOSTPTR,__ms_va_list) __attribute__((overloadable)) asm(__ASM_NAME("wine__vsnprintf_HOSTPTR"));
                                                                                                                   ^
../../../include/msvcrt/stdio.h:312:23: error: passing 'char * __ptr64' to parameter of type '__storage32 char *' changes address space of pointer
    return _vsnprintf(buffer,size,format,args);
                      ^~~~~~
../../../include/msvcrt/stdio.h:130:32: note: passing argument to parameter here
int    __cdecl _vsnprintf(char*,size_t,const char*,__ms_va_list);
                               ^
../../../include/msvcrt/stdio.h:312:35: error: passing 'const char * __ptr64' to parameter of type 'const __storage32 char *' changes address space of pointer
    return _vsnprintf(buffer,size,format,args);
                                  ^~~~~~
../../../include/msvcrt/stdio.h:130:51: note: passing argument to parameter here
int    __cdecl _vsnprintf(char*,size_t,const char*,__ms_va_list);
                                                  ^
sysinfo.c:56:28: error: passing 'unsigned short *' to parameter of type '__storage32 WCHAR *' (aka '__storage32 unsigned short *') changes address space of pointer
    ret = GetComputerNameW(name, &name_size);
                           ^~~~
../../../include/winbase.h:2106:54: note: passing argument to parameter here
WINBASEAPI BOOL        WINAPI GetComputerNameW(LPWSTR,LPDWORD);
                                                     ^
sysinfo.c:56:34: error: passing 'ULONG *' (aka 'latent-__storage32 unsigned int *') to parameter of type '__storage32 unsigned int *' changes address space of pointer
    ret = GetComputerNameW(name, &name_size);
                                 ^~~~~~~~~~
../../../include/winbase.h:2106:62: note: passing argument to parameter here
WINBASEAPI BOOL        WINAPI GetComputerNameW(LPWSTR,LPDWORD);
                                                             ^
sysinfo.c:65:56: error: passing 'unsigned short *' to parameter of type '__storage32 WCHAR *' (aka '__storage32 unsigned short *') changes address space of pointer
    ret = GetComputerObjectNameW(NameFullyQualifiedDN, buf, &size);
                                                       ^~~
../../../include/secext.h:45:68: note: passing argument to parameter here
BOOLEAN WINAPI GetComputerObjectNameW( EXTENDED_NAME_FORMAT, LPWSTR, PULONG );
                                                                   ^
sysinfo.c:65:61: error: passing 'ULONG *' (aka 'latent-__storage32 unsigned int *') to parameter of type '__storage32 unsigned int *' changes address space of pointer
    ret = GetComputerObjectNameW(NameFullyQualifiedDN, buf, &size);
                                                            ^~~~~
../../../include/secext.h:45:77: note: passing argument to parameter here
BOOLEAN WINAPI GetComputerObjectNameW( EXTENDED_NAME_FORMAT, LPWSTR, PULONG );
                                                                            ^
sysinfo.c:71:20: error: passing 'unsigned short *' to parameter of type 'const __storage32 void *' changes address space of pointer
        ok(!memcmp(buf, cnW, sizeof(cnW)), "got %s\n", wine_dbgstr_w(buf));
                   ^~~
../../../include/msvcrt/string.h:36:35: note: passing argument to parameter here
int     __cdecl memcmp(const void*,const void*,size_t);
                                  ^
sysinfo.c:72:20: error: passing 'unsigned short *' to parameter of type 'const __storage32 void *' changes address space of pointer
        ok(!memcmp(buf + 3, name, name_size), "got %s (name_size = %u)\n", wine_dbgstr_w(buf), name_size);
                   ^~~~~~~
../../../include/msvcrt/string.h:36:35: note: passing argument to parameter here
int     __cdecl memcmp(const void*,const void*,size_t);
                                  ^
sysinfo.c:72:29: error: passing 'unsigned short *' to parameter of type 'const __storage32 void *' changes address space of pointer
        ok(!memcmp(buf + 3, name, name_size), "got %s (name_size = %u)\n", wine_dbgstr_w(buf), name_size);
                            ^~~~
../../../include/msvcrt/string.h:36:47: note: passing argument to parameter here
int     __cdecl memcmp(const void*,const void*,size_t);
                                              ^
sysinfo.c:73:21: error: passing 'unsigned short *' to parameter of type 'const __storage32 WCHAR *' (aka 'const __storage32 unsigned short *') changes address space of pointer
        p = strchrW(buf, ',');
                    ^~~
sysinfo.c:36:36: note: passing argument to parameter 'str' here
static WCHAR *strchrW(const WCHAR *str, WCHAR ch)
                                   ^
sysinfo.c:78:86: error: casting '__storage32 IADsADSystemInfo **' (aka '__storage32 struct IADsADSystemInfo **') to type '__storage32 void *__storage32 *' changes address space of pointer
    hr = CoCreateInstance(&CLSID_ADSystemInfo, 0, CLSCTX_ALL, &IID_IADsADSystemInfo, (void **)&sysinfo);
                                                                                     ^        ~~~~~~~~
sysinfo.c:81:53: error: passing 'BSTR *' (aka '__storage32 unsigned short **') to parameter of type '__storage32 BSTR *' (aka '__storage32 unsigned short *__storage32 *') changes address space of pointer
    hr = IADsADSystemInfo_get_ComputerName(sysinfo, &bstr);
                                                    ^~~~~
../../../include/iads.h:2960:91: note: passing argument to parameter 'retval' here
static FORCEINLINE HRESULT IADsADSystemInfo_get_ComputerName(IADsADSystemInfo* This,BSTR *retval) {
                                                                                          ^
sysinfo.c:85:28: error: passing 'unsigned short *' to parameter of type 'const __storage32 WCHAR *' (aka 'const __storage32 unsigned short *') changes address space of pointer
        ok(!lstrcmpW(bstr, buf), "got %s, expected %s\n", wine_dbgstr_w(bstr), wine_dbgstr_w(buf));
                           ^~~
../../../include/winbase.h:2798:55: note: passing argument to parameter here
WINBASEAPI INT         WINAPI lstrcmpW(LPCWSTR,LPCWSTR);
                                                      ^
sysinfo.c:106:24: error: passing 'unsigned short *' to parameter of type '__storage32 WCHAR *' (aka '__storage32 unsigned short *') changes address space of pointer
    ret = GetUserNameW(name, &name_size);
                       ^~~~
../../../include/winbase.h:2313:50: note: passing argument to parameter here
WINADVAPI  BOOL        WINAPI GetUserNameW(LPWSTR,LPDWORD);
                                                 ^
sysinfo.c:106:30: error: passing 'ULONG *' (aka 'latent-__storage32 unsigned int *') to parameter of type '__storage32 unsigned int *' changes address space of pointer
    ret = GetUserNameW(name, &name_size);
                             ^~~~~~~~~~
../../../include/winbase.h:2313:58: note: passing argument to parameter here
WINADVAPI  BOOL        WINAPI GetUserNameW(LPWSTR,LPDWORD);
                                                         ^
sysinfo.c:115:48: error: passing 'unsigned short *' to parameter of type '__storage32 WCHAR *' (aka '__storage32 unsigned short *') changes address space of pointer
    ret = GetUserNameExW(NameFullyQualifiedDN, buf, &size);
                                               ^~~
../../../include/secext.h:49:60: note: passing argument to parameter here
BOOLEAN WINAPI GetUserNameExW( EXTENDED_NAME_FORMAT, LPWSTR, PULONG );
                                                           ^
sysinfo.c:115:53: error: passing 'ULONG *' (aka 'latent-__storage32 unsigned int *') to parameter of type '__storage32 unsigned int *' changes address space of pointer
    ret = GetUserNameExW(NameFullyQualifiedDN, buf, &size);
                                                    ^~~~~
../../../include/secext.h:49:69: note: passing argument to parameter here
BOOLEAN WINAPI GetUserNameExW( EXTENDED_NAME_FORMAT, LPWSTR, PULONG );
                                                                    ^
sysinfo.c:121:20: error: passing 'unsigned short *' to parameter of type 'const __storage32 void *' changes address space of pointer
        ok(!memcmp(buf, cnW, sizeof(cnW)), "got %s\n", wine_dbgstr_w(buf));
                   ^~~
../../../include/msvcrt/string.h:36:35: note: passing argument to parameter here
int     __cdecl memcmp(const void*,const void*,size_t);
                                  ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[1]: *** [sysinfo.o] Error 1
make: *** [dlls/adsldp/tests] Error 2
Error: Process completed with exit code 2.

I'm not sure what's causing this 💥

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.