Changeset 2724

Show
Ignore:
Timestamp:
01/19/06 21:10:34 (3 years ago)
Author:
bergius
Message:

Switched to PEAR package 2.0 format

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/support/pear-package.php

    r2573 r2724  
    9292// TODO: Get latest modification date from CHANGES 
    9393$package['date'] = date('Y-m-d'); 
     94$package['time'] = date('H:i:s'); 
    9495 
    9596// Package state. Default to stable 
     
    142143        } 
    143144         
    144         $package['maintainers'] .= "    <maintainer> 
    145                 <user>{$username}</user> 
    146                 <name>{$person['name']}</name> 
    147                 <email>{$person['email']}</email> 
    148                 <role>{$person['role']}</role> 
    149             </maintainer>"; 
     145        if (!array_key_exists('role', $person)) 
     146        { 
     147            $person['role'] = 'developer'; 
     148        } 
     149         
     150        $package['maintainers'] .= " 
     151    <{$person['role']}> 
     152        <name>{$person['name']}</name>     
     153        <user>{$username}</user> 
     154        <email>{$person['email']}</email> 
     155        <active>yes</active> 
     156    </{$person['role']}> 
     157        "; 
    150158    } 
    151159} 
     
    164172        } 
    165173         
    166         if (!array_key_exists('version', $dependency)) 
     174        $dependency['min'] = ''; 
     175        if (array_key_exists('version', $dependency)) 
    167176        { 
    168177            // No version specified, the dependency just needs to exist 
    169             $dependency['rel'] = 'has'; 
    170             $dependency['version'] = ''; 
     178            $dependency['min'] = "<min>{$dependency['version']}</min>"; 
    171179        } 
    172180         
     
    174182        { 
    175183            // Default to depending on PEAR packages 
    176             $dependency['type'] = 'pkg'; 
    177         } 
     184            $dependency['type'] = 'package'; 
     185        } 
     186         
     187        if (!array_key_exists('channel', $dependency)) 
     188        { 
     189            // Default to depending on packages from MidCOM repository 
     190            $dependency['channel'] = 'pear.midcom-project.org'; 
     191        }         
    178192         
    179193        if (strstr($requirement, '.')) 
     
    183197        } 
    184198         
    185         $package['dependencies'] .= "   <dep type=\"{$dependency['type']}\" rel=\"{$dependency['rel']}\" version=\"{$dependency['version']}\">{$requirement}</dep>\n"; 
     199        $package['dependencies'] .= " 
     200            <{$dependency['type']}> 
     201                <name>{$requirement}</name> 
     202                <channel>{$dependency['channel']}</channel> 
     203                {$dependency['min']} 
     204            </{$dependency['type']}>             
     205        "; 
    186206    } 
    187207} 
     
    195215 * @return string File XML list 
    196216 */ 
    197 function directory_list_contents($contents_string, $directory_path, $prefix = '', $baseinstalldir = null, $name = null) 
     217function directory_list_contents($contents_string, $directory_path, $prefix = '', $baseinstalldir = '', $name = null) 
    198218{ 
    199219    $directory = dir($directory_path); 
    200220     
    201     if ($baseinstalldir) 
    202     { 
    203         $baseinstalldir = " baseinstalldir=\"{$baseinstalldir}\""; 
    204     } 
    205      
    206221    if (!$name) 
    207222    { 
     
    211226    $prefix .= '    '; 
    212227     
    213     $contents_string .= "{$prefix}<dir name=\"{$name}\"{$baseinstalldir}>\n"; 
     228    $contents_string .= "{$prefix}<dir name=\"{$name}\">\n"; 
    214229     
    215230    // List contents 
     
    237252        { 
    238253            // List the subdirectory 
    239             $contents_string = directory_list_contents($contents_string, "{$directory_path}/{$entry}", $prefix); 
     254            $contents_string = directory_list_contents($contents_string, "{$directory_path}/{$entry}", $prefix, $baseinstalldir); 
    240255        } 
    241256        else 
     
    243258            // List the files 
    244259            // TODO: Support other roles than PHP? 
    245             $contents_string .= "{$prefix}    <file role=\"php\">{$entry}</file>\n"; 
     260            $contents_string .= "{$prefix}    <file baseinstalldir=\"{$baseinstalldir}\" name=\"{$entry}\" role=\"php\" />\n"; 
    246261        } 
    247262    } 
     
    251266    return $contents_string; 
    252267} 
    253 $component['filelist'] = directory_list_contents('', $component['path'], $prefix = '            ', $component['baseinstalldir'], '/'); 
     268//die($component['path']."\n"); 
     269$component['filelist'] = directory_list_contents('', $component['path'], $prefix = '   ', $component['baseinstalldir'], '/'); 
    254270 
    255271// Create package XML 
    256 $package_xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?> 
    257     <package version=\"1.0\"> 
    258         <name>{$package['name']}</name> 
    259         <summary>{$package['summary']}</summary> 
    260         <description>{$package['description']}</description> 
    261         <license>{$package['license']}</license> 
    262          
    263         <maintainers> 
    264         {$package['maintainers']} 
    265         </maintainers> 
    266          
    267         <release> 
    268             <version>{$package['version']}</version> 
    269             <date>{$package['date']}</date> 
    270             <state>{$package['state']}</state> 
    271             <notes>{$package['version']} {$package['state']}</notes> 
    272             <filelist> 
    273              
    274 {$component['filelist']} 
    275             </filelist> 
    276         </release> 
    277          
    278         <deps> 
    279          
    280         {$package['dependencies']} 
    281         </deps>         
    282     </package> 
     272$package_xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> 
     273<package packagerversion=\"1.4.5\" version=\"2.0\" xmlns=\"http://pear.php.net/dtd/package-2.0\" xmlns:tasks=\"http://pear.php.net/dtd/tasks-1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://pear.php.net/dtd/tasks-1.0 
     274http://pear.php.net/dtd/tasks-1.0.xsd 
     275http://pear.php.net/dtd/package-2.0 
     276http://pear.php.net/dtd/package-2.0.xsd\"> 
     277    <name>{$package['name']}</name> 
     278    <channel>pear.midcom-project.org</channel> 
     279    <summary> 
     280        {$package['summary']} 
     281    </summary> 
     282    <description> 
     283        {$package['description']} 
     284    </description> 
     285    {$package['maintainers']} 
     286    <date>{$package['date']}</date> 
     287    <time>{$package['time']}</time> 
     288    <version> 
     289        <release>{$package['version']}</release> 
     290        <api>{$package['version']}</api> 
     291    </version> 
     292    <stability> 
     293        <release>{$package['state']}</release> 
     294        <api>{$package['state']}</api> 
     295    </stability> 
     296    <license>{$package['license']}</license> 
     297    <notes>{$package['version']} {$package['state']}</notes>         
     298    <contents>\n{$component['filelist']}    </contents>         
     299    <dependencies> 
     300        <required> 
     301            <php> 
     302                <min>4.3.0</min> 
     303            </php> 
     304            <pearinstaller> 
     305                <min>1.4.0</min> 
     306            </pearinstaller>         
     307            {$package['dependencies']}  </required> 
     308    </dependencies> 
     309    <phprelease />  
     310</package> 
    283311    "; 
    284312