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 |