[Ohrrpgce] SVN: james/12449 Docker: ohrrpgce-build-env-wine now has mingw64 and euphoria

James Paige Bob at hamsterrepublic.com
Mon Sep 20 10:10:31 PDT 2021


On Mon., Sep. 20, 2021, 11:07 a.m. Ralph Versteegen, <teeemcee at gmail.com>
wrote:

>
>
> On Mon, 20 Sept 2021 at 23:08, James Paige <Bob at hamsterrepublic.com>
> wrote:
>
>>
>>
>> On Sun., Sep. 19, 2021, 8:56 p.m. Ralph Versteegen, <teeemcee at gmail.com>
>> wrote:
>>
>>>
>>>
>>> On Mon, 20 Sept 2021 at 07:06, James Paige <Bob at hamsterrepublic.com>
>>> wrote:
>>>
>>>>
>>>> I made a bunch of fixes, and now *wine scons* gets further.
>>>>
>>>> Switching to 32 bit compiler packages instead of 64 bit helped a lot.
>>>>
>>>> Also, I did manage to get reloadbasic.py running with just "python3"
>>>> and not needing the whole path (The base image I am using sets up the PATH
>>>> environment variable inside wine incorrectly for python). I have not made
>>>> the change in the SConscript yet because i still need to upgrade from
>>>> python2 to python3 on the Windows nightly build machine
>>>>
>>>
>>> Did you try just 'python'? Works for me, and python is python 2.7 on my
>>> system.
>>>
>>
>> That would work on windows, but it breaks on modern Debian where python
>> doesn't exist anymore, only python2 and python3
>>
>
> Debian too? :(  I thought it was just ArchLinux that would do something
> so... hipster!
>
>
Haha! I just checked, and CentOS 8 does the same thing too.




>>
>>>
>>>> Right now the current error I am bumping into is:
>>>>
>>>>
>>>> *windres --input gicon.rc --output build\gicon.owindres: can't popen
>>>> `gcc -E -xc -DRC_INVOKED  gicon.rc': Bad file descriptor*
>>>>
>>>> I searched around for that error message, and found people suggesting
>>>> to add the *windres.exe *argument *--use-temp-file* but that didn't
>>>> help, it just changed the failure
>>>>
>>>>
>>>> *windres --use-temp-file --input gicon.rc --output
>>>> build\gicon.owindres: can't redirect stdout:
>>>> `C:\users\root\Temp\cca00360.irc': Bad file descriptor*
>>>>
>>>
>>> I could not find any search results at all for those errors while
>>> running windres under wine, though I did see them for running windres.exe
>>> on Windows. So I have no idea how to fix them other than not use
>>> windres.exe at all.
>>> You could use a linux build of windres instead of windres.exe.
>>> I also note the following comment in SConscript:
>>>
>>> # windres is part of mingw, and this is only used with linkgcc anyway.
>>> # FB includes GoRC.exe, but finding that file is too much trouble...
>>>
>>> The part about linkgcc is wrong (though we could avoid explicitly
>>> calling windres when using linkgcc=0, but it would be better not to do that
>>> anyway), but GoRC could be an option.
>>>
>>> If you spend much time trying to force wine into the build system then
>>> it would be easier to cross-compile to Windows with mxe, plus builds are as
>>> fast as they are on Unix. I can't imagine wine being very fast.
>>>
>>
>> Hmm! That is a possibility too. I had ignored mxe because it wasn't going
>> to work for euphoria, so I expected to need whine anyway for hspeak... But
>> maybe I actually can use the combination of both?
>>
>
> Using wine just for compiling/binding hspeak would certainly be possible.
> Also, it turns out that euphoria 4.1 *can* crosscompile, it is just
> missing a copy of the runtime eu.a library for Windows. (Eu 4.0.3, which I
> still usually use, also takes a -plat argument for cross-compiling, but I
> ran into several problems with it.) By downloading a Windows build of Eu
> 4.1, taking the eu.a from that, and telling a 64-bit linux euc build to use
> it I was able to get a working hspeak.exe!
> Unlike, FB, Euphoria seems to have no convention for where to store the
> library for each target, instead you need to manually pass in the path to
> the right runtime. But it's actually pretty painless, since the entire
> runtime is a single .a file, compared with FB which needs a whole folder of
> libraries and variants.
> I've added support to scons. Note that only euc works, not eubind (I
> haven't looked into whether that's possible), but scons calls eubind
> instead in debug builds, which needs to be overridden.
>
> To cross-compile hspeak.exe with mxe I did:
>
> export EUDIR=/home/ralph/local/euphoria-4.1.0-Linux-x64/
> export EUC=$EUDIR/bin/euc
> export PATH=/mnt/common/src/mxe/usr/bin:$PATH
> scons target=i686-w64-mingw32.static hspeak release=1
> eulib=tmp/euphoria-4.1.0-Windows-x86/bin/eu.a
>
> (The first two lines aren't necessary if Euphoria is installed globally)
>
>
Oh, cool! I will try this :D



>
>
>>
>> Wine does not seem slow. Probably not as fast as native, but not slow at
>> all, as far as I can tell
>>
>>
>>>
>>>>
>>>>
>>>> Too much fun :D
>>>>
>>>> I am also thinking ahead about how to do a docker build for Mac.
>>>> Running darwin in Docker is apparently possible, but sounds impractical. An
>>>> actual OSX inside KVM inside Docker is also apparently possible, but I feel
>>>> like that defeats the point of dockerizing it. I guess i'll look at
>>>> OSXcross more later.
>>>>
>>>> Of course, the real goal I am working towards is not Dockerizing all
>>>> the builds, it is really making Jenkins do all the builds-- so if
>>>> dockerizing a build is more work than setting up an always-on VM with a
>>>> Jenkins agent installed in it, then I just switch my approach :D
>>>>
>>>> ---
>>>> James
>>>>
>>>> On Sat, Sep 18, 2021 at 11:09 PM Ralph Versteegen <teeemcee at gmail.com>
>>>> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Sun, 19 Sept 2021 at 12:56, James Paige <Bob at hamsterrepublic.com>
>>>>> wrote:
>>>>>
>>>>>> So now not only does fbc work in the wine docker container, so does
>>>>>> mingw64 and euphoria
>>>>>>
>>>>>>  *wine scons hspeak* actually works, and produces a working
>>>>>> hspeak.exe (tested with *wine hspeak*)
>>>>>>
>>>>>> compiling game and custom fails though. I see two problems so far.
>>>>>>
>>>>>> First, when scons executes reloadbasic/reloadbasic.py on Windows,
>>>>>> this relies on the .py file type being associated with python, so scons
>>>>>> seems to be directly invoking *reloadbasic/reloadbasic.py* and this
>>>>>> works on Real windows because the filetype is associated with python.exe
>>>>>> but on Wine, this type of file association does not seem to work, even when
>>>>>> I make sure the association is set up with regedit.
>>>>>>
>>>>>> Editing the constructor for the rbasic_builder in Sconscript to *Builder
>>>>>> (action = ["C:\Python39\python.exe", [File('reloadbasic/reloadbasic.py'),
>>>>>> ...* does work and fixes the problem, so I just need to work out a
>>>>>> clean way to do that without breaking other platforms.
>>>>>>
>>>>>
>>>>> Can't you just invoke python or python3 instead of
>>>>> C:\Python39\python.exe?
>>>>> (I'm not sure whether we dropped python 2 support when you switched
>>>>> all the #! lines to python3; maybe python2 would still work if invoked
>>>>> explicitly, or maybe python3 will be called somewhere whether installed or
>>>>> not)
>>>>>
>>>>>
>>>>>>
>>>>>> The other error is this:
>>>>>>
>>>>>> os_windows.bas(107) error 20: Type mismatch, before ')' in 'dim fd as
>>>>>> integer = _open_osfhandle(cast(integer, fhandle), 0)'
>>>>>> os_windows.bas(714) warning 35(1): Mixing signed/unsigned operands
>>>>>> os_windows.bas(784) warning 35(1): Mixing signed/unsigned operands
>>>>>>
>>>>>> Which makes me think I might have a mismatch in my FreeBasic/mingw64
>>>>>> versions, but I don't really know yet, just a wild guess.
>>>>>>
>>>>>
>>>>> This error is thrown by fbc, so the mingw version isn't related.
>>>>> I suspect that maybe you're trying to compile for win64/x86_64? If fbc
>>>>> itself is a win64 .exe then it probably also defaults to win64 builds. If
>>>>> it has 32-bit libraries then it can compile for x86 with scons arch=32, and
>>>>> we should make that the default.
>>>>> [Note: win64 informally is used to mean 64-bit windows, but win32 does
>>>>> not mean 32-bit Windows, it means not-16-bit, and for example compilers
>>>>> such as FB define __FB_WIN32__ (or equivalent in C) on 64-bit Windows]
>>>>>
>>>>> I also see that you're downloading a 6-bit version of Euphoria for
>>>>> Windows, that should be 32-bit instead (I assume Euphoria can't
>>>>> crosscompile on Windows, just as it can't on Unix).
>>>>>
>>>>>
>>>>>>
>>>>>> ---
>>>>>> James
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Sat, Sep 18, 2021 at 6:55 PM <subversion at hamsterrepublic.com>
>>>>>> wrote:
>>>>>>
>>>>>>> james
>>>>>>> 2021-09-18 15:55:34 -0700 (Sat, 18 Sep 2021)
>>>>>>> 60
>>>>>>> Docker: ohrrpgce-build-env-wine now has mingw64 and euphoria
>>>>>>> ---
>>>>>>> U   wip/docker/ohrrpgce-build-env-wine/Dockerfile
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Ohrrpgce mailing list
>>>>>>> ohrrpgce at lists.motherhamster.org
>>>>>>>
>>>>>>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>>>>>>
>>>>>> _______________________________________________
>>>>>> Ohrrpgce mailing list
>>>>>> ohrrpgce at lists.motherhamster.org
>>>>>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>>>>>
>>>>> _______________________________________________
>>>>> Ohrrpgce mailing list
>>>>> ohrrpgce at lists.motherhamster.org
>>>>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>>>>
>>>> _______________________________________________
>>>> Ohrrpgce mailing list
>>>> ohrrpgce at lists.motherhamster.org
>>>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>>>
>>> _______________________________________________
>>> Ohrrpgce mailing list
>>> ohrrpgce at lists.motherhamster.org
>>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>>
>> _______________________________________________
>> Ohrrpgce mailing list
>> ohrrpgce at lists.motherhamster.org
>> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>>
> _______________________________________________
> Ohrrpgce mailing list
> ohrrpgce at lists.motherhamster.org
> http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.motherhamster.org/pipermail/ohrrpgce-motherhamster.org/attachments/20210920/bde1a066/attachment-0001.html>


More information about the Ohrrpgce mailing list