From: cascade Date: Fri, 5 Mar 2004 20:48:46 +0000 (+0000) Subject: Bug OCC4062 The filling of development version of WOK doesn't equivalent to release... X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=53da2e01ac6e7858af08f34cb05c0860c9be74c6;p=occt-wok.git Bug OCC4062 The filling of development version of WOK doesn't equivalent to release one. resources only --- diff --git a/src/WOKsite/CreateFactory.tcl b/src/WOKsite/CreateFactory.tcl index 8192ec7..50d4f69 100755 --- a/src/WOKsite/CreateFactory.tcl +++ b/src/WOKsite/CreateFactory.tcl @@ -1,168 +1,155 @@ -;# -;# This file is used to create from scratch a minimal set of WOK entities -;# A Factory, a warehouse, a workshop and a workbench. It can be used to import -;# sources files from a previously Cascade download. -;# this script has 5 arguments: -;# HOME_ENTITIES is a directory name. This is the name where all further entities -;# will be created. -;# FNAM is a factory name ( a factory is a set of workshop and a warehouse) -;# WSNAM is a workshop name ( a workshop is dedicated to contains a workbenches tree) -;# WBNAM is a workbench name. Typically it will be the name of the root workbench. -;# IMPORT_DIR is a directory name. If IMPORT_DIR is /dev/null no import is done -;# and WBNAM is created as empty workbench. To populate it with development units -;# please refer to the Wok documentation. -;# -source $env(WOKHOME)/site/tclshrc_Wok -proc FileToList { path {sort 0} {trim 0} {purge 0} {emptl 1} } { - if ![ catch { set id [ open $path r ] } ] { - set l {} - while {[gets $id line] >= 0 } { - if { $trim } { - regsub -all {[ ]+} $line " " line - } - if { $emptl } { - if { [string length ${line}] != 0 } { - lappend l $line - } - } else { - lappend l $line - } - } - close $id - if { $sort } { - return [lsort $l] - } else { - return $l - } - } else { - return {} - } -} -;# -;# -;# -proc lreplace { fin fout ls1s2 } { - if { [catch { set in [ open $fin r ] } errin] == 0 } { - if { [catch { set out [ open $fout w ] } errout] == 0 } { - set strin [read $in [file size $fin]] - close $in - foreach [list s1 s2] $ls1s2 { - set done 0 - if { [set nbsub [regsub -all -- $s1 $strin $s2 strout]] != 0 } { - set done 1 - } - set strin $strout - } - puts $out $strout - close $out - return $done - } else { - puts stderr "Error: $errout" - return 0 - } - } else { - puts stderr "Error: $errin" - return 0 - } -} -;# -;# -proc CreateFactory { HOME_ENTITIES FNAM WSNAM WBNAM IMPORT_DIR } { - - package require Wok - package require Ms - global env - - if [catch { package require Tclx } TclXHere] { - puts stderr "Warning : You'll need package TclX to correctly use WOK." - puts stderr " Check for variable TCLLIBPATH" - } - if [catch { package require Expect } ExpectHere] { - puts stderr "Warning : You'll need package Expect to use WOK integration package.." - puts stderr " Check for variable TCLLIBPATH" - } - - ;# - set savpwd [pwd] - - ;# - ;# Create factory FNAM and warehouse attached to it - ;# - if { ![wokinfo -x ${FNAM}] } { - puts "Creating the factory : ${FNAM}" - if ![catch {fcreate -DHome=$HOME_ENTITIES/${FNAM} -d ${FNAM} } astatus ] { - wokcd ${FNAM} - if { ![wokinfo -x ${FNAM}:BAG] } { - puts "Creating the WareHouse in $HOME_ENTITIES/${FNAM}/BAG" - if [ catch {Wcreate -DHome=$HOME_ENTITIES/${FNAM}/BAG -d -DAdm=$HOME_ENTITIES/${FNAM}/BAG/adm BAG } astatus ] { - puts $astatus - cd $savpwd - } - } - } else { - puts $astatus - cd $savpwd - } - } - - ;# - ;# Create workshop WSNAM - ;# - if { ![wokinfo -x ${FNAM}:${WSNAM}] } { - puts "Creating the workshop : ${FNAM}:${WSNAM}" - if ![ catch {screate -DHome=$HOME_ENTITIES/${FNAM}/${WSNAM} -d ${WSNAM} } astatus] { - wokcd -PAdm ${FNAM}:${WSNAM} - catch { mkdir Repository } - lreplace $env(WOK_LIBRARY)/VC.example [pwd]/VC.edl [list /dev/null [pwd]/Repository SCCS NOBASE] - exec cp $env(WOK_LIBRARY)/VC.tcldef [pwd]/VC.tcl - } else { - puts $astatus - cd $savpwd - } - } - ;# - ;# Create workbench WBNAM - ;# - if { ![wokinfo -x ${FNAM}:${WSNAM}:${WBNAM}] } { - puts "Creating the workbench : ${FNAM}:${WSNAM}:${WBNAM}" - wokcd ${FNAM}:${WSNAM} - set WBROOT $HOME_ENTITIES/${FNAM}/${WSNAM}/${WBNAM} - #if { "$IMPORT_DIR" != {} } { - #set WBROOT [file join [file dirname $IMPORT_DIR] ${WBNAM}] - #puts "Renaming $IMPORT_DIR to $WBROOT" - #frename $IMPORT_DIR $WBROOT - #puts " the Home directory of your ${WBNAM} WorkBench is now : ${WBROOT}" - #} - if [ catch {wcreate -DHome=$IMPORT_DIR -d ${WBNAM} } astatus] { - puts $astatus - cd $savpwd - exit - } - } - - - if { "$IMPORT_DIR" != {} } { - wokcd -PAdm ${FNAM}:${WSNAM}:${WBNAM} - foreach udl [glob -nocomplain *.UDLIST] { - puts "Importing units from module $udl" - foreach unit [FileToList $udl] { - if [ catch { ucreate -[lindex $unit 0] [lindex $unit 1] } astatus] { - puts $astatus - } - } - } - } - cd $savpwd -} - -#set HOME_ENTITIES [lindex $argv 0] -#set FNAM [lindex $argv 1] -#set WSNAM [lindex $argv 2] -#set WBNAM [lindex $argv 3] -#set IMPORT_DIR [lindex $argv 4] -set CASHOME [file dirname $env(CASROOT)/.] - -CreateFactory $env(WOK_ROOTADMDIR) OS OCC51 ros $CASHOME - -#exit - +;# +;# This file is used to create from scratch a minimal set of WOK entities +;# A Factory, a warehouse, a workshop and a workbench. It can be used to import +;# sources files from a previously Cascade download. +;# this script has 5 arguments: +;# HOME_ENTITIES is a directory name. This is the name where all further entities +;# will be created. +;# FNAM is a factory name ( a factory is a set of workshop and a warehouse) +;# WSNAM is a workshop name ( a workshop is dedicated to contains a workbenches tree) +;# WBNAM is a workbench name. Typically it will be the name of the root workbench. +;# IMPORT_DIR is a directory name. If IMPORT_DIR is /dev/null no import is done +;# and WBNAM is created as empty workbench. To populate it with development units +;# please refer to the Wok documentation. +;# +source $env(WOKHOME)/site/tclshrc_Wok +proc FileToList { path {sort 0} {trim 0} {purge 0} {emptl 1} } { + if ![ catch { set id [ open $path r ] } ] { + set l {} + while {[gets $id line] >= 0 } { + if { $trim } { + regsub -all {[ ]+} $line " " line + } + if { $emptl } { + if { [string length ${line}] != 0 } { + lappend l $line + } + } else { + lappend l $line + } + } + close $id + if { $sort } { + return [lsort $l] + } else { + return $l + } + } else { + return {} + } +} +;# +;# +;# +proc lreplace { fin fout ls1s2 } { + if { [catch { set in [ open $fin r ] } errin] == 0 } { + if { [catch { set out [ open $fout w ] } errout] == 0 } { + set strin [read $in [file size $fin]] + close $in + foreach [list s1 s2] $ls1s2 { + set done 0 + if { [set nbsub [regsub -all -- $s1 $strin $s2 strout]] != 0 } { + set done 1 + } + set strin $strout + } + puts $out $strout + close $out + return $done + } else { + puts stderr "Error: $errout" + return 0 + } + } else { + puts stderr "Error: $errin" + return 0 + } +} +;# +;# +proc CreateFactory { HOME_ENTITIES FNAM WSNAM WBNAM IMPORT_DIR } { + + package require Wok + package require Ms + global env + + if [catch { package require Tclx } TclXHere] { + puts stderr "Warning : You'll need package TclX to correctly use WOK." + puts stderr " Check for variable TCLLIBPATH" + } + if [catch { package require Expect } ExpectHere] { + puts stderr "Warning : You'll need package Expect to use WOK integration package.." + puts stderr " Check for variable TCLLIBPATH" + } + + ;# + set savpwd [pwd] + + ;# + ;# Create factory FNAM and warehouse attached to it + ;# + if { ![wokinfo -x ${FNAM}] } { + puts "Creating the factory : ${FNAM}" + if ![catch {fcreate -DHome=$HOME_ENTITIES/${FNAM} -d ${FNAM} } astatus ] { + wokcd ${FNAM} + if { ![wokinfo -x ${FNAM}:BAG] } { + puts "Creating the WareHouse in $HOME_ENTITIES/${FNAM}/BAG" + if [ catch {Wcreate -DHome=$HOME_ENTITIES/${FNAM}/BAG -d -DAdm=$HOME_ENTITIES/${FNAM}/BAG/adm BAG } astatus ] { + puts $astatus + cd $savpwd + } + } + } else { + puts $astatus + cd $savpwd + } + } + + ;# + ;# Create workshop WSNAM + ;# + if { ![wokinfo -x ${FNAM}:${WSNAM}] } { + puts "Creating the workshop : ${FNAM}:${WSNAM}" + if ![ catch {screate -DHome=$HOME_ENTITIES/${FNAM}/${WSNAM} -d ${WSNAM} } astatus] { + wokcd -PAdm ${FNAM}:${WSNAM} + } else { + puts $astatus + cd $savpwd + } + } + ;# + ;# Create workbench WBNAM + ;# + if { ![wokinfo -x ${FNAM}:${WSNAM}:${WBNAM}] } { + puts "Creating the workbench : ${FNAM}:${WSNAM}:${WBNAM}" + wokcd ${FNAM}:${WSNAM} + set WBROOT $HOME_ENTITIES/${FNAM}/${WSNAM}/${WBNAM} + if [ catch {wcreate -DHome=$IMPORT_DIR -d ${WBNAM} } astatus] { + puts $astatus + cd $savpwd + exit + } + } + + if { "$IMPORT_DIR" != {} } { + wokcd -PAdm ${FNAM}:${WSNAM}:${WBNAM} + foreach udl [glob -nocomplain *.UDLIST] { + puts "Importing units from module $udl" + foreach unit [FileToList $udl] { + if [ catch { ucreate -[lindex $unit 0] [lindex $unit 1] } astatus] { + puts $astatus + } + } + } + } + cd $savpwd +} + +set CASHOME [file dirname $env(CASROOT)/.] + +CreateFactory $env(WOK_ROOTADMDIR) OS OCC51 ros $CASHOME +puts "WOK initialization was done" +exit + + + diff --git a/src/WOKsite/tclshrc_Wok b/src/WOKsite/tclshrc_Wok index 609afe5..b522c7b 100755 --- a/src/WOKsite/tclshrc_Wok +++ b/src/WOKsite/tclshrc_Wok @@ -42,7 +42,7 @@ ;# choose. ;# global env tcl_platform -set env(PATH) $env(Path) + if { "$tcl_platform(platform)" == "unix" && ![info exists env(LD_LIBRARY_PATH)] } { puts stderr "You must set LD_LIBRARY_PATH to point where you have installed Wok" exit @@ -168,7 +168,7 @@ set tcl_prompt1 {if {[info commands wokcd] != ""} then \ {puts -nonewline stdout "[wokcd]> "} else \ {puts -nonewline stdout "tclsh> "}} if { "$tcl_platform(platform)" == "windows" } { - source $env(WOKHOME)/lib/cmd-input.tcl + source $env(WOKHOME)/site/cmd-input.tcl } cd $env(WOK_ROOTADMDIR) wokclose -a diff --git a/src/WOKsite/wok.csh b/src/WOKsite/wok.csh index 16445f6..23d1846 100755 --- a/src/WOKsite/wok.csh +++ b/src/WOKsite/wok.csh @@ -6,26 +6,41 @@ # # set noglob ; set narg = $#argv -if ( $narg > 3 || $narg == 1 || $narg == 0 ) then +if ( $narg > 3) then echo "Usage : wok.csh wok_home wok_entities [tclhome] " - echo " wok_home(required) is the path of directory for wok shareable (Ex: /lib/sun) " - echo " wok_entities(required) is the path of an ATLIST file." + echo " wok_home(optional) is the path of directory for wok shareable (Ex: /lib/sun) " + echo " wok_entities(optional) is the path of an ATLIST file." echo " tclhome(optional) is the home directory of a Tcl distribution." echo " " exit endif +if ( $narg == 0 && ! ($?CASROOT)) then +echo -n "Please define CASROOT to the folder containing OpenCascade '"'src'"', '"'drv'"' and '"'inc'"' folders. :" +set res = $< +setenv CASROOT ${res} +endif + +if ( $narg == 0) then + setenv WOKHOME $CASROOT/../wok + setenv WOK_ROOTADMDIR $WOKHOME/wok_entities +endif + +if ( $narg == 1) then + setenv WOKHOME $argv[1] + setenv WOK_ROOTADMDIR $WOKHOME/wok_entities +endif + if ( $narg == 2 ) then - set wokhome=$argv[1] + setenv WOKHOME $argv[1] setenv WOK_ROOTADMDIR $argv[2] endif -set TCLHOME=/usr if ( $narg == 3 ) then - set wokhome=$argv[1] + setenv WOKHOME $argv[1] setenv WOK_ROOTADMDIR $argv[2] - set TCLHOME=$argv[3] + setenv TCLHOME $argv[3] endif @@ -37,7 +52,20 @@ endif if ( ! ($?LD_LIBRARY_PATH) ) then setenv LD_LIBRARY_PATH "" endif -setenv LD_LIBRARY_PATH "${TCLLIB}:${wokhome}:${LD_LIBRARY_PATH}:" + +switch ( `uname` ) + case SunOS: + setenv WOKSTATION "sun" + breaksw + case Linux: + setenv WOKSTATION "lin" + breaksw + default: + echo "Error : unknown platform" + breaksw +endsw + +setenv LD_LIBRARY_PATH "${TCLLIB}:${WOKHOME}/lib/${WOKSTATION}:${LD_LIBRARY_PATH}:" ${TCLBIN}/tclsh