Ticket #1873 (closed bug: fixed)

Opened 11 years ago

Last modified 11 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


[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 and strawberry perl

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 11 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 on one of my systems today and research further.

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

Replying to ronaldws:

and mingw perl

s/mingw perl/mingw c/

  Changed 11 years ago by NotFound

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

  Changed 11 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


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

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.


  Changed 11 years ago by fperrad

which gcc version comes with Strawberry Perl ?

See history in TT#1846.

  Changed 11 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 11 years ago by jimmy

fixed in f2af827fca, tests are welcome.

  Changed 11 years ago by jkeenan

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

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

Thank you very much.


  Changed 11 years ago by jkeenan

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