Bug #54581

Epic #47018: Implement Composer support and clean package manager API

Please repair PackageStates before next Beta!

Added by Stefan Froemken over 1 year ago. Updated over 1 year ago.

Status:Closed Start date:2013-12-23
Priority:Should have Due date:
Assigned To:Thomas Maroschik % Done:

100%

Category:Backend API Spent time: -
Target version:6.2.0
TYPO3 Version:6.2 Is Regression:No
PHP Version:5.4 Sprint Focus:
Complexity:hard

Description

Hello Core-Team,

I know...current git state of TYPO3 is beta, but there are some basic functions in TYPO3 which still needs some love. I already have created an ticket regarding dependencies in PackageStates.php. Now I have found a second bug:

Here a simplified visualisation of: $this->packageStatesConfiguration['packages']:

array(
    'about' => array(...),
    'backend' => array(...),
    'core' => array(...),
    'yellowpages' => array(...), <--This extension has a dependency to jw_categories
    'files' => array(...), <-- I have deleted this extension in extManager
    'tt_news' => array(...),
    'jw_categories' => array(...),
)

If I delete "files" you call:

protected function unregisterPackageByPackageKey($packageKey) {
    unset($this->packages[$packageKey]);
    unset($this->packageKeys[strtolower($packageKey)]);
    unset($this->packageStatesConfiguration['packages'][$packageKey]);
    $this->sortAndSavePackageStates();
}

In this function you remove files correctly, but you call $this->sortAndSavePackageStates() and this a mistake. $this->sortAndSavePackageStates() only works with already registered packages. So our packages array looks like:

array(
    'about' => array(...),
    'backend' => array(...),
    'core' => array(...),
    'yellowpages' => array(...), <--This extension has a dependency to jw_categories
);

$this->sortAndSavePackageStates() cannot find package jw_categories, because it is not registered already. Backtrace:

PHP Fatal error:  Uncaught exception 'UnexpectedValueException' with message 'The package "yellowpages2" depends on "jw_categories" which is not present in the system.' in /Applications/MAMP/htdocs/typo3_src/typo3/sysext/core/Classes/Package/PackageManager.php:636
Stack trace:
#0 /Applications/MAMP/htdocs/typo3_src/typo3/sysext/core/Classes/Package/PackageManager.php(692): TYPO3\CMS\Core\Package\PackageManager->buildDependencyGraphForPackages(Array)
#1 /Applications/MAMP/htdocs/typo3_src/typo3/sysext/core/Classes/Package/PackageManager.php(719): TYPO3\CMS\Core\Package\PackageManager->buildDependencyGraph()
#2 /Applications/MAMP/htdocs/typo3_src/typo3/sysext/core/Classes/Package/PackageManager.php(776): TYPO3\CMS\Core\Package\PackageManager->getAvailablePackageLoadingOrder()
#3 /Applications/MAMP/htdocs/typo3_src/typo3/sysext/core/Resources/PHP/TYPO3.Flow/Classes/TYPO3/Flow/Package/PackageManager.php(914): TYPO3\CMS\Core\Package\PackageManager->sortAvailablePackagesByDependencies()
#4 /Applications/MAMP/htdocs/typo3_src/typo3/s in /Applications/MAMP/htdocs/typo3_src/typo3/sysext/core/Classes/Package/PackageManager.php on line 636

Stefan


Related issues

related to Core - Task #55404: Extract package dependency sorting to own class Resolved 2014-01-28
related to Core - Bug #54142: Dependencies for non-composerbased extensions not regarde... Resolved 2013-12-02

History

#1 Updated by Markus Klein over 1 year ago

How did the jw_categories ext get into the $this->packageStatesConfiguration['packages'] if it was not registered before?
Where did tt_news go??

#2 Updated by Thomas Maroschik over 1 year ago

Potentially we should just consider active packages in the dependency solving algorithm. All inactive packages are basically irrelevant.

#3 Updated by Stefan Froemken over 1 year ago

I'm sorry about this ticket here.I have tried to solve this problem on myself, but if I change a little bit here it crashes somewhere else. This bug here only appears, if you delete the Flow-Check for TYPO3-Extensions. I'm sure Thomas knows what I mean, because we have discussed about it some weeks ago on skype.

@Markus: As far as I can see, all extensions from ext-paths will be added to $this->packageStatesConfiguration['packages']. Later on while registration process some packages will be removed from this array again.

In my kind of view this is a very important bug which has to be solved. As long as sorting does not work correctly incl. dependencies, extensions cannot override TCA configuration of other extensions. Sure, maybe it works, but this is because of different orderings with each additionally installed extension.

Stefan

#4 Updated by Gerrit Code Review over 1 year ago

  • Status changed from New to Under Review

Patch set 1 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/27002

#5 Updated by Ernesto Baschny over 1 year ago

  • Parent task set to #47018

#6 Updated by Thomas Maroschik over 1 year ago

  • Status changed from Under Review to Closed
  • % Done changed from 0 to 100

The issue has been solved by #55404.

#7 Updated by Thomas Maroschik over 1 year ago

  • Assigned To set to Thomas Maroschik

Also available in: Atom PDF