setenv /x86 doesn't help - still the same. I've even tried setenv /x64 (along
with setting other x64 changes) - again the same error emerge.

Here's the output of the "set" command (attached set_output.txt).

I've tried to manually run def-check.pl and here's the output :

c:\Users\User\Downloads\krb5\src>cd include

c:\Users\User\Downloads\krb5\src\include>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 7896.

If I chnage command to use absolute paths, still the same output.

I accidentally found --with-system-et param in the official install documentation, not sure
if this is somehow related to this problem. Hmm, 'et' stands for error_table, but I'm not sure how
to enable/disable this param.

On Wed, Nov 26, 2014 at 5:57 AM, Benjamin Kaduk <kaduk@mit.edu> wrote:
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



--
Bratislav Stojanovic, M.Sc.