diff --git a/core-feature-pack/common/src/main/resources/content/bin/installation-manager.bat b/core-feature-pack/common/src/main/resources/content/.installation/_installation-manager_helper.bat similarity index 93% rename from core-feature-pack/common/src/main/resources/content/bin/installation-manager.bat rename to core-feature-pack/common/src/main/resources/content/.installation/_installation-manager_helper.bat index 4aa352e1d48..03a2704efad 100644 --- a/core-feature-pack/common/src/main/resources/content/bin/installation-manager.bat +++ b/core-feature-pack/common/src/main/resources/content/.installation/_installation-manager_helper.bat @@ -1,7 +1,7 @@ setlocal DisableDelayedExpansion rem This script is only for internal usage and should not be invoked directly by users from the command line. rem This script launches the operation to apply a candidate server installation to update or revert. -rem The server JVM writes the required values into the installation-manager.properties file by using InstMgrCandidateStatus.java +rem The server JVM writes the required values into the _installation-manager_helper.properties file by using InstMgrCandidateStatus.java if "%INST_MGR_SCRIPT_DEBUG%"=="true" ( @echo on @@ -22,7 +22,7 @@ set INST_MGR_STATUS= echo %date% %time% INFO %LOG_NAME% - Executing Management CLI Installer script. -set "PROPS_FILE=%INSTALLATION_HOME%\bin\installation-manager.properties" +set "PROPS_FILE=%INSTALLATION_HOME%\.installation\_installation-manager_helper.properties" if not exist "%PROPS_FILE%" ( echo %date% %time% ERROR %LOG_NAME% - Installation Manager properties file not found at %PROPS_FILE%. diff --git a/core-feature-pack/common/src/main/resources/content/bin/installation-manager.properties b/core-feature-pack/common/src/main/resources/content/.installation/_installation-manager_helper.properties similarity index 100% rename from core-feature-pack/common/src/main/resources/content/bin/installation-manager.properties rename to core-feature-pack/common/src/main/resources/content/.installation/_installation-manager_helper.properties diff --git a/core-feature-pack/common/src/main/resources/content/bin/installation-manager.ps1 b/core-feature-pack/common/src/main/resources/content/.installation/_installation-manager_helper.ps1 similarity index 94% rename from core-feature-pack/common/src/main/resources/content/bin/installation-manager.ps1 rename to core-feature-pack/common/src/main/resources/content/.installation/_installation-manager_helper.ps1 index 980705a27be..c17732b9d05 100644 --- a/core-feature-pack/common/src/main/resources/content/bin/installation-manager.ps1 +++ b/core-feature-pack/common/src/main/resources/content/.installation/_installation-manager_helper.ps1 @@ -1,6 +1,6 @@ # This script is only for internal usage and should not be invoked directly by users from the command line. # This script launches the operation to apply a candidate server installation to update or revert. -# The server JVM writes the required values into the installation-manager.properties file by using InstMgrCandidateStatus.java +# The server JVM writes the required values into the _installation-manager_helper.properties file by using InstMgrCandidateStatus.java param ( [Parameter(Mandatory=$true)] [string]$installationHome, @@ -32,7 +32,7 @@ Write-Log -Level "INFO" -Message "Executing Management CLI Installer script." Set-Variable -Name INST_MGR_COMMAND -Scope Script Set-Variable -Name INST_MGR_STATUS -Scope Script -$propsFile="$installationHome\bin\installation-manager.properties" +$propsFile="$installationHome\.installation\_installation-manager_helper.properties" if ($propsFile -eq $null) { Write-Log -Level "ERROR" -Message "Installation Manager properties file not found at $propsFile." exit 1 @@ -112,4 +112,4 @@ catch { Write-Log -Level "ERROR" -Message "An unknown error occurred trying to launch the installation manager." } -exit 1 \ No newline at end of file +exit 1 diff --git a/core-feature-pack/common/src/main/resources/content/bin/installation-manager.sh b/core-feature-pack/common/src/main/resources/content/.installation/_installation-manager_helper.sh similarity index 80% rename from core-feature-pack/common/src/main/resources/content/bin/installation-manager.sh rename to core-feature-pack/common/src/main/resources/content/.installation/_installation-manager_helper.sh index 6fb948f2efb..4d0e7517ab0 100755 --- a/core-feature-pack/common/src/main/resources/content/bin/installation-manager.sh +++ b/core-feature-pack/common/src/main/resources/content/.installation/_installation-manager_helper.sh @@ -1,7 +1,7 @@ #!/bin/sh # This script is only for internal usage and should not be invoked directly by the users from the command line. # This script launches the operation to apply a candidate server installation to update or revert. -# The server JVM writes the required values into the installation-manager.properties file by using InstMgrCandidateStatus.java +# The server JVM writes the required values into the _installation-manager_helper.properties file by using InstMgrCandidateStatus.java if [ "x${INST_MGR_SCRIPT_DEBUG}" = "xtrue" ]; then set -x fi @@ -17,27 +17,27 @@ unset INST_MGR_STATUS LOG_NAME="[management-cli-installer]" log() { - echo "$(date "+%Y-%m-%d %H:%M:%S,%3N") ${1} $LOG_NAME - ${2}" + echo "$(date "+%Y-%m-%d %H:%M:%S,%3N") ${1} $LOG_NAME - ${2}" } log "INFO" "Executing Management CLI Installer script." -PROPS_FILE="${INSTALLATION_HOME}/bin/installation-manager.properties" +PROPS_FILE="${INSTALLATION_HOME}/.installation/_installation-manager_helper.properties" if ! [ -e "${PROPS_FILE}" ]; then log "ERROR" "Installation Manager properties file not found at ${PROPS_FILE}." exit 1 fi while IFS='=' read -r key value; do - case "${key}" in - "#"*) continue ;; - *) export "${key}=${value}" ;; - esac -done < "$PROPS_FILE" + case "${key}" in + "#"*) continue ;; + *) export "${key}=${value}" ;; + esac +done <"$PROPS_FILE" if [ "x${INST_MGR_STATUS}" = "x" ]; then - log "ERROR" "Cannot read the Installation Manager status." - exit 1 + log "ERROR" "Cannot read the Installation Manager status." + exit 1 fi if ! [ "${INST_MGR_STATUS}" = "PREPARED" ]; then @@ -46,8 +46,8 @@ if ! [ "${INST_MGR_STATUS}" = "PREPARED" ]; then fi if [ "x${INST_MGR_COMMAND}" = "x" ]; then - log "ERROR" "Installation Manager command was not set." - exit 1 + log "ERROR" "Installation Manager command was not set." + exit 1 fi export JAVA_OPTS="-Dlogging.configuration=file:\"${INST_MGR_LOG_PROPERTIES}\" -Dorg.jboss.boot.log.file=\"${INST_MGR_LOG_FILE}\" -Dorg.wildfly.prospero.log.file -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8 ${JAVA_OPTS}" diff --git a/core-feature-pack/common/src/main/resources/content/bin/common.ps1 b/core-feature-pack/common/src/main/resources/content/bin/common.ps1 index 5414ca6c8de..da34043ba1a 100644 --- a/core-feature-pack/common/src/main/resources/content/bin/common.ps1 +++ b/core-feature-pack/common/src/main/resources/content/bin/common.ps1 @@ -387,7 +387,7 @@ Function Start-WildFly-Process { } elseif ($LastExitCode -eq 20) { # :shutdown(perform-installation=true) was called Write-Host "INFO: Starting Candidate Server installation using Management CLI Installer script" $instMgrOutFile="$JBOSS_LOG_DIR\management-cli-installer-out.log" - & "$JBOSS_HOME\bin\installation-manager.ps1" -installationHome "$JBOSS_HOME" -instMgrLogProperties "$logFileProperties" -instMgrLogFile "$logFile" *>&1 | Out-File -FilePath $instMgrOutFile -Append -Encoding UTF8 + & "$JBOSS_HOME\.installation\_installation-manager_helper.ps1" -installationHome "$JBOSS_HOME" -instMgrLogProperties "$logFileProperties" -instMgrLogFile "$logFile" *>&1 | Out-File -FilePath $instMgrOutFile -Append -Encoding UTF8 if ($LastExitCode -eq 0) { Write-Host "INFO: Candidate Server installation completed successfully." } else { diff --git a/core-feature-pack/common/src/main/resources/content/bin/domain.bat b/core-feature-pack/common/src/main/resources/content/bin/domain.bat index 95d03d66b39..79e34bba759 100644 --- a/core-feature-pack/common/src/main/resources/content/bin/domain.bat +++ b/core-feature-pack/common/src/main/resources/content/bin/domain.bat @@ -243,7 +243,7 @@ if %errorlevel% equ 20 ( setlocal EnableDelayedExpansion set "INST_MGR_CONSOLE_FILE=!JBOSS_LOG_DIR!\management-cli-installer-out.log" - call "!JBOSS_HOME!\bin\installation-manager.bat" "!JBOSS_HOME!" "!JBOSS_CONFIG_DIR!\logging.properties" "!JBOSS_LOG_DIR!\host-controller.log" >> "!INST_MGR_CONSOLE_FILE!" 2>&1 + call "!JBOSS_HOME!\.installation\_installation-manager_helper.bat" "!JBOSS_HOME!" "!JBOSS_CONFIG_DIR!\logging.properties" "!JBOSS_LOG_DIR!\host-controller.log" >> "!INST_MGR_CONSOLE_FILE!" 2>&1 if !ERRORLEVEL! equ 0 ( echo INFO: Candidate Server installation completed successfully. ) else ( diff --git a/core-feature-pack/common/src/main/resources/content/bin/domain.sh b/core-feature-pack/common/src/main/resources/content/bin/domain.sh index a3ea7fe9303..7ca59b7798b 100644 --- a/core-feature-pack/common/src/main/resources/content/bin/domain.sh +++ b/core-feature-pack/common/src/main/resources/content/bin/domain.sh @@ -333,7 +333,7 @@ while true; do elif [ "$JBOSS_STATUS" -eq 20 ]; then echo "INFO: Starting Candidate Server installation using Management CLI Installer script" INST_MGR_CONSOLE_FILE="${JBOSS_LOG_DIR}/management-cli-installer-out.log" - "${JBOSS_HOME}/bin/installation-manager.sh" "${JBOSS_HOME}" "${JBOSS_CONFIG_DIR}/logging.properties" "${JBOSS_LOG_DIR}/host-controller.log" >> "${INST_MGR_CONSOLE_FILE}" 2>&1 + "${JBOSS_HOME}/.installation/_installation-manager_helper.sh" "${JBOSS_HOME}" "${JBOSS_CONFIG_DIR}/logging.properties" "${JBOSS_LOG_DIR}/host-controller.log" >> "${INST_MGR_CONSOLE_FILE}" 2>&1 if [ $? -eq 0 ]; then echo "INFO: Candidate Server installation completed successfully." else diff --git a/core-feature-pack/common/src/main/resources/content/bin/standalone.bat b/core-feature-pack/common/src/main/resources/content/bin/standalone.bat index 713894dbc80..0022b840aea 100644 --- a/core-feature-pack/common/src/main/resources/content/bin/standalone.bat +++ b/core-feature-pack/common/src/main/resources/content/bin/standalone.bat @@ -361,7 +361,7 @@ if %errorlevel% equ 20 ( setlocal EnableDelayedExpansion set "INST_MGR_CONSOLE_FILE=!JBOSS_LOG_DIR!\management-cli-installer-out.log" - call "!JBOSS_HOME!\bin\installation-manager.bat" "!JBOSS_HOME!" "!JBOSS_CONFIG_DIR!\logging.properties" "!JBOSS_LOG_DIR!\server.log" >> "!INST_MGR_CONSOLE_FILE!" 2>&1 + call "!JBOSS_HOME!\.installation\_installation-manager_helper.bat" "!JBOSS_HOME!" "!JBOSS_CONFIG_DIR!\logging.properties" "!JBOSS_LOG_DIR!\server.log" >> "!INST_MGR_CONSOLE_FILE!" 2>&1 if !ERRORLEVEL! equ 0 ( echo INFO: Candidate Server installation completed successfully. ) else ( diff --git a/core-feature-pack/common/src/main/resources/content/bin/standalone.sh b/core-feature-pack/common/src/main/resources/content/bin/standalone.sh index ad4d06cde08..5dfe1292160 100644 --- a/core-feature-pack/common/src/main/resources/content/bin/standalone.sh +++ b/core-feature-pack/common/src/main/resources/content/bin/standalone.sh @@ -397,7 +397,7 @@ while true; do elif [ "$JBOSS_STATUS" -eq 20 ]; then echo "INFO: Starting Candidate Server installation using Management CLI Installer script" INST_MGR_CONSOLE_FILE="${JBOSS_LOG_DIR}/management-cli-installer-out.log" - "${JBOSS_HOME}/bin/installation-manager.sh" "${JBOSS_HOME}" "${JBOSS_CONFIG_DIR}/logging.properties" "${JBOSS_LOG_DIR}/server.log" >> "${INST_MGR_CONSOLE_FILE}" 2>&1 + "${JBOSS_HOME}/.installation/_installation-manager_helper.sh" "${JBOSS_HOME}" "${JBOSS_CONFIG_DIR}/logging.properties" "${JBOSS_LOG_DIR}/server.log" >> "${INST_MGR_CONSOLE_FILE}" 2>&1 if [ $? -eq 0 ]; then echo "INFO: Candidate Server installation completed successfully." else diff --git a/core-feature-pack/galleon-common/src/main/resources/configs/domain/model.xml b/core-feature-pack/galleon-common/src/main/resources/configs/domain/model.xml index ed518dc4cf9..a2600cc7141 100644 --- a/core-feature-pack/galleon-common/src/main/resources/configs/domain/model.xml +++ b/core-feature-pack/galleon-common/src/main/resources/configs/domain/model.xml @@ -29,5 +29,6 @@ + diff --git a/core-feature-pack/galleon-common/src/main/resources/configs/standalone/model.xml b/core-feature-pack/galleon-common/src/main/resources/configs/standalone/model.xml index 65e5fd7f793..1517a35a211 100644 --- a/core-feature-pack/galleon-common/src/main/resources/configs/standalone/model.xml +++ b/core-feature-pack/galleon-common/src/main/resources/configs/standalone/model.xml @@ -30,5 +30,6 @@ + diff --git a/core-feature-pack/galleon-common/src/main/resources/packages/core.misc.common/pm/wildfly/tasks.xml b/core-feature-pack/galleon-common/src/main/resources/packages/core.misc.common/pm/wildfly/tasks.xml index a0fea59fa51..78d09883f5c 100644 --- a/core-feature-pack/galleon-common/src/main/resources/packages/core.misc.common/pm/wildfly/tasks.xml +++ b/core-feature-pack/galleon-common/src/main/resources/packages/core.misc.common/pm/wildfly/tasks.xml @@ -15,11 +15,13 @@ + + + - diff --git a/dist/pom.xml b/dist/pom.xml index cc012173960..557143479cb 100644 --- a/dist/pom.xml +++ b/dist/pom.xml @@ -63,6 +63,33 @@ + + org.apache.maven.plugins + maven-resources-plugin + + + verifications-configuration + + copy-resources + + process-classes + + true + ${basedir}/target/verifier + + + src/verifier + true + + + + + + + + org.apache.maven.plugins + maven-verifier-plugin + org.apache.maven.plugins maven-assembly-plugin diff --git a/dist/src/verifier/verifications.xml b/dist/src/verifier/verifications.xml new file mode 100644 index 00000000000..1ba41e9d2c0 --- /dev/null +++ b/dist/src/verifier/verifications.xml @@ -0,0 +1,31 @@ + + + + + + + target/${project.build.finalName}/.installation/_installation-manager_helper.sh + true + + + target/${project.build.finalName}/.installation/_installation-manager_helper.bat + true + + + target/${project.build.finalName}/.installation/_installation-manager_helper.ps1 + true + + + target/${project.build.finalName}/.installation/_installation-manager_helper.properties + true + + + + diff --git a/host-controller/src/main/java/org/jboss/as/host/controller/operations/HostShutdownHandler.java b/host-controller/src/main/java/org/jboss/as/host/controller/operations/HostShutdownHandler.java index da7752864ff..e358f799de4 100644 --- a/host-controller/src/main/java/org/jboss/as/host/controller/operations/HostShutdownHandler.java +++ b/host-controller/src/main/java/org/jboss/as/host/controller/operations/HostShutdownHandler.java @@ -107,7 +107,11 @@ public void execute(OperationContext context, ModelNode operation) throws Operat if (performInstallation) { // Cannot use the Installation Manager constants, we will generate a circular reference via maven final String productName = environment.getProductConfig().getProductName(); - try (FileInputStream in = new FileInputStream(environment.getHomeDir().toPath().resolve("bin").resolve("installation-manager.properties").toFile())) { + try (FileInputStream in = new FileInputStream(environment.getHomeDir().toPath() + .resolve(".installation") + .resolve("_installation-manager_helper.properties") + .toFile()) + ) { final Properties prop = new Properties(); prop.load(in); String current = (String) prop.get("INST_MGR_STATUS"); diff --git a/installation-manager/src/main/java/org/wildfly/core/instmgr/InstMgrCandidateStatus.java b/installation-manager/src/main/java/org/wildfly/core/instmgr/InstMgrCandidateStatus.java index 29ac9b1c355..ada6ace1c38 100644 --- a/installation-manager/src/main/java/org/wildfly/core/instmgr/InstMgrCandidateStatus.java +++ b/installation-manager/src/main/java/org/wildfly/core/instmgr/InstMgrCandidateStatus.java @@ -14,8 +14,8 @@ import org.wildfly.core.instmgr.logging.InstMgrLogger; /** - * Tracks the status of the candidate installation by using the installation-manager.properties file and configures the values that are - * passed to the installation-manager.sh/bat scripts to apply or revert an installation. + * Tracks the status of the candidate installation by using the .installation/_installation-manager_helper.properties file and configures the values that are + * passed to the .installation/_installation-manager_helper.sh/bat scripts to apply or revert an installation. */ class InstMgrCandidateStatus { private Path properties; diff --git a/installation-manager/src/main/java/org/wildfly/core/instmgr/InstMgrService.java b/installation-manager/src/main/java/org/wildfly/core/instmgr/InstMgrService.java index f88e6697bd5..49c693b6b13 100644 --- a/installation-manager/src/main/java/org/wildfly/core/instmgr/InstMgrService.java +++ b/installation-manager/src/main/java/org/wildfly/core/instmgr/InstMgrService.java @@ -83,7 +83,7 @@ public void start(StartContext startContext) throws StartException { this.customPatchPath = homeDir.resolve(InstMgrConstants.CUSTOM_PATCH_SUBPATH); // Properties file used to send information to the launch scripts - Path propertiesPath = homeDir.resolve("bin").resolve("installation-manager.properties"); + Path propertiesPath = homeDir.resolve(".installation").resolve("_installation-manager_helper.properties"); this.candidateStatus.initialize(propertiesPath); try { diff --git a/installation-manager/src/test/java/org/wildfly/core/instmgr/InstMgrResourceTestCase.java b/installation-manager/src/test/java/org/wildfly/core/instmgr/InstMgrResourceTestCase.java index 92342f32ed1..1cd76211fec 100644 --- a/installation-manager/src/test/java/org/wildfly/core/instmgr/InstMgrResourceTestCase.java +++ b/installation-manager/src/test/java/org/wildfly/core/instmgr/InstMgrResourceTestCase.java @@ -96,7 +96,7 @@ public class InstMgrResourceTestCase extends AbstractControllerTestBase { static final Path TARGET_DIR = Paths.get(System.getProperty("basedir", ".")).resolve("target"); static final Path JBOSS_HOME = TARGET_DIR.resolve("InstMgrResourceTestCase").normalize().toAbsolutePath(); static final Path JBOSS_CONTROLLER_TEMP_DIR = JBOSS_HOME.resolve("temp"); - static final Path INSTALLATION_MANAGER_PROPERTIES = JBOSS_HOME.resolve("bin").resolve("installation-manager.properties"); + static final Path INSTALLATION_MANAGER_PROPERTIES = JBOSS_HOME.resolve(".installation").resolve("_installation-manager_helper.properties"); @Parameters public static Iterable> zipHandlers() { @@ -112,7 +112,7 @@ public InstMgrResourceTestCase(BiConsumer zipHandler) { @Before public void setupController() throws InterruptedException, IOException { TestInstallationManager.initialized = false; - JBOSS_HOME.resolve("bin").toFile().mkdirs(); + INSTALLATION_MANAGER_PROPERTIES.getParent().toFile().mkdirs(); Files.deleteIfExists(INSTALLATION_MANAGER_PROPERTIES); Files.createFile(INSTALLATION_MANAGER_PROPERTIES); try (FileOutputStream out = new FileOutputStream(INSTALLATION_MANAGER_PROPERTIES.toString())) { @@ -1273,7 +1273,7 @@ public void prepareUpdatesSimple() throws OperationFailedException, IOException Assert.assertEquals(InstMgrCandidateStatus.Status.PREPARED, instMgrService.getCandidateStatus()); Assert.assertFalse(instMgrService.canPrepareServer()); - Path scriptPropertiesFile = JBOSS_HOME.resolve("bin").resolve("installation-manager.properties"); + Path scriptPropertiesFile = JBOSS_HOME.resolve(".installation").resolve("_installation-manager_helper.properties"); try (FileInputStream in = new FileInputStream(scriptPropertiesFile.toFile())) { final Properties prop = new Properties(); prop.load(in); @@ -1442,7 +1442,7 @@ public void prepareRevertSimple() throws OperationFailedException, IOException { Assert.assertEquals(InstMgrCandidateStatus.Status.PREPARED, instMgrService.getCandidateStatus()); Assert.assertFalse(instMgrService.canPrepareServer()); - Path scriptPropertiesFile = JBOSS_HOME.resolve("bin").resolve("installation-manager.properties"); + Path scriptPropertiesFile = JBOSS_HOME.resolve(".installation").resolve("_installation-manager_helper.properties"); try (FileInputStream in = new FileInputStream(scriptPropertiesFile.toFile())) { final Properties prop = new Properties(); prop.load(in); diff --git a/pom.xml b/pom.xml index e930a964246..aecbebd7840 100644 --- a/pom.xml +++ b/pom.xml @@ -187,6 +187,7 @@ 2.0.10.Final 3.2.8.SP1 2.4.4.Final + 1.1 2.5 1.1.0 build/target/${server.output.dir.prefix}-${wildfly.core.release.version} @@ -754,6 +755,23 @@ wildfly-maven-plugin ${version.wildfly.plugin} + + org.apache.maven.plugins + maven-verifier-plugin + ${version.verifier.plugin} + + + main + verify + + verify + + + + + target/verifier/verifications.xml + + diff --git a/server/src/main/java/org/jboss/as/server/operations/ServerShutdownHandler.java b/server/src/main/java/org/jboss/as/server/operations/ServerShutdownHandler.java index fbd058653af..6d8c7df40b1 100644 --- a/server/src/main/java/org/jboss/as/server/operations/ServerShutdownHandler.java +++ b/server/src/main/java/org/jboss/as/server/operations/ServerShutdownHandler.java @@ -96,7 +96,11 @@ public void execute(OperationContext context, ModelNode operation) throws Operat if (performInstallation) { // Cannot use the Installation Manager service, we will generate a circular reference via maven final String productName = environment.getProductConfig().getProductName(); - try (FileInputStream in = new FileInputStream(environment.getHomeDir().toPath().resolve("bin").resolve("installation-manager.properties").toFile())) { + try (FileInputStream in = new FileInputStream(environment.getHomeDir().toPath() + .resolve(".installation") + .resolve("_installation-manager_helper.properties") + .toFile()) + ) { final Properties prop = new Properties(); prop.load(in); String current = (String) prop.get("INST_MGR_STATUS"); diff --git a/testsuite/manualmode/src/test/java/org/jboss/as/test/manualmode/provisioning/ProvisioningConsistencyTestCase.java b/testsuite/manualmode/src/test/java/org/jboss/as/test/manualmode/provisioning/ProvisioningConsistencyTestCase.java index 2f280018aeb..9bd597c704c 100644 --- a/testsuite/manualmode/src/test/java/org/jboss/as/test/manualmode/provisioning/ProvisioningConsistencyTestCase.java +++ b/testsuite/manualmode/src/test/java/org/jboss/as/test/manualmode/provisioning/ProvisioningConsistencyTestCase.java @@ -117,8 +117,16 @@ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) { } File dist = getDistFile(dir, true, true, errors); files = dist.listFiles(); - if (files != null && files.length > 0) { - errors.add(String.format("%s has unexpected files: %s", dist, Arrays.asList(files))); + if (files == null || files.length == 0) { + errors.add(String.format("%s should contain installation manager helper files", dist)); + } else { + // remove the installation manager helpers + files = Arrays.stream(files) + .filter( f -> !f.getName().startsWith("_installation-manager_helper")) + .toArray(File[]::new); + if (files.length > 0) { + errors.add(String.format("%s has unexpected files: %s", dist, Arrays.asList(files))); + } } return FileVisitResult.SKIP_SUBTREE; } else {