TclSOAP is a library to create or consume SOAP WebServices. It also allows to consume XML-RPC stuff.
Unfortunately, strange versionning choices (it search precises versions of the dom TCL package, and of course, these versions bumped with the years) broke the package require mechanism.
This patch solves that and allows you to use it:
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 |
diff --git SOAP.tcl SOAP.tcl index 4ba871e..1aaa071 100644 --- SOAP.tcl +++ SOAP.tcl @@ -22,12 +22,11 @@ package require rpcvar; # TclSOAP namespace eval ::SOAP {variable domVersion} if {[catch {package require SOAP::dom 1.0} ::SOAP::domVersion]} { - if { [catch {package require dom 2.0} ::SOAP::domVersion]} { - if { [catch {package require dom 1.6} ::SOAP::domVersion]} { - error "require dom package greater than 1.6" - } - package require SOAP::xpath; # TclSOAP + if {[catch {package require dom} ::SOAP::domVersion] || [package vcompare $::SOAP::domVersion 1.6] < 0} { + error "require dom package greater than 1.6" } + package require SOAP::xpath; # TclSOAP + proc ::SOAP::createDocument {name} { set doc [dom::DOMImplementation create] return [dom::document createElement $doc $name] diff --git pkgIndex.tcl pkgIndex.tcl index ca84e42..ebdf78f 100644 --- pkgIndex.tcl +++ pkgIndex.tcl @@ -11,7 +11,6 @@ package ifneeded SOAP 1.6.7 [list source [file join $dir SOAP.tcl]] package ifneeded SOAP::CGI 1.0 [list source [file join $dir SOAP-CGI.tcl]] package ifneeded SOAP::Domain 1.4 [list source [file join $dir SOAP-domain.tcl]] -package ifneeded SOAP::Service 0.4 [list source [file join $dir SOAP-service.tcl]] package ifneeded SOAP::Utils 1.0.1 [list source [file join $dir utils.tcl]] package ifneeded SOAP::ftp 1.0 [list source [file join $dir ftp.tcl]] package ifneeded SOAP::http 1.0 [list source [file join $dir http.tcl]] diff --git xpath.tcl xpath.tcl index 14b0334..f33e02c 100644 --- xpath.tcl +++ xpath.tcl @@ -14,10 +14,9 @@ # for more details. # ------------------------------------------------------------------------- -if { [catch {package require dom 2.0}] } { - if { [catch {package require dom 1.6}] } { +namespace eval ::SOAP {variable domVersion} +if { [catch {package require dom} ::SOAP::domVersion] || [package vcompare $::SOAP::domVersion 1.6] < 0} { error "require dom package greater than 1.6" - } } namespace eval SOAP::xpath { |
Bonus for FreeBSD users: I’m currently submitting a net/tclsoap port, with these patches included.