File: packages.tcl

package info (click to toggle)
aolserver4 4.5.1-15.1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 11,772 kB
  • sloc: ansic: 45,120; tcl: 5,532; sh: 1,021; makefile: 380; pascal: 219; php: 13
file content (99 lines) | stat: -rw-r--r-- 2,904 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#
# The contents of this file are subject to the AOLserver Public License
# Version 1.1 (the "License"); you may not use this file except in
# compliance with the License. You may obtain a copy of the License at
# http://aolserver.com/.
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# The Original Code is AOLserver Code and related documentation
# distributed by AOL.
#
# The Initial Developer of the Original Code is America Online,
# Inc. Portions created by AOL are Copyright (C) 1999 America Online,
# Inc. All Rights Reserved.
#
# Alternatively, the contents of this file may be used under the terms
# of the GNU General Public License (the "GPL"), in which case the
# provisions of GPL are applicable instead of those above.  If you wish
# to allow use of your version of this file only under the terms of the
# GPL and not to allow others to use your version of this file under the
# License, indicate your decision by deleting the provisions above and
# replace them with the notice and other provisions required by the GPL.
# If you do not delete the provisions above, a recipient may use your
# version of this file under either the License or the GPL. 
#
# $Header: /cvsroot/aolserver/aolserver/tcl/packages.tcl,v 1.8 2009/01/19 12:21:08 gneumann Exp $
#

set section "ns/server/[ns_info server]/packages"

if {![string length [set nsSetId [ns_configsection $section]]]} {
    return
}

#
# Create a libraryList and a requireList
#
for {set x 0} {$x < [ns_set size $nsSetId]} {incr x} {
    set key [ns_set key $nsSetId $x]
    set value [ns_set value $nsSetId $x]

    if {"library" eq $key} {
        lappend libraryList $value
    } elseif {"require" eq $key} {
        lappend requireList $value
    }
}

ns_set free $nsSetId

#
# Add libraries to ::auto_path var
#
if {[info exists libraryList]} {
    foreach lib $libraryList {
        if {[lsearch -exact $::auto_path $lib] == -1} {
            lappend ::auto_path $lib
            ns_log debug "added library to ::auto_path: ${lib}"
        }
    }
}

#
# Require packages
#
if {![info exists requireList]} {
   return
}

foreach package $requireList { 
    if {[catch {set version [ns_ictl package require $package]}]} {
        ns_log error $::errorInfo
        continue
    }

    ns_log debug "loaded package: ${package}: ${version}"
}

#
# Run init commands
#
foreach command [list nsinit nspostinit] {
    foreach package $requireList {
        set packageCommand "::${package}::${command}"
 
        if {![llength [info commands $packageCommand]]} {
            continue
        }

        ns_log debug "Running: ${packageCommand}"

        if {[catch {eval $packageCommand}]} {
            ns_log error $::errorInfo
        }
    }
}