Ignore:
Timestamp:
Sep 26, 2002, 6:22:49 AM (16 years ago)
Author:
kevin
Message:

Targets should throw exceptions to indicate failure.
(Custom targets in the portfile shouldn't have to "return 0")

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/base/src/port1.0/portutil.tcl

    r801 r802  
    626626proc target_run {this} {
    627627        global target_state_fd
     628        set result 0
    628629        set procedure [$this get procedure]
    629630    if {$procedure != ""} {
     
    631632       
    632633                if {[$this has init]} {
    633                         [$this get init] $name
     634                        set result [catch {[$this get init] $name}]
    634635                }
    635636                               
     
    640641                        # Execute pre-run procedure
    641642                        if {[$this has prerun]} {
    642                                 [$this get prerun] $name
    643                         }
    644 
    645                         foreach pre [$this get pre] {
    646                                 ui_debug "Executing $pre"
    647                                 if {[$pre $name] != 0} { return failure }
    648                         }
    649 
    650                         ui_debug "Executing $name"
    651                         set result [$procedure $name]
    652 
    653                         foreach post [$this get post] {
    654                                 ui_debug "Executing $post"
    655                                 if {[$post $name] != 0} {
    656                                         set result 1
    657                                         break
     643                                set result [catch {[$this get prerun] $name}]
     644                        }
     645
     646                        if {$result == 0} {
     647                                foreach pre [$this get pre] {
     648                                        ui_debug "Executing $pre"
     649                                        set result [catch {$pre $name}]
     650                                        if {$result != 0} { break }
    658651                                }
    659652                        }
     653
     654                        if {$result == 0} {
     655                                ui_debug "Executing $name"
     656                                set result [catch {$procedure $name}]
     657                        }
     658                       
     659                        if {$result == 0} {
     660                                foreach post [$this get post] {
     661                                        ui_debug "Executing $post"
     662                                        set result [catch {$post $name}]
     663                                        if {$result != 0} { break }
     664                                }
     665                        }
    660666                        # Execute post-run procedure
    661                         if {[$this has postrun]} {
     667                        if {$result == 0 && [$this has postrun]} {
    662668                                set postrun [$this get postrun]
    663669                                ui_debug "Executing $postrun"
    664                                 $postrun $name
     670                                set result [catch {$postrun $name}]
    665671                        }
    666672                }
    667673                if {$result == 0} {
    668                         set result 0
    669674                        if {[$this get runtype] != "always"} {
    670675                                write_statefile $name $target_state_fd
Note: See TracChangeset for help on using the changeset viewer.