Re: Issue with PEAR_PackageFileManage2 1.0.2 and package.xml validation

From: Date: Thu, 31 Mar 2011 13:40:48 +0000
Subject: Re: Issue with PEAR_PackageFileManage2 1.0.2 and package.xml validation
References: 1 2 3 4 5 6 7 8  Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-54199@lists.php.net to get a copy of this message
Yeah, that mess is all over the import/setup - I only fiddled with it a bit, I did run all the tests on Windows 7 without problem but it didn't seem to catch that bit. If you feel like cooking up a patch, that'd be good - otherwise I'll try to clean this all up. This whole stripping of / or \ is kinda silly anyway because all the OS out there can handle a double // or \\ just fine when you request files and do various matching, even a realpath would solve most of those issues. - Helgi On 31 Mar 2011, at 14:35, Laurent Laville wrote: > This time I found it (ouf) > > > Look inside "PackageFileManager\File.php" getFileList() > > $dir = $package_directory; > if ($dir{strlen($dir) - 1} === DIRECTORY_SEPARATOR) { > $dir = substr($package_directory, 0, strlen($package_directory) - 1); > } > > With > > $package_directory = $this->_options['packagedirectory']; > > And its contents > > $package_directory = 'C:/www/github/php-compat-info/' > > We cannot remove the trailing / (on windows DIRECTORY_SEPARATOR is \) > > That is why we still have a / in front of each file and what I've already said its true , > cannot match file > > Laurent > > > > Le 31/03/2011 14:19, Helgi Þormar Þorbjörnsson a écrit : >> I may have a solution for the issue, need to do a bit of work before I can investigate it >> further. >> >> It is possible that the packagedirectory and related options are not keeping / at the end >> anymore, hence it kinda working for you to add / but it looks like it is only related to the >> install-as >> >> - Helgi >> >> On 31 Mar 2011, at 13:16, Laurent Laville wrote: >> >>> TAKE CARE: it's not a FIX . I've found horrible side effects. >>> >>> I'll keep continue to investigate. >>> >>> Sorry >>> >>> >>> Le 31/03/2011 13:52, Laurent Laville a écrit : >>>> As there is already a bug report related to this subject ( >>>> http://pear.php.net/bugs/bug.php?id=15534 ) I >>>> don't see any reason to >>>> open a new one . >>>> >>>> Have found a temporary solution to bypass the error validation. There is >>>> also a description of issue, and probably a way to fix it. >>>> >>>> In my package script generator, I have with previous version code below >>>> >>>> $p2->generateContents(); >>>> $p2->addRelease(); >>>> $p2->setOSInstallCondition('windows'); >>>> $p2->addInstallAs('scripts/phpci.bat', 'phpci.bat'); >>>> $p2->addInstallAs('scripts/phpci', 'phpci'); >>>> $p2->addRelease(); >>>> $p2->addIgnoreToRelease('scripts/phpci.bat'); >>>> $p2->addInstallAs('scripts/phpci', 'phpci'); >>>> >>>> I've changed it to >>>> >>>> $p2->generateContents(); >>>> $p2->addRelease(); >>>> $p2->setOSInstallCondition('windows'); >>>> $p2->addInstallAs('/scripts/phpci.bat', 'phpci.bat'); >>>> $p2->addInstallAs('/scripts/phpci', 'phpci'); >>>> $p2->addRelease(); >>>> $p2->addIgnoreToRelease('/scripts/phpci.bat'); >>>> $p2->addInstallAs('/scripts/phpci', 'phpci'); >>>> >>>> NOTICE the slash in front of each script files >>>> >>>> While searching where the validation come from, I've seen that in >>>> >>>> PEAR\PackageFile\v2\Validator.php (rev 308729) lines 1029 to 1031 we >>>> check and tag if file exist in contents >>>> >>>> foreach ($fcontents['dir']['file'] as $file) { >>>> $filelist[$file['attribs']['name']] = true; >>>> } >>>> >>>> But this array have as key - file name that all start with / slash >>>> .... more ... >>>> [/PHP/CompatInfo/Token/String.php] => 1 >>>> [/scripts/phpci] => 1 >>>> [/scripts/phpci.bat] => 1 >>>> [/tests/ClassTest.php] => 1 >>>> .... more .... >>>> >>>> But not in the array $list['install'] >>>> >>>> [0] => Array >>>> ( >>>> [attribs] => Array >>>> ( >>>> [as] => phpci.bat >>>> [name] => scripts/phpci.bat >>>> ) >>>> >>>> ) >>>> >>>> [1] => Array >>>> ( >>>> [attribs] => Array >>>> ( >>>> [as] => phpci >>>> [name] => scripts/phpci >>>> ) >>>> >>>> ) >>>> >>>> ) >>>> >>>> That is why it tagged it as _notInContents >>>> >>>> Hope it will help. >>>> >>>> Laurent >>>> >>>> >>>> Le 31/03/2011 12:36, Helgi Þormar Þorbjörnsson a écrit : >>>>> Much appreciated. >>>>> >>>>> This may be related to >>>>> http://pear.php.net/bugs/bug.php?id=13310 and >>>>> http://pear.php.net/bugs/bug.php?id=15534 but >>>>> they are more likely >>>>> than not a bug in the CLI code, the part that manipulates scripts and >>>>> install-as tags. >>>>> >>>>> One thing that comes to mind is that I added 'scripts' => >>>>> 'script', >>>>> dir->role mapping at the top; It may be having a bigger knock on >>>>> effect than I anticipated. >>>>> >>>>> - Helgi >>>>> >>>>> On 31 Mar 2011, at 11:29, Laurent Laville wrote: >>>>> >>>>>> Ok, no problem. >>>>>> >>>>>> I'll open a bug report, and try to see if I can find something. >>>>>> I've >>>>>> some free time this afternoon. >>>>>> >>>>>> Later >>>>>> Laurent >>>>>> >>>>>> Le 31/03/2011 12:22, Helgi Þormar Þorbjörnsson a écrit : >>>>>>> Hi, >>>>>>> >>>>>>> Thanks for taking the time writing this up. Could you please file a >>>>>>> bug report as that is easier to track. >>>>>>> >>>>>>> Off the top of my head, I don't know what it is but I am still at >>>>>>> work and don't have time to look at it yet. >>>>>>> >>>>>>> - Helgi >>>>>>> >>>>>>> On 31 Mar 2011, at 11:17, Laurent Laville wrote: >>>>>>> >>>>>>>> Hello Helgi, >>>>>>>> >>>>>>>> I've just installed the new version 1.0.2 (with its plugins >>>>>>>> package) of PEAR_PackageFileManager2 on my local windows platform. >>>>>>>> >>>>>>>> PEAR 1.9.2, PHP 5.2.17, Windows XP >>>>>>>> >>>>>>>> And I got a Package Validation error, while it was not the cas in >>>>>>>> previous version 1.0.1 >>>>>>>> >>>>>>>> >>>>>>>> PEAR_PackageFileManager2 Error: Package validation failed: >>>>>>>> Error:<ignore name="scripts/phpci.bat"> is >>>>>>>> invalid, file is not >>>>>>>> in<contents> >>>>>>>> Error:<install name="scripts/phpci"> is invalid, >>>>>>>> file is not >>>>>>>> in<contents> >>>>>>>> Error:<install name="scripts/phpci"> is invalid, >>>>>>>> file is not >>>>>>>> in<contents> >>>>>>>> Error:<install name="scripts/phpci.bat"> is >>>>>>>> invalid, file is not >>>>>>>> in<contents> >>>>>>>> >>>>>>>> See my package.xml online at [1] >>>>>>>> >>>>>>>> I used a PHP script that generate the package.xml. >>>>>>>> Something standard. Here is a chunk of code ... >>>>>>>> >>>>>>>> <code> >>>>>>>> require_once 'PEAR/PackageFileManager2.php'; >>>>>>>> >>>>>>>> PEAR::setErrorHandling(PEAR_ERROR_DIE); >>>>>>>> >>>>>>>> $p2 = new PEAR_PackageFileManager2(); >>>>>>>> $p2->setOptions( >>>>>>>> array( >>>>>>>> 'packagedirectory' => dirname(__FILE__), >>>>>>>> 'baseinstalldir' => 'Bartlett', >>>>>>>> 'filelistgenerator' => 'file', >>>>>>>> 'simpleoutput' => true, >>>>>>>> 'clearcontents' => false, >>>>>>>> 'changelogoldtonew' => false, >>>>>>>> 'ignore' => array( >>>>>>>> basename(__FILE__), >>>>>>>> '*.tgz', '*.log', >>>>>>>> 'Thumbs.db', 'packageRC*.xml', >>>>>>>> 'makephpci.php', >>>>>>>> '_extension.php', >>>>>>>> 'phpcompatinfo.xml', >>>>>>>> ), >>>>>>>> 'exceptions' => array( >>>>>>>> 'phpcompatinfo.xml.dist' => 'cfg', >>>>>>>> 'scripts/phpci' => 'script', >>>>>>>> 'scripts/phpci.bat' => 'script', >>>>>>>> 'README.markdown' => 'doc', >>>>>>>> 'LICENSE' => 'doc', >>>>>>>> 'HOWTO.txt' => 'doc', >>>>>>>> ), >>>>>>>> 'installexceptions' => array( >>>>>>>> 'phpcompatinfo.xml.dist' => '', >>>>>>>> 'scripts/phpci' => '', >>>>>>>> 'scripts/phpci.bat' => '', >>>>>>>> ), >>>>>>>> ) >>>>>>>> ); >>>>>>>> // ... more >>>>>>>> >>>>>>>> $p2->generateContents(); >>>>>>>> $p2->addRelease(); >>>>>>>> $p2->setOSInstallCondition('windows'); >>>>>>>> $p2->addInstallAs('scripts/phpci.bat', >>>>>>>> 'phpci.bat'); >>>>>>>> $p2->addInstallAs('scripts/phpci', 'phpci'); >>>>>>>> $p2->addRelease(); >>>>>>>> $p2->addIgnoreToRelease('scripts/phpci.bat'); >>>>>>>> $p2->addInstallAs('scripts/phpci', 'phpci'); >>>>>>>> >>>>>>>> $p2->writePackageFile(); >>>>>>>> >>>>>>>> </code> >>>>>>>> >>>>>>>> >>>>>>>> If you don't know what it could be, I'll try to >>>>>>>> investigate later. >>>>>>>> >>>>>>>> Laurent >>>>>>>> >>>>>>>> [1] >>>>>>>> ÙP‹¬a«߼ÿ\¶P >>>>>>>> https://github.com/llaville/php-compat-info/blob/master/package.xml >>>>> >> >> >

« previous php.pear.dev (#54199) next »