Changeset 146724 for trunk/base


Ignore:
Timestamp:
Mar 15, 2016, 10:07:02 PM (4 years ago)
Author:
petr@…
Message:

base: fix more passing of signals in macports.tcl

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/base/src/macports1.0/macports.tcl

    r146707 r146724  
    12681268    if {[file isfile $user_plist]} {
    12691269        if {![file isdirectory $target_dir]} {
    1270             if {[catch {file mkdir $target_dir} result]} {
    1271                 ui_warn "Failed to create Library/Preferences in ${target_homedir}: $result"
     1270            try -pass_signal {
     1271                file mkdir $target_dir
     1272            } catch {{*} eCode eMessage} {
     1273                ui_warn "Failed to create Library/Preferences in ${target_homedir}: $eMessage"
    12721274                return
    12731275            }
    12741276        }
    1275         if {[file writable $target_dir] && [catch {
     1277        try -pass_signal {
     1278            if {![file writable $target_dir]} {
     1279                error "${target_dir} is not writable"
     1280            }
    12761281            ui_debug "Copying $user_plist to $target_dir"
    12771282            file copy -force $user_plist $target_dir
    12781283            file attributes ${target_dir}/com.apple.dt.Xcode.plist -owner $macportsuser -permissions 0644
    1279         } result]} {
    1280             ui_warn "Failed to copy com.apple.dt.Xcode.plist to ${target_dir}: $result"
     1284        } catch {{*} eCode eMessage} {
     1285            ui_warn "Failed to copy com.apple.dt.Xcode.plist to ${target_dir}: $eMessage"
    12811286        }
    12821287    }
     
    24602465            {^file$} {
    24612466                set portdir [macports::getportdir $source]
    2462                 if {[catch {macports::GetVCSUpdateCmd $portdir} repoInfo]} {
     2467                try -pass_signal {
     2468                    set repoInfo [macports::GetVCSUpdateCmd $portdir]
     2469                } catch {*} {
    24632470                    ui_debug $::errorInfo
    24642471                    ui_info "Could not access contents of $portdir"
     
    24682475                if {[llength $repoInfo]} {
    24692476                    lassign $repoInfo vcs cmd
    2470                     if {[catch {macports::UpdateVCS $cmd $portdir}]} {
     2477                    try -pass_signal {
     2478                        macports::UpdateVCS $cmd $portdir
     2479                    } catch {*} {
    24712480                        ui_debug $::errorInfo
    24722481                        ui_info "Syncing local $vcs ports tree failed"
     
    24982507                # Do rsync fetch
    24992508                set rsync_commandline "$macports::autoconf::rsync_path $rsync_options $exclude_option $source $destdir"
    2500                 ui_debug $rsync_commandline
    2501                 if {[catch {system $rsync_commandline}]} {
     2509                try -pass_signal {
     2510                    system $rsync_commandline
     2511                } catch {*} {
    25022512                    ui_error "Synchronization of the local ports tree failed doing rsync"
    25032513                    incr numfailed
     
    25092519                    global macports::archivefetch_pubkeys
    25102520                    set rsync_commandline "$macports::autoconf::rsync_path $rsync_options $exclude_option ${source}.rmd160 $destdir"
    2511                     ui_debug $rsync_commandline
    2512                     if {[catch {system $rsync_commandline}]} {
     2521                    try -pass_signal {
     2522                        system $rsync_commandline
     2523                    } catch {*} {
    25132524                        ui_error "Synchronization of the ports tree signature failed doing rsync"
    25142525                        incr numfailed
     
    25202531                    set verified 0
    25212532                    foreach pubkey $macports::archivefetch_pubkeys {
    2522                         if {![catch {exec $openssl dgst -ripemd160 -verify $pubkey -signature $signature $tarball} result]} {
     2533                        try -pass_signal {
     2534                            exec $openssl dgst -ripemd160 -verify $pubkey -signature $signature $tarball
    25232535                            set verified 1
    25242536                            ui_debug "successful verification with key $pubkey"
    25252537                            break
    2526                         } else {
     2538                        } catch {{*} eCode eMessage} {
    25272539                            ui_debug "failed verification with key $pubkey"
    2528                             ui_debug "openssl output: $result"
     2540                            ui_debug "openssl output: $eMessage"
    25292541                        }
    25302542                    }
     
    25392551                    file mkdir ${destdir}/tmp
    25402552                    set tar_cmd "$tar -C ${destdir}/tmp -xf $tarball"
    2541                     ui_debug $tar_cmd
    2542                     if {[catch {system $tar_cmd}]} {
    2543                         ui_error "Failed to extract ports tree from tarball!"
     2553                    try -pass_signal {
     2554                        system $tar_cmd
     2555                    } catch {{*} eCode eMessage} {
     2556                        ui_error "Failed to extract ports tree from tarball: $eMessage"
    25442557                        incr numfailed
    25452558                        continue
     
    25702583                    set remote_indexfile "${index_source}PortIndex_${macports::os_platform}_${macports::os_major}_${macports::os_arch}/PortIndex"
    25712584                    set rsync_commandline "$macports::autoconf::rsync_path $rsync_options $remote_indexfile $destdir"
    2572                     ui_debug $rsync_commandline
    2573                     if {[catch {system $rsync_commandline}]} {
    2574                         ui_debug "Synchronization of the PortIndex failed doing rsync"
    2575                     } else {
     2585                    try -pass_signal {
     2586                        system $rsync_commandline
     2587                       
    25762588                        set ok 1
    25772589                        set needs_portindex false
     
    25812593                            # verify signature for PortIndex
    25822594                            set rsync_commandline "$macports::autoconf::rsync_path $rsync_options ${remote_indexfile}.rmd160 $destdir"
    2583                             ui_debug $rsync_commandline
    2584                             if {![catch {system $rsync_commandline}]} {
    2585                                 foreach pubkey $macports::archivefetch_pubkeys {
    2586                                     if {![catch {exec $openssl dgst -ripemd160 -verify $pubkey -signature ${destdir}/PortIndex.rmd160 ${destdir}/PortIndex} result]} {
    2587                                         set ok 1
    2588                                         set needs_portindex false
    2589                                         ui_debug "successful verification with key $pubkey"
    2590                                         break
    2591                                     } else {
    2592                                         ui_debug "failed verification with key $pubkey"
    2593                                         ui_debug "openssl output: $result"
    2594                                     }
     2595                            system $rsync_commandline
     2596                            foreach pubkey $macports::archivefetch_pubkeys {
     2597                                try -pass_signal {
     2598                                    exec $openssl dgst -ripemd160 -verify $pubkey -signature ${destdir}/PortIndex.rmd160 ${destdir}/PortIndex
     2599                                    set ok 1
     2600                                    set needs_portindex false
     2601                                    ui_debug "successful verification with key $pubkey"
     2602                                    break
     2603                                } catch {{*} eCode eMessage} {
     2604                                    ui_debug "failed verification with key $pubkey"
     2605                                    ui_debug "openssl output: $eMessage"
    25952606                                }
    2596                                 if {$ok} {
    2597                                     # move PortIndex into place
    2598                                     file rename -force ${destdir}/PortIndex ${destdir}/ports/
    2599                                 }
     2607                            }
     2608                            if {$ok} {
     2609                                # move PortIndex into place
     2610                                file rename -force ${destdir}/PortIndex ${destdir}/ports/
    26002611                            }
    26012612                        }
     
    26032614                            mports_generate_quickindex $indexfile
    26042615                        }
     2616                    } catch {*} {
     2617                        ui_debug "Synchronization of the PortIndex failed doing rsync"
    26052618                    }
    26062619                }
    2607                 if {[catch {system "chmod -R a+r \"$destdir\""}]} {
     2620                try -pass_signal {
     2621                    system [list chmod -R a+r $destdir]
     2622                } catch {*} {
    26082623                    ui_warn "Setting world read permissions on parts of the ports tree failed, need root?"
    26092624                }
     
    26262641                if {[file isdirectory $destdir]} {
    26272642                    set moddate [file mtime $destdir]
     2643                    # XXX, catch, don't fix rarely used code
    26282644                    if {[catch {set updated [curl isnewer $source $moddate]} error]} {
    26292645                        ui_warn "Cannot check if $source was updated, ($error)"
     
    27662782        set source [lindex $source 0]
    27672783        set protocol [macports::getprotocol $source]
    2768         if {[catch {set fd [open [macports::getindex $source] r]} result]} {
    2769             ui_warn "Can't open index file for source: $source"
    2770         } else {
     2784        try -pass_signal {
     2785            set fd [open [macports::getindex $source] r]
     2786
    27712787            try -pass_signal {
    27722788                incr found 1
     
    28512867                close $fd
    28522868            }
     2869        } catch {*} {
     2870            ui_warn "Can't open index file for source: $source"
    28532871        }
    28542872    }
     
    29532971        set source [lindex $source 0]
    29542972        set protocol [macports::getprotocol $source]
    2955         if {![catch {set fd [open [macports::getindex $source] r]} result]} {
     2973        try -pass_signal {
     2974            set fd [open [macports::getindex $source] r]
     2975
    29562976            try -pass_signal {
    29572977                incr found 1
     
    29883008                close $fd
    29893009            }
    2990         } else {
     3010        } catch {*} {
    29913011            ui_warn "Can't open index file for source: $source"
    29923012        }
     
    30203040        if {![file exists ${index}.quick]} {
    30213041            ui_warn "No quick index file found, attempting to generate one for source: $source"
    3022             if {[catch {set quicklist [mports_generate_quickindex $index]}]} {
     3042            try -pass_signal {
     3043                set quicklist [mports_generate_quickindex $index]
     3044            } catch {*} {
    30233045                incr sourceno
    30243046                continue
     
    30273049        # only need to read the quick index file if we didn't just update it
    30283050        if {![info exists quicklist]} {
    3029             if {[catch {set fd [open ${index}.quick r]} result]} {
     3051            try -pass_signal {
     3052                set fd [open ${index}.quick r]
     3053            } catch {*} {
    30303054                ui_warn "Can't open quick index file for source: $source"
    30313055                incr sourceno
    30323056                continue
    3033             } else {
    3034                 set quicklist [read $fd]
    3035                 close $fd
    3036             }
     3057            }
     3058            set quicklist [read $fd]
     3059            close $fd
    30373060        }
    30383061        foreach entry [split $quicklist \n] {
     
    30613084#         reason.
    30623085proc mports_generate_quickindex {index} {
    3063     if {[catch {set indexfd [open $index r]} result] || [catch {set quickfd [open ${index}.quick w]} result]} {
     3086    try -pass_signal {
     3087        set indexfd -1
     3088        set quickfd -1
     3089        set indexfd [open $index r]
     3090        set quickfd [open ${index}.quick w]
     3091    } catch {*} {
    30643092        ui_warn "Can't open index file: $index"
    30653093        return -code error
    3066     } else {
    3067         try -pass_signal {
     3094    }
     3095    try -pass_signal {
     3096        set offset [tell $indexfd]
     3097        set quicklist {}
     3098        while {[gets $indexfd line] >= 0} {
     3099            if {[llength $line] != 2} {
     3100                continue
     3101            }
     3102            set name [lindex $line 0]
     3103            append quicklist "[string tolower $name] $offset\n"
     3104
     3105            set len [lindex $line 1]
     3106            read $indexfd $len
    30683107            set offset [tell $indexfd]
    3069             set quicklist {}
    3070             while {[gets $indexfd line] >= 0} {
    3071                 if {[llength $line] != 2} {
    3072                     continue
    3073                 }
    3074                 set name [lindex $line 0]
    3075                 append quicklist "[string tolower $name] $offset\n"
    3076 
    3077                 set len [lindex $line 1]
    3078                 read $indexfd $len
    3079                 set offset [tell $indexfd]
    3080             }
    3081             puts -nonewline $quickfd $quicklist
    3082         } catch {{*} eCode eMessage} {
    3083             ui_warn "It looks like your PortIndex file $index may be corrupt."
    3084             throw
    3085         } finally {
     3108        }
     3109        puts -nonewline $quickfd $quicklist
     3110    } catch {{*} eCode eMessage} {
     3111        ui_warn "It looks like your PortIndex file $index may be corrupt."
     3112        throw
     3113    } finally {
     3114        if {$indexfd != -1} {
    30863115            close $indexfd
     3116        }
     3117        if {$quickfd != -1} {
    30873118            close $quickfd
    30883119        }
     
    32473278            if {$parse} {
    32483279                # Find the porturl
    3249                 if {[catch {set res [mportlookup $dep_portname]} error]} {
     3280                try -pass_signal {
     3281                    set res [mportlookup $dep_portname]
     3282                } catch {{*} eCode eMessage} {
    32503283                    global errorInfo
    32513284                    ui_msg {}
    32523285                    ui_debug $errorInfo
    3253                     ui_error "Internal error: port lookup failed: $error"
     3286                    ui_error "Internal error: port lookup failed: $eMessage"
    32543287                    return 1
    32553288                }
     
    35393572    # sync the MacPorts sources
    35403573    ui_msg "$macports::ui_prefix Updating MacPorts base sources using rsync"
    3541     if {[catch {system "$rsync_path $rsync_options rsync://${rsync_server}/$rsync_dir $mp_source_path"} result]} {
    3542        return -code error "Error synchronizing MacPorts sources: $result"
     3574    try -pass_signal {
     3575        system "$rsync_path $rsync_options rsync://${rsync_server}/$rsync_dir $mp_source_path"
     3576    } catch {{*} eCode eMessage} {
     3577        return -code error "Error synchronizing MacPorts sources: $eMessage"
    35433578    }
    35443579
     
    35463581        # verify signature for tarball
    35473582        global macports::archivefetch_pubkeys
    3548         if {[catch {system "$rsync_path $rsync_options rsync://${rsync_server}/${rsync_dir}.rmd160 $mp_source_path"} result]} {
    3549             return -code error "Error synchronizing MacPorts source signature: $result"
     3583        try -pass_signal {
     3584            system "$rsync_path $rsync_options rsync://${rsync_server}/${rsync_dir}.rmd160 $mp_source_path"
     3585        } catch {{*} eCode eMessage} {
     3586            return -code error "Error synchronizing MacPorts source signature: $eMessage"
    35503587        }
    35513588        set openssl [findBinary openssl $macports::autoconf::openssl_path]
     
    35543591        set verified 0
    35553592        foreach pubkey $macports::archivefetch_pubkeys {
    3556             if {![catch {exec $openssl dgst -ripemd160 -verify $pubkey -signature $signature $tarball} result]} {
     3593            try -pass_signal {
     3594                exec $openssl dgst -ripemd160 -verify $pubkey -signature $signature $tarball
    35573595                set verified 1
    35583596                ui_debug "successful verification with key $pubkey"
    35593597                break
    3560             } else {
     3598            }  catch {{*} eCode eMessage} {
    35613599                ui_debug "failed verification with key $pubkey"
    3562                 ui_debug "openssl output: $result"
     3600                ui_debug "openssl output: $eMessage"
    35633601            }
    35643602        }
     
    35713609        file mkdir ${mp_source_path}/tmp
    35723610        set tar_cmd "$tar -C ${mp_source_path}/tmp -xf $tarball"
    3573         ui_debug $tar_cmd
    3574         if {[catch {system $tar_cmd}]} {
     3611        try -pass_signal {
     3612            system $tar_cmd
     3613        } catch {*} {
    35753614            return -code error "Failed to extract MacPorts sources from tarball!"
    35763615        }
     
    36163655            lappend optionslist no_reindex 1 needed_portindex_var needed_portindex
    36173656        }
    3618         if {[catch {mportsync $optionslist} result]} {
    3619             return -code error "Couldn't sync the ports tree: $result"
     3657        try {
     3658            mportsync $optionslist
     3659        }  catch {{*} eCode eMessage} {
     3660            return -code error "Couldn't sync the ports tree: $eMessage"
    36203661        }
    36213662    }
     
    36573698            # do the actual configure, build and installation of new base
    36583699            ui_msg "Installing new MacPorts release in $prefix as ${owner}:${group}; permissions ${perms}\n"
    3659             if {[catch {system "cd $mp_source_path && ${cc_arg}./configure $configure_args && make SELFUPDATING=1 && make install SELFUPDATING=1"} result]} {
    3660                 return -code error "Error installing new MacPorts base: $result"
     3700            try {
     3701                system -W $mp_source_path "${cc_arg}./configure $configure_args && make SELFUPDATING=1 && make install SELFUPDATING=1"
     3702            } catch {{*} eCode eMessage} {
     3703                return -code error "Error installing new MacPorts base: $eMessage"
    36613704            }
    36623705            if {[info exists updatestatus]} {
     
    36733716    set sources_owner [file attributes [file join $portdbpath sources/] -owner]
    36743717    ui_debug "Setting MacPorts sources ownership to $sources_owner"
    3675     if {[catch {exec [findBinary chown $macports::autoconf::chown_path] -R $sources_owner [file join $portdbpath sources/]} result]} {
    3676         return -code error "Couldn't change permissions of the MacPorts sources at $mp_source_path to ${sources_owner}: $result"
     3718    try {
     3719        exec [findBinary chown $macports::autoconf::chown_path] -R $sources_owner [file join $portdbpath sources/]
     3720    }  catch {{*} eCode eMessage} {
     3721        return -code error "Couldn't change permissions of the MacPorts sources at $mp_source_path to ${sources_owner}: $eMessage"
    36773722    }
    36783723
     
    37563801
    37573802    # check if the port is in tree
    3758     if {[catch {mportlookup $portname} result]} {
     3803    try {
     3804        mportlookup $portname
     3805    } catch {{*} eCode eMessage} {
    37593806        global errorInfo
    37603807        ui_debug $errorInfo
    3761         ui_error "port lookup failed: $result"
     3808        ui_error "port lookup failed: $eMessage"
    37623809        return 1
    37633810    }
Note: See TracChangeset for help on using the changeset viewer.