Have you already tried using `raco exe` on Linux (i.e., using Racket
for Linux) but generating Windows executables?

  https://docs.racket-lang.org/raco/cross-system.html


Note that the "tarball" distributions at places like

   https://download.racket-lang.org/releases/7.7/

can be handy for setting up a <cross-dir>.


At Sat, 23 May 2020 17:39:58 +0200, Dominik Pantůček wrote:
> Hello Racketeers,
> 
> although I am developing Racket applications on Linux, our customers are
> usually running Windows. The good thing about Racket (and racket/gui
> especially) is that it requires virtually no OS-specific code for many -
> even non-trivial - tasks. However it is not that straightforward to
> produce binaries for different target platform.
> 
> Since last summer, we have been successfully using wine and Racket
> Windows builds to create 32bit binaries. However with Racket BC it was
> impossible to make it work with 64bit Windows builds. This is still the
> case even with latest snapshots and latest wine bundled with Ubuntu 20.04.
> 
> It turns out, that Racket CS works flawlessly under wine - including
> raco.exe exe. And with the latest patches[1] (thanks Matthew and
> DaLynX), it is possible to produce working 64bit Windows binaries from
> Racket programs on Linux using wine.
> 
> As my work is heavily CPU- and memory-bound, the 32bit address space
> limit was quite a limit.
> 
> However, once we tried to embed the build process into our
> (Gitlab-based) CI/CD, we failed miserably. Combining wine and Racket
> windows builds (7.7.0.6 snapshots from University of Utah) turned out to
> be a terrible nightmare under Docker.
> 
> On my workstation, it is absolutely straightforward:
> 
> rm -fr ~/.wine # Do not try this without backing up, if you need it
> wine racket-7.7.0.6-x86_64-win32-cs.exe
> 
> Now just click next next next with the installer and you are ready.
> Building a 64bit Windows binary is just a matter of single:
> 
> wine ~/.wine/drive_c/Program\ Files/Racket-7.7.0.6/raco.exe exe --gui
> --embed-dlls program.rkt
> 
> Of course, any packages needed have to be installed using raco.exe pkg
> in the same wine prefix.
> 
> But when you take the ~/.wine prefix and try to run it under docker,
> nothing works at all and tracing what is happening is extremely
> difficult with very cryptic results.
> 
> We ruled out X11 dependency - raco.exe works just fine after I `unset
> DISPLAY` on my workstation. And the results in Docker are no different
> with Xvfb installed and running. We got to a point where the raco.exe
> actually starts as a process under wine in Docker and it silently fails
> upon startup.
> 
> Any ideas where to look and what to test? I strongly assume Racket is
> not the root cause of the problem here, but rather the combination of
> wine under Docker. However, Racket sometimes uses an OS-specific
> trickery so I am sort of hoping that the described behavior rings a bell
> for someone :)
> 
> 
> Cheers,
> Dominik
> 
> [1]
> https://github.com/racket/racket/commit/61cefe693a047e22ca44752eafb9eb9e2e65409
> f

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/20200523102531.1f5%40sirmail.smtp.cs.utah.edu.

Reply via email to