Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: Fixing an XS based dist

by gellyfish (Monsignor)
on Aug 09, 2005 at 21:00 UTC ( #482430=note: print w/replies, xml ) Need Help??


in reply to Fixing an XS based dist

Don't worry about the missing lib error - this will happen on a number of OS - (I get it on Linux here).

Personally I think that would do something like this - but I can't test it right now:

--- UUID.h 2003-08-27 20:38:35.000000000 +0100 +++ UUID.h.new 2005-08-09 21:57:39.000000000 +0100 @@ -1,10 +1,15 @@ #if !defined __UUID_H__ # define __UUID_H__ +#if defined __CYGWIN__ || __MINGW32__ || WIN32 +# define USE_WIN32 +#endif #include <string.h> #include <stdio.h> #include <stdlib.h> -#include <unistd.h> +#ifndef WIN32 +# include <unistd.h> +#endif #include <time.h> #include "md5.h" --- UUID.xs 2003-08-27 20:38:35.000000000 +0100 +++ UUID.xs.new 2005-08-09 21:58:27.000000000 +0100 @@ -105,7 +105,7 @@ } static void get_system_time(uuid_time_t *uuid_time) { -#if defined __CYGWIN__ || __MINGW32__ +#if defined USE_WIN32 /* ULARGE_INTEGER time; */ LARGE_INTEGER time; @@ -129,7 +129,7 @@ static void get_random_info(unsigned char seed[16]) { MD5_CTX c; -#if defined __CYGWIN__ || __MINGW32__ +#if defined USE_WIN32 typedef struct { MEMORYSTATUS m; SYSTEM_INFO s; @@ -150,7 +150,7 @@ MD5Init(&c); -#if defined __CYGWIN__ || __MINGW32__ +#if defined USE_WIN32 GlobalMemoryStatus(&r.m); GetSystemInfo(&r.s); GetSystemTimeAsFileTime(&r.t);

/J\

Replies are listed 'Best First'.
Re^2: Fixing an XS based dist
by PodMaster (Abbot) on Aug 10, 2005 at 02:45 UTC
    Hmm. I checked, and I have compiled Data-UUID at one time, and my diff looks like
    diff -ubr Data-UUID-0.11/Makefile.PL myData-UUID-0.11/Makefile.PL --- Data-UUID-0.11/Makefile.PL 2003-08-27 12:38:36.000000000 -0700 +++ myData-UUID-0.11/Makefile.PL 2005-06-22 07:21:04.375000000 -070 +0 @@ -1,5 +1,7 @@ use ExtUtils::MakeMaker; use Config; +my $tmp = $ENV{TEMP}||$ENV{TMP}||"/var/tmp"; +$tmp =~ s~\\~/~g;; # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. @@ -52,14 +54,15 @@ my ($d, $m); # automate installations - as per Heath Malmstrom if(!$ENV{PERL_MM_USE_DEFAULT}) { - do { print "UUID state storage (/var/tmp): "; + do { print "UUID state storage ($tmp): "; } while !($d = <STDIN>, chop $d, -d $d || !$d); do { print "default umask (0007): "; } while !($m = <STDIN>, chop $m, ($m =~ /[0-7]{3}/) || !$m); } - chmod(0666, sprintf("%s/%s", $d||"/var/tmp", ".UUID_NODEID" +)); - chmod(0666, sprintf("%s/%s", $d||"/var/tmp", ".UUID_STATE") +); - return { 'DEFINE' => qq(-D_STDIR=\\").($d||"/var/tmp").qq(\\"). + chmod(0666, sprintf("%s/%s", $d||"$tmp", ".UUID_NODEID")); + chmod(0666, sprintf("%s/%s", $d||"$tmp", ".UUID_STATE")); + $d =~ s~\\~/~g; + return { 'DEFINE' => qq(-D_STDIR=\\").($d||"$tmp").'\\" '. qq( -D__$Config{osname}__). qq( -D_DEFAULT_UMASK=).($m||"0007")}; } diff -ubr Data-UUID-0.11/UUID.h myData-UUID-0.11/UUID.h --- Data-UUID-0.11/UUID.h 2003-08-27 12:38:36.000000000 -0700 +++ myData-UUID-0.11/UUID.h 2005-06-22 07:22:58.656250000 -0700 @@ -4,7 +4,9 @@ #include <string.h> #include <stdio.h> #include <stdlib.h> +#ifndef WIN32 #include <unistd.h> +#endif #include <time.h> #include "md5.h" @@ -29,7 +31,7 @@ #else # define PTR2ul(p) INT2PTR(unsigned long,p) #endif -#if defined __cygwin__ || __mingw32__ +#if defined __cygwin__ || __mingw32__ || WIN32 #include <windows.h> #endif #if defined __darwin__ @@ -49,8 +51,14 @@ #define UUID_STATE_NV_STORE _STDIR"/"UUID_STATE #define UUID_NODEID_NV_STORE _STDIR"/"UUID_NODEID + #define UUIDS_PER_TICK 1024 +/*podmaster*/ +#ifdef WIN32 +#define I64(C) ((unsigned __int64) C##) +#else #define I64(C) C##LL +#endif #define F_BIN 0 #define F_STR 1 @@ -63,7 +71,12 @@ typedef unsigned short unsigned16; typedef unsigned char unsigned8; typedef unsigned char byte; +/*podmaster*/ +#ifdef WIN32 +typedef unsigned __int64 unsigned64_t; +#else typedef unsigned long long unsigned64_t; +#endif typedef unsigned64_t uuid_time_t; #if defined __solaris__ || defined __linux__ @@ -116,7 +129,7 @@ ); static void get_current_time(uuid_time_t * timestamp); static unsigned16 true_random(void); -static void get_system_time(uuid_time_t *uuid_time); +static void get_system_time(uuid_time_t * uuid_time); static void get_random_info(unsigned char seed[16]); static char *base64 = diff -ubr Data-UUID-0.11/UUID.xs myData-UUID-0.11/UUID.xs --- Data-UUID-0.11/UUID.xs 2003-08-27 12:38:36.000000000 -0700 +++ myData-UUID-0.11/UUID.xs 2005-06-22 07:30:22.640625000 -0700 @@ -105,7 +105,7 @@ } static void get_system_time(uuid_time_t *uuid_time) { -#if defined __CYGWIN__ || __MINGW32__ +#if defined __CYGWIN__ || __MINGW32__ || WIN32 /* ULARGE_INTEGER time; */ LARGE_INTEGER time; @@ -129,7 +129,7 @@ static void get_random_info(unsigned char seed[16]) { MD5_CTX c; -#if defined __CYGWIN__ || __MINGW32__ +#if defined __CYGWIN__ || __MINGW32__ || WIN32 typedef struct { MEMORYSTATUS m; SYSTEM_INFO s; @@ -150,7 +150,7 @@ MD5Init(&c); -#if defined __CYGWIN__ || __MINGW32__ +#if defined __CYGWIN__ || __MINGW32__ || WIN32 GlobalMemoryStatus(&r.m); GetSystemInfo(&r.s); GetSystemTimeAsFileTime(&r.t);

    MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
    I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
    ** The third rule of perl club is a statement of fact: pod is sexy.

      Is that under VC6++? As it tured out I get two completely different sets of problems under VC6++. On my .NET install at work, my original hack works fine. Looks like c on win32 is now more of a mess than it ever was before.

        Well I have finally got round to testing a patch which is somewhere between mine an PodMaster's - it works with VC6, Visual Studio .NET, Cygwin and Linux. I've sent it to the author of the module.

        /J\

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://482430]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (3)
As of 2022-05-25 04:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you prefer to work remotely?



    Results (84 votes). Check out past polls.

    Notices?