[87310] trunk/dports/_resources/port1.0/group/php5pear-1.0.tcl

pixilla at macports.org pixilla at macports.org
Wed Nov 16 14:54:38 PST 2011


Revision: 87310
          http://trac.macports.org/changeset/87310
Author:   pixilla at macports.org
Date:     2011-11-16 14:54:37 -0800 (Wed, 16 Nov 2011)
Log Message:
-----------
group/php5pear-1.0.tcl:
- Install a temporary pear installer into worksrcpath for each port.
- This leaves a resident pear command for a later accomplishment.

Modified Paths:
--------------
    trunk/dports/_resources/port1.0/group/php5pear-1.0.tcl

Modified: trunk/dports/_resources/port1.0/group/php5pear-1.0.tcl
===================================================================
--- trunk/dports/_resources/port1.0/group/php5pear-1.0.tcl	2011-11-16 22:38:31 UTC (rev 87309)
+++ trunk/dports/_resources/port1.0/group/php5pear-1.0.tcl	2011-11-16 22:54:37 UTC (rev 87310)
@@ -43,71 +43,158 @@
 
 options php5pear.package
 options php5pear.channel
-options php5pear.bin-pre
-options php5pear.bin
-options php5pear.bin-post
+options php5pear.cmd-pre
+options php5pear.cmd-pear
+options php5pear.cmd-phar
+options php5pear.cmd-php
+options php5pear.cmd-post
 options php5pear.cmd
 options php5pear.destroot
+options php5pear.sourceroot
+options php5pear.instpath
+options php5pear.pearpath
+options php5pear.installer
+options php5pear.packagexml
 
-proc php5pear.setup {php5pear.package version {php5pear.channel "pear.php.net"}} {
-    global worksrcpath distname extract.suffix master_sites prefix
-    global php5pear.bin-pre php5pear.bin php5pear.bin-post php5pear.cmd
+proc php5pear.setup {php5pear.package version {php5pear.channel "pear.php.net"} {php5pear.packagexml "package.xml"}} {
+  global worksrcpath distname extract.suffix master_sites prefix destroot distpath
+  global php5pear.cmd-pre php5pear.cmd-pear php5pear.cmd-phar php5pear.cmd-php php5pear.cmd-post
+  global php5pear.cmd php5pear.instpath php5pear.pearpath
+  global php5pear.installer name php5pear.sourceroot
 
-    php5pear.package    ${php5pear.package}
-    php5pear.channel    ${php5pear.channel}
-    name                pear-${php5pear.package}
-    version             ${version}
-    categories          php
-    distname            ${php5pear.package}-${version}
-    extract.suffix      .tgz
-    homepage            http://${php5pear.channel}/package/${php5pear.package}
-    master_sites        http://${php5pear.channel}/get
-    livecheck.type      regex
-    livecheck.url       http://${php5pear.channel}/package/${php5pear.package}/download
-    livecheck.regex     "http://download.${php5pear.channel}/package/${php5pear.package}-((?!\.tgz).*)${extract.suffix}"
+  # The pear name for the package.
+  php5pear.package    ${php5pear.package}
+  # The pear channel for the package.
+  php5pear.channel    ${php5pear.channel}
+  # The name of the packages xml file used by pear to build the package.
+  # Note: so far the two knowns names are package.xml and package2.xml.
+  php5pear.packagexml ${php5pear.packagexml}
 
-    supported_archs     noarch
-    use_parallel_build  yes
-    depends_lib         path:bin/phpize:php5 port:php5-pear
+  name                pear-${php5pear.package}
+  version             ${version}
+  categories          php
+  distname            ${php5pear.package}-${version}
+  extract.suffix      .tgz
+  homepage            http://${php5pear.channel}/package/${php5pear.package}
+  master_sites        http://${php5pear.channel}/get
+  livecheck.type      regex
+  livecheck.url       http://${php5pear.channel}/package/${php5pear.package}/download
+  livecheck.regex     "http://download.${php5pear.channel}/package/${php5pear.package}-((?!\.tgz).*)${extract.suffix}"
 
-    php5pear.destroot   ${worksrcpath}/packagingroot    
-    php5pear.bin-pre    TZ=UTC
-    php5pear.bin        ${prefix}/libexec/php/bin/pear
-    php5pear.bin-post   -C ${prefix}/libexec/php/etc/pear.conf \
-                        -c ${prefix}/libexec/php/etc/pear.conf
+  dist_subdir         pear
+  supported_archs     noarch
+  use_parallel_build  yes
+  depends_lib         path:bin/phpize:php5 port:php5-pear
+  
+  # List of ports that pear-PEAR depends on.
+  if {
+    ${name} != "pear-Archive_Tar" &&
+    ${name} != "pear-Console_Getopt" &&
+    ${name} != "pear-Structures_Graph" &&
+    ${name} != "pear-XML_Util" &&
+    ${name} != "pear-PEAR"
+  } {
+    depends_lib-append    port:pear-PEAR
+  }
 
-    extract.mkdir       yes
-    extract {
-        copy ${distpath}/${distname}${extract.suffix} ${worksrcpath}
-    }
+  # Where the pear installer is installed for each port.
+  php5pear.installer  ${worksrcpath}/installer
+  # The base paths for our pear.conf.
+  php5pear.instpath   ${prefix}/lib/php
+  php5pear.pearpath   ${php5pear.instpath}/pear
+  # Where we expand our source files.
+  php5pear.sourceroot ${worksrcpath}/packagesource    
+  # Where we instruct pear to install our package.
+  php5pear.destroot   ${worksrcpath}/packagingroot    
 
-    configure {
-        set fp [open "${prefix}/libexec/php/etc/pear.conf" r]
-        set ccount [regexp -all "${php5pear.channel}" [read $fp]]
-        close $fp
-        if { ! $ccount && "${php5pear.channel}" != "pear.php.net" } {
-            system "curl -s http://${php5pear.channel}/channel.xml -o ${worksrcpath}/channel.xml"
-            system "${php5pear.bin-pre} ${php5pear.bin} ${php5pear.bin-post} channel-add ${worksrcpath}/channel.xml"
-        } else {
-            system "${php5pear.bin-pre} ${php5pear.bin} ${php5pear.bin-post} channel-update ${php5pear.channel}"
-        }
+  # The pear command we will use.
+  php5pear.cmd-pear   ${php5pear.installer}/bin/pear
+  # The phar file that contains our pear installer.
+  php5pear.cmd-phar   ${prefix}/lib/php/pear/install-pear-nozlib.phar
+  # The php binary we will use.
+  php5pear.cmd-php    ${prefix}/bin/php
+  # Args placed before the php or pear commands.
+  php5pear.cmd-pre    cd ${php5pear.sourceroot} && TZ=UTC \
+                      PHP_PEAR_INSTALL_DIR=${php5pear.installer}/pear \
+                      PHP_PEAR_BIN_DIR=${php5pear.installer}/bin \
+                      PHP_PEAR_PHP_BIN=${php5pear.cmd-php} \
+                      PHP_PEAR_CFG_DIR=${php5pear.installer}/pear/cfg \
+                      PHP_PEAR_DOC_DIR=${php5pear.installer}/pear/docs \
+                      PHP_PEAR_DATA_DIR=${php5pear.installer}/pear/data \
+                      PHP_PEAR_WWW_DIR=${php5pear.installer}/pear/www \
+                      PHP_PEAR_TEST_DIR=${php5pear.installer}/pear/tests \
+                      PHP_PEAR_SYSCONF_DIR=${php5pear.installer}
+  # Args placed after php or pear commands.
+  php5pear.cmd-post   -c ${php5pear.installer}/pear.conf \
+                      -C ${php5pear.installer}/pear.conf
+  
+  extract.mkdir       yes
+  extract.post_args   "| tar --strip-components 1 -x -f - -C '${php5pear.sourceroot}'"
+
+  pre-extract {
+    xinstall -d ${php5pear.sourceroot}
+  }
+
+  post-extract {
+    # Get the name of our package xml file.
+    php5pear.packagexml [lindex [exec tar -tzf ${distpath}/${distname}${extract.suffix} | grep package.*\.xml] 0]
+    # The "--strip-components 1" causes the lose of our package file so we will extract it now.
+    system "tar -z -x -v -f '${distpath}/${distname}${extract.suffix}' - -C '${php5pear.sourceroot}' ${php5pear.packagexml}"
+    # Install the pear command using the phar file.
+    system "${php5pear.cmd-pre} ${php5pear.cmd-php} ${php5pear.cmd-phar}"
+  }
+
+  post-patch {
+    # Some ports use a "." baseinstalldir which can cause issues creating pears packagingroot directory.
+    reinplace "s|baseinstalldir=\"\.\"|baseinstalldir=\"/\"|g" \
+      ${php5pear.sourceroot}/${php5pear.packagexml}
+  }
+
+  configure {
+    # Setup pears conf file.
+    # The order of appears to be important, we get errors if we set php_dir before adding channels 
+    # and the directory is not writable.
+    xinstall -d "${php5pear.installer}/pear/php"
+    system "${php5pear.cmd-pre} ${php5pear.cmd-pear} ${php5pear.cmd-post} config-set auto_discover 1"
+    if { "${php5pear.channel}" != "pear.php.net" } {
+      system "curl -s http://${php5pear.channel}/channel.xml -o ${worksrcpath}/channel.xml"
+      system "${php5pear.cmd-pre} ${php5pear.cmd-pear} ${php5pear.cmd-post} channel-add ${worksrcpath}/channel.xml"
+      system "${php5pear.cmd-pre} ${php5pear.cmd-pear} ${php5pear.cmd-post} config-set default_channel ${php5pear.channel}"
     }
-    
-    build {
-        system "${php5pear.bin-pre} ${php5pear.bin} ${php5pear.bin-post} config-show"
-        system "cd ${worksrcpath} && ${php5pear.bin-pre} ${php5pear.bin} ${php5pear.bin-post} install --nodeps --offline --ignore-errors --packagingroot=${php5pear.destroot} ${distname}${extract.suffix}"
+    # Change the install directories to the final destinations
+    system "${php5pear.cmd-pre} ${php5pear.cmd-pear} ${php5pear.cmd-post} config-set php_dir ${php5pear.pearpath}"
+    system "${php5pear.cmd-pre} ${php5pear.cmd-pear} ${php5pear.cmd-post} config-set bin_dir ${php5pear.pearpath}/bin"
+    system "${php5pear.cmd-pre} ${php5pear.cmd-pear} ${php5pear.cmd-post} config-set doc_dir ${php5pear.pearpath}/docs"
+    system "${php5pear.cmd-pre} ${php5pear.cmd-pear} ${php5pear.cmd-post} config-set data_dir ${php5pear.pearpath}/data"
+    system "${php5pear.cmd-pre} ${php5pear.cmd-pear} ${php5pear.cmd-post} config-set www_dir ${php5pear.pearpath}/www"
+    system "${php5pear.cmd-pre} ${php5pear.cmd-pear} ${php5pear.cmd-post} config-set test_dir ${php5pear.pearpath}/tests"
+    system "${php5pear.cmd-pre} ${php5pear.cmd-pear} ${php5pear.cmd-post} config-show"
+  }
+  
+  build {
+    # Get the name of our package xml file.
+    php5pear.packagexml [lindex [exec tar -tzf ${distpath}/${distname}${extract.suffix} | grep package.*\.xml] 0]
+    # Install our package into our pears packagingroot.
+    system "${php5pear.cmd-pre} ${php5pear.cmd-pear} ${php5pear.cmd-post} install -n -f -P '${php5pear.destroot}' ${php5pear.packagexml}"
+  }
+  
+  destroot {
+    copy ${php5pear.destroot}${php5pear.instpath} ${destroot}${prefix}/lib
+    # Remove all invisible "dot" files.
+    fs-traverse -ignoreErrors item "${destroot}${php5pear.instpath}" {
+      if {[string first . [file tail ${item}] 0] == 0} {
+        # Using system rm because I could not find a way to delete dot files with [file delete].
+        system "rm -R ${item}"
+      }
     }
-    
-    destroot {
-        xinstall -d ${destroot}${prefix}/lib/php/pear
-        foreach path [glob -nocomplain -directory ${php5pear.destroot}${prefix}/libexec/php/pear *] {
-            copy ${path} ${destroot}${prefix}/lib/php/pear
-        }
-        if { [file exists "${destroot}${prefix}/lib/php/pear/generate_package_xml.php"] } {
-            file rename "${destroot}${prefix}/lib/php/pear/generate_package_xml.php" "${destroot}${prefix}/lib/php/pear/conflict-${php5pear.package}-generate_package_xml.php"
-        }
-        if { [file exists "${destroot}${prefix}/lib/php/pear/package.php"] } {
-            file rename "${destroot}${prefix}/lib/php/pear/package.php" "${destroot}${prefix}/lib/php/pear/conflict-${php5pear.package}-package.php"
-        }
+    if { [file exists "${destroot}${php5pear.pearpath}/generate_package_xml.php"] } {
+      # Some pear packages contain package creation files so we remove them.
+      delete "${destroot}${php5pear.pearpath}/generate_package_xml.php"
     }
+    if { [file exists "${destroot}${php5pear.pearpath}/package.php"] } {
+      # Some pear packages contain package creation files so we remove them.
+      delete "${destroot}${php5pear.pearpath}/package.php"
+    }
+  }
+  
 }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20111116/5e5e1f5c/attachment.html>


More information about the macports-changes mailing list