Changeset 2040 for trunk/base
- Timestamp:
- Feb 18, 2003, 8:31:15 AM (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/base/src/port1.0/portmpkg.tcl
r1638 r2040 60 60 } 61 61 62 proc package_mpkg {portname portversion} { 63 global portdbpath destpath workpath contents prefix portresourcepath description package.destpath long_description homepage depends_run depends_lib 64 65 # get the union of depends_run and depends_lib, ignore everything but the portfile. 66 set depends {} 67 if {[info exists depends_run]} {eval "lappend depends $depends_run"} 68 if {[info exists depends_lib]} {eval "lappend depends $depends_lib"} 69 set ports {} 70 foreach depspec $depends { 71 set depname [lindex [split $depspec :] 2] 72 73 # nasty hack 74 if {$depname != "XFree86"} { 75 lappend ports $depname 76 } 77 } 78 set ports [lsort -unique $ports] 79 80 set pkgpath ${package.destpath}/${portname}.pkg 81 set mpkgpath ${package.destpath}/${portname}.mpkg 82 system "mkdir -p -m 0755 ${mpkgpath}/Contents/Resources" 83 84 if {[llength $ports] > 0} { 85 set dependencies {} 86 87 # Create mpkgs for each of our dependencies inside our resources directory. 88 foreach port $ports { 89 if {[catch {set res [dportsearch "^$port\$"]} result]} { 90 ui_error "port search failed: $result" 91 return 1 92 } 93 foreach {name array} $res { 94 array set portinfo $array 95 96 if [info exists portinfo(porturl)] { 97 # only the prefix gets passed to the worker. 98 set worker [dportopen $portinfo(porturl) [list prefix $prefix package.destpath ${mpkgpath}/Contents/Resources]] 99 if {[info exists portinfo(depends_run)] || [info exists portinfo(depends_lib)]} { 100 dportexec $worker mpkg 101 lappend dependencies ${portinfo(name)}.mpkg 102 # Remove intermediate .pkg, since the .pkg will have been copied into the .mpkg resources directory. 103 system "rm -R ${mpkgpath}/Contents/Resources/${portinfo(name)}.pkg" 104 } else { 105 dportexec $worker package 106 lappend dependencies ${portinfo(name)}.pkg 107 } 62 proc make_dependency_list {portname} { 63 set result {} 64 if {[catch {set res [dportsearch "^$portname\$"]} error]} { 65 ui_error "port search failed: $error" 66 return 1 67 } 68 foreach {name array} $res { 69 array set portinfo $array 70 71 if {[info exists portinfo(depends_run)] || [info exists portinfo(depends_lib)]} { 72 # get the union of depends_run and depends_lib 73 # xxx: only examines the portfile component of the depspec 74 set depends {} 75 if {[info exists portinfo(depends_run)]} { eval "lappend depends $portinfo(depends_run)" } 76 if {[info exists portinfo(depends_lib)]} { eval "lappend depends $portinfo(depends_lib)" } 77 78 foreach depspec $depends { 79 set dep [lindex [split $depspec :] 2] 80 81 # xxx: nasty hack 82 if {$dep != "XFree86"} { 83 eval "lappend result [make_dependency_list $dep]" 108 84 } 109 110 unset portinfo111 85 } 112 86 } 87 lappend result $portinfo(name)/$portinfo(version) 88 unset portinfo 89 } 90 ui_debug "dependencies for ${portname}: $result" 91 return $result 92 } 93 94 proc make_one_package {portname portversion mpkgpath} { 95 global prefix package.destpath 96 if {[catch {set res [dportsearch "^$portname\$"]} result]} { 97 ui_error "port search failed: $result" 98 return 1 99 } 100 foreach {name array} $res { 101 array set portinfo $array 102 103 if {[info exists portinfo(porturl)] && [info exists portinfo(version)] && $portinfo(version) == $portversion} { 104 # only the prefix gets passed to the worker. 105 ui_debug "building dependency package: $portname" 106 set worker [dportopen $portinfo(porturl) [list prefix $prefix package.destpath ${mpkgpath}/Contents/Resources package.type pkg]] 107 dportexec $worker package 108 } 109 110 unset portinfo 111 } 112 } 113 114 proc package_mpkg {portname portversion} { 115 global portdbpath destpath workpath prefix portresourcepath description package.destpath long_description homepage depends_run depends_lib 116 117 set pkgpath ${package.destpath}/${portname}-${portversion}.pkg 118 set mpkgpath ${package.destpath}/${portname}-${portversion}.mpkg 119 system "mkdir -p -m 0755 ${mpkgpath}/Contents/Resources" 120 121 set dependencies {} 122 # get deplist 123 set deps [make_dependency_list $portname] 124 set deps [lsort -unique $deps] 125 foreach dep $deps { 126 set name [lindex [split $dep /] 0] 127 set vers [lindex [split $dep /] 1] 128 # don't re-package ourself 129 if {$name != $portname} { 130 make_one_package $name $vers $mpkgpath 131 lappend dependencies ${name}-${vers}.pkg 132 } 113 133 } 114 134 115 135 # copy our own pkg into the mpkg 116 136 system "cp -RPp ${pkgpath} ${mpkgpath}/Contents/Resources/" 117 lappend dependencies ${portname} .pkg137 lappend dependencies ${portname}-${portversion}.pkg 118 138 119 139 write_PkgInfo ${mpkgpath}/Contents/PkgInfo … … 129 149 } 130 150 } 131 write_welcome_ rtf${mpkgpath}/Contents/Resources/Welcome.rtf $portname $portversion $pkg_long_description $pkg_description $pkg_homepage151 write_welcome_html ${mpkgpath}/Contents/Resources/Welcome.rtf $portname $portversion $pkg_long_description $pkg_description $pkg_homepage 132 152 file copy -force -- ${portresourcepath}/package/background.tiff ${mpkgpath}/Contents/Resources/background.tiff 133 153
Note: See TracChangeset
for help on using the changeset viewer.