diff --git a/setup/sequencers/DataAuditSequencer.php b/setup/sequencers/DataAuditSequencer.php index 1ae5f3f688..36ab5fc209 100644 --- a/setup/sequencers/DataAuditSequencer.php +++ b/setup/sequencers/DataAuditSequencer.php @@ -53,10 +53,9 @@ class DataAuditSequencer extends StepSequencer $aSelectedModules = $this->oParams->Get('selected_modules', []); $sSourceDir = $this->oParams->Get('source_dir', 'datamodels/latest'); $sExtensionDir = $this->oParams->Get('extensions_dir', 'extensions'); - $aMiscOptions = $this->oParams->Get('options', []); $aRemovedExtensionCodes = $this->oParams->Get('removed_extensions', []); - $bUseSymbolicLinks = $aMiscOptions['symlinks'] ?? false; - $sMessage = $bUseSymbolicLinks ? '' : 'Using symbolic links instead of copying data model files (for developers only!)'; + $bUseSymbolicLinks = $this->oParams->Get('use_symbolic_links', null) === 'on'; + $sMessage = $bUseSymbolicLinks ? 'Using symbolic links instead of copying data model files (for developers only!)' : ''; $this->oRunTimeEnvironment->DoCompile( $aRemovedExtensionCodes, $aSelectedModules, diff --git a/setup/setuputils.class.inc.php b/setup/setuputils.class.inc.php index c453ade92f..c9457ba32b 100644 --- a/setup/setuputils.class.inc.php +++ b/setup/setuputils.class.inc.php @@ -847,14 +847,19 @@ class SetupUtils // Skip continue; } - if (is_dir($sSource.'/'.$sFile)) { + $sSourcePath = $sSource.'/'.$sFile; + $sDestPath = $sDest.'/'.$sFile; + if (is_dir($sSourcePath)) { // Recurse - self::copydir($sSource.'/'.$sFile, $sDest.'/'.$sFile, $bUseSymbolicLinks); + self::copydir($sSourcePath, $sDestPath, $bUseSymbolicLinks); + } elseif (is_link($sSourcePath)) { + $sLinkPath = readlink($sSourcePath); + symlink($sLinkPath, $sDestPath); } else { if ($bUseSymbolicLinks) { - symlink($sSource.'/'.$sFile, $sDest.'/'.$sFile); + symlink($sSourcePath, $sDestPath); } else { - copy($sSource.'/'.$sFile, $sDest.'/'.$sFile); + copy($sSourcePath, $sDestPath); } } } @@ -863,6 +868,9 @@ class SetupUtils } elseif (is_file($sSource)) { if ($bUseSymbolicLinks) { return symlink($sSource, $sDest); + } elseif (is_link($sSource)) { + $sLinkPath = readlink($sSource); + return symlink($sLinkPath, $sDest); } else { return copy($sSource, $sDest); } diff --git a/setup/wizardsteps/AbstractWizStepInstall.php b/setup/wizardsteps/AbstractWizStepInstall.php index f6fb5918ab..ab8860b385 100644 --- a/setup/wizardsteps/AbstractWizStepInstall.php +++ b/setup/wizardsteps/AbstractWizStepInstall.php @@ -97,7 +97,7 @@ abstract class AbstractWizStepInstall extends WizardStep 'old_addon' => $this->oWizard->GetParameter('old_addon', false), // whether or not to use the "old" userrights profile addon 'options' => json_decode($this->oWizard->GetParameter('misc_options', '[]'), true), 'mysql_bindir' => $this->oWizard->GetParameter('mysql_bindir'), - 'use-symbolic-links' => $this->oWizard->GetParameter('use-symbolic-links', MFCompiler::UseSymbolicLinks()), + 'use_symbolic_links' => $this->oWizard->GetParameter('use_symbolic_links', MFCompiler::UseSymbolicLinks()), ]; if ($sBackupDestination != '') { diff --git a/setup/wizardsteps/AbstractWizStepMiscParams.php b/setup/wizardsteps/AbstractWizStepMiscParams.php index f62263ab25..81c7ba2f4a 100644 --- a/setup/wizardsteps/AbstractWizStepMiscParams.php +++ b/setup/wizardsteps/AbstractWizStepMiscParams.php @@ -31,11 +31,11 @@ abstract class AbstractWizStepMiscParams extends WizardStep final protected function AddUseSymlinksFlagOption(WebPage $oPage): void { if (MFCompiler::CanUseSymbolicLinks()) { - $sChecked = $this->oWizard->GetParameter('use-symbolic-links', MFCompiler::UseSymbolicLinks()) ? ' checked ' : ''; + $sChecked = $this->oWizard->GetParameter('use_symbolic_links', MFCompiler::UseSymbolicLinks()) ? ' checked ' : ''; $oPage->add('
'); $oPage->add('Dev parameters'); - $oPage->p('
'); } } diff --git a/setup/wizardsteps/WizStepInstallMiscParams.php b/setup/wizardsteps/WizStepInstallMiscParams.php index 64abd0bbd7..1bc5321070 100644 --- a/setup/wizardsteps/WizStepInstallMiscParams.php +++ b/setup/wizardsteps/WizStepInstallMiscParams.php @@ -41,6 +41,7 @@ class WizStepInstallMiscParams extends AbstractWizStepMiscParams $this->oWizard->SaveParameter('application_url', ''); $this->oWizard->SaveParameter('graphviz_path', ''); $this->oWizard->SaveParameter('sample_data', 'yes'); + $this->oWizard->SaveParameter('use_symbolic_links', false); return new WizardState(WizStepModulesChoice::class, 'start_install'); } diff --git a/setup/wizardsteps/WizStepUpgradeMiscParams.php b/setup/wizardsteps/WizStepUpgradeMiscParams.php index 2b7c602d47..e9064ea526 100644 --- a/setup/wizardsteps/WizStepUpgradeMiscParams.php +++ b/setup/wizardsteps/WizStepUpgradeMiscParams.php @@ -39,7 +39,7 @@ class WizStepUpgradeMiscParams extends AbstractWizStepMiscParams { $this->oWizard->SaveParameter('application_url', ''); $this->oWizard->SaveParameter('graphviz_path', ''); - $this->oWizard->SaveParameter('use-symbolic-links', MFCompiler::UseSymbolicLinks()); + $this->oWizard->SaveParameter('use_symbolic_links', false); $this->oWizard->SaveParameter('force-uninstall', false); return new WizardState(WizStepModulesChoice::class, 'start_upgrade'); }