diff --git a/TASTE-linux/bin/TASTE b/TASTE-linux/bin/TASTE index 7728ca5d59e56c54514af756733c6ec1635c1deb..11b24535279e87fb0c58b6f8ff2d40b70c43f1d5 100755 Binary files a/TASTE-linux/bin/TASTE and b/TASTE-linux/bin/TASTE differ diff --git a/TASTE-linux/changelog.txt b/TASTE-linux/changelog.txt index 00040d297a115c3a40c23d1b14bbfcdbbd98c86d..080c1890b9c89a02585d8bdcac510a719d7b14c3 100644 --- a/TASTE-linux/changelog.txt +++ b/TASTE-linux/changelog.txt @@ -1,3 +1,49 @@ +version 2.0.21 +* ticket 0000656 : All imports of function are refused for dataview compatibility reasons +* ticket 0000657 : Instantiating incompatible function raise a Tcl error + +version 2.0.20 +* ticket 0000617 : When a DV is reloaded the bound connection are removed => correction of regression +* ticket 0000651 : Repair inconsistency is called each time modified dataview editor is left +* ticket 0000652 : Removing ACN files from Dataview file list raise an error +* ticket 0000653 : Improve ACN management + +version 2.0.19 +* ticket 0000646: Quitting TASTE during load time, an error is displayed in the console +* ticket 0000647: creation of MSC file shall call taste-create-msc +* ticket 0000649: CV simulation crash at tick 100 +* ticket 0000648: Improve load functionnality + +version 2.0.18 +* ticket 0000640: Hitting return on "about" dialog raise an error +* ticket 0000641: Undo error on processorboard +* ticket 0000642: With clause missing with unconnected driver +* ticket 0000631: Improve MSC ergonomics (note added the 2017-06-28 10:17 ) +* ticket 0000643: --load-interface-view shall force interfaceview file even if file does not exist +* ticket 0000644: If Source_Text of exported function points to not existing file, export crash + +version 2.0.17 +* ticket 0000636 : -g and -u make TASTE crash +* ticket 0000638 : Add a bind all functionality for connections on busses +* ticket 0000639 : Config parameter of Drivers are erroneous + +version 2.0.16 +* ticket 0000635 : Improve import/export functions in IV +* ticket 0000634 : Lock Function if Source_Text not empty +* ticket 0000633 : Source_Text management + +version 2.0.15 (30/05/2017) +* ticket 0000632 : Add an asynchronous start of external tool with error report functionality +* ticket 0000631 : Improve MSC ergonomics +* ticket 0000630 : Default value shall be mandatory for context parameter +* ticket 0000629 : Improve Function Binding ergonomics +* ticket 0000628 : Feature and connection are not exported +* ticket 0000627 : Exporting a not top level function with feature raise a Tcl error +* ticket 0000626 : Error when saving a function with a description +* ticket 0000625 : Dataview generation and external tools error shall be displayed in a popup +* ticket 0000624 : Add an automatic save of the dataview to TASTE Editor +* ticket 0000623 : Error in Search when search field is empty + version 2.0.14 (11/05/2017) * ticket 0000616 : pb in AADL connection binding when the iv connection hierarchy label(s) is(are) modified * ticket 0000617 : When a DV is reloaded the bound connection are removed diff --git a/TASTE-linux/config/TASTE_IV_Properties.aadl b/TASTE-linux/config/TASTE_IV_Properties.aadl index 86920f7be50bfab76f248ef9092b8a293132a0e0..bc971ed292c54d61661731fc8b239d2de05fcb30 100755 --- a/TASTE-linux/config/TASTE_IV_Properties.aadl +++ b/TASTE-linux/config/TASTE_IV_Properties.aadl @@ -6,10 +6,9 @@ property set TASTE_IV_Properties is -- MyBoolean: aadlboolean applies to (System, Package); -- MyString: aadlstring applies to (System, Subprogram); Version: aadlstring applies to (System); - is_Component_Type : aadlboolean applies to (System); - is_instance_of : aadlstring applies to (System); -- MyInt: aadlinteger applies to (System); -- MyReal: aadlreal applies to (System); -- MyEnum: enumeration (val1, val2, val3, val4) applies to (System); MSCFiles : aadlstring applies to (Subprogram); +-- MSCFiles : list of aadlstring applies to (Subprogram); end TASTE_IV_Properties; diff --git a/TASTE-linux/config/TasteConfig.ini b/TASTE-linux/config/TasteConfig.ini index b125467e93d0a28589382e53d0ed7378d3da981b..7cb691f6f01507d1381618c7dae03eedc3914027 100755 --- a/TASTE-linux/config/TasteConfig.ini +++ b/TASTE-linux/config/TasteConfig.ini @@ -13,6 +13,8 @@ namespace eval TasteConfig { "interlineInPercentOfFont" "1.2" \ "gitExe" "C:/Program Files/TortoiseGit/bin/git.exe" \ "asn2aadlPath" "asn2aadlPlus" \ + "mscEditor" "taste-edit-msc" \ + "mscCreator" "taste-create-msc" \ } variable accelerators { \ @@ -85,6 +87,7 @@ namespace eval TasteConfig { "FunctionDV" {"color" "black" "fillColor" "yellow"} \ "ConnectionDV" {"color" "black" "fillColor" "yellow"} \ "Comment" {"color" "gray50" "fillColor" "white"} \ + "BindList" {"color" "gray50" "fillColor" "white"} \ "GenericConnection" {"fillColor" "black"} \ "GenericConnector" {"fillColor" "black"} \ } diff --git a/TASTE-linux/config/externalTools/README b/TASTE-linux/config/externalTools/README index 5fb8a3679c7d5a19926eff9f6cd3e289c4e6f4a3..ddd4d6ac6db34b18d8c1d280c2b7825cb493680d 100755 --- a/TASTE-linux/config/externalTools/README +++ b/TASTE-linux/config/externalTools/README @@ -23,7 +23,12 @@ The list is of the form { { "objecttype" { "atribute1" "value1" }* }* } If the list is [list "alwayson" ] then the external tool will be active all the time. The getOutputManagement function shall return a list defining the way output result of -external tool is to be managed (either print it in statusBar or in dialogBox) +external tool is to be managed: +- print result in status bar ( statusBar in the list) +- print result in dialog box ( dialogBox in the list) +- print result in stdout ( stdout in the list) +- print error in dialog box ( dialogBoxOnError in the list ) +- print error in stdout ( stdoutError in the list ) The myScript function is called by the Editor when clicking on the menu. args is a list of parameters which can be retrieve using the followin command: diff --git a/TASTE-linux/config/externalTools/ada_kate.tcl b/TASTE-linux/config/externalTools/ada_kate.tcl index c51ac1b28e77823599a7cd46007c44bb00903cb4..148400176e4f70eb6ac8f81a48a020b21f1ba67d 100755 --- a/TASTE-linux/config/externalTools/ada_kate.tcl +++ b/TASTE-linux/config/externalTools/ada_kate.tcl @@ -22,7 +22,8 @@ namespace eval ada_kate { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list statusBar] + ## Ticket mantis 0000625 + return [list statusBar dialogBoxOnError] } proc ada_kate { args } { @@ -37,29 +38,36 @@ namespace eval ada_kate { # to launch using the absolute path, read the template2.tcl_ # synchronous call - proc ada_internal { aadlFilePath aadlId } { + proc ada_internal { aadlFilePath aadlId } { + ## Ticket mantis 0000625 set initialPath [pwd] cd [file dirname $aadlFilePath] set msg "" - set errNumb [catch { exec -ignorestderr {*}[auto_execok "taste-generate-skeletons"] } ] - + set scriptPath [auto_execok "taste-generate-skeletons"] + if { $scriptPath != "" } { + set errNumb [catch { exec -ignorestderr {*}$scriptPath 2>@1 } errMsg] + } else { + set errNumb -1 + set errMsg "Unknown command taste-generate-skeletons." + } + ## Ticket mantis 0000632 set aadlId [string tolower $aadlId 0 end] - - if { $errNumb == 0 && [file exists [file normalize "[pwd]/$aadlId" ] ] } { - cd [file normalize "[pwd]/$aadlId" ] - set errNumb [catch { exec -ignorestderr {*}[auto_execok kate] ${aadlId}.ads ${aadlId}.adb & } ] - if { $errNumb == 0 } { - # TODO: check code - but we need to have C_ASN1_Types.h - # set errNumb [catch { exec -ignorestderr {*}[auto_execok gcc] -gnats -c ${aadlId}.c } ] - # if { $errNumb != 0 } { - # set msg "Note: There are syntax errors in your code - check it before you build" - # } - } else { - set msg "Error in execution of \"kate ${aadlId}.ads ${aadlId}.adb\"" - } + set fileBaseName [file normalize "[pwd]/$aadlId" ] + if { $errNumb == 0 && [file exists $fileBaseName ] } { + if { [auto_execok gps] == "" } { + set errNumb -1 + set msg [list "Error in execution of \"gps ${fileBaseName}/${aadlId}.ads ${fileBaseName}/${aadlId}.adb: unknown file gps" ] + } else { + ToolsOthers::execAsynchronouslyWithResponse [list "[auto_execok gps] ${fileBaseName}/${aadlId}.ads ${fileBaseName}/${aadlId}.adb" ] \ + "::ada_kateres" "gps error report" "The execution of gps stopped with error" + } + } elseif { $errNumb != 0 } { + set errNumb -1 + set msg [list "Error in execution of \"taste-generate-skeletons $aadlFilePath\": $errMsg" ] } else { - set msg "Error in execution of \"taste-generate-skeletons $aadlFilePath\"" + set errNumb -1 + set msg [list "Cannot find files:\n-${fileBaseName}/${aadlId}.ads \n-${fileBaseName}/${aadlId}.adb" ] } cd $initialPath diff --git a/TASTE-linux/config/externalTools/blackbox.tcl b/TASTE-linux/config/externalTools/blackbox.tcl index 1268eda0c30459e8ddf4a221028be20bb01c5e65..1154ddeffed8381bb16751d6e62916af10f0260a 100755 --- a/TASTE-linux/config/externalTools/blackbox.tcl +++ b/TASTE-linux/config/externalTools/blackbox.tcl @@ -22,7 +22,8 @@ namespace eval blackbox { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list statusBar] + ## Ticket mantis 0000625 + return [list statusBar dialogBoxOnError] } proc blackbox { args } { @@ -37,18 +38,25 @@ namespace eval blackbox { # to launch using the absolute path, read the template2.tcl_ # synchronous call - proc bb_internal { aadlFilePath aadlId } { + proc bb_internal { aadlFilePath aadlId } { + ## Ticket mantis 0000625 set initialPath [pwd] cd [file dirname $aadlFilePath] set msg "" - set errNumb [catch { exec -ignorestderr {*}[auto_execok "taste-generate-skeletons"] } ] + set scriptPath [auto_execok "taste-generate-skeletons"] + if { $scriptPath != "" } { + set errNumb [catch { exec -ignorestderr {*}$scriptPath 2>@1 } errMsg] + } else { + set errNumb -1 + set errMsg "Unknown command taste-generate-skeletons." + } set aadlId [string tolower $aadlId 0 end] if { $errNumb == 0 && [file exists [file normalize "[pwd]/$aadlId" ] ] } { cd [file normalize "[pwd]/$aadlId" ] - set errNumb [catch { exec -ignorestderr {*}[auto_execok kate] ${aadlId}.h ${aadlId}.c & } ] + set errNumb [catch { exec -ignorestderr {*}[auto_execok kate] ${aadlId}.h ${aadlId}.c 2>@1 & } errMsg] if { $errNumb == 0 } { # TODO: check code - but we need to have C_ASN1_Types.h # set errNumb [catch { exec -ignorestderr {*}[auto_execok gcc] -fsyntax-only -c ${aadlId}.c } ] @@ -56,10 +64,10 @@ namespace eval blackbox { # set msg "Note: There are syntax errors in your code - check it before you build" # } } else { - set msg "Error in execution of \"kate ${aadlId}.c ${aadlId}.h\"" + set msg [list "Error in execution of \"kate ${aadlId}.c ${aadlId}.h\": $errMsg" ] } } else { - set msg "Error in execution of \"taste-generate-skeletons $aadlFilePath\"" + set msg [list "Error in execution of \"taste-generate-skeletons $aadlFilePath\": $errMsg" ] } cd $initialPath diff --git a/TASTE-linux/config/externalTools/build_c.tcl b/TASTE-linux/config/externalTools/build_c.tcl index 0927e5132339c199ac4e3322bedbc3474a2292eb..3eb02cfd02612c3f8e680eb6d76c9ea6983732f7 100755 --- a/TASTE-linux/config/externalTools/build_c.tcl +++ b/TASTE-linux/config/externalTools/build_c.tcl @@ -23,7 +23,8 @@ namespace eval build_c { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list statusBar] + ## Ticket mantis 0000625 + return [list statusBar dialogBoxOnError] } proc build_c { args } { @@ -35,15 +36,22 @@ namespace eval build_c { # synchronous call proc build_internal { aadlFilePath aadlId } { + ## Ticket mantis 0000625 set initialPath [pwd] cd [file dirname $aadlFilePath] set msg "" set ::env(ORCHESTRATOR_OPTIONS) "-p" - set errNumb [catch { exec [auto_execok "taste-build-system"] } ] + set scriptPath [auto_execok "taste-build-system"] + if { $scriptPath != "" } { + set errNumb [catch { exec -ignorestderr {*}$scriptPath 2>@1 } errMsg] + } else { + set errNumb -1 + set errMsg "Unknown command taste-build-system." + } if { $errNumb == 0 } { - set msg "Everything went fine!" + set msg [list "Everything went fine!" ] } else { - set msg "Some errors were reported - check the console" + set msg [list "Some errors were reported: $errMsg" ] } unset ::env(ORCHESTRATOR_OPTIONS) diff --git a/TASTE-linux/config/externalTools/c_kate.tcl b/TASTE-linux/config/externalTools/c_kate.tcl index e14969501a20c40b5732145327a8c14f266be426..5c981203fdeecf24ed9de3d4d1b8956667ae983b 100755 --- a/TASTE-linux/config/externalTools/c_kate.tcl +++ b/TASTE-linux/config/externalTools/c_kate.tcl @@ -22,7 +22,8 @@ namespace eval c_kate { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list statusBar] + ## Ticket mantis 0000625 + return [list statusBar dialogBoxOnError] } proc c_kate { args } { @@ -37,29 +38,37 @@ namespace eval c_kate { # to launch using the absolute path, read the template2.tcl_ # synchronous call - proc c_internal { aadlFilePath aadlId } { + proc c_internal { aadlFilePath aadlId } { + ## Ticket mantis 0000625 + set initialPath [pwd] cd [file dirname $aadlFilePath] set msg "" - - set errNumb [catch { exec -ignorestderr {*}[auto_execok "taste-generate-skeletons"] } ] - + set scriptPath [auto_execok "taste-generate-skeletons"] + if { $scriptPath != "" } { + set errNumb [catch { exec -ignorestderr {*}$scriptPath 2>@1 } errMsg ] + } else { + set errNumb -1 + set errMsg "Unknown command taste-generate-skeletons." + } + + ## Ticket mantis 0000632 set aadlId [string tolower $aadlId 0 end] - - if { $errNumb == 0 && [file exists [file normalize "[pwd]/$aadlId" ] ] } { - cd [file normalize "[pwd]/$aadlId" ] - set errNumb [catch { exec -ignorestderr {*}[auto_execok kate] ${aadlId}.h ${aadlId}.c & } ] - if { $errNumb == 0 } { - # TODO: check code - but we need to have C_ASN1_Types.h - # set errNumb [catch { exec -ignorestderr {*}[auto_execok gcc] -fsyntax-only -c ${aadlId}.c } ] - # if { $errNumb != 0 } { - # set msg "Note: There are syntax errors in your code - check it before you build" - # } - } else { - set msg "Error in execution of \"kate ${aadlId}.c ${aadlId}.h\"" - } + set fileBaseName [file normalize "[pwd]/$aadlId" ] + if { $errNumb == 0 && [file exists $fileBaseName ] } { + if { [auto_execok kate] == "" } { + set errNumb -1 + set msg [list "Error in execution of \"kate ${fileBaseName}/${aadlId}.h ${fileBaseName}/${aadlId}.c: unknown file kate" ] + } else { + ToolsOthers::execAsynchronouslyWithResponse [list "[auto_execok kate] ${fileBaseName}/${aadlId}.h ${fileBaseName}/${aadlId}.c" ] \ + "::c_kateres" "Kate error report" "The execution of kate stopped with error" + } + } elseif { $errNumb != 0 } { + set errNumb -1 + set msg [list "Error in execution of \"taste-generate-skeletons $aadlFilePath\":\n$errMsg" ] } else { - set msg "Error in execution of \"taste-generate-skeletons $aadlFilePath\"" + set errNumb -1 + set msg [list "Cannot find files:\n-${fileBaseName}/${aadlId}.h \n-${fileBaseName}/${aadlId}.c" ] } cd $initialPath diff --git a/TASTE-linux/config/externalTools/concurrencyview.tcl b/TASTE-linux/config/externalTools/concurrencyview.tcl old mode 100755 new mode 100644 index 3d12d1e866b24485cb1a5b04a8f70b491c5745d7..29abf0af8b624f6c77b4fbb379ae4d2ab197be1c --- a/TASTE-linux/config/externalTools/concurrencyview.tcl +++ b/TASTE-linux/config/externalTools/concurrencyview.tcl @@ -23,11 +23,12 @@ namespace eval concurrencyview { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list ] + ## Ticket mantis 0000625 + return [list dialogBoxOnError ] } proc concurrencyview { args } { - if { [Object::getAttribute "concurrencyview" state] == "modified" } { + if { [Object::getAttribute "concurrencyview" state] == "deprecated" } { Context::setAttribute "concurrencyview" state "normal" if { [ string match win32*64 [::platform::identify]] || [ string match win32* [::platform::identify]] } { return [concurrencyviewWindows_internal ] @@ -158,7 +159,7 @@ namespace eval concurrencyview { set res [catch { exec taste-config --prefix } tasteConfigDir ] if { $res != 0 } { #~ an error happend - return [list 1 "taste-config error: $tasteConfigDir"] + return [list 1 [list "taste-config error: $tasteConfigDir"] ] } else { set AADL_IV_PROPERTIES "$tasteConfigDir/share/config_ellidiss/TASTE_IV_Properties.aadl" set AADL_DV_PROPERTIES "$tasteConfigDir/share/config_ellidiss/TASTE_DV_Properties.aadl" @@ -168,7 +169,7 @@ namespace eval concurrencyview { file delete -force $tempdir file mkdir $tempdir - set res [ catch { exec buildsupport -i ${ivFilename} -c ${dvFilename} -d ${dtFilename} ${AADL_IV_PROPERTIES} ${AADL_DV_PROPERTIES} ${OCARINA_COMPONENTS} -glue -gw -o ${tempdir} } errMsg ] + set res [ catch { exec buildsupport -i ${ivFilename} -c ${dvFilename} -d ${dtFilename} ${AADL_IV_PROPERTIES} ${AADL_DV_PROPERTIES} ${OCARINA_COMPONENTS} -glue -gw -o ${tempdir} 2>@1 } errMsg ] if { [file exists "$tempdir/ConcurrencyView/process.aadl" ] } { file delete -force "$cvFilename" @@ -188,7 +189,7 @@ namespace eval concurrencyview { puts $chan $content close $chan } else { - return [list 1 "buildsupport error: $errMsg"] + return [list 1 [list "buildsupport error:\n$errMsg" ] ] } ::API::HMI::loadUI "$cvFilename" "concurrencyview" @@ -196,7 +197,7 @@ namespace eval concurrencyview { return [list 0 ""] } else { - return [ list -1 "Dataview, Interfaceview and Deploymentview shall be loaded." ] + return [ list -1 [list "Dataview, Interfaceview and Deploymentview shall be loaded." ] ] } } } diff --git a/TASTE-linux/config/externalTools/generate_skeletons.tcl b/TASTE-linux/config/externalTools/generate_skeletons.tcl index 3e237eec9758cbbb22b9e04f1354abd0e2c0bc3c..05aecc5e7597dc033b0190d0f965add22d0e91db 100755 --- a/TASTE-linux/config/externalTools/generate_skeletons.tcl +++ b/TASTE-linux/config/externalTools/generate_skeletons.tcl @@ -23,7 +23,8 @@ namespace eval generate_skeletons { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list statusBar] + ## Ticket mantis 0000625 + return [list statusBar dialogBoxOnError] } proc generate_skeletons { args } { @@ -35,16 +36,23 @@ namespace eval generate_skeletons { # synchronous call proc generate_skeletons_internal { aadlFilePath aadlId } { + ## Ticket mantis 0000625 set initialPath [pwd] cd [file dirname $aadlFilePath] set msg "" set ::env(FORCE) 1 - set errNumb [catch { exec -ignorestderr {*}[auto_execok "taste-generate-skeletons"] } ] + set scriptPath [auto_execok "taste-generate-skeletons"] + if { $scriptPath != "" } { + set errNumb [catch { exec -ignorestderr {*}$scriptPath 2>@1 } errMsg] + } else { + set errNumb -1 + set errMsg "Unknown command taste-generate-skeletons." + } if { $errNumb == 0 } { - set msg "Everything went fine!" + set msg [list "Everything went fine!" ] unset ::env(FORCE) } else { - set msg "Some errors were reported - check the console" + set msg [list "Some errors were reported: $errMsg" ] } cd $initialPath diff --git a/TASTE-linux/config/externalTools/mscEditor.tcl b/TASTE-linux/config/externalTools/mscEditor.tcl index da42887d17d53ed7bd920cbb80c565c70ec3757d..9d545448597e4b18486898811cb06de6c120f09b 100644 --- a/TASTE-linux/config/externalTools/mscEditor.tcl +++ b/TASTE-linux/config/externalTools/mscEditor.tcl @@ -22,7 +22,8 @@ namespace eval mscEditor { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list "statusBar"] + ## Ticket mantis 0000625 + return [list statusBar dialogBoxOnError] } proc saveCurrentFile {} { @@ -30,6 +31,7 @@ namespace eval mscEditor { } proc mscEditor { args } { + ## Ticket mantis 0000625 set errNumb -1 set msg "msc editor has not been executed" @@ -50,11 +52,11 @@ namespace eval mscEditor { #dputs "msce.py -o $mscfile" #set errNumb [catch { exec {*}[auto_execok $::installationPath/config/externalTools/test.bat] $aadlFilePath $aadlId } msg ] } else { - set errNumb [catch { exec msce.py -o "$mscfile" &} msg ] + set errNumb [catch { exec msce.py -o "$mscfile" 2>@1 &} msg ] } } else { set errNumb -1 - set msg "the file $mscfile does not exist" + set msg [list "the file $mscfile does not exist" ] } } diff --git a/TASTE-linux/config/externalTools/opengeode.tcl b/TASTE-linux/config/externalTools/opengeode.tcl index a1c01d10b0d0da0b4612bd85d93981b10c76d601..f31a87537ae8609efa90bbb2bb437c26f3823306 100755 --- a/TASTE-linux/config/externalTools/opengeode.tcl +++ b/TASTE-linux/config/externalTools/opengeode.tcl @@ -16,13 +16,14 @@ namespace eval opengeode { # Names of the object this script can be used on proc getApplyTo {} { + ## Ticket mantis 0000625 return [list { "Function" {"Source_Language" "SDL"} } ] } # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list statusBar] + return [list statusBar dialogBoxOnError] } proc opengeode { args } { @@ -38,27 +39,36 @@ namespace eval opengeode { # synchronous call proc opengeode_internal { aadlFilePath aadlId } { + ## Ticket mantis 0000625 set initialPath [pwd] cd [file dirname $aadlFilePath] set msg "" - set errNumb [catch { exec -ignorestderr {*}[auto_execok "taste-generate-skeletons"] } ] - + set scriptPath [auto_execok "taste-generate-skeletons"] + if { $scriptPath != "" } { + set errNumb [catch { exec -ignorestderr {*}$scriptPath 2>@1 } errMsg] + } else { + set errNumb -1 + set errMsg "Unknown command taste-generate-skeletons." + } + ## Ticket mantis 0000632 set aadlId [string tolower $aadlId 0 end] - - if { $errNumb == 0 && [file exists [file normalize "[pwd]/$aadlId" ] ] } { - cd [file normalize "[pwd]/$aadlId" ] - set errNumb [catch { exec -ignorestderr {*}[auto_execok opengeode] system_structure.pr ${aadlId}.pr } ] - if { $errNumb == 0 } { - set errNumb [catch { exec -ignorestderr {*}[auto_execok opengeode] --toAda system_structure.pr ${aadlId}.pr } ] - if { $errNumb != 0 } { - set msg "Error in execution of \"opengeode --toAda system_structure.pr ${aadlId}.pr\"" - } - } else { - set msg "Error in execution of \"opengeode system_structure.pr ${aadlId}.pr\"" - } + set fileBaseName [file normalize "[pwd]/$aadlId" ] + if { $errNumb == 0 && [file exists $fileBaseName ] } { + if { [auto_execok opengeode] == "" } { + set errNumb -1 + set msg [list "Error in execution of \"opengeode system_structure.pr ${fileBaseName}/${aadlId}.pr: unknown file opengeode" ] + } else { + ToolsOthers::execAsynchronouslyWithResponse [list "[auto_execok opengeode] ${fileBaseName}/system_structure.pr ${fileBaseName}/${aadlId}.pr " \ + "[auto_execok opengeode] --toAda ${fileBaseName}/system_structure.pr ${fileBaseName}/${aadlId}.pr" ] \ + "::opengeoderes" "Opengeode error report" "The execution of opengeode stopped with error" + } + } elseif { $errNumb != 0 } { + set errNumb -1 + set msg [list "Error in execution of \"taste-generate-skeletons $aadlFilePath\": $errMsg" ] } else { - set msg "Error in execution of \"taste-generate-skeletons $aadlFilePath\"" + set errNumb -1 + set msg [list "Cannot find file:\n-${fileBaseName}/${aadlId}.pr" ] } cd $initialPath diff --git a/TASTE-linux/config/externalTools/template.tcl b/TASTE-linux/config/externalTools/template.tcl index a21ff3ad5209f2477d908469b440fe8ec194f7e2..8e1dfea558e92377e4a803b27d4b2c552df7e5dd 100755 --- a/TASTE-linux/config/externalTools/template.tcl +++ b/TASTE-linux/config/externalTools/template.tcl @@ -22,7 +22,7 @@ namespace eval template { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list dialogBox statusBar] + return [list statusBar dialogBoxOnError] } proc template { args } { @@ -39,11 +39,11 @@ namespace eval template { # synchronous call proc template_internal { aadlFilePath aadlId } { if { $::tcl_platform(platform) == "windows" } { - set errNumb [catch { exec {*}[auto_execok $::installationPath/config/externalTools/test.bat] $aadlFilePath $aadlId } msg ] + set errNumb [catch { exec {*}[auto_execok $::installationPath/config/externalTools/test.bat] $aadlFilePath $aadlId 2>@1 } msg ] } else { - set errNumb [catch { exec $::installationPath/config/externalTools/test.sh $aadlFilePath $aadlId } msg ] + set errNumb [catch { exec $::installationPath/config/externalTools/test.sh $aadlFilePath $aadlId 2>@1 } msg ] } - return [list $errNumb $msg] + return [list $errNumb [list $msg] ] } # asynchronous call diff --git a/TASTE-linux/config/externalTools/template2.tcl b/TASTE-linux/config/externalTools/template2.tcl index 150236e1f14c4cedfe37a80b718410e72c9fc3b7..be836d80aa1cc760f51a2e767838ea34b8d18a61 100755 --- a/TASTE-linux/config/externalTools/template2.tcl +++ b/TASTE-linux/config/externalTools/template2.tcl @@ -22,7 +22,7 @@ namespace eval template2 { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list dialogBox statusBar] + return [list statusBar dialogBoxOnError] } proc template2 { args } { @@ -34,7 +34,7 @@ namespace eval template2 { # synchronous call proc template2_internal { aadlFilePath aadlId } { - set msg "File path: $aadlFilePath \nAADL function id: $aadlId" + set msg [list "File path: $aadlFilePath \nAADL function id: $aadlId" ] return [list 0 $msg] } diff --git a/TASTE-linux/config/plugins/interface.sbp b/TASTE-linux/config/plugins/interface.sbp index b1f8ab76d513f5f32c39242f5224df71e3818e9d..ff9582051025eda4c08e59e54e77b4e231252652 100755 Binary files a/TASTE-linux/config/plugins/interface.sbp and b/TASTE-linux/config/plugins/interface.sbp differ diff --git a/TASTE-linux/config/plugins/library.sbp b/TASTE-linux/config/plugins/library.sbp index a4ee4a1d5003787a2dd03fe29a50862456ba357c..16c11ef99c1a3caec925014e1b6ec842543c7f7b 100755 Binary files a/TASTE-linux/config/plugins/library.sbp and b/TASTE-linux/config/plugins/library.sbp differ diff --git a/TASTE-linux64/bin/TASTE b/TASTE-linux64/bin/TASTE index 46fad165493b4932cedb0a5ff37c65583c108a65..2165c14b612a01bf3690a1014f04a45600a26f66 100644 Binary files a/TASTE-linux64/bin/TASTE and b/TASTE-linux64/bin/TASTE differ diff --git a/TASTE-linux64/changelog.txt b/TASTE-linux64/changelog.txt index 00040d297a115c3a40c23d1b14bbfcdbbd98c86d..080c1890b9c89a02585d8bdcac510a719d7b14c3 100644 --- a/TASTE-linux64/changelog.txt +++ b/TASTE-linux64/changelog.txt @@ -1,3 +1,49 @@ +version 2.0.21 +* ticket 0000656 : All imports of function are refused for dataview compatibility reasons +* ticket 0000657 : Instantiating incompatible function raise a Tcl error + +version 2.0.20 +* ticket 0000617 : When a DV is reloaded the bound connection are removed => correction of regression +* ticket 0000651 : Repair inconsistency is called each time modified dataview editor is left +* ticket 0000652 : Removing ACN files from Dataview file list raise an error +* ticket 0000653 : Improve ACN management + +version 2.0.19 +* ticket 0000646: Quitting TASTE during load time, an error is displayed in the console +* ticket 0000647: creation of MSC file shall call taste-create-msc +* ticket 0000649: CV simulation crash at tick 100 +* ticket 0000648: Improve load functionnality + +version 2.0.18 +* ticket 0000640: Hitting return on "about" dialog raise an error +* ticket 0000641: Undo error on processorboard +* ticket 0000642: With clause missing with unconnected driver +* ticket 0000631: Improve MSC ergonomics (note added the 2017-06-28 10:17 ) +* ticket 0000643: --load-interface-view shall force interfaceview file even if file does not exist +* ticket 0000644: If Source_Text of exported function points to not existing file, export crash + +version 2.0.17 +* ticket 0000636 : -g and -u make TASTE crash +* ticket 0000638 : Add a bind all functionality for connections on busses +* ticket 0000639 : Config parameter of Drivers are erroneous + +version 2.0.16 +* ticket 0000635 : Improve import/export functions in IV +* ticket 0000634 : Lock Function if Source_Text not empty +* ticket 0000633 : Source_Text management + +version 2.0.15 (30/05/2017) +* ticket 0000632 : Add an asynchronous start of external tool with error report functionality +* ticket 0000631 : Improve MSC ergonomics +* ticket 0000630 : Default value shall be mandatory for context parameter +* ticket 0000629 : Improve Function Binding ergonomics +* ticket 0000628 : Feature and connection are not exported +* ticket 0000627 : Exporting a not top level function with feature raise a Tcl error +* ticket 0000626 : Error when saving a function with a description +* ticket 0000625 : Dataview generation and external tools error shall be displayed in a popup +* ticket 0000624 : Add an automatic save of the dataview to TASTE Editor +* ticket 0000623 : Error in Search when search field is empty + version 2.0.14 (11/05/2017) * ticket 0000616 : pb in AADL connection binding when the iv connection hierarchy label(s) is(are) modified * ticket 0000617 : When a DV is reloaded the bound connection are removed diff --git a/TASTE-linux64/config/TASTE_IV_Properties.aadl b/TASTE-linux64/config/TASTE_IV_Properties.aadl index d9d37a28f63ad899925e5bba8208d7f4b1b33473..bc971ed292c54d61661731fc8b239d2de05fcb30 100644 --- a/TASTE-linux64/config/TASTE_IV_Properties.aadl +++ b/TASTE-linux64/config/TASTE_IV_Properties.aadl @@ -10,4 +10,5 @@ property set TASTE_IV_Properties is -- MyReal: aadlreal applies to (System); -- MyEnum: enumeration (val1, val2, val3, val4) applies to (System); MSCFiles : aadlstring applies to (Subprogram); +-- MSCFiles : list of aadlstring applies to (Subprogram); end TASTE_IV_Properties; diff --git a/TASTE-linux64/config/TasteConfig.ini b/TASTE-linux64/config/TasteConfig.ini index 06b165bacf1041628bd32e05d7bce641c8ffe488..4ddfead6003184b49791982a297ba10ea4180a19 100644 --- a/TASTE-linux64/config/TasteConfig.ini +++ b/TASTE-linux64/config/TasteConfig.ini @@ -13,6 +13,8 @@ namespace eval TasteConfig { "interlineInPercentOfFont" "1.2" \ "gitExe" "C:/Program Files/TortoiseGit/bin/git.exe" \ "asn2aadlPath" "asn2aadlPlus" \ + "mscEditor" "taste-edit-msc" \ + "mscCreator" "taste-create-msc" \ } variable accelerators { \ @@ -85,6 +87,7 @@ namespace eval TasteConfig { "FunctionDV" {"color" "black" "fillColor" "yellow"} \ "ConnectionDV" {"color" "black" "fillColor" "yellow"} \ "Comment" {"color" "gray50" "fillColor" "white"} \ + "BindList" {"color" "gray50" "fillColor" "white"} \ "GenericConnection" {"fillColor" "black"} \ "GenericConnector" {"fillColor" "black"} \ } diff --git a/TASTE-linux64/config/externalTools/README b/TASTE-linux64/config/externalTools/README index 5fb8a3679c7d5a19926eff9f6cd3e289c4e6f4a3..ddd4d6ac6db34b18d8c1d280c2b7825cb493680d 100644 --- a/TASTE-linux64/config/externalTools/README +++ b/TASTE-linux64/config/externalTools/README @@ -23,7 +23,12 @@ The list is of the form { { "objecttype" { "atribute1" "value1" }* }* } If the list is [list "alwayson" ] then the external tool will be active all the time. The getOutputManagement function shall return a list defining the way output result of -external tool is to be managed (either print it in statusBar or in dialogBox) +external tool is to be managed: +- print result in status bar ( statusBar in the list) +- print result in dialog box ( dialogBox in the list) +- print result in stdout ( stdout in the list) +- print error in dialog box ( dialogBoxOnError in the list ) +- print error in stdout ( stdoutError in the list ) The myScript function is called by the Editor when clicking on the menu. args is a list of parameters which can be retrieve using the followin command: diff --git a/TASTE-linux64/config/externalTools/ada_kate.tcl b/TASTE-linux64/config/externalTools/ada_kate.tcl index c51ac1b28e77823599a7cd46007c44bb00903cb4..148400176e4f70eb6ac8f81a48a020b21f1ba67d 100644 --- a/TASTE-linux64/config/externalTools/ada_kate.tcl +++ b/TASTE-linux64/config/externalTools/ada_kate.tcl @@ -22,7 +22,8 @@ namespace eval ada_kate { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list statusBar] + ## Ticket mantis 0000625 + return [list statusBar dialogBoxOnError] } proc ada_kate { args } { @@ -37,29 +38,36 @@ namespace eval ada_kate { # to launch using the absolute path, read the template2.tcl_ # synchronous call - proc ada_internal { aadlFilePath aadlId } { + proc ada_internal { aadlFilePath aadlId } { + ## Ticket mantis 0000625 set initialPath [pwd] cd [file dirname $aadlFilePath] set msg "" - set errNumb [catch { exec -ignorestderr {*}[auto_execok "taste-generate-skeletons"] } ] - + set scriptPath [auto_execok "taste-generate-skeletons"] + if { $scriptPath != "" } { + set errNumb [catch { exec -ignorestderr {*}$scriptPath 2>@1 } errMsg] + } else { + set errNumb -1 + set errMsg "Unknown command taste-generate-skeletons." + } + ## Ticket mantis 0000632 set aadlId [string tolower $aadlId 0 end] - - if { $errNumb == 0 && [file exists [file normalize "[pwd]/$aadlId" ] ] } { - cd [file normalize "[pwd]/$aadlId" ] - set errNumb [catch { exec -ignorestderr {*}[auto_execok kate] ${aadlId}.ads ${aadlId}.adb & } ] - if { $errNumb == 0 } { - # TODO: check code - but we need to have C_ASN1_Types.h - # set errNumb [catch { exec -ignorestderr {*}[auto_execok gcc] -gnats -c ${aadlId}.c } ] - # if { $errNumb != 0 } { - # set msg "Note: There are syntax errors in your code - check it before you build" - # } - } else { - set msg "Error in execution of \"kate ${aadlId}.ads ${aadlId}.adb\"" - } + set fileBaseName [file normalize "[pwd]/$aadlId" ] + if { $errNumb == 0 && [file exists $fileBaseName ] } { + if { [auto_execok gps] == "" } { + set errNumb -1 + set msg [list "Error in execution of \"gps ${fileBaseName}/${aadlId}.ads ${fileBaseName}/${aadlId}.adb: unknown file gps" ] + } else { + ToolsOthers::execAsynchronouslyWithResponse [list "[auto_execok gps] ${fileBaseName}/${aadlId}.ads ${fileBaseName}/${aadlId}.adb" ] \ + "::ada_kateres" "gps error report" "The execution of gps stopped with error" + } + } elseif { $errNumb != 0 } { + set errNumb -1 + set msg [list "Error in execution of \"taste-generate-skeletons $aadlFilePath\": $errMsg" ] } else { - set msg "Error in execution of \"taste-generate-skeletons $aadlFilePath\"" + set errNumb -1 + set msg [list "Cannot find files:\n-${fileBaseName}/${aadlId}.ads \n-${fileBaseName}/${aadlId}.adb" ] } cd $initialPath diff --git a/TASTE-linux64/config/externalTools/blackbox.tcl b/TASTE-linux64/config/externalTools/blackbox.tcl index 1268eda0c30459e8ddf4a221028be20bb01c5e65..1154ddeffed8381bb16751d6e62916af10f0260a 100644 --- a/TASTE-linux64/config/externalTools/blackbox.tcl +++ b/TASTE-linux64/config/externalTools/blackbox.tcl @@ -22,7 +22,8 @@ namespace eval blackbox { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list statusBar] + ## Ticket mantis 0000625 + return [list statusBar dialogBoxOnError] } proc blackbox { args } { @@ -37,18 +38,25 @@ namespace eval blackbox { # to launch using the absolute path, read the template2.tcl_ # synchronous call - proc bb_internal { aadlFilePath aadlId } { + proc bb_internal { aadlFilePath aadlId } { + ## Ticket mantis 0000625 set initialPath [pwd] cd [file dirname $aadlFilePath] set msg "" - set errNumb [catch { exec -ignorestderr {*}[auto_execok "taste-generate-skeletons"] } ] + set scriptPath [auto_execok "taste-generate-skeletons"] + if { $scriptPath != "" } { + set errNumb [catch { exec -ignorestderr {*}$scriptPath 2>@1 } errMsg] + } else { + set errNumb -1 + set errMsg "Unknown command taste-generate-skeletons." + } set aadlId [string tolower $aadlId 0 end] if { $errNumb == 0 && [file exists [file normalize "[pwd]/$aadlId" ] ] } { cd [file normalize "[pwd]/$aadlId" ] - set errNumb [catch { exec -ignorestderr {*}[auto_execok kate] ${aadlId}.h ${aadlId}.c & } ] + set errNumb [catch { exec -ignorestderr {*}[auto_execok kate] ${aadlId}.h ${aadlId}.c 2>@1 & } errMsg] if { $errNumb == 0 } { # TODO: check code - but we need to have C_ASN1_Types.h # set errNumb [catch { exec -ignorestderr {*}[auto_execok gcc] -fsyntax-only -c ${aadlId}.c } ] @@ -56,10 +64,10 @@ namespace eval blackbox { # set msg "Note: There are syntax errors in your code - check it before you build" # } } else { - set msg "Error in execution of \"kate ${aadlId}.c ${aadlId}.h\"" + set msg [list "Error in execution of \"kate ${aadlId}.c ${aadlId}.h\": $errMsg" ] } } else { - set msg "Error in execution of \"taste-generate-skeletons $aadlFilePath\"" + set msg [list "Error in execution of \"taste-generate-skeletons $aadlFilePath\": $errMsg" ] } cd $initialPath diff --git a/TASTE-linux64/config/externalTools/build_c.tcl b/TASTE-linux64/config/externalTools/build_c.tcl index 0927e5132339c199ac4e3322bedbc3474a2292eb..3eb02cfd02612c3f8e680eb6d76c9ea6983732f7 100644 --- a/TASTE-linux64/config/externalTools/build_c.tcl +++ b/TASTE-linux64/config/externalTools/build_c.tcl @@ -23,7 +23,8 @@ namespace eval build_c { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list statusBar] + ## Ticket mantis 0000625 + return [list statusBar dialogBoxOnError] } proc build_c { args } { @@ -35,15 +36,22 @@ namespace eval build_c { # synchronous call proc build_internal { aadlFilePath aadlId } { + ## Ticket mantis 0000625 set initialPath [pwd] cd [file dirname $aadlFilePath] set msg "" set ::env(ORCHESTRATOR_OPTIONS) "-p" - set errNumb [catch { exec [auto_execok "taste-build-system"] } ] + set scriptPath [auto_execok "taste-build-system"] + if { $scriptPath != "" } { + set errNumb [catch { exec -ignorestderr {*}$scriptPath 2>@1 } errMsg] + } else { + set errNumb -1 + set errMsg "Unknown command taste-build-system." + } if { $errNumb == 0 } { - set msg "Everything went fine!" + set msg [list "Everything went fine!" ] } else { - set msg "Some errors were reported - check the console" + set msg [list "Some errors were reported: $errMsg" ] } unset ::env(ORCHESTRATOR_OPTIONS) diff --git a/TASTE-linux64/config/externalTools/c_kate.tcl b/TASTE-linux64/config/externalTools/c_kate.tcl index e14969501a20c40b5732145327a8c14f266be426..5c981203fdeecf24ed9de3d4d1b8956667ae983b 100644 --- a/TASTE-linux64/config/externalTools/c_kate.tcl +++ b/TASTE-linux64/config/externalTools/c_kate.tcl @@ -22,7 +22,8 @@ namespace eval c_kate { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list statusBar] + ## Ticket mantis 0000625 + return [list statusBar dialogBoxOnError] } proc c_kate { args } { @@ -37,29 +38,37 @@ namespace eval c_kate { # to launch using the absolute path, read the template2.tcl_ # synchronous call - proc c_internal { aadlFilePath aadlId } { + proc c_internal { aadlFilePath aadlId } { + ## Ticket mantis 0000625 + set initialPath [pwd] cd [file dirname $aadlFilePath] set msg "" - - set errNumb [catch { exec -ignorestderr {*}[auto_execok "taste-generate-skeletons"] } ] - + set scriptPath [auto_execok "taste-generate-skeletons"] + if { $scriptPath != "" } { + set errNumb [catch { exec -ignorestderr {*}$scriptPath 2>@1 } errMsg ] + } else { + set errNumb -1 + set errMsg "Unknown command taste-generate-skeletons." + } + + ## Ticket mantis 0000632 set aadlId [string tolower $aadlId 0 end] - - if { $errNumb == 0 && [file exists [file normalize "[pwd]/$aadlId" ] ] } { - cd [file normalize "[pwd]/$aadlId" ] - set errNumb [catch { exec -ignorestderr {*}[auto_execok kate] ${aadlId}.h ${aadlId}.c & } ] - if { $errNumb == 0 } { - # TODO: check code - but we need to have C_ASN1_Types.h - # set errNumb [catch { exec -ignorestderr {*}[auto_execok gcc] -fsyntax-only -c ${aadlId}.c } ] - # if { $errNumb != 0 } { - # set msg "Note: There are syntax errors in your code - check it before you build" - # } - } else { - set msg "Error in execution of \"kate ${aadlId}.c ${aadlId}.h\"" - } + set fileBaseName [file normalize "[pwd]/$aadlId" ] + if { $errNumb == 0 && [file exists $fileBaseName ] } { + if { [auto_execok kate] == "" } { + set errNumb -1 + set msg [list "Error in execution of \"kate ${fileBaseName}/${aadlId}.h ${fileBaseName}/${aadlId}.c: unknown file kate" ] + } else { + ToolsOthers::execAsynchronouslyWithResponse [list "[auto_execok kate] ${fileBaseName}/${aadlId}.h ${fileBaseName}/${aadlId}.c" ] \ + "::c_kateres" "Kate error report" "The execution of kate stopped with error" + } + } elseif { $errNumb != 0 } { + set errNumb -1 + set msg [list "Error in execution of \"taste-generate-skeletons $aadlFilePath\":\n$errMsg" ] } else { - set msg "Error in execution of \"taste-generate-skeletons $aadlFilePath\"" + set errNumb -1 + set msg [list "Cannot find files:\n-${fileBaseName}/${aadlId}.h \n-${fileBaseName}/${aadlId}.c" ] } cd $initialPath diff --git a/TASTE-linux64/config/externalTools/concurrencyview.tcl b/TASTE-linux64/config/externalTools/concurrencyview.tcl index 3d12d1e866b24485cb1a5b04a8f70b491c5745d7..29abf0af8b624f6c77b4fbb379ae4d2ab197be1c 100644 --- a/TASTE-linux64/config/externalTools/concurrencyview.tcl +++ b/TASTE-linux64/config/externalTools/concurrencyview.tcl @@ -23,11 +23,12 @@ namespace eval concurrencyview { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list ] + ## Ticket mantis 0000625 + return [list dialogBoxOnError ] } proc concurrencyview { args } { - if { [Object::getAttribute "concurrencyview" state] == "modified" } { + if { [Object::getAttribute "concurrencyview" state] == "deprecated" } { Context::setAttribute "concurrencyview" state "normal" if { [ string match win32*64 [::platform::identify]] || [ string match win32* [::platform::identify]] } { return [concurrencyviewWindows_internal ] @@ -158,7 +159,7 @@ namespace eval concurrencyview { set res [catch { exec taste-config --prefix } tasteConfigDir ] if { $res != 0 } { #~ an error happend - return [list 1 "taste-config error: $tasteConfigDir"] + return [list 1 [list "taste-config error: $tasteConfigDir"] ] } else { set AADL_IV_PROPERTIES "$tasteConfigDir/share/config_ellidiss/TASTE_IV_Properties.aadl" set AADL_DV_PROPERTIES "$tasteConfigDir/share/config_ellidiss/TASTE_DV_Properties.aadl" @@ -168,7 +169,7 @@ namespace eval concurrencyview { file delete -force $tempdir file mkdir $tempdir - set res [ catch { exec buildsupport -i ${ivFilename} -c ${dvFilename} -d ${dtFilename} ${AADL_IV_PROPERTIES} ${AADL_DV_PROPERTIES} ${OCARINA_COMPONENTS} -glue -gw -o ${tempdir} } errMsg ] + set res [ catch { exec buildsupport -i ${ivFilename} -c ${dvFilename} -d ${dtFilename} ${AADL_IV_PROPERTIES} ${AADL_DV_PROPERTIES} ${OCARINA_COMPONENTS} -glue -gw -o ${tempdir} 2>@1 } errMsg ] if { [file exists "$tempdir/ConcurrencyView/process.aadl" ] } { file delete -force "$cvFilename" @@ -188,7 +189,7 @@ namespace eval concurrencyview { puts $chan $content close $chan } else { - return [list 1 "buildsupport error: $errMsg"] + return [list 1 [list "buildsupport error:\n$errMsg" ] ] } ::API::HMI::loadUI "$cvFilename" "concurrencyview" @@ -196,7 +197,7 @@ namespace eval concurrencyview { return [list 0 ""] } else { - return [ list -1 "Dataview, Interfaceview and Deploymentview shall be loaded." ] + return [ list -1 [list "Dataview, Interfaceview and Deploymentview shall be loaded." ] ] } } } diff --git a/TASTE-linux64/config/externalTools/generate_skeletons.tcl b/TASTE-linux64/config/externalTools/generate_skeletons.tcl index 3e237eec9758cbbb22b9e04f1354abd0e2c0bc3c..05aecc5e7597dc033b0190d0f965add22d0e91db 100644 --- a/TASTE-linux64/config/externalTools/generate_skeletons.tcl +++ b/TASTE-linux64/config/externalTools/generate_skeletons.tcl @@ -23,7 +23,8 @@ namespace eval generate_skeletons { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list statusBar] + ## Ticket mantis 0000625 + return [list statusBar dialogBoxOnError] } proc generate_skeletons { args } { @@ -35,16 +36,23 @@ namespace eval generate_skeletons { # synchronous call proc generate_skeletons_internal { aadlFilePath aadlId } { + ## Ticket mantis 0000625 set initialPath [pwd] cd [file dirname $aadlFilePath] set msg "" set ::env(FORCE) 1 - set errNumb [catch { exec -ignorestderr {*}[auto_execok "taste-generate-skeletons"] } ] + set scriptPath [auto_execok "taste-generate-skeletons"] + if { $scriptPath != "" } { + set errNumb [catch { exec -ignorestderr {*}$scriptPath 2>@1 } errMsg] + } else { + set errNumb -1 + set errMsg "Unknown command taste-generate-skeletons." + } if { $errNumb == 0 } { - set msg "Everything went fine!" + set msg [list "Everything went fine!" ] unset ::env(FORCE) } else { - set msg "Some errors were reported - check the console" + set msg [list "Some errors were reported: $errMsg" ] } cd $initialPath diff --git a/TASTE-linux64/config/externalTools/mscEditor.tcl b/TASTE-linux64/config/externalTools/mscEditor.tcl index da42887d17d53ed7bd920cbb80c565c70ec3757d..9d545448597e4b18486898811cb06de6c120f09b 100644 --- a/TASTE-linux64/config/externalTools/mscEditor.tcl +++ b/TASTE-linux64/config/externalTools/mscEditor.tcl @@ -22,7 +22,8 @@ namespace eval mscEditor { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list "statusBar"] + ## Ticket mantis 0000625 + return [list statusBar dialogBoxOnError] } proc saveCurrentFile {} { @@ -30,6 +31,7 @@ namespace eval mscEditor { } proc mscEditor { args } { + ## Ticket mantis 0000625 set errNumb -1 set msg "msc editor has not been executed" @@ -50,11 +52,11 @@ namespace eval mscEditor { #dputs "msce.py -o $mscfile" #set errNumb [catch { exec {*}[auto_execok $::installationPath/config/externalTools/test.bat] $aadlFilePath $aadlId } msg ] } else { - set errNumb [catch { exec msce.py -o "$mscfile" &} msg ] + set errNumb [catch { exec msce.py -o "$mscfile" 2>@1 &} msg ] } } else { set errNumb -1 - set msg "the file $mscfile does not exist" + set msg [list "the file $mscfile does not exist" ] } } diff --git a/TASTE-linux64/config/externalTools/opengeode.tcl b/TASTE-linux64/config/externalTools/opengeode.tcl index a1c01d10b0d0da0b4612bd85d93981b10c76d601..f31a87537ae8609efa90bbb2bb437c26f3823306 100644 --- a/TASTE-linux64/config/externalTools/opengeode.tcl +++ b/TASTE-linux64/config/externalTools/opengeode.tcl @@ -16,13 +16,14 @@ namespace eval opengeode { # Names of the object this script can be used on proc getApplyTo {} { + ## Ticket mantis 0000625 return [list { "Function" {"Source_Language" "SDL"} } ] } # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list statusBar] + return [list statusBar dialogBoxOnError] } proc opengeode { args } { @@ -38,27 +39,36 @@ namespace eval opengeode { # synchronous call proc opengeode_internal { aadlFilePath aadlId } { + ## Ticket mantis 0000625 set initialPath [pwd] cd [file dirname $aadlFilePath] set msg "" - set errNumb [catch { exec -ignorestderr {*}[auto_execok "taste-generate-skeletons"] } ] - + set scriptPath [auto_execok "taste-generate-skeletons"] + if { $scriptPath != "" } { + set errNumb [catch { exec -ignorestderr {*}$scriptPath 2>@1 } errMsg] + } else { + set errNumb -1 + set errMsg "Unknown command taste-generate-skeletons." + } + ## Ticket mantis 0000632 set aadlId [string tolower $aadlId 0 end] - - if { $errNumb == 0 && [file exists [file normalize "[pwd]/$aadlId" ] ] } { - cd [file normalize "[pwd]/$aadlId" ] - set errNumb [catch { exec -ignorestderr {*}[auto_execok opengeode] system_structure.pr ${aadlId}.pr } ] - if { $errNumb == 0 } { - set errNumb [catch { exec -ignorestderr {*}[auto_execok opengeode] --toAda system_structure.pr ${aadlId}.pr } ] - if { $errNumb != 0 } { - set msg "Error in execution of \"opengeode --toAda system_structure.pr ${aadlId}.pr\"" - } - } else { - set msg "Error in execution of \"opengeode system_structure.pr ${aadlId}.pr\"" - } + set fileBaseName [file normalize "[pwd]/$aadlId" ] + if { $errNumb == 0 && [file exists $fileBaseName ] } { + if { [auto_execok opengeode] == "" } { + set errNumb -1 + set msg [list "Error in execution of \"opengeode system_structure.pr ${fileBaseName}/${aadlId}.pr: unknown file opengeode" ] + } else { + ToolsOthers::execAsynchronouslyWithResponse [list "[auto_execok opengeode] ${fileBaseName}/system_structure.pr ${fileBaseName}/${aadlId}.pr " \ + "[auto_execok opengeode] --toAda ${fileBaseName}/system_structure.pr ${fileBaseName}/${aadlId}.pr" ] \ + "::opengeoderes" "Opengeode error report" "The execution of opengeode stopped with error" + } + } elseif { $errNumb != 0 } { + set errNumb -1 + set msg [list "Error in execution of \"taste-generate-skeletons $aadlFilePath\": $errMsg" ] } else { - set msg "Error in execution of \"taste-generate-skeletons $aadlFilePath\"" + set errNumb -1 + set msg [list "Cannot find file:\n-${fileBaseName}/${aadlId}.pr" ] } cd $initialPath diff --git a/TASTE-linux64/config/externalTools/template.tcl b/TASTE-linux64/config/externalTools/template.tcl index a21ff3ad5209f2477d908469b440fe8ec194f7e2..8e1dfea558e92377e4a803b27d4b2c552df7e5dd 100644 --- a/TASTE-linux64/config/externalTools/template.tcl +++ b/TASTE-linux64/config/externalTools/template.tcl @@ -22,7 +22,7 @@ namespace eval template { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list dialogBox statusBar] + return [list statusBar dialogBoxOnError] } proc template { args } { @@ -39,11 +39,11 @@ namespace eval template { # synchronous call proc template_internal { aadlFilePath aadlId } { if { $::tcl_platform(platform) == "windows" } { - set errNumb [catch { exec {*}[auto_execok $::installationPath/config/externalTools/test.bat] $aadlFilePath $aadlId } msg ] + set errNumb [catch { exec {*}[auto_execok $::installationPath/config/externalTools/test.bat] $aadlFilePath $aadlId 2>@1 } msg ] } else { - set errNumb [catch { exec $::installationPath/config/externalTools/test.sh $aadlFilePath $aadlId } msg ] + set errNumb [catch { exec $::installationPath/config/externalTools/test.sh $aadlFilePath $aadlId 2>@1 } msg ] } - return [list $errNumb $msg] + return [list $errNumb [list $msg] ] } # asynchronous call diff --git a/TASTE-linux64/config/externalTools/template2.tcl b/TASTE-linux64/config/externalTools/template2.tcl index 150236e1f14c4cedfe37a80b718410e72c9fc3b7..be836d80aa1cc760f51a2e767838ea34b8d18a61 100644 --- a/TASTE-linux64/config/externalTools/template2.tcl +++ b/TASTE-linux64/config/externalTools/template2.tcl @@ -22,7 +22,7 @@ namespace eval template2 { # List of way to manage output in the Framework # Could be an empty list or one or both of 'dialogBox' and 'statusBar' proc getOutputManagement {} { - return [list dialogBox statusBar] + return [list statusBar dialogBoxOnError] } proc template2 { args } { @@ -34,7 +34,7 @@ namespace eval template2 { # synchronous call proc template2_internal { aadlFilePath aadlId } { - set msg "File path: $aadlFilePath \nAADL function id: $aadlId" + set msg [list "File path: $aadlFilePath \nAADL function id: $aadlId" ] return [list 0 $msg] } diff --git a/TASTE-linux64/config/plugins/interface.sbp b/TASTE-linux64/config/plugins/interface.sbp index b1f8ab76d513f5f32c39242f5224df71e3818e9d..ff9582051025eda4c08e59e54e77b4e231252652 100644 Binary files a/TASTE-linux64/config/plugins/interface.sbp and b/TASTE-linux64/config/plugins/interface.sbp differ diff --git a/TASTE-linux64/config/plugins/library.sbp b/TASTE-linux64/config/plugins/library.sbp index a4ee4a1d5003787a2dd03fe29a50862456ba357c..16c11ef99c1a3caec925014e1b6ec842543c7f7b 100644 Binary files a/TASTE-linux64/config/plugins/library.sbp and b/TASTE-linux64/config/plugins/library.sbp differ diff --git a/TASTE-v1-linux/config/externalTools/ada_kate.tcl b/TASTE-v1-linux/config/externalTools/ada_kate.tcl index c51ac1b28e77823599a7cd46007c44bb00903cb4..bfb70bb36501efa0460d53fd485ea8910c1bc7b6 100644 --- a/TASTE-v1-linux/config/externalTools/ada_kate.tcl +++ b/TASTE-v1-linux/config/externalTools/ada_kate.tcl @@ -48,7 +48,7 @@ namespace eval ada_kate { if { $errNumb == 0 && [file exists [file normalize "[pwd]/$aadlId" ] ] } { cd [file normalize "[pwd]/$aadlId" ] - set errNumb [catch { exec -ignorestderr {*}[auto_execok kate] ${aadlId}.ads ${aadlId}.adb & } ] + set errNumb [catch { exec -ignorestderr {*}[auto_execok gps] ${aadlId}.ads ${aadlId}.adb & } ] if { $errNumb == 0 } { # TODO: check code - but we need to have C_ASN1_Types.h # set errNumb [catch { exec -ignorestderr {*}[auto_execok gcc] -gnats -c ${aadlId}.c } ]