Projects
Kolab:Winterfell
php-seld-phar-utils
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 2
View file
php-seld-phar-utils.spec
Changed
@@ -1,19 +1,19 @@ -# spec file for php-seld-phar-utils +# remirepo/fedora spec file for php-seld-phar-utils # -# Copyright (c) 2015 Remi Collet +# Copyright (c) 2015-2016 Remi Collet # License: CC-BY-SA # http://creativecommons.org/licenses/by-sa/4.0/ # # Please, preserve the changelog entries # -%global gh_commit 336bb5ee20de511f3c1a164222fcfd194afcab3a +%global gh_commit 7009b5139491975ef6486545a39f3e6dad5ac30a %global gh_short %(c=%{gh_commit}; echo ${c:0:7}) %global gh_owner Seldaek %global gh_project phar-utils Name: php-seld-phar-utils -Version: 1.0.0 -Release: 1%{?dist} +Version: 1.0.1 +Release: 5%{?dist} Summary: PHAR file format utilities Group: Development/Libraries @@ -21,18 +21,26 @@ URL: https://github.com/%{gh_owner}/%{gh_project} Source0: https://github.com/%{gh_owner}/%{gh_project}/archive/%{gh_commit}/%{gh_project}-%{version}-%{gh_short}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +# Autoloader +Source1: %{gh_project}-autoload.php + BuildArch: noarch BuildRequires: php(language) >= 5.3 +# For test +BuildRequires: php-cli +# Autoloader +BuildRequires: php-composer(fedora/autoloader) # From composer.json # "php": ">=5.3.0", Requires: php(language) >= 5.3.0 -# From phpcompatifo report for 1.0.0 +# From phpcompatifo report for 1.0.1 Requires: php-date Requires: php-hash Requires: php-pcre Requires: php-spl +# Autoloader +Requires: php-composer(fedora/autoloader) Provides: php-composer(seld/phar-utils) = %{version} @@ -40,34 +48,66 @@ %description PHAR file format utilities, for when PHP phars you up. +To use this library, you just have to add, in your project: + require_once '%{_datadir}/php/Seld/PharUtils/autoload.php'; + %prep %setup -q -n %{gh_project}-%{gh_commit} +cp %{SOURCE1} src/autoload.php + %build # Nothing %install -rm -rf %{buildroot} # Restore PSR-0 tree mkdir -p %{buildroot}%{_datadir}/php/Seld/PharUtils/ cp -pr src/* %{buildroot}%{_datadir}/php/Seld/PharUtils/ -%clean -rm -rf %{buildroot} +%check +: Check if our autoloader works +php -r ' +require "%{buildroot}%{_datadir}/php/Seld/PharUtils/autoload.php"; +$a = new \Seld\PharUtils\Timestamps("%{SOURCE1}"); +echo "Ok\n"; +exit(0); +' %files -%defattr(-,root,root,-) %{!?_licensedir:%global license %%doc} %license LICENSE -%doc README.md composer.json +%doc README.md +%doc composer.json %{_datadir}/php/Seld %changelog +* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Oct 21 2016 Remi Collet <remi@fedoraproject.org> - 1.0.1-2 +- switch from symfony/class-loader to fedora/autoloader + +* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Oct 14 2015 Remi Collet <remi@fedoraproject.org> - 1.0.1-1 +- update to 1.0.1 +- add autoloader + +* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + * Mon May 4 2015 Remi Collet <remi@fedoraproject.org> - 1.0.0-1 - initial package \ No newline at end of file
View file
phar-utils-1.0.0-336bb5e.tar.gz/src/Timestamps.php -> phar-utils-1.0.1-7009b51.tar.gz/src/Timestamps.php
Changed
@@ -98,8 +98,7 @@ */ public function save($path, $signatureAlgo) { - // detect signature position - $pos = strrpos($this->contents, "\n") + 1; + $pos = $this->determineSignatureBegin(); $algos = array( \Phar::MD5 => 'md5', @@ -120,7 +119,8 @@ . pack('L', $signatureAlgo) // ohai Greg & Marcus . 'GBMB'; - $this->contents = substr_replace($this->contents, $signature, $pos, strlen($this->contents) - $pos); + + $this->contents = substr($this->contents, 0, $pos) . $signature; return file_put_contents($path, $this->contents); } @@ -131,4 +131,62 @@ return $res[1]; } + + /** + * Determine the beginning of the signature. + * + * @return int + */ + private function determineSignatureBegin() + { + // detect signature position + if (!preg_match('{__HALT_COMPILER\(\);(?: +\?>)?\r?\n}', $this->contents, $match, PREG_OFFSET_CAPTURE)) { + throw new \RuntimeException('Could not detect the stub\'s end in the phar'); + } + + // set starting position and skip past manifest length + $pos = $match[0][1] + strlen($match[0][0]); + $stubEnd = $pos + $this->readUint($pos, 4); + + $pos += 4; + $numFiles = $this->readUint($pos, 4); + + $pos += 4; + + // skip API version (YOLO) + $pos += 2; + + // skip PHAR flags + $pos += 4; + + $aliasLength = $this->readUint($pos, 4); + $pos += 4 + $aliasLength; + + $metadataLength = $this->readUint($pos, 4); + $pos += 4 + $metadataLength; + + $compressedSizes = 0; + while ($pos < $stubEnd) { + $filenameLength = $this->readUint($pos, 4); + $pos += 4 + $filenameLength; + + // skip filesize and timestamp + $pos += 2*4; + + $compressedSizes += $this->readUint($pos, 4); + // skip compressed file size, crc32 checksum and file flags + $pos += 3*4; + + $metadataLength = $this->readUint($pos, 4); + $pos += 4 + $metadataLength; + + $numFiles--; + } + + if ($numFiles !== 0) { + throw new \LogicException('All files were not processed, something must have gone wrong'); + } + + return $pos + $compressedSizes; + } }
View file
phar-utils-autoload.php
Added
@@ -0,0 +1,9 @@ +<?php +/* Autoloader for seld/phar-utils and its dependencies */ + +if (!class_exists('Fedora\\Autoloader\\Autoload', false)) { + require_once '/usr/share/php/Fedora/Autoloader/autoload.php'; +} + +\Fedora\Autoloader\Autoload::addPsr4('Seld\\PharUtils\\', __DIR__); +
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.