From b40a41156e4949cf06ad3e77251526d42c20adaf Mon Sep 17 00:00:00 2001
From: Helmut Hummel <typo3@helhum.io>
Date: Fri, 11 Aug 2017 16:31:22 +0200
Subject: [PATCH] [BUGFIX] Remove symlink to typo3 folder in web dir

When upgrading from older TYPO3 versions, composer installation
from that version created a symlink to the typo3 folder.

Before trying to remove typo3/sysext, we need to ensure
to remove a potentially existing symlink to typo3 folder
to not accidentally delete that sysext folder within
the sources directory.

Resolves: #82090
Releases: master
Change-Id: I12ef27d6236a9dbe844803afce55247a23ee5358
Reviewed-on: https://review.typo3.org/53682
Reviewed-by: Andreas Fernandez <typo3@scripting-base.de>
Reviewed-by: Mathias Brodala <mbrodala@pagemachine.de>
Tested-by: Mathias Brodala <mbrodala@pagemachine.de>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Helmut Hummel <typo3@helhum.io>
Tested-by: Helmut Hummel <typo3@helhum.io>
---
 .../core/Classes/Composer/InstallerScripts/WebDirectory.php   | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/typo3/sysext/core/Classes/Composer/InstallerScripts/WebDirectory.php b/typo3/sysext/core/Classes/Composer/InstallerScripts/WebDirectory.php
index 8bfc99005871..2c7a1dcd690f 100644
--- a/typo3/sysext/core/Classes/Composer/InstallerScripts/WebDirectory.php
+++ b/typo3/sysext/core/Classes/Composer/InstallerScripts/WebDirectory.php
@@ -88,6 +88,10 @@ class WebDirectory implements InstallerScript
     {
         $webDir = $this->filesystem->normalizePath($this->pluginConfig->get('web-dir'));
         $backendDir = $webDir . self::$typo3Dir;
+        // Ensure we delete a previously existing symlink to typo3 folder in web directory
+        if ($this->filesystem->isSymlinkedDirectory($backendDir)) {
+            $this->filesystem->removeDirectory($backendDir);
+        }
         $this->filesystem->ensureDirectoryExists($backendDir);
         $localRepository = $this->composer->getRepositoryManager()->getLocalRepository();
         $package = $localRepository->findPackage('typo3/cms', new EmptyConstraint());
-- 
GitLab