[Ohrrpgce] SVN: james/12449 Docker: ohrrpgce-build-env-wine now has mingw64 and euphoria
James Paige
Bob at hamsterrepublic.com
Mon Sep 20 04:08:00 PDT 2021
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
>
>> 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?
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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.motherhamster.org/pipermail/ohrrpgce-motherhamster.org/attachments/20210920/2b32cb55/attachment-0001.html>
More information about the Ohrrpgce
mailing list