Ticket #1873 (closed bug: fixed)

Opened 4 years ago

Last modified 4 years ago

Windows2000 version requirement impeded build

Reported by: jkeenan Owned by: jkeenan
Priority: normal Milestone: 2.11
Component: configure Version: 2.10.0
Severity: medium Keywords:
Cc: whiteknight fperrad Language:
Patch status: Platform: win32

Description

[Reported by Patrick Abi Salloum on parrot-dev. Can some people with access to Win32 take a look at this? --kid51]

I was trying to build parrot RELEASE_2_10_1-477-gfa56f62 on windows 7 for rakudo.

Starting from a clean windows 7 install, I downloaded git version 1.7.3.1.msysgit.0 and strawberry perl 5.10.1.3..

Tried automatically downloading and building parrot by doing

perl ./Configure.pl --gen-parrot

From the rakudo folder, parrot was downloaded fine but suring the build I got an error:

Minimum requirement for Parrot on Windows is Windows 2000 - 
might want to check windef.h

in config\gen\platform\win32\begin.c.

I removed the check if WINVER < Windows2000 from begin.c and the build went fine with no other problems.

Change History

follow-up: ↓ 2   Changed 4 years ago by ronaldws

I am partially responsible for the check in begin.c. There seems to be some differences between gcc configurations and include files between strawberry perl and mingw perl on it's own used with other Perls like ActiveState (my system). fperrad uses strawberry perl so I'm guessing the patch worked OK on his system. Might help to know what version of Strawberry Perl fperrad uses and what the WINVER in windef.h was on Patrick Abi Salloum's system. Anyway I will try to install strawberry perl 5.10.1.3 on one of my systems today and research further.

in reply to: ↑ 1   Changed 4 years ago by ronaldws

Replying to ronaldws:

and mingw perl

s/mingw perl/mingw c/

  Changed 4 years ago by NotFound

I'm using strawberry on Windows XP home and the check fails for me.

  Changed 4 years ago by ronaldws

I installed Strawberry Perl on one of my systems. The gcc compiler that was installed by Strawberry Perl is version 3.4.5 while the recent version of gcc that was installed by my separate install of Mingw is v 4.5. A quick look at

config/gen/platform/win32/sysmem.c

should explain why the two behave differently. There is an ifdef at the top of the file acting on gcc compilers with a version less than 4. I could sort of theoretically argue that the current Parrot isn't that far wrong in asking that you edit windef.h to tell your compiler to target up to date versions of Windows. Given the default gcc version choice for Strawberry Perl, the argument looks a bit impractical.

From a more practical point of view we don't really support Windows 95 and Windows NT 3.5x and don't actually expect many complaints from users running those systems. We should probably pull the check in begin.c and change sysmem.h approximately as described in the one line patch below:

-#if defined MINGW32 && GNUC < 4
+#ifndef MEMEMORYSTATUSEX

Ideally we should also add checks to parrot that abort both Configure.pl and the parrot runtime when run on obsolete versions of Windows. Again a practical solution might look different. I don't know if we actually get far enough on Win95/NT3.5 to make the code in sysmem.c a real problem. If we do then it may be just as easy to call the older GlobalMemoryStatus as it is to have it abort. I cannot quite tell that Parrot isn't already checking the Windows OS version but I grepped for the windows GetVersion and GetVersionEx calls and don't see anything that really matches.

There may be some judgement calls here other developers would prefer to make.

Ron

  Changed 4 years ago by fperrad

which gcc version comes with Strawberry Perl 5.10.1.3 ?

See history in TT#1846.

  Changed 4 years ago by jimmy

I'm using Strawberry Perl 5.10.1 gcc version 3.4.5 (mingw-vista special r3)

I got this error too.

  Changed 4 years ago by jimmy

fixed in f2af827fca, tests are welcome.

  Changed 4 years ago by jkeenan

  • owner set to jkeenan
  • status changed from new to assigned

We'll presume the problem has been fixed until we hear otherwise.

Thank you very much.

kid51

  Changed 4 years ago by jkeenan

  • status changed from assigned to closed
  • resolution set to fixed
Note: See TracTickets for help on using tickets.