Forum OpenACS Development: Re: Win32-OpenACS Version 1.5

Collapse
Posted by Gustaf Neumann on
Thanks Maurizio,

this configuration consists of openacs 5.4.0 + the released application packages from the oacs-5.3 branch. This should work (although a saver strategy would be openacs 5.3.2 + the 5.3 packages, and wait for the forthcoming release of dotlrn 2.4, since the 5.3 packages were tested primarily against the 5.3.2 kernel), asides of categories (see below).

Concerning your fixes you had to do:
a) rss-generation-create.sql: use the fix of don (which is apparently only in the head version)
http://cvs.openacs.org/cvs/openacs-4/packages/rss-support/sql/postgresql/rss-generation-create.sql?r1=1.12&r2=1.13

b) categories: you should use version 1.1 (from oacs-5-3); the version you are using (1.1.2d1) is somewhere between 5.3 and head (1.1.2d3).

c) time functions: ns_fmttime, ns_conn start, ns_time
It would be interesting to figure out, what's wrong here.
Vlad did something recently to fix time functions for win32:
http://naviserver.cvs.sourceforge.net/naviserver/naviserver/nsd/tcltime.c?view=log
i have not checked, how far tcltime.c from naviserver is from aolserver, but most likely, the changes are not dramatically in that area, but it might be worth a look.

-gustaf

Collapse
Posted by Maurizio Martignano on
Dear Gustav,
thanks a lot for your input.

I'll try to:
1. build a distro with your recommended configuration
2. see if I manage to solve the time function problems.

I'll let you know how it goes.

Cheers,
Maurizio

Collapse
Posted by Vlad Seryakov on
The problem with time in Win32 is with time_t type, it is 64bit integer so as we used to treat time_t as 32bit most of the software especially sprintf-like function will make the server to crash. Try using %T and even that crashes nsd.exe when i compiled using VC++.
Collapse
Posted by Maurizio Martignano on
Dear Vlad,
I'm glad you spotted the problem.
Starting from Visual C++ 2005, time_t is defined as a 64 bit integer. In order to go back to time_t defined as 32 bit integer it is enough to use the following define
_USE_32BIT_TIME_T
at compile time.

That's it and that's all.

Hope it helps,
Maurizio

Collapse
Posted by Vlad Seryakov on
I know about this macro but the problem still exists with binaries already compiled with time_t as 64bits. Si in any case all time_t references need to be casted to 64 por 32 bits explicitly. So basically all our changes are just explicit casts to 64bits.
Collapse
Posted by Maurizio Martignano on
Dear Vlad,
what you say is correct.
But I compiled ALL Aolserver sources with that macro on.
So the problem you mentioned doesn't exist in this case.

Cheers and once again thanks,
Maurizio

Collapse
Posted by Maurizio Martignano on
Dear Gustav,
I managed to prepare a distro with:
1. the configuration you suggested
2. the fime functions fixed (as explained in my reply to Vlad).

Cheers and thanks,
Maurizio