Chris@0: register('config.storage', 'Drupal\Core\Config\InstallStorage'); Chris@0: Chris@0: // Replace services with in-memory implementations. Chris@0: $definition = $container->getDefinition('cache_factory'); Chris@0: $definition->setClass('Drupal\Core\Cache\MemoryBackendFactory'); Chris@0: $definition->setArguments([]); Chris@0: $definition->setMethodCalls([]); Chris@0: $container Chris@0: ->register('keyvalue', 'Drupal\Core\KeyValueStore\KeyValueMemoryFactory'); Chris@0: $container Chris@0: ->register('keyvalue.expirable', 'Drupal\Core\KeyValueStore\KeyValueNullExpirableFactory'); Chris@0: Chris@0: // Replace services with no-op implementations. Chris@0: $container Chris@0: ->register('lock', 'Drupal\Core\Lock\NullLockBackend'); Chris@0: $container Chris@0: ->register('url_generator', 'Drupal\Core\Routing\NullGenerator') Chris@0: ->addArgument(new Reference('request_stack')); Chris@0: $container Chris@0: ->register('path_processor_manager', 'Drupal\Core\PathProcessor\NullPathProcessorManager'); Chris@0: $container Chris@0: ->register('router.dumper', 'Drupal\Core\Routing\NullMatcherDumper'); Chris@0: Chris@0: // Remove the cache tags invalidator tag from the cache tags storage, so Chris@0: // that we don't call it when cache tags are invalidated very early in the Chris@0: // installer. Chris@0: $container->getDefinition('cache_tags.invalidator.checksum') Chris@0: ->clearTag('cache_tags_invalidator'); Chris@0: Chris@0: // Replace the route builder with an empty implementation. Chris@0: // @todo Convert installer steps into routes; add an installer.routing.yml. Chris@0: $definition = $container->getDefinition('router.builder'); Chris@0: $definition->setClass('Drupal\Core\Installer\InstallerRouteBuilder') Chris@0: // The core router builder, but there is no reason here to be lazy, so Chris@0: // we don't need to ship with a custom proxy class. Chris@0: ->setLazy(FALSE); Chris@17: Chris@17: // Use a performance optimised module extension list. Chris@17: $container->getDefinition('extension.list.module')->setClass('Drupal\Core\Installer\InstallerModuleExtensionList'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function alter(ContainerBuilder $container) { Chris@0: // Disable Twig cache (php storage does not exist yet). Chris@0: $twig_config = $container->getParameter('twig.config'); Chris@0: $twig_config['cache'] = FALSE; Chris@0: $container->setParameter('twig.config', $twig_config); Chris@0: Chris@0: // No service may persist when the early installer kernel is rebooted into Chris@0: // the production environment. Chris@0: // @todo The DrupalKernel reboot performed by drupal_install_system() is Chris@0: // actually not a "regular" reboot (like ModuleInstaller::install()), so Chris@0: // services are not actually persisted. Chris@0: foreach ($container->findTaggedServiceIds('persist') as $id => $tags) { Chris@0: $definition = $container->getDefinition($id); Chris@0: $definition->clearTag('persist'); Chris@0: } Chris@0: } Chris@0: Chris@0: }