[24195] trunk/base/src/port1.0/portsubmit.tcl
source_changes at macosforge.org
source_changes at macosforge.org
Wed Apr 18 20:48:04 PDT 2007
Revision: 24195
http://trac.macosforge.org/projects/macports/changeset/24195
Author: jberry at macports.org
Date: 2007-04-18 20:48:04 -0700 (Wed, 18 Apr 2007)
Log Message:
-----------
A start at port submit
Modified Paths:
--------------
trunk/base/src/port1.0/portsubmit.tcl
Modified: trunk/base/src/port1.0/portsubmit.tcl
===================================================================
--- trunk/base/src/port1.0/portsubmit.tcl 2007-04-19 03:47:49 UTC (rev 24194)
+++ trunk/base/src/port1.0/portsubmit.tcl 2007-04-19 03:48:04 UTC (rev 24195)
@@ -40,6 +40,26 @@
set_ui_prefix
+
+proc xar_path {args} {
+ global prefix
+ set xar ""
+ foreach path "${portutil::autoconf::xar_path} ${prefix}/bin/xar xar" {
+ if { [file executable ${path}] } {
+ set xar $path
+ break;
+ }
+ }
+ if { "${xar}" == "" } {
+ ui_error "The xar tool is required to submit ports"
+ ui_error "Please install the xar port before proceeding."
+ return -code error [msgcat::mc "Submit failed"]
+ }
+
+ return $xar
+}
+
+
# escape quotes, and things that make the shell cry
proc shell_escape {str} {
regsub -all -- {\\} $str {\\\\} str
@@ -48,8 +68,120 @@
return $str
}
+
+proc putel { fd el data } {
+ # Quote xml data
+ set quoted [string map { & & < < > > } $data]
+ # Write the element
+ puts $fd "<${el}>${quoted}</${el}>"
+}
+
+
+proc putlist { fd listel itemel list } {
+ puts $fd "<$listel>"
+ foreach item $list {
+ putel $fd $itemel $item
+ }
+ puts $fd "</$listel>"
+}
+
+
+proc create_portpkg {} {
+ global portname portversion prefix UI_PREFIX workpath portpath
+
+ set xar [xar_path]
+
+ set dirname "portpkg"
+ set dirpath "${workpath}/${dirname}"
+ set pkgpath "${workpath}/portpkg.xar"
+ set metaname "portpkg.meta"
+ set metapath "${workpath}/${metaname}"
+
+ # Expose and default some global variables
+ set vars " portname portversion maintainers categories description \
+ long_description master_sites homepage epoch version revision \
+ PortInfo \
+ submitter_name submitter_email submitter_key \
+ "
+ eval "global $vars"
+ foreach var $vars {
+ if {![info exists $var]} { set $var {} }
+ }
+
+ # Make sure our workpath is clean
+ file delete -force $dirpath $metapath $pkgpath
+
+ # Create the portpkg directory
+ file mkdir $dirpath
+
+ # Move in the Portfile
+ file copy Portfile ${dirpath}
+
+ # Move in files
+ if {[file isdirectory "files"]} {
+ file copy files ${dirpath}
+ }
+
+ # Create the metadata subdoc
+ set sd [open ${metapath} w]
+ puts $sd "<portpkg version='1'>"
+
+ puts $sd "<submitter>"
+ putel $sd name $submitter_name
+ putel $sd email $submitter_email
+ putel $sd notes ""
+ puts $sd "</submitter>"
+
+ puts $sd "<package>"
+ putel $sd name $portname
+ putel $sd homepage $homepage
+ putlist $sd categories category $categories
+ putlist $sd maintainers maintainer $maintainers
+
+ putel $sd epoch $epoch
+ putel $sd version $version
+ putel $sd revision $revision
+
+ putel $sd description $description
+ putel $sd long_description $long_description
+
+ # TODO: variants has platforms in it
+ putlist $sd variants variant $PortInfo(variants)
+
+ # TODO: Dependencies and platforms
+ #putel $sd dependencies ""
+ #putel $sd platforms ""
+
+ puts $sd "</package>"
+
+ puts $sd "</portpkg>"
+ close $sd
+
+ # Create portpkg.xar, including the metadata and the portpkg directory contents
+ set cmd "cd ${workpath}; ${xar} -cf ${pkgpath} ${dirname} -s ${metapath} -n ${metaname}"
+ if {[system $cmd] != ""} {
+ return -code error [format [msgcat::mc "Failed to create portpkg for port : %s"] $portname]
+ }
+
+ return
+}
+
+
proc submit_main {args} {
global portname portversion prefix UI_PREFIX workpath portpath
+
+ # Create portpkg.xar in the work direcotory
+ create_portpkg
+
+ # If a private key was provided, create a signed digest of the submission
+ # TODO
+
+ # Submit to the submit url
+
+ #
+ return
+
+ # REMNANTS OF KEVIN'S CODE
# start with the Portfile, and add the files directory if it exists.
# don't pick up any CVS directories, or .DS_Store turds
@@ -95,7 +227,8 @@
puts ""
exec stty echo
- set vars {portname portversion maintainers categories description long_description master_sites}
+ set vars {portname portversion maintainers categories description \
+ long_description master_sites}
eval "global $vars"
foreach var $vars {
if {![info exists $var]} { set $var {} }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20070418/c9ad7f2a/attachment.html
More information about the macports-changes
mailing list