Forum OpenACS Development: OpenACS4.x/Postgres7.x installation guide

Hi,

  I wanted to have a look at your great work to learn more about this
design and 'maybe' offer some help if my time allows. I got the code
successfully download from the CVS (thanks to Pascal and Don). The
AOLServer is up and running, the pgsql driver is compiled and
installed.

  But how do make this accessible from the AOLServer. I have been
scanning the bboard for comments, but with no luck. I have been
looking in the documentation that comes with OpenACS4.x, but here I
could only find documentation on installing using an Oracle database.

  Could someone please point me to where to find some description on
the OpenACS4.x/postgres-driver installation. Or maybe just give me
some hints.

  One little caveat: I have PostgreSQL7.1RCx running on another box,
but I have already done this a few times in the past and I have tested
the accessibility of the database from other systems. (Actually I have
OpenACS3.2.4 installed on a different machine which works nicely.)

  Greetings,
Collapse
Posted by Don Baccus on
Check out this handy guide. This covers setting up your box to run both PG 7.0 and PG 7.1, and talks about compiling the driver against PG 7.1 headers etc.

Pascal - this would be great to have up in https://openacs.org/file-storage ...

Collapse
Posted by Leif Jensen on
Good! Except that was not really my problem. In the documentation that comes from the CVS, it talks about template-ini.ini and nsd-oracle. I couldn't find any description on postgres setup. From your link I get that I should just forget about these and modify the 'good old nsd.tcl' file? And in addition make sure that the psql program is accessible (how is this done when the database is running on another machine?)
Collapse
Posted by Don Baccus on
Oh, yeah, you just need to configure you "good old init .tcl file".  I'm even using the three old pool names in mine, I'm so lazy (main, subquery, log).

I've not gotten around to looking at the "official" new nsd-oracle.tcl  file to put together a better example for PG.

As far as psql goes ... if your database is on another machine and running -i, I *think* you can configure psql to automatically reference it by clever setting of environment variables but I've never  tried it.  I think that would be the least confusing way to do things, so running psql in whatever account is passed with the -u switch to opennsd accesses your openacs database.

You may have to do it via switches to configure when building PG.  I know you can specify the port this way, for instance, and I've done so in my installation.  I assume you can specify the IP as well as the port when you build ...

Collapse
Posted by Pascal Scheffers on
Don, I added the URL to file storage as the HTML version consists of 6
html files. Browsing them from file-store is not very convenient...
Collapse
Posted by Leif Jensen on
Don,
Regarding psql, you were absolutly right about the environment variables (they are: PGDATABASE, PGHOST, PGPORT, ...) I should just have taken a look at the man page for psql, sorry. It even worked just copying the psql program and the libpq.so.xxx to web-box ensuring that both the web-box and PostgreSQL development box is both using libc6 !

  Thanks,
Collapse
Posted by Don Baccus on
Great, good to hear that, Leif...now I need to remember to get the db API proc that sources datamodels to use the proper PG environment variable as the default place to look for PSQL, with the initfile parameter acting as an override (rather than being the only way to specify it, as is true now).
Collapse
Posted by Leif Jensen on
I know what I am trying to do may be a little premature. But,... I have now the AOLServer3.2+ad12 up and running which loads the PostgreSQL7.1 driver without errors and using my old (modified) nsd.tcl file :-). But when trying to connect from a browser, I do get an ArsDigita welcome page (not the one in ACS installation guide, the one with a 'Next' button), but there are a lot of funny '@variable@' constructs.

I am not sure what I should install in the /web/'service_name' directory: should I just take the OpenACS (directly from the CVS) or should I load it on top of the 'standard' ACS-4.0 system placed in that directory or am I missing something totally different ?

Collapse
Posted by Don Baccus on
No, you're not premature at all - you can load up the datamodel (as much as there is) for the core and get almost to the end of core installation.

As far as the behavior you're seeing ... I've seen it too, but don't remember the exact circumstances.  Should've written it down.  Check your server log for any errors.  Something simple is wrong...if I think of it I'll re-post...

Collapse
Posted by Leif Jensen on
Ok, after a little more fiddling with the nsd.tcl file I got this error in the log file:

[15/Apr/2001:17:35:50][9187.1024][-main-] Notice: Loading packages/acs-tcl/tcl/xml-0-sgml-procs.tcl.
..
[15/Apr/2001:17:35:50][9187.1024][-main-] Notice: Loading packages/acs-tcl/tcl/xml-1-dom-procs.tcl..
.
[15/Apr/2001:17:35:50][9187.1024][-main-] Notice: Loading packages/acs-tcl/tcl/xml-2-procs.tcl...
[15/Apr/2001:17:35:50][9187.1024][-main-] Notice: APM/QD = loading up package query files for acs-tc
l
[15/Apr/2001:17:35:50][9187.1024][-main-] Notice: APM/QD = one file /web/leifjensen/packages/acs-tcl
/tcl/apm-file-procs-postgresql.xql
[15/Apr/2001:17:35:50][9187.1024][-main-] Notice: QD = Loading /web/leifjensen/packages/acs-tcl/tcl/
apm-file-procs-postgresql.xql
[15/Apr/2001:17:35:50][9187.1024][-main-] Error: Server startup failed: Error during bootstrapping
invalid command name "ns_xml"
    while executing
"ns_xml parse -persist $stuff_to_parse"
    (procedure "db_fullquery_internal_parse_init" line 4)
    invoked from within
"db_fullquery_internal_parse_init $whole_file"
    (procedure "db_fullquery_internal_load_queries" line 12)
    invoked from within

i.e. it is missing a 'ns_xml' procedure. I have been scanning all .tcl files both in the original ACS-4.x and in the OpenACS from the CVS. Where should it be located ?

Collapse
Posted by Don Baccus on
Oh, you need the nsxml module:
    http://www.arsdigita.com/acs-repository/one-version?version_id=583

download and install it in your AOLserver bin directory, and
add:

ns_param ns_xml ${bindir}/ns_xml.so

to your ns/server/servername/modules section

Would someone be interested in volunteering to write a brief page or two description of where pieces are found and how to configure for OpenACS 4.x and put it up in file-storage?

Collapse
Posted by Stephen . on
This could be added to the installation checks. The version of the Oracle driver is already verified, perhaps the extra C modules that are needed could be checked for too, with a helpful message returned to the browser.
I'm tryng get it working as well, I have PostgreSQL7.1 and aolserver 3.31 with ns_cache from aolserver 3.2 and everithing else my nsd.tcl that start working is : -----------

# Modified by Roberto Mello - rmello@cc.usu.edu - June 2000

ns_log notice "nsd.tcl: starting to read config file..."

# 
# If httpport is set to 80, you'll have to start AOLserver as root and pass the user 
# AOLserver will run as in the command line. (e.g. ./nsd -u nsadmin -g nsadmin -t ../nsd.tcl)
# (assuming you're starting AOLserver from the {aolserverdir}/bin directory.

set httpport              8000 
set httpsport             8443 

#
# Make sure your /etc/hostname is setup right, with your full domain. If you want AOLserver 
# to listen to www.foobar.com instead of foobar.com then hard code the appropriate domain  
# in the line below (e.g. set hostname www.foobar.com).
#
set hostname              [ns_info hostname]  
set address               [ns_info address] 

# 
# You can name your server whatever you want, but you'll need a directory with that
# name under {aolserverdir}/servers/ writable by you AOLserver user.
#
# For example: if your AOLserver is in /usr/local/aolserver and your server is "server1"
# you will need a /usr/local/aolserver/servers/server1 directory.
#
set server           "server1" 
set servername       "daderver" 

set dbdatasource	"localhost::wwwrun"
set dbuser		wwwrun
set dbpassword		""
set dbconnections	2
# 
# AOLserver's home and binary directories. Autoconfigurable. 
#
set homedir                 [file dirname [ns_info config]] 
set bindir                  [file dirname [ns_info nsd]] 

#
# Where are your pages going to live ?
#
set pageroot                ${homedir}/servers/${server}/www
set directoryfile           index.adp,index.tcl,index.html,index.htm

# 
# nsssl: Only loads if keyfile.pem and certfile.pem exist.
# If you are using SSL, make sure you have these dirs and files (refer
# to the AOLserver docs)

set sslkeyfile ${homedir}/servers/${server}/modules/nsssl/keyfile.pem

set sslcertfile ${homedir}/servers/${server}/modules/nsssl/certfile.pem 

# 
# Global server parameters 
#

ns_section "ns/parameters" 
        ns_param   home         $homedir 
        ns_param   debug        false 
        ns_param   MailHost     localhost 
        ns_param   ServerLog    ${homedir}/log/server.log 
        ns_param   LogRoll      on

# 
# Thread library (nsthread) parameters 
# 
ns_section "ns/threads" 
        ns_param   mutexmeter      true      ;# measure lock contention 
        #ns_param   stacksize [expr 128*1024] ;# Per-thread stack size for hungry C modules

# 
# MIME types. 
# 
#  Note: AOLserver already has an exhaustive list of MIME types, but in
#  case something is missing you can add it here. 
#

ns_section "ns/mimetypes" 
        ns_param   default         "*/*"     ;# MIME type for unknown extension 
        ns_param   noextension     "*/*"     ;# MIME type for missing extension 
        #ns_param   ".xls"         "application/vnd.ms-excel''

# 
# Tcl Configuration 
# 
ns_section "ns/server/${server}/tcl" 
        ns_param autoclose     "on" 
        ns_param debug         "false" 
 
#
# This is where this server's private Tcl library is. All .tcl files in this directory 
# are parsed when AOLserver starts.
#
        ns_param library "${homedir}/servers/${server}/tcl" 

############################################################ 
# 
# Server-level configuration 
# 
#  There is only one server in AOLserver, but this is helpful when multiple
#  servers share the same configuration file.  This file assumes that only
#  one server is in use so it is set at the top in the "server" Tcl variable
#  Other host-specific values are set up above as Tcl variables, too.
# 
ns_section "ns/servers" 
        ns_param   $server     $servername 

# 
# Server parameters 
# 
ns_section "ns/server/${server}" 
        ns_param   directoryfile        $directoryfile 
        ns_param   pageroot             $pageroot 
        ns_param   globalstats          false     ;# Enable built-in statistics 
        ns_param   urlstats             false     ;# Enable URL statistics 
        ns_param   maxurlstats          1000      ;# Max number of URL's to do stats on
        ns_param   enabletclpages       true      ;# Parse tcl files in pageroot (dangerous)

#
# If you want to customize AOLserver's response to things like "Internal Server Error"
# and other HTTP responses. 

        ns_param   NotFoundResponse               "/global/file-not-found.html"
        ns_param   ServerBusyResponse              "/global/busy.html"
        ns_param   ServerInternalErrorResponse         "/global/error.html"
        ns_param   ForbiddenResponse               "/global/forbidden.html"
        ns_param   UnauthorizedResponse          "/global/unauthorized.html"

# Directory listings -- use an ADP or a Tcl proc to generate them.
#
        #ns_param   directoryadp    $pageroot/dirlist.adp ;# Choose one or the other
        ns_param   directoryproc    _ns_dirlist           ;#  ...but not both! 
        ns_param   directorylisting  fancy                ;# Can be simple or fancy 
# 
# ADP (AOLserver Dynamic Page) configuration 
# 
ns_section "ns/server/${server}/adp" 
        ns_param   map           "/*.adp"  ;# Extensions to parse as ADP's
	ns_param	DefaultParser	fancy 
        #ns_param   map          "/*.html" ;# Any extension can be mapped 
        ns_param   enableexpire  false     ;# Set "Expires: now" on all ADP's 
        ns_param   enabledebug   false     ;# Allow Tclpro debugging with "?debug"

# ADP special pages 
        #ns_param   errorpage      ${pageroot}/errorpage.adp ;# Pretty-print ADP scripting errors

# 
# ADP custom parsers -- see adp.c 
#
# "adp" is faster but lacks some features. "fancy" is a little slower but has
# extra features.
#
ns_section "ns/server/${server}/adp/parsers" 
        ns_param   fancy            ".adp"

# 
# Socket driver module (HTTP)  -- nssock 
# 
ns_section "ns/server/${server}/module/nssock" 
        ns_param   port         $httpport 
        ns_param   hostname     $hostname 
        ns_param   address      $address

# 
# Socket driver module (HTTPS) -- nsssl 
# 
#  nsssl does not load unless sslkeyfile/sslcertfile exist (above).
# 
ns_section "ns/server/${server}/module/nsssl" 
        ns_param   port        $httpsport 
        ns_param   hostname    $hostname 
        ns_param   address     $address 
        ns_param   keyfile     $sslkeyfile 
        ns_param   certfile    $sslcertfile

# 
# Database drivers 
#  The database driver is specified here. PostgreSQL driver being loaded.
#  Make sure you have the driver compiled and put it in {aolserverdir}/bin
#
ns_section "ns/db/drivers" 
    ns_param   postgresql     ${bindir}/postgres.so  ;# Load PostgreSQL driver
    
ns_section "ns/db/driver/postgresql"
    ns_param	pgbin		/usr/local/pgsql/bin

# 
# Database Pools: This is how AOLserver  "talks" to the RDBMS. 
#  The three pools here are examples but they work. 
#  Make sure to replace "yourdb" and "yourpassword" with the actual values for 
#  your db name and the password for it.
#  AOLserver can have different pools connecting to different databases and even different
#  different database servers.
# 
ns_section "ns/db/pools" 
    ns_param   main       "Main Pool" 
    ns_param   log        "Log Pool" 
    ns_param   subquery   "Subquery Pool"

ns_section "ns/db/pool/main" 
    ns_param Driver postgresql 
    ns_param Connections $dbconnections                  ;# 5 is a good number. Increase according to your needs
    ns_param DataSource $dbdatasource   ;# Replace 'yourdb' with the name of your database in PG
    ns_param User $dbuser                   ;# User and password AOLserver will use to connect
    ns_param Password $dbpassword 
    ns_param Verbose On                    ;# Set it to On to see all queries. Good for debugging SQL.
    ns_param LogSQLErrors On 
    ns_param ExtendedTableInfo On 
   # ns_param MaxOpen 1000000000            ;# Uncommenting these two cause AOLserver to keep the
   # ns_param MaxIdle 1000000000            ;# db connection open. Can be a good thing, up tp your needs.

ns_section "ns/db/pool/log" 
    ns_param Driver postgresql 
    ns_param Connections $dbconnections                  ;# 5 is a good number. Increase according to your needs
    ns_param DataSource $dbdatasource   ;# Replace 'yourdb' with the name of your database in PG
    ns_param User $dbuser                   ;# User and password AOLserver will use to connect
    ns_param Password $dbpassword 
    ns_param Verbose On 
    ns_param LogSQLErrors On 
    ns_param ExtendedTableInfo On 
   # ns_param MaxOpen 1000000000 
   # ns_param MaxIdle 1000000000 

ns_section "ns/db/pool/subquery" 
    ns_param Driver postgresql 
    ns_param Connections $dbconnections                  ;# 5 is a good number. Increase according to your needs
    ns_param DataSource $dbdatasource   ;# Replace 'yourdb' with the name of your database in PG
    ns_param User $dbuser                   ;# User and password AOLserver will use to connect
    ns_param Password $dbpassword 
    ns_param Verbose On 
    ns_param LogSQLErrors On 
    ns_param ExtendedTableInfo On
   # ns_param MaxOpen 1000000000 
   # ns_param MaxIdle 1000000000 

ns_section "ns/server/${server}/db"
        #ns_param Pools          "*"    ;# Load all pools specified above
        ns_param Pools          "*"    ;# Load all pools specified above
        ns_param DefaultPool    "main"    ;# Which will be the default pool?

#
# nscp: AOLserver Control Port - very useful for testing and evaluating.
# Uncomment the sample password below and do a "telnet localhost 9999"
# log in with "nsadmin", password "x", type "ns_crypt newpassword salt"
# and paste the new encrypted string below.
#
# Sample User="nsadmin", password="x" 
 set nscp_user              "nsadmin:t2GqvvaiIUbF2:"

# nscp: loads only if nscp_user is set
#

if { $nscp_user != "" } {
    ns_param nscp ${bindir}/nscp.so
} else {
    ns_log warning "nsd.tcl: nscp not loaded because user/password is not set."
}

# 
# Control port -- nscp 
#  nscp does not load unless nscp_user is a valid user. 
# 
ns_section "ns/server/${server}/module/nscp" 
        ns_param   port            9999 
        ns_param   address         "127.0.0.1" ;# LOCALHOST IS RECOMMENDED      

ns_section "ns/server/${server}/module/nscp/users" 
        ns_param   user            $nscp_user

# 
# Access log -- nslog 
# 
ns_section "ns/server/${server}/module/nslog" 
        ns_param   rolllog         true      ;# Should we roll log? 
        ns_param   rollonsignal    true      ;# Roll log on SIGHUP 
        ns_param   rollhour        0         ;# Time to roll log 
        ns_param   maxbackup       5         ;# Max number to keep around when rolling 

# 
# CGI interface -- nscgi, if you have legacy stuff. Tcl or ADP files inside 
# AOLserver are vastly superior to CGIs. 
# 
#ns_section "ns/server/${server}/module/nscgi" 
#       ns_param   map "GET  /cgi-bin/ /web/$server/cgi-bin"
#       ns_param   map "POST /cgi-bin/ /web/$server/cgi-bin" 
#       ns_param   Interps CGIinterps

#ns_section "ns/interps/CGIinterps" 
#       ns_param .pl "/usr/bin/perl"

# 
# Modules to load 
# 
ns_section "ns/server/${server}/modules" 
        ns_param   nssock          	${bindir}/nssock.so 
        ns_param   nslog           	${bindir}/nslog.so 
        ns_param   nsperm          	${bindir}/nsperm.so 
#        ns_param   nscgi           	${bindir}/nscgi.so 
#	ns_param   dqd_utils  		dqd_utils[expr {int($tcl_version)}].so
	ns_param	ns_xml		${bindir}/nsxml.so
	ns_param	ns_sha1		${bindir}/nssha1.so
	ns_param	ns_cache	${bindir}/nscache.so
	ns_param	ns_rewrite	${bindir}/nsrewrite.so
#
## nsssl: loads only if requisite files already exist (see top of this
# file). 
#
if { [file exists $sslcertfile] && [file exists $sslkeyfile] } { 
    ns_param nsssl ${bindir}/nsssle.so 
} else { 
    ns_log warning "nsd.tcl: nsssl not loaded because key/cert files do not exist."
}

# 
# If you have an auxiliary config file, you can tell AOLserver to source it
# with the line:
#
# source /path/to/your/file/yourfile.tcl
#

ns_log notice "nsd.tcl: Now reading aux config ServerDAD."

#source /home/aolserver/servers/server1/parameters/server1.tcl

ns_log notice "nsd.tcl: finished reading config file."
------------- It goes ok till tryng to create the administrator account when I get the following message: ----------


    Database operation "0or1row" failed (exception NSDB, "Query was not a statement returning rows.")
        while executing
    "ns_pg_bind 0or1row nsdb0 {select email from cc_users where rownum = 1}"
        ("uplevel" body line 1)
        invoked from within
    "uplevel 2 [list ns_pg_bind $type $db $sql] $args"
        invoked from within
    "db_exec 0or1row $db $full_statement_name $sql"
        invoked from within
    "set selection [db_exec 0or1row $db $full_statement_name $sql]"
        ("uplevel" body line 2)
        invoked from within
    "uplevel 1 $code_block "
        invoked from within
    "db_with_handle db {
            set selection [db_exec 0or1row $db $full_statement_name $sql]
        }"
        (procedure "db_0or1row" line 22)
        invoked from within
    "db_0or1row user_exists "select email from cc_users where rownum = 1""
        (file "/opt/aolserver/servers/server1/packages/acs-bootstrap-installer/installer/create-administrator.tcl" line 1)
-------- Ok I know whats the problem I'm solving it change all the queries that refer to "rownum" to use limit or another trick. But I was think that maybe could be a good idea to have postgres generating virtual row numbers as well.
After changing the references of "rownum" to "limit" now I get this error message:


    Database operation "dml" failed
        while executing
    "ns_db dml $db "drop function $function_name ()""
        invoked from within
    "db_exec_plpgsql $db $full_statement_name $sql  $statement_name"
        invoked from within
    "if {[regexp -nocase -- {^s*select} $test_sql match]} {
                ns_log Notice "PLPGSQL: bypassed anon function"
                set selection [db_exec..."
        ("uplevel" body line 5)
        invoked from within
    "uplevel 1 $code_block "
        invoked from within
    "db_with_handle db {
            # plsql calls that are simple selects bypass the plpgsql 
            # mechanism for creating anonymous functions (OpenACS - ..."
        (procedure "db_exec_plsql" line 13)
        invoked from within
    "db_exec_plsql user_insert {
            begin
                :1 := acs.add_user(user_id => :user_id,
                             email => :email,
                             url => :url,
                             first_names => :first_names,..."
        ("uplevel" body line 2)
        invoked from within
    "uplevel 1 $transaction_code "
        (procedure "db_transaction" line 1)
        invoked from within
    "db_transaction {
            db_exec_plsql user_insert {
            begin
                :1 := acs.add_user(user_id => :user_id,
                             email => :email,
                             url => :url,
                             first_name..."
        (procedure "ad_user_new" line 22)
        invoked from within
    "ad_user_new $email $first_names $last_name $password $password_question $password_answer"
        invoked from within
    "set user_id [ad_user_new $email $first_names $last_name $password $password_question $password_answer]"
        ("uplevel" body line 3)
        invoked from within
    "uplevel 1 $transaction_code "
        (procedure "db_transaction" line 39)
        invoked from within
    "db_transaction {
        
        set user_id [ad_user_new $email $first_names $last_name $password $password_question $password_answer]
        if { !$user_id } ..."
        invoked from within
    "if { ![db_string user_exists {
        select count(*) from parties where email = :email
    }] } {

      db_transaction {
        
        set user_id [ad_user_new $ema..."
        (file "/opt/aolserver/servers/server1/packages/acs-bootstrap-installer/installer/create-administrator-2.tcl" line 25)
        invoked from within
    "source $path"
And now I'm working on how to solve this. There is any sugestion ?
Collapse
Posted by Leif Jensen on
Hi Domingo,

  I don't know if it has any significance to your problem, but I think you have misspelled the <servername> in the beginning of your nsd.tcl file. I suppose it should be dadserver ?
Collapse
Posted by Vinod Kurup on
Hi Domingo,

I believe that you've reached the "current" official failure point of OpenACS 4.x on PG. See Dan's comments in this thread.

So I suppose Don is probably already working on the issues that you've raised.

Collapse
Posted by Leif Jensen on
I got the ns_xml module downloaded and compiled without any big trouble, but when starting nsd I got an 'unresolved symbol: gzdopen' when it starts loading the ns_xml.so module. I do not have X installed on this system and I rather not install it either ! I don't know where the 'gz-'functions are located. Any clues ?
Collapse
Posted by Don Baccus on
Yes, you've hit the "official" stopping point.  I'm waiting until the query extractor and query dispatcher are both in synch and far enough along to use before porting the rest of the installation procedure (we  don't want to hack these queries inline - they need to be pulled out in to query files!)

See the status report in https://openacs.org/file-storage - it makes clear current assignments and what's on the critical path holding up further progress.

As soon as the QD and QE are back in synch, expect an explosion of work on the core.  We also expect to have the CVS tree up (day or two), and I'll start querying people about specific things they want to work on.

Leif, as to your ns_xml question, check those 2 threads:
  • http://www.arsdigita.com/bboard/q-and-a-fetch-msg?msg_id=0009Vr&topic_id=web%2fdb&topic=
  • http://www.arsdigita.com/bboard/q-and-a-fetch-msg?msg_id=000ZF3
Collapse
Posted by Leif Jensen on
Ok, adding -lz flag fixed the problem and I now get the right welcome page.

I have put these troubles in a file and I will try to add the other problems I had. Maybe someone can merge it with some more description to get a 'starters help' or a 'toubleshooting guide'.

  Thanks
Collapse
Posted by Leif Jensen on
HURRA !! :-)

After adding the nssha1.so and nscache.so modules, which the welcome page complained about and adding the Pl/PgSql language to my database, I could finally click the 'Next ->' button creating the database.

I got all the way through to "current" error:

    select email from cc_users where rownum = 1

I will shortly put my very crude 'problem list' into the file-storage hoping it can be of any use. I cannot promise to maintain, because I am awfull at forgetting my own mistakes ;-).

  Thanks all,
Change the query:
"select email from cc_users where rownum = 1"
to:
"select email from cc_users limit 1"
Collapse
Posted by Don Baccus on
Unfortunately, if you just change the query it won't work in Oracle.  We're supporting both Oracle and Postgres with a single set of sources, so Oracle-specific and PG-specific inline queries are a no-no.

That's why we're waiting for the query dispatcher and query extractor work to be completed before plunging forward.  As I mentioned a few posts earlier in this thread.

Please do a little RTFM'ing before making gadfly posts.  We're happy to have you here but you're going to have to dig into the project a bit more before you help in a meaningful way.

Collapse
Posted by Antonio Laterza on
Hi, installing OpenACS-4 I got the message:
psql:acs-install.sql:170: ERROR:  Function 'acs__magic_object_id(unknown)' does not exist
        Unable to identify a function that satisfies the given argument types
        You may need to add explicit typecasts
psql:acs-install.sql:177: ERROR:  Function 'acs__magic_object_id(unknown)' does not exist
        Unable to identify a function that satisfies the given argument types
        You may need to add explicit typecasts

    invoked from within
"db_source_sql_file -callback apm_ns_write_callback acs-install.sql"
    invoked from within
"if { ![ad_acs_admin_node] } {
    ns_write "  <p><li> Completing Install sequence.<p>
    <blockquote><pre>"
    cd [file join [acs_root_dir] packages..."
    (file "/web/tahder/packages/acs-tcl/installer/packages-install.tcl" line 34)
    invoked from within
"source $path"
Collapse
Posted by Andrei Popov on
Does anybody have a binary of ns_xml module for Windows?
Collapse
Posted by Yon Derek on
If you're willing to wait a couple (or more) days, then I plan to release AOLServer 4.0 beta with ns_xml and some other stuff for windows (which might not be good enough for you, because it won't work with non-4.0 version and 4.0 is beta == probably buggy).

If you don't want to wait or want to build it yourself, you're in for some work:

  • compile libxml, the latest version almost compiles under windows and I'm sending patches to make it fully compile (i.e., you can compile it if you manually fix small stuff after getting sources from CVS and I'm driving it so that it compiles straight out of CVS)
  • make minor portability fixes in ns_xml.c itself (http://acs-misc.sourceforge.net/wiki/index.php?WinPortabilityForModules)
  • create a MSVC project for nsxml (main thing: link it with libxml.dll build in earlier step).

Collapse
Posted by Andrei Popov on
I am willing to wait a few days...  I have actually tried to compile ns_xml myself under Cygwin.  libxml compiled out of the box, but I could not link ns_xml against AOLServer, as it (obviously) was not compiled with gcc/Cygwin...