PEAR logo

PEAR_PackageFileManager : The Definitive Guide



Add a new release

A new release, depends in part of package type, but as common properties, you should at least read/set :

To produce a package.xml version 1.0

  1. <?php
  2. require_once 'PEAR/PackageFileManager.php';
  3.  
  4. PEAR::setErrorHandling(PEAR_ERROR_DIE);
  5.  
  6. $p1 = new PEAR_PackageFileManager();
  7.  
  8. $name        = 'MDB2';
  9. $summary     = 'database abstraction layer';
  10. $description = 'PEAR MDB2 is a merge of the PEAR DB and ...';
  11. $release_state   = 'stable';
  12. $release_version = '2.3.0';
  13. $release_notes   = 'open TODO list ...';
  14. $license = 'BSD License';
  15.  
  16. $p1->setOptions(array(
  17.     'package'           => $name,
  18.     'summary'           => $summary,
  19.     'description'       => $description,
  20.     'state'             => $release_state,
  21.     'version'           => $release_version,
  22.     'notes'             => $release_notes,
  23.     'license'           => $license,
  24.     'ignore'            => array('Iterator.php'),
  25.     'packagedirectory'  => 'C:/php/pear/MDB2',
  26.     'baseinstalldir'    => '/'
  27. ));
  28. //...
  29. $p1->addMaintainer('lsmith', 'lead', 'Lukas Kahwe Smith', 'smith@pooteeweet.org');
  30.  
  31. if (isset($_GET['make']) || (isset($_SERVER['argv']) && @$_SERVER['argv'][1] == 'make')) {
  32.     $p1->writePackageFile();
  33. } else {
  34.     $p1->debugPackageFile();
  35. }
  36. ?>

To produce a package.xml version 2.0

  1. <?php
  2. require_once 'PEAR/PackageFileManager2.php';
  3.  
  4. PEAR::setErrorHandling(PEAR_ERROR_DIE);
  5.  
  6. $p2 = new PEAR_PackageFileManager2();
  7.  
  8. $name        = 'MDB2';
  9. $summary     = 'database abstraction layer';
  10. $description = 'PEAR MDB2 is a merge of the PEAR DB and ...';
  11. $channel     = 'pear.php.net';
  12. $extends     = 'MDB';
  13. $release_state   = 'stable';
  14. $release_version = '2.3.0';
  15. $api_state       = 'stable';
  16. $api_version     = '2.3.0';
  17. $release_notes   = 'open TODO list ...';
  18.  
  19. $p2->setOptions(array(
  20.     'packagedirectory'  => 'C:/php/pear/MDB2',
  21.     'baseinstalldir'    => '/'
  22. ));
  23.  
  24. //...
  25. $p2->setPackageType('php');
  26. $p2->generateContents();
  27. $p2->setPackage($name);
  28. $p2->setChannel($channel);
  29. $p2->setExtends($extends);
  30. $p2->setSummary($summary);
  31. $p2->setDescription($description);
  32. $p2->setReleaseVersion($release_version);
  33. $p2->setReleaseStability($release_state);
  34. $p2->setAPIVersion($api_version);
  35. $p2->setAPIStability($api_state);
  36. $p2->setNotes($release_notes);
  37. $p2->setLicense('BSD License', 'http://www.opensource.org/licenses/bsd-license.php' );
  38.  
  39. $p2->setPhpDep('4.2.0');
  40. $p2->setPearinstallerDep('1.4.3');
  41.  
  42. $p2->addMaintainer('lead', 'lsmith', 'Lukas Kahwe Smith', 'smith@pooteeweet.org');
  43.  
  44. if (isset($_GET['make']) || (isset($_SERVER['argv']) && @$_SERVER['argv'][1] == 'make')) {
  45.     $p2->writePackageFile();
  46. } else {
  47.     $p2->debugPackageFile();
  48. }
  49. ?>

Even, if its not yet perfect, we have built our first package.xml.

[Important] Important
A point in favor of PEAR_PackageFileManager2. It may generates package with PHP4 even if PHP5 tokens are detected in source code, while PEAR_PackageFileManager cannot.
PEAR_PackageFileManager : The Definitive Guide v 1.6.0 : November 17, 2006