Tue Feb 21 09:32:44 2012: Request 75193 was acted upon.
Transaction: Ticket created by SHAY
       Queue: PAR-Packer
     Subject: [PATCH] Fix build on Win32/VC++
   Broken in: 1.012
    Severity: Important
       Owner: Nobody
  Requestors: s...@cpan.org
      Status: new
 Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=75193 >


The current version (1.012) of PAR-Packer does not build on Win32 with
VC++. There are two problems: myldr/boot.c attempts to include unistd.h
which VC++ does not provide (MinGW/gcc does, but VC++ should include
io.h for write() instead), and myldr/Makefile.PL wrongly uses $(CC)
rather than $(LD) to link boot.exe.

The attached patch fixes these problems.

There is still a warning (not an error that stops the build) from
myldr/mktmpdir.c which I'm not sure how best to solve:

myldr\mktmpdir.c(45) : warning C4013: 'getuid' undefined; assuming
extern returning int

The problem is that Win32/VC++ doeesn't have a getuid(), hence the
compiler's warning. The linker is happy, though, presumably because perl
provides a dummy function in win32/win32.c:

#define ROOT_UID ((uid_t)0)
uid_t getuid(void) { return ROOT_UID; }

but adding a declaration like

extern uid_t getuid(void);

to myldr/mktmpdir.h doesn't work at all.

Attachment: win32.patch
Description: Binary data

Reply via email to