[krbdev.mit.edu #8044] Re: [krb5] Unable to build under Windows (#235)

Benjamin Kaduk via RT rt-comment at krbdev.mit.edu
Wed Nov 26 02:19:25 EST 2014


On Tue, 25 Nov 2014, Bratislav Stojanovic wrote:

> Thanks for answering, but I'm still completely clueless. This time I've
> wiped out VS2013 and installed VS2010 (Ultimate) and tried
> again - still the same.

I was pretty clueless for a while, but staring at it for a bit, I have a
little bit of a better handle on what the messages mean, at least.

Note that the version of Wix is completely irrelevant here; WiX is not
used until step 9 when the installer is built.

The version of Visual Studio should also be irrelevant, as no actual
compiling is going on yet.  The only thing that might be relevant is if
some details of the environment in the shell are different.

> private-and-public-
> decls
> krb5\krb5.h
> k5-int.h
> krb5\clpreauth_plugin.h
>         1 file(s) copied.
>         perl -w .\../util/def-check.pl private-and-public-decls
> .\../lib/krb5_32.def
> *_error_table'* at .\../util/def-check.pl line 175, <GEN0> line 8448.

The particular error codes below are not very helpful; the above line is
where we're going to get traction.

This seems to be the truncation of the output of line 175 of def-check.pl:

die "Invalid function name: '$_'" if (!/^[A-Za-z0-9_]+$/);

The '<GEN0>' should correspond to the first file being processed, i.e.,
krb5.h.  I am not in front of my test VM right now, but the krb5.h in my
Unix build tree has near line 8448 this chunk:

  8449  #if !defined(_WIN32)
  8450  /* for compatibility with older versions... */
  8451  extern void initialize_krb5_error_table (void) /*@modifies internalState@*/;
  8452  #else
  8453  #define initialize_krb5_error_table()
  8454  #endif

Note that the not-_WIN32 case lacks a KRB5_CALLCONV specifier on the
declaration, which would cause the quoted perl error.

So, I am guessing that _WIN32 is for some reason not defined at some
point, and it should be.

First, it would be good to manually run the perl script over krb5.h and
see if the full output can be obtained.

Second, it would be good to check what the environment looks like in your
build shell (there's probably no need to paste the full output of 'set',
but some parts may be relevant).  I will try to look further into where
_WIN32 is defined in my (working) build.


> *NMAKE : fatal error U1077: 'C:\Strawberry\perl\bin\perl.EXE' : return code
> '0x19'*
> Stop.
> NMAKE : fatal error U1077: 'for' : return code '0x1'
> Stop.
>
[...]

> *vs cmd prompt* - tried to use VS command prompt instead of SDK 7.1 cmd -
> again the same error

With the SDK 7.1 cmd, I might try throwing another 'setenv.exe /x86'
invocation in there "just to be sure" -- I thought that setenv was run as
part of the startup for the SDK cmd, but could be wrong.

-Ben



More information about the krb5-bugs mailing list