Bug 2017032 - Review Request: php-league-container4 - A fast and intuitive dependency injection container version 4
Summary: Review Request: php-league-container4 - A fast and intuitive dependency injec...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: François Kooman
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 2017025
Blocks:
TreeView+ depends on / blocked
 
Reported: 2021-10-25 13:13 UTC by Remi Collet
Modified: 2022-01-12 01:23 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2022-01-12 01:23:05 UTC
Type: ---
Embargoed:
fkooman: fedora-review+


Attachments (Terms of Use)

Description Remi Collet 2021-10-25 13:13:09 UTC
Spec URL: https://git.remirepo.net/cgit/rpms/php/league/php-league-container4.git/plain/php-league-container4.spec?id=65f228b763e65cb82f5fc81b6c5781f2ce2a1eab
SRPM URL: https://rpms.remirepo.net/SRPMS/php-league-container4-4.1.2-1.remi.src.rpm
Description: 
A small but powerful dependency injection container that allows you to decouple
components in your application in order to write clean and testable code.

Autoloader: /usr/share/php/League/Container4/autoload.php
[


Fedora Account System Username: remi

----

Previous version reviewed as bug #1483384
Change from previous version:
https://git.remirepo.net/cgit/rpms/php/league/php-league-container4.git/commit/php-league-container4.spec?id=a278f7364e903574382ccc100d43ff284d842fcf

Comment 2 François Kooman 2021-12-23 10:34:01 UTC
Remarks/questions:

- the documentation has the CC license, it is not installed, but should this 
  perhaps also be mentioned in the package spec?
- there's lots of conditionals in the package, which makes it a bit hard to 
  read... could this perhaps be cleaned up a bit?


Package: APPROVED


Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed

===== MUST items =====

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "Unknown or generated", "MIT License", "*No copyright* MIT
     License", "Creative Commons Attribution 3.0 Unported License". 154
     files have unknown license. Detailed output of licensecheck in
     /home/fedora/2017032-php-league-container4/licensecheck.txt
[x]: Package does not own files or directories owned by other packages.
     Note: Dirs in package are owned also by: /usr/share/php/League(php-
     league-tactician, php-league-mime-type-detection, php-league-uri-
     interfaces, php-league-plates, php-league-container, php-league-
     climate)
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[-]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory
     names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[-]: Package is not known to require an ExcludeArch tag.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 20480 bytes in 4 files.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %license.
[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Dist tag is present.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package must not depend on deprecated() packages.
[x]: Package use %makeinstall only when make install DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package does not use a name that already exists.
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as
     provided in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====

Generic:
[x]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: SourceX tarball generation or download is documented.
     Note: Package contains tarball without URL, check comments
[-]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
     Note: gpgverify is not used.
[-]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[x]: %check is present and all tests pass.
[-]: Packages should try to preserve timestamps of original installed
     files.
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Spec file according to URL is the same as in SRPM.

PHP:
[x]: Run phpci static analyze on all php files.
     Note:  Data Source Analysed Directories 13 Files 54 Errors 0
     Extensions Analysis Extension REF EXT min/Max PHP min/Max core core
     5.3.0 5.3.0 reflection reflection 5.0.0 7.0.0alpha1 spl spl 5.1.0
     5.1.0 standard standard 5.0.0 5.0.0 Total [4] 7.0.0alpha1 Namespaces
     Analysis Namespace REF EXT min/Max PHP min/Max League\Container
     standard 5.3.0 7.0.0 League\Container\Argument core 5.1.0 7.0.0
     League\Container\Argument\Literal user 7.2.0
     League\Container\Definition core 5.0.0 7.2.0
     League\Container\Exception user 5.3.0 League\Container\Inflector
     standard 5.0.0 7.2.0 League\Container\ServiceProvider core 4.0.0 7.1.0
     League\Container\Test user 7.1.0 League\Container\Test\Argument user
     7.1.0 League\Container\Test\Asset core 5.0.0 7.1.0
     League\Container\Test\Definition standard 4.0.0 7.1.0
     League\Container\Test\Inflector user 7.1.0
     League\Container\Test\ServiceProvider spl 5.1.0 7.1.0 Total [13] 7.2.0
     Interfaces Analysis Interface REF EXT min/Max PHP min/Max
     League\Container\Argument\ArgumentInterface user 5.0.0
     League\Container\Argument\ArgumentResolverInterface reflection 5.0.0
     7.0.0alpha1 League\Container\Argument\DefaultValueInterface user 5.3.0
     League\Container\Argument\LiteralArgumentInterface user 5.3.0
     League\Container\Argument\ResolvableArgumentInterface user 7.0.0alpha1
     League\Container\ContainerAwareInterface user 7.0.0alpha1
     League\Container\DefinitionContainerInterface user 7.0.0
     League\Container\Definition\DefinitionAggregateInterface core 5.3.0
     7.0.0 League\Container\Definition\DefinitionInterface user 7.0.0
     League\Container\Inflector\InflectorAggregateInterface core 5.3.0
     7.2.0 League\Container\Inflector\InflectorInterface user 7.2.0
     League\Container\ServiceProvider\BootableServiceProviderInterface user
     7.1.0
     League\Container\ServiceProvider\ServiceProviderAggregateInterface
     core 5.3.0 7.1.0
     League\Container\ServiceProvider\ServiceProviderInterface user 7.1.0
     League\Container\Test\Asset\BarInterface user 4.0.0
     ReflectionFunctionAbstract reflection 5.0.0 5.0.0 Total [16] 7.2.0
     Traits Analysis Trait REF EXT min/Max PHP min/Max
     League\Container\Argument\ArgumentResolverTrait core 5.0.0 7.0.0alpha1
     League\Container\ContainerAwareTrait standard 5.1.0 7.0.0alpha1 Total
     [2] 7.0.0alpha1 Classes Analysis Class REF EXT min/Max PHP min/Max
     BadMethodCallException spl 5.1.0 5.1.0 InvalidArgumentException spl
     5.1.0 5.1.0 U League\Container\Argument\DefaultValueArgument user
     7.0.0 League\Container\Argument\LiteralArgument standard 5.1.0 7.0.0
     League\Container\Argument\Literal\ArrayArgument user 5.3.0
     League\Container\Argument\Literal\BooleanArgument user 7.0.0
     League\Container\Argument\Literal\CallableArgument user 5.4.0
     League\Container\Argument\Literal\FloatArgument user 7.0.0
     League\Container\Argument\Literal\IntegerArgument user 7.0.0
     League\Container\Argument\Literal\ObjectArgument user 7.2.0
     League\Container\Argument\Literal\StringArgument user 7.0.0
     League\Container\Argument\ResolvableArgument user 7.0.0
     League\Container\Container standard 4.0.0 7.0.0 U
     League\Container\DefinitionContainerInterface user 5.3.0
     League\Container\Definition\Definition core 5.0.0 7.2.0
     League\Container\Definition\DefinitionAggregate standard 4.0.6 7.0.0 U
     League\Container\Definition\DefinitionAggregateInterface user 5.3.0 U
     League\Container\Exception\ContainerException user 5.3.0 U
     League\Container\Exception\NotFoundException user 5.3.0
     League\Container\Inflector\Inflector standard 5.0.0 7.0.0
     League\Container\Inflector\InflectorAggregate user 7.2.0 U
     League\Container\Inflector\InflectorAggregateInterface user 5.3.0
     League\Container\ReflectionContainer standard 5.3.0 7.0.0
     League\Container\ServiceProvider\AbstractServiceProvider core 4.0.0
     7.0.0 League\Container\ServiceProvider\ServiceProviderAggregate
     standard 4.0.0 7.1.0 U
     League\Container\ServiceProvider\ServiceProviderAggregateInterface
     user 5.3.0 U League\Container\ServiceProvider\ServiceProviderInterface
     user 5.3.0 League\Container\Test\Argument\ArgumentResolverTest user
     7.1.0
     League\Container\Test\Argument\ArgumentResolverTest\testResolverResolvesArgumentsViaReflection\anonymous-
     class-104-107 user 5.3.0
     League\Container\Test\Argument\ArgumentResolverTest\testResolverResolvesFromContainer\anonymous-
     class-21-24 user 5.3.0
     League\Container\Test\Argument\ArgumentResolverTest\testResolverResolvesLiteralArguments\anonymous-
     class-49-52 user 5.3.0
     League\Container\Test\Argument\ArgumentResolverTest\testResolverThrowsExceptionWhenReflectionDoesNotResolve\anonymous-
     class-143-146 user 5.3.0
     League\Container\Test\Argument\ArgumentResolverTest\testResolvesDefaultValueArgument\anonymous-
     class-121-124 user 5.3.0
     League\Container\Test\Argument\TypedArgumentTest user 7.1.0
     League\Container\Test\Argument\TypedArgumentTest\testLiteralArgumentSetsAndGetsArgument\anonymous-
     class-23-24 user 4.0.0 U League\Container\Test\Asset\Bar user 7.1.0 U
     League\Container\Test\Asset\BarInterface user 5.3.0
     League\Container\Test\Asset\Baz user 5.3.0 U
     League\Container\Test\Asset\Foo user 7.1.0 U
     League\Container\Test\Asset\FooCallable user 5.3.0
     League\Container\Test\Asset\ProBar core 5.0.0 7.0.0alpha1
     League\Container\Test\Asset\ProFoo user 7.1.0
     League\Container\Test\ContainerTest user 7.1.0
     League\Container\Test\ContainerTest\testContainerAddsAndGetsWithServiceProvider\anonymous-
     class-101-112 user 7.1.0
     League\Container\Test\ContainerTest\testContainerAwareCannotBeUsedWithoutImplementingInterface\anonymous-
     class-217-219 user 4.0.0
     League\Container\Test\ContainerTest\testContainerCanExtendDefinitionFromServiceProvider\anonymous-
     class-174-185 user 7.1.0
     League\Container\Test\ContainerTest\testThrowsWhenServiceProviderLies\anonymous-
     class-125-135 user 7.1.0
     League\Container\Test\Definition\DefinitionAggregateTest user 7.1.0
     League\Container\Test\Definition\DefinitionTest standard 4.0.0 7.1.0
     League\Container\Test\Inflector\InflectorAggregateTest user 7.1.0
     League\Container\Test\Inflector\InflectorTest user 7.1.0
     League\Container\Test\Inflector\InflectorTest\testInflectorInflectsWithCallback\anonymous-
     class-134-140 user 7.1.0
     League\Container\Test\Inflector\InflectorTest\testInflectorInflectsWithCallback\anonymous-
     class-142-143 user 4.0.0
     League\Container\Test\Inflector\InflectorTest\testInflectorInflectsWithMethodCall\anonymous-
     class-120-126 user 7.1.0
     League\Container\Test\Inflector\InflectorTest\testInflectorInflectsWithMethodCall\anonymous-
     class-98-99 user 4.0.0
     League\Container\Test\Inflector\InflectorTest\testInflectorInflectsWithProperties\anonymous-
     class-63-64 user 4.0.0
     League\Container\Test\Inflector\InflectorTest\testInflectorInflectsWithProperties\anonymous-
     class-85-87 user 4.0.0 League\Container\Test\ReflectionContainerTest
     user 7.1.0
     League\Container\Test\ServiceProvider\ServiceProviderAggregateTest spl
     5.1.0 7.1.0
     League\Container\Test\ServiceProvider\ServiceProviderAggregateTest\getServiceProvider\anonymous-
     class-21-46 user 7.1.0
     League\Container\Test\ServiceProvider\ServiceProviderTest user 7.1.0
     League\Container\Test\ServiceProvider\ServiceProviderTest\getServiceProvider\anonymous-
     class-18-38 user 7.1.0 U Psr\Container\ContainerInterface user 5.3.0
     ReflectionClass reflection 5.0.0 5.0.0 ReflectionFunction reflection
     5.0.0 5.0.0 ReflectionFunctionAbstract reflection 5.0.0 5.0.0
     ReflectionMethod reflection 5.0.0 5.0.0 U array user 4.0.0 U bool user
     4.0.0 U callable user 4.0.0 U class user 7.0.0alpha1 U float user
     4.0.0 U int user 4.0.0 U object user 4.0.0 self core 5.0.0 5.0.0 U
     string user 4.0.0 Total [76] 7.2.0 Generators Analysis Generator REF
     EXT min/Max PHP min/Max
     League\Container\Definition\DefinitionAggregate\getIterator\generator-115-115
     user 7.0.0
     League\Container\Inflector\InflectorAggregate\getIterator\generator-42-42
     user 7.0.0
     League\Container\ServiceProvider\ServiceProviderAggregate\getIterator\generator-56-56
     user 7.0.0 Total [3] 7.0.0 Functions Analysis Function REF EXT min/Max
     PHP min/Max League\Container\Container\resolve\closure-170-172 user
     5.4.0
     League\Container\Definition\DefinitionAggregate\__construct\closure-22-24
     user 5.3.0
     League\Container\Test\Argument\TypedArgumentTest\testLiteralArgumentSetsAndGetsArgument\closure-19-20
     user 5.3.0 League\Container\Test\Asset\test user 7.0.0alpha1
     League\Container\Test\Definition\DefinitionTest\testDefinitionResolvesClosureReturningRawArgument\closure-29-31
     user 5.3.0
     League\Container\Test\Definition\DefinitionTest\testDefinitionResolvesClosureWithDefinedArgs\closure-18-20
     standard 4.0.0 5.6.0
     League\Container\Test\Inflector\InflectorAggregateTest\testNoInflectionIsAttemptedOnNonObjects\closure-57-59
     user 7.0.0alpha1
     League\Container\Test\Inflector\InflectorTest\testInflectorInflectsWithCallback\closure-145-147
     user 5.3.0
     League\Container\Test\ReflectionContainerTest\getContainerMock\closure-21-23
     user 5.3.0
     League\Container\Test\ReflectionContainerTest\getContainerMock\closure-28-32
     user 5.3.0
     League\Container\Test\ReflectionContainerTest\testCallReflectsOnClosureArguments\closure-147-149
     user 5.3.0
     League\Container\Test\ServiceProvider\ServiceProviderAggregateTest\getServiceProvider\anonymous-
     class-21-46\register\closure-42-44 user 5.3.0
     League\Container\Test\ServiceProvider\ServiceProviderTest\getServiceProvider\anonymous-
     class-18-38\register\closure-34-36 user 5.3.0 array_combine standard
     5.0.0 5.0.0 array_filter standard 4.0.6 4.0.6 array_key_exists
     standard 4.0.7 4.0.7 array_keys standard 4.0.0 4.0.0 array_values
     standard 4.0.0 4.0.0 array_walk standard 4.0.0 4.0.0 call_user_func
     standard 4.0.0 4.0.0 call_user_func_array standard 4.0.4 4.0.4
     class_exists core 4.0.0 4.0.0 explode standard 4.0.0 4.0.0 get_class
     core 4.0.0 4.0.0 gettype standard 4.0.0 4.0.0 implode standard 4.0.0
     4.0.0 in_array standard 4.0.0 4.0.0 is_array standard 4.0.0 4.0.0
     is_callable standard 4.0.6 4.0.6 is_object standard 4.0.0 4.0.0
     is_string standard 4.0.0 4.0.0 iterator_to_array spl 5.1.0 5.1.0 ltrim
     standard 4.0.0 4.0.0 sprintf standard 4.0.0 4.0.0 strpos standard
     4.0.0 4.0.0 Total [35] 7.0.0alpha1 Constants Analysis Constant REF EXT
     min/Max PHP min/Max
     League\Container\Argument\LiteralArgument\TYPE_ARRAY user 4.0.0
     League\Container\Argument\LiteralArgument\TYPE_BOOL user 4.0.0
     League\Container\Argument\LiteralArgument\TYPE_BOOLEAN user 4.0.0
     League\Container\Argument\LiteralArgument\TYPE_CALLABLE user 4.0.0
     League\Container\Argument\LiteralArgument\TYPE_DOUBLE user 4.0.0
     League\Container\Argument\LiteralArgument\TYPE_FLOAT user 4.0.0
     League\Container\Argument\LiteralArgument\TYPE_INT user 4.0.0
     League\Container\Argument\LiteralArgument\TYPE_INTEGER user 4.0.0
     League\Container\Argument\LiteralArgument\TYPE_OBJECT user 4.0.0
     League\Container\Argument\LiteralArgument\TYPE_STRING user 4.0.0 false
     core 4.0.0 4.0.0 null core 4.0.0 4.0.0 true core 4.0.0 4.0.0 Total
     [13] 4.0.0 No condition found Requires PHP 7.2.0 (min) Profile results
     are being logged as JSON format to /home/fedora/2017032-php-league-
     container4/phpci.log phpCompatInfo version 5.5.4 DB version 3.15.0
     static analyze results in /home/fedora/2017032-php-league-
     container4/phpci.log


Rpmlint
-------
Checking: php-league-container4-4.2.0-1.fc36.noarch.rpm
          php-league-container4-4.2.0-1.fc36.src.rpm
php-league-container4.noarch: W: spelling-error %description -l en_US Autoloader -> Auto loader, Auto-loader, Freeloader
php-league-container4.noarch: W: spelling-error %description -l en_US autoload -> auto load, auto-load, tautology
php-league-container4.src: W: spelling-error %description -l en_US Autoloader -> Auto loader, Auto-loader, Freeloader
php-league-container4.src: W: spelling-error %description -l en_US usr -> use, us, user
php-league-container4.src: W: spelling-error %description -l en_US autoload -> auto load, auto-load, tautology
php-league-container4.src: W: strange-permission php-league-container4-get-source.sh 755
php-league-container4.src: W: invalid-url Source0: php-league-container4-4.2.0-375d13cb828649599ef5d48a339c4af7a26cd0ab.tar.gz
2 packages and 0 specfiles checked; 0 errors, 7 warnings.




Rpmlint (installed packages)
----------------------------
Cannot parse rpmlint output:


Requires
--------
php-league-container4 (rpmlib, GLIBC filtered):
    (php-composer(psr/container) >= 1.1 with php-composer(psr/container) < 3)
    php(language)
    php-composer(fedora/autoloader)
    php-reflection
    php-spl



Provides
--------
php-league-container4:
    php-composer(league/container)
    php-composer(psr/container-implementation)
    php-league-container4



Generated by fedora-review 0.7.6 (b083f91) last change: 2020-11-10
Command line :/usr/bin/fedora-review -b 2017032
Buildroot used: fedora-rawhide-x86_64
Active plugins: Shell-api, PHP, Generic
Disabled plugins: Ocaml, Perl, Python, SugarActivity, C/C++, Haskell, fonts, R, Java
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH

Comment 3 Remi Collet 2021-12-23 10:48:37 UTC
Thanks for the review

> - there's lots of conditionals in the package, which makes it a bit hard to 
>  read... could this perhaps be cleaned up a bit?

They will be removed during import to Fedora
(I keep them for my repo and for EL-7, line after # remirepo:1 are auto removed by my import script ;)

SCM requests
https://pagure.io/releng/fedora-scm-requests/issue/40036
https://pagure.io/releng/fedora-scm-requests/issue/40037

Comment 4 Gwyn Ciesla 2021-12-27 16:52:12 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/php-league-container4

Comment 5 Fedora Update System 2022-01-03 13:09:41 UTC
FEDORA-2022-39d5e9a9f6 has been submitted as an update to Fedora 35. https://bodhi.fedoraproject.org/updates/FEDORA-2022-39d5e9a9f6

Comment 6 Fedora Update System 2022-01-04 01:11:37 UTC
FEDORA-2022-39d5e9a9f6 has been pushed to the Fedora 35 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf install --enablerepo=updates-testing --advisory=FEDORA-2022-39d5e9a9f6 \*`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2022-39d5e9a9f6

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 7 Fedora Update System 2022-01-12 01:23:05 UTC
FEDORA-2022-39d5e9a9f6 has been pushed to the Fedora 35 stable repository.
If problem still persists, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.