lmi
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [lmi] fork failed: no error [464]


From: Boutin, Wendy
Subject: RE: [lmi] fork failed: no error [464]
Date: Thu, 11 May 2006 07:49:15 -0400

Greg Chicares wrote:
> 
> Using an ancient native msw port of ash for portability testing
> (it's the closest thing I've found to the original bourne shell),
> I ran into this problem. It occurs only when invoking 'wx-config'
> this way:
>   wx_config_libs     := $(shell $(wx_config_script) --libs)
> but not this way:
>   wx_config_libs     := $(shell sh -c "$(wx_config_script) --libs")

That change causes us to not compile skeleton. In 'workhorse.make'
I restored:

  wx_config_cxxflags := $(shell $(wx_config_script) --cxxflags)
  wx_config_libs     := $(shell $(wx_config_script) --libs)

and can now compile skeleton as expected. That's the only change we 
had to make to get this to work. I understand you were doing portability 
testing when you reported this issue on the mailing list, but I don't 
understand why you changed it and how your change can still work for 
you if you're using the same shell as us. It could be that I don't 
understand the portability aspect of this, but I don't feel this is
truly complete until we can understand what this change really is 
and why it made a difference.
 
> I would guess that it has something to do with other things in the
> environment, because I found that passing a definition with one
> character more or less makes the difference between success and
> failure:
> 
>   C:/lmi/src/skeleton[0]$make wx_config_check 
> build_type=so_test foo=w123456
>   Omitted from wx-config --cxxflags:
> 
>   Omitted from wx-config --libs:
>   -Wl,--subsystem,windows -mwindows

Reverting your change gives me the same output:

    c:/opt/lmi/src/skeleton[0]$make wx_config_check
    Omitted from wx-config --cxxflags:

    Omitted from wx-config --libs:
    -Wl,--subsystem,windows -mwindows
 
>   C:/lmi/src/skeleton[130]$make wx_config_check 
> build_type=so_test foo=w1234567
>   
> c:/wx20060323/wxWidgets/gcc342/lib/wx/config/msw-ansi-debug-2.
> 7: fork failed: no error [464]
>   make.EXE: *** [../build/skeleton/msw_generic/gcc/so_test] Error 130
> 
> Using 'make -d', and comparing other uses of make's $(shell)
> function, I saw a difference in the first parameter of
> CreateProcess():
> 
>   gcc_version = $(shell $(CXX) -dumpversion)
>   
> CreateProcess(C:\MinGW-20050120\bin\g++.exe,/MinGW-20050120//b
> in/g++ -dumpversion,...)
> 
>   wx_config_libs     := $(shell $(wx_config_script) --libs)
>   CreateProcess(NULL,sh 
> C:\wx20060323\wxWidgets\gcc342\wx-config --libs,...)
>   
> c:/wx20060323/wxWidgets/gcc342/lib/wx/config/msw-ansi-debug-2.
> 7: fork failed: no error [464]
> 
> whereas the rewritten $(shell) command above does pass a
> non-null first parameter:
> 
>   wx_config_libs     := $(shell sh -c "$(wx_config_script) --libs")
>   CreateProcess(C:\usr\bin\sh.exe,sh.exe -c "sh -c 
> \"/wx20060323/wxWidgets/gcc342/wx-config --libs\"",...)
> 
> It works, so I've committed this strange change to cvs. While I
> dislike such voodoo, I'm not inclined to spend more time on it
> unless this thing crawls out of its grave again.

This comment makes me think you were pretty apprehensive to making 
such a change; now I'd claim that this thing crawled out of its 
grave.

---------------------------------------------------------
This e-mail transmission may contain information that is proprietary, 
privileged and/or confidential and is intended exclusively for the person(s) to 
whom it is addressed. Any use, copying, retention or disclosure by any person 
other than the intended recipient or the intended recipient's designees is 
strictly prohibited. If you are not the intended recipient or their designee, 
please notify the sender immediately by return e-mail and delete all copies. 

---------------------------------------------------------





reply via email to

[Prev in Thread] Current Thread [Next in Thread]