diff options
| -rw-r--r-- | .gitignore | 9 | ||||
| -rw-r--r-- | Makefile | 4 | ||||
| -rw-r--r-- | composer.json | 101 | ||||
| -rwxr-xr-x | makesrc.sh | 28 | ||||
| -rw-r--r-- | php-ramsey-uuid-tests.patch | 41 | ||||
| -rw-r--r-- | php-ramsey-uuid.spec | 190 | 
6 files changed, 373 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..01f0400 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +clog +package-*.xml +*.tgz +*.tar.bz2 +*.tar.gz +*.tar.xz +*.tar.xz.asc +*.src.rpm +*/*rpm diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..91b0fd5 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +SRCDIR := $(shell pwd) +NAME := $(shell basename $(SRCDIR)) +include ../../common/Makefile + diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..41d500b --- /dev/null +++ b/composer.json @@ -0,0 +1,101 @@ +{ +    "name": "ramsey/uuid", +    "type": "library", +    "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", +    "keywords": [ +        "uuid", +        "identifier", +        "guid" +    ], +    "homepage": "https://github.com/ramsey/uuid", +    "license": "MIT", +    "require": { +        "php": "^7.2 || ^8", +        "ext-json": "*", +        "brick/math": "^0.8 || ^0.9", +        "ramsey/collection": "^1.0", +        "symfony/polyfill-ctype": "^1.8" +    }, +    "require-dev": { +        "codeception/aspect-mock": "^3", +        "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7.0", +        "doctrine/annotations": "^1.8", +        "goaop/framework": "^2", +        "mockery/mockery": "^1.3", +        "moontoast/math": "^1.1", +        "paragonie/random-lib": "^2", +        "php-mock/php-mock-mockery": "^1.3", +        "php-mock/php-mock-phpunit": "^2.5", +        "php-parallel-lint/php-parallel-lint": "^1.1", +        "phpbench/phpbench": "^0.17.1", +        "phpstan/extension-installer": "^1.0", +        "phpstan/phpstan": "^0.12", +        "phpstan/phpstan-mockery": "^0.12", +        "phpstan/phpstan-phpunit": "^0.12", +        "phpunit/phpunit": "^8.5", +        "psy/psysh": "^0.10.0", +        "slevomat/coding-standard": "^6.0", +        "squizlabs/php_codesniffer": "^3.5", +        "vimeo/psalm": "3.9.4" +    }, +    "suggest": { +        "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", +        "ext-ctype": "Enables faster processing of character classification using ctype functions.", +        "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", +        "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", +        "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type.", +        "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter" +    }, +    "config": { +        "sort-packages": true +    }, +    "extra": { +        "branch-alias": { +            "dev-master": "4.x-dev" +        } +    }, +    "replace": { +        "rhumsaa/uuid": "self.version" +    }, +    "autoload": { +        "psr-4": { +            "Ramsey\\Uuid\\": "src/" +        }, +        "files": [ +            "src/functions.php" +        ] +    }, +    "autoload-dev": { +        "psr-4": { +            "Ramsey\\Uuid\\Benchmark\\": "tests/benchmark/", +            "Ramsey\\Uuid\\StaticAnalysis\\": "tests/static-analysis/", +            "Ramsey\\Uuid\\Test\\": "tests/" +        } +    }, +    "scripts": { +        "lint": "parallel-lint src tests", +        "phpbench": "phpbench run", +        "phpcbf": "phpcbf -vpw --cache=build/cache/phpcs.cache", +        "phpcs": "phpcs --cache=build/cache/phpcs.cache", +        "phpstan": [ +            "phpstan analyse -c tests/phpstan.neon --no-progress", +            "phpstan analyse -c tests/phpstan-tests.neon --no-progress" +        ], +        "psalm": "psalm --show-info=false --config=tests/psalm.xml", +        "phpunit": "phpunit --verbose --colors=always", +        "phpunit-coverage": "phpunit --verbose --colors=always --coverage-html build/coverage", +        "test": [ +            "@lint", +            "@phpbench", +            "@phpcs", +            "@phpstan", +            "@psalm", +            "@phpunit" +        ] +    }, +    "support": { +        "issues": "https://github.com/ramsey/uuid/issues", +        "rss": "https://github.com/ramsey/uuid/releases.atom", +        "source": "https://github.com/ramsey/uuid" +    } +} diff --git a/makesrc.sh b/makesrc.sh new file mode 100755 index 0000000..37cb6a2 --- /dev/null +++ b/makesrc.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +NAME=$(basename $PWD) +OWNER=$(sed   -n '/^%global gh_owner/{s/.* //;p}'   $NAME.spec) +PROJECT=$(sed -n '/^%global gh_project/{s/.* //;p}' $NAME.spec) +VERSION=$(sed -n '/^Version:/{s/.* //;p}'           $NAME.spec) +COMMIT=$(sed  -n '/^%global gh_commit/{s/.* //;p}'  $NAME.spec) +SHORT=${COMMIT:0:7} + +echo -e "\nCreate git snapshot\nName=$NAME, Owner=$OWNER, Project=$PROJECT, Version=$VERSION\n" + +echo "Cloning..." +rm -rf $PROJECT-$COMMIT +git clone https://github.com/$OWNER/$PROJECT.git $PROJECT-$COMMIT + +echo "Getting commit..." +pushd $PROJECT-$COMMIT +git checkout $COMMIT +cp composer.json ../composer.json +popd + +echo "Archiving..." +tar czf $NAME-$VERSION-$SHORT.tgz --exclude-vcs $PROJECT-$COMMIT + +echo "Cleaning..." +rm -rf $PROJECT-$COMMIT + +echo "Done." diff --git a/php-ramsey-uuid-tests.patch b/php-ramsey-uuid-tests.patch new file mode 100644 index 0000000..d7964fb --- /dev/null +++ b/php-ramsey-uuid-tests.patch @@ -0,0 +1,41 @@ +diff -up ./tests/bootstrap.php.rpm ./tests/bootstrap.php +--- ./tests/bootstrap.php.rpm	2020-10-02 10:51:10.570005924 +0200 ++++ ./tests/bootstrap.php	2020-10-02 10:51:32.465928798 +0200 +@@ -11,8 +11,6 @@ error_reporting(E_ALL & ~E_DEPRECATED); + // Ensure floating-point precision is set to 14 (the default) for tests. + ini_set('precision', '14'); +  +-use AspectMock\Kernel; +- + require_once __DIR__ . '/../vendor/autoload.php'; // composer autoload + require_once __DIR__ . '/phpstan-bootstrap.php'; +  +@@ -24,9 +22,3 @@ if (!is_dir($cacheDir)) { +     } + } +  +-$kernel = Kernel::getInstance(); +-$kernel->init([ +-    'debug' => true, +-    'cacheDir' => $cacheDir, +-    'includePaths' => [__DIR__ . '/../src'] +-]); +diff -up ./tests/TestCase.php.rpm ./tests/TestCase.php +--- ./tests/TestCase.php.rpm	2020-10-02 10:51:20.047972540 +0200 ++++ ./tests/TestCase.php	2020-10-02 10:51:26.799948757 +0200 +@@ -4,7 +4,6 @@ declare(strict_types=1); +  + namespace Ramsey\Uuid\Test; +  +-use AspectMock\Test as AspectMock; + use Mockery; + use PHPUnit\Framework\TestCase as PhpUnitTestCase; +  +@@ -17,7 +16,6 @@ class TestCase extends PhpUnitTestCase +     protected function tearDown(): void +     { +         parent::tearDown(); +-        AspectMock::clean(); +         Mockery::close(); +     } +  diff --git a/php-ramsey-uuid.spec b/php-ramsey-uuid.spec new file mode 100644 index 0000000..c34c107 --- /dev/null +++ b/php-ramsey-uuid.spec @@ -0,0 +1,190 @@ +# remirepo/fedora spec file for php-ramsey-uuid +# +# Copyright (c) 2020 Remi Collet +# License: CC-BY-SA +# http://creativecommons.org/licenses/by-sa/4.0/ +# +# Please, preserve the changelog entries +# + +%bcond_without tests + +# Github +%global gh_commit    cd4032040a750077205918c86049aa0f43d22947 +%global gh_short     %(c=%{gh_commit}; echo ${c:0:7}) +%global gh_owner     ramsey +%global gh_project   uuid +# Packagist +%global pk_vendor    %{gh_owner} +%global pk_name      %{gh_project} +# Namespace +%global ns_vendor    Ramsey +%global ns_project   Uuid + +Name:           php-%{pk_vendor}-%{pk_name} +Version:        4.1.1 +Release:        1%{?dist} +Summary:        Library for generating and working with UUIDs + +License:        MIT +URL:            https://github.com/%{gh_owner}/%{gh_project} +Source0:        %{name}-%{version}-%{gh_short}.tgz +# Create git snapshot as tests are excluded from official tarball +Source1:        makesrc.sh + +# don't use codeception/aspect-mock +Patch0:         %{name}-tests.patch + +BuildArch:      noarch + +BuildRequires:  php(language) >= 7.2 +BuildRequires:  php-ctype +BuildRequires:  php-date +BuildRequires:  php-hash +BuildRequires:  php-json +BuildRequires:  php-pcre +BuildRequires:  php-spl +# From composer.json, "require-dev": { +#        "codeception/aspect-mock": "^3", +#        "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7.0", +#        "doctrine/annotations": "^1.8", +#        "goaop/framework": "^2", +#        "mockery/mockery": "^1.3", +#        "moontoast/math": "^1.1", +#        "paragonie/random-lib": "^2", +#        "php-mock/php-mock-mockery": "^1.3", +#        "php-mock/php-mock-phpunit": "^2.5", +#        "php-parallel-lint/php-parallel-lint": "^1.1", +#        "phpbench/phpbench": "^0.17.1", +#        "phpstan/extension-installer": "^1.0", +#        "phpstan/phpstan": "^0.12", +#        "phpstan/phpstan-mockery": "^0.12", +#        "phpstan/phpstan-phpunit": "^0.12", +#        "phpunit/phpunit": "^8.5", +#        "psy/psysh": "^0.10.0", +#        "slevomat/coding-standard": "^6.0", +#        "squizlabs/php_codesniffer": "^3.5", +#        "vimeo/psalm": "3.9.4" +%if %{with tests} +# remirepo:1 +%if 0%{?fedora} >= 27 || 0%{?rhel} >= 8 +BuildRequires: (php-composer(brick/math)            >= 0.8   with php-composer(brick/math)            < 0.10) +BuildRequires: (php-composer(ramsey/collection)     >= 1.0   with php-composer(ramsey/collection)     < 2) +BuildRequires: (php-composer(mockery/mockery)       >= 1.3   with php-composer(mockery/mockery)       < 2) +# remirepo:5 +%else +BuildRequires:  php-brick-math                      >= 0.8 +BuildRequires:  php-ramsey-collection               >= 1.0 +BuildRequires:  php-mockery                         >= 1.3 +%endif +BuildRequires:  phpunit8 >= 8.5 +%endif +# Autoloader +BuildRequires:  php-fedora-autoloader-devel + +# From composer.json, "require": { +#        "php": "^7.2 || ^8", +#        "ext-json": "*", +#        "brick/math": "^0.8 || ^0.9", +#        "ramsey/collection": "^1.0", +#        "symfony/polyfill-ctype": "^1.8" +Requires:       php(language) >= 7.2 +Requires:       php-ctype +Requires:       php-json +# remirepo:1 +%if 0%{?fedora} >= 27 || 0%{?rhel} >= 8 +Requires:      (php-composer(brick/math)        >= 0.8   with php-composer(brick/math)        < 0.10) +Requires:      (php-composer(ramsey/collection) >= 1.0   with php-composer(ramsey/collection) < 2) +# remirepo:4 +%else +Requires:       php-brick-math                  >= 0.8 +Requires:       php-ramsey-collection           >= 1.0 +%endif +# From phpcompatifo report for 4.1.1 +Requires:       php-date +Requires:       php-hash +Requires:       php-pcre +Requires:       php-spl + +# Autoloader +Requires:       php-composer(fedora/autoloader) + +Provides:       php-composer(%{pk_vendor}/%{pk_name}) = %{version} + + +%description +ramsey/uuid is a PHP library for generating and working with universally +unique identifiers (UUIDs). + +Autoloader: %{_datadir}/php/%{ns_vendor}/%{ns_project}/autoload.php + + +%prep +%setup -q -n %{gh_project}-%{gh_commit} +%patch0 -p1 -b .rpm + + +%build +: Create classmap autoloader +phpab \ +  --template fedora \ +  --output src/autoload.php \ +  src +cat << 'EOF' | tee -a src/autoload.php + +\Fedora\Autoloader\Dependencies::required([ +    '%{_datadir}/php/Brick/Math/autoload.php', +    '%{_datadir}/php/Ramsey/Collection/autoload.php', +    __DIR__ . '/functions.php', +]); +EOF + +%install +mkdir -p   %{buildroot}%{_datadir}/php/%{ns_vendor} +cp -pr src %{buildroot}%{_datadir}/php/%{ns_vendor}/%{ns_project} + + +%check +%if %{with tests} +: Generate a simple autoloader +mkdir vendor +cat << 'EOF' | tee vendor/autoload.php +<?php +// Installed library +require '%{buildroot}%{_datadir}/php/%{ns_vendor}/%{ns_project}/autoload.php'; +\Fedora\Autoloader\Autoload::addPsr4('%{ns_vendor}\\%{ns_project}\\Test\\', dirname(__DIR__) . '/tests'); +\Fedora\Autoloader\Dependencies::required([ +    '%{_datadir}/php/Mockery1/autoload.php', +]); +EOF + +: Ignore tests using missing mocking libraries +find tests -type f -exec grep -Eq '(PHPMockery|Aspec|Moontoast)' {} \; -delete -print + +: Run upstream test suite +ret=0 +# TODO php 8: phpunit and mockery not compatible +for cmd in php php73 php74; do +  if which $cmd; then +   $cmd %{_bindir}/phpunit8 \ +     --no-coverage \ +     --verbose || ret=1 +  fi +done +exit $ret +%else +: Test suite disabled +%endif + +%files +# remirepo:1 +%{!?_licensedir:%global license %%doc} +%license LICENSE +%doc *.md +%doc composer.json +%{_datadir}/php/%{ns_vendor}/%{ns_project} + + +%changelog +* Fri Oct  2 2020 Remi Collet <remi@remirepo.net> - 4.1.1-1 +- initial package  | 
