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

Ralph Versteegen teeemcee at gmail.com
Mon Sep 20 08:45:09 PDT 2021


On Tue, 21 Sept 2021 at 03:40, Ralph Versteegen <teeemcee at gmail.com> wrote:

>
>
> On Tue, 21 Sept 2021 at 03:06, 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!
>>
>>
>>>
>>>
>>>>
>>>>> 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
>>
>
> Maybe a EULIB envvar would be more convenient?
>
>>
>> (The first two lines aren't necessary if Euphoria is installed globally)
>>
>>
>>
>>
>>>
>>> Wine does not seem slow. Probably not as fast as native, but not slow at
>>> all, as far as I can tell
>>>
>>
> The reason I consider wine slow is mainly the painful start time of ~7s or
> more I see when running it for the first time, though warmed up it is <1s.
> But surprisingly I need to run it several times in a row on my (overloaded)
> desktop to fully warm it up, and if I wait just 5 seconds and then run it
> again, it takes several seconds again! Something is bizarrely wrong there,
> I have GBs of free/cache memory.
>

Yes, it is both overloaded (with hundreds of processes that got swapped to
disk days or weeks ago) and, momentarily, has free memory :)


>
>
>>
>>>
>>>>
>>>>>
>>>>>
>>>>> 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
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.motherhamster.org/pipermail/ohrrpgce-motherhamster.org/attachments/20210921/39720f51/attachment-0001.html>


More information about the Ohrrpgce mailing list