Ticket #125 (closed bug: fixed)

Opened 5 years ago

Last modified 5 years ago

Parrot won't build on windows due to new assert stuff

Reported by: kjs Owned by: Infinoid
Priority: blocker Milestone:
Component: core Version: trunk
Severity: medium Keywords:
Cc: parrot-dev@… Language:
Patch status: new Platform: win32

Description

The recent updates with parrot assert stuff prevents parrot from building on windows: (Revision: r34868)

"Compiling with:" xx.c cl -I.\include -nologo -GF -W4 -MD -Zi -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -DPRIV LIB_LAST_IN_INC -D_CRT_SECURE_NO_DEPRECATE -DHASATTRIBUTE_DEPRECATED -wd4101 -DHASATTRIBUTE_NORETURN -wd4101 -Zi -wd4127

-wd4054 -wd4310 -DHAS_JIT -DI386 -I. -Fo xx.obj -c xx.c

src\string.c G:\cygwin\home\Kramer\parrot1\include\parrot/exceptions.h(283) : warning C4431: missing type specifier - int assumed. No te: C no longer supports default-int G:\cygwin\home\Kramer\parrot1\include\parrot/exceptions.h(283) : error C2054: expected '(' to follow 'inline' G:\cygwin\home\Kramer\parrot1\include\parrot/exceptions.h(285) : error C2085: '_PARROT_ASSERT_ARG' : not in formal param eter list G:\cygwin\home\Kramer\parrot1\include\parrot/exceptions.h(285) : error C2143: syntax error : missing ';' before '{' src\string.c(85) : warning C4013: '_PARROT_ASSERT_ARG' undefined; assuming extern returning int NMAKE : fatal error U1077: 'G:\Perl\bin\perl.exe' : return code '0x2' Stop.

kjs

Attachments

20090103.34877.parrot.txt Download (29.9 KB) - added by jkeenan 5 years ago.
'make' log showing failure on Darwin/ppc after assert_args branch merged into trunk
convert_to_a_macro-only_solution.patch Download (2.0 KB) - added by Infinoid 5 years ago.
updated patch with an extra set of parens, to solve an operator precedence issue (it built fine, but wasn't catching failures properly).

Change History

Changed 5 years ago by jkeenan

'make' log showing failure on Darwin/ppc after assert_args branch merged into trunk

follow-up: ↓ 3   Changed 5 years ago by jkeenan

The updates built fine for me on Linux, but broke 'make' on Darwin. See build log attached.

follow-up: ↓ 7   Changed 5 years ago by Infinoid

Ok, I wasn't aware "inline" wasn't C89. Here's a patch that converts the system to use only macros. I know it works on gcc, I am hoping it fixes things on msvc.

in reply to: ↑ 1 ; follow-up: ↓ 6   Changed 5 years ago by Infinoid

Replying to jkeenan:

The updates built fine for me on Linux, but broke 'make' on Darwin. See build log attached.

Thanks, looks like you have a different issue from kjs's MSVC issue.

It looks like the issue on darwin/ppc is that "make headerizer" hasn't been run recently on the ppc platform. Sorry, I should have realized that I can't test those files. I've backed out the ASSERT_ARGS changes for ppc and arm for now in r34890. This should get builds working again, though it may cause a failure in t/codingstd/c_arg_assert.t. Once headerizer has generated the assert macros, those changes can be reverted and life should be good.

  Changed 5 years ago by Infinoid

  • owner set to Infinoid

Changed 5 years ago by Infinoid

updated patch with an extra set of parens, to solve an operator precedence issue (it built fine, but wasn't catching failures properly).

  Changed 5 years ago by Infinoid

  • platform set to win32
  • patch set to new

in reply to: ↑ 3   Changed 5 years ago by jkeenan

Replying to Infinoid:

Replying to jkeenan:

Infinoid did some fixing which enabled me to once again complete 'make' on Darwin/PPC as of r34890':  http://smolder.plusthree.com/app/public_projects/report_details/11779

in reply to: ↑ 2   Changed 5 years ago by Infinoid

Replying to Infinoid:

Ok, I wasn't aware "inline" wasn't C89. Here's a patch that converts the system to use only macros. I know it works on gcc, I am hoping it fixes things on msvc.

I applied that change earlier today as r34896. It significantly simplifies (and in my mind, improves) the API, and I also think it has a good chance of fixing the build issue on MSVC; please try it and let me know either way.

  Changed 5 years ago by kjs

  • status changed from new to closed
  • resolution set to fixed

The issue has been resolved.

Note: See TracTickets for help on using tickets.