diff --git a/screening/build/build.xml b/screening/build/build.xml index c3510ad732c857482ea4a059645b5dd94e834305..7826973eb4cee48a336e84fd0db38dcb170196ae 100644 --- a/screening/build/build.xml +++ b/screening/build/build.xml @@ -46,12 +46,12 @@ // Task for creating distributions --> - <target name="dist" depends="create-installation-tarball, screening-api"/> + <target name="dist" depends="openbis.make-dist, make-full-dss-dist, dss-plugin-jar, datastore_server.make-plugin-dist, screening-api, create-installation-tarball"/> <target name="create-installation-tarball" depends="create-installer"> <property name="tarball.file" value="${basedir}/${dist}/${tarball.basename}.tar.gz" /> - <tar destfile="${tarball.file}"> + <tar destfile="${tarball.file}" compression="gzip"> <tarfileset dir="${basedir}/dist/tarball" prefix="${tarball.basename}/"> <include name="*.*"/> @@ -69,11 +69,16 @@ </tar> </target> - <target name="create-installer" depends="openbis.make-dist, make-full-dss-dist, dss-plugin-jar, datastore_server.make-plugin-dist, prepare-installer"> + <target name="create-installer" depends="prepare-installer"> <mkdir dir="${installer.dist.dir}" /> - <unzip src="${dss.dist.file}" dest="${installer.dist.dir}"/> - <unzip src="${server.dist.file}" dest="${installer.dist.dir}"/> + + <unzip dest="${installer.dist.dir}"> + <fileset dir="."> + <include name="${dist}/openBIS-server${variant}-S*.zip"/> + <include name="${dist}/datastore_server${variant}-S*.zip"/> + </fileset> + </unzip> <!-- make the "admin" directory available to the installer as "bin" --> <copy todir="${installer.dist.dir}/bin"> @@ -124,12 +129,8 @@ </target> <target name="prepare-installer"> - <!-- KE: there is no easy way to get the ${dss.dist.file} property as we - refer to the DSS build via "antcall"-s and they do not have return values --> - <build-info revision="revision.number" version="version.number" clean="clean.flag" /> - <property name="dss.dist.file" - value="${dist.file.prefix}${variant}-${version.number}-r${revision.number}.zip" /> + <build-info revision="revision.number" version="version.number" clean="clean.flag" /> <property name="tarball.basename" value="openBIS-installation${variant}-${version.number}-r${revision.number}" /> <zip update="true" destfile="${server.dist.file}"> diff --git a/screening/dist/admin/restore-config-from-backup.sh b/screening/dist/admin/restore-config-from-backup.sh index 9ef1fbef12a27be9c287fc2065cb1ca13d567b05..cf456fb5c4f6206cb63f856ba5c6cc7c9bc38625 100755 --- a/screening/dist/admin/restore-config-from-backup.sh +++ b/screening/dist/admin/restore-config-from-backup.sh @@ -16,7 +16,7 @@ fi source $BASE/common-functions.sh ROOT=$BASE/../servers -echo "Restorting configuration backup from $CONF to $ROOT ..." +echo "Restoring configuration backup from $CONF to $ROOT ..." # -- GLOBAL if [ -e "$CONF/env" ]; then diff --git a/screening/dist/tarball/installer/eng.xml b/screening/dist/tarball/installer/eng.xml index fc81b2937f57b50ecb23209d8c192f55608d3942..45a09e7a4d5f5735331b87e03817e4935ae17b5c 100644 --- a/screening/dist/tarball/installer/eng.xml +++ b/screening/dist/tarball/installer/eng.xml @@ -2,4 +2,6 @@ <langpack> <str id="data.validation.error.title" txt="Error" /> <str id="installer.reversetitle" txt="$APP_NAME installation" /> + <str id="TargetPanel.info" txt="Select openBIS installation directory: " /> + <str id="TargetPanel.warn" txt="Installation folder already exists. The process will run openBIS upgrade. Continue ?" /> </langpack> \ No newline at end of file diff --git a/screening/dist/tarball/installer/install.xml b/screening/dist/tarball/installer/install.xml index 115d9e95704b1fc2b69c78b0a1f3bc8906b0b99a..83a0c56209b59b3e8e4c0ba16cc325d40ff9dc4c 100644 --- a/screening/dist/tarball/installer/install.xml +++ b/screening/dist/tarball/installer/install.xml @@ -4,8 +4,7 @@ <appname>openBIS</appname> <appversion>@{version.number}</appversion> <url>http://www.cisd.ethz.ch/software/openBIS</url> - <!-- TODO KE: cannot disable uninstaller --> - <!-- uninstaller write="no"/--> + <uninstaller write="no"/> <javaversion>1.6</javaversion> <requiresjdk>yes</requiresjdk> <os> @@ -99,11 +98,7 @@ <!-- create backup if needed --> - <panel classname="com.izforge.izpack.panels.process.ProcessPanel" condition="isUpdateInstallation" > - <actions> - <action stage="preactivate" classname="ch.systemsx.cisd.openbis.installer.izpack.PrepareInstallationBackupAction" /> - </actions> - </panel> + <panel classname="com.izforge.izpack.panels.process.ProcessPanel" condition="isUpdateInstallation" /> <panel classname="com.izforge.izpack.panels.packs.PacksPanel"/> <panel classname="com.izforge.izpack.panels.install.InstallPanel"> @@ -142,12 +137,12 @@ <pack name="Datastore Server" required="yes" loose="yes"> <description>The data store server managing raw data</description> <file src="@{installer.dist.dir}/datastore_server" targetdir="$INSTALL_PATH/servers"/> - <file src="@{installer.dist.dir}/data/dropboxes" targetdir="$DSS.ROOT-DIR" /> - <file src="@{installer.dist.dir}/data/incoming-simple" targetdir="$DSS.ROOT-DIR" /> - <file src="@{installer.dist.dir}/data/incoming-hcs" targetdir="$DSS.ROOT-DIR" /> - <file src="@{installer.dist.dir}/data/samples" targetdir="$DSS.ROOT-DIR" /> - <file src="@{installer.dist.dir}/data/store" targetdir="$DSS.ROOT-DIR" /> - <file src="@{installer.dist.dir}/data/log" targetdir="$INSTALL_DSS_PATH" /> + <file src="@{installer.dist.dir}/data/dropboxes" targetdir="$DSS.ROOT-DIR" condition="isFirstTimeInstallation"/> + <file src="@{installer.dist.dir}/data/incoming-simple" targetdir="$DSS.ROOT-DIR" condition="isFirstTimeInstallation"/> + <file src="@{installer.dist.dir}/data/incoming-hcs" targetdir="$DSS.ROOT-DIR" condition="isFirstTimeInstallation"/> + <file src="@{installer.dist.dir}/data/samples" targetdir="$DSS.ROOT-DIR" condition="isFirstTimeInstallation"/> + <file src="@{installer.dist.dir}/data/store" targetdir="$DSS.ROOT-DIR" condition="isFirstTimeInstallation"/> + <file src="@{installer.dist.dir}/data/log" targetdir="$INSTALL_DSS_PATH" condition="isFirstTimeInstallation"/> <parsable targetfile="$INSTALL_DSS_PATH/etc/service.properties" /> </pack> @@ -155,21 +150,13 @@ <pack name="Administration Scripts" required="yes" loose="yes"> <description>Scripts to facilitate openBIS administration</description> <file src="@{installer.dist.dir}/bin" targetdir="$INSTALL_PATH" /> - <file src="@{installer.dist.dir}/data/doc" targetdir="$DSS.ROOT-DIR" /> + <file src="@{installer.dist.dir}/data/doc" targetdir="$DSS.ROOT-DIR" condition="isFirstTimeInstallation"/> <parsable targetfile="$INSTALL_BIN_PATH/env" /> - <parsable targetfile="$DSS.ROOT-DIR/doc/getting-started-with-openBIS.html" /> + <parsable targetfile="$DSS.ROOT-DIR/doc/getting-started-with-openBIS.html" condition="isFirstTimeInstallation"/> <!-- set all *.sh files executable --> - <executable targetfile="$INSTALL_BIN_PATH/chmodx-all-scripts.sh" stage="postinstall" keep="false"/> - - <!-- restore the config from the pre-existing installation --> - <executable targetfile="$INSTALL_BIN_PATH/restore-config-from-backup.sh" - stage="postinstall" condition="isUpdateInstallation" keep="true"> - <args> - <arg value="$BACKUP_FOLDER/config-backup" /> - </args> - </executable> + <executable targetfile="${INSTALL_BIN_PATH}/chmodx-all-scripts.sh" stage="postinstall" keep="false"/> </pack> </packs> diff --git a/screening/dist/tarball/run-console.sh b/screening/dist/tarball/run-console.sh index 6a56e502a14cf54f65c620dcf6ff5b1da7fe2001..3d213ad9b0334177396e971601c51e72945b97e5 100755 --- a/screening/dist/tarball/run-console.sh +++ b/screening/dist/tarball/run-console.sh @@ -1,33 +1,62 @@ #!/bin/bash +# +# reads the 'admin' user password from the console +# +function readAdminPassword() +{ + if [ -z "$ADMIN_PASSWORD" ]; then + read -s -p "Enter password for openBIS 'admin' user : " ADMIN_PASSWORD + echo "" + + read -s -p "Re-type password for openBIS 'admin' user : " ADMIN_PASSWORD2 + echo "" + + if [ "$ADMIN_PASSWORD" -ne "$ADMIN_PASSWORD2" ]; then + echo "Administrator passwords do not match. Aborting installation." + exit 2 + fi + fi +} + +# +# enforces the availability of a certain command on the system path +# +function ensureToolOnPath() +{ + cmd=$1 + cmdLocation=$(which $cmd) + + if [ -z "$cmdLocation" ]; then + + echo "The installation process requires '$cmd' to be on the system path." + echo "Please set the PATH variable accordingly and try again." + exit 3 + + fi +} + + BASE=`dirname "$0"` if [ ${BASE#/} == ${BASE} ]; then BASE="`pwd`/${BASE}" fi - -install_path_configured=$(grep -e "^INSTALL_PATH=.*\w.*$" $BASE/console.properties) -if [ -z "$install_path_configured" ]; then +install_path=$( grep -e "^INSTALL_PATH=.*$" $BASE/console.properties | sed "s/INSTALL_PATH=//" ) +if [ -z "$install_path" ]; then echo "The property INSTALL_PATH must be configured in $BASE/console.properties." echo "Please edit the file and run the installation script again." exit 1 fi -# -# create 'admin' user -# -if [ -z "$ADMIN_PASSWORD" ]; then - read -s -p "Enter password for openBIS 'admin' user : " ADMIN_PASSWORD - echo "" - - read -s -p "Re-type password for openBIS 'admin' user : " ADMIN_PASSWORD2 - echo "" - - if [ "$ADMIN_PASSWORD" -ne "$ADMIN_PASSWORD2" ]; then - echo "Administrator passwords do not match. Aborting installation." - exit 2 - fi +ensureToolOnPath "java" +ensureToolOnPath "psql" +ensureToolOnPath "pg_dump" + +if [ -d "$install_path" ]; then + echo "Previous openBIS installation detected. Upgrading..." +else + readAdminPassword fi - -java -Djava.util.logging.config.file=$BASE/jul.config -DADMIN_PASSWORD=$ADMIN_PASSWORD -Dmerge.props.to.installation.vars=true -jar $BASE/openBIS-installer.jar -options-auto $BASE/console.properties \ No newline at end of file +java -Djava.util.logging.config.file=$BASE/jul.config -DADMIN_PASSWORD=$ADMIN_PASSWORD -Dmerge.props.to.installation.vars=true -jar $BASE/openBIS-installer.jar -options-auto $BASE/console.properties diff --git a/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/ExecuteSetupScriptsAction.java b/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/ExecuteSetupScriptsAction.java index 0cdc2acaa86a4ad0b72d64c1ad47e1d3646566da..29e2b99ed4729a74cc727a4c43b3c5fab64b000e 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/ExecuteSetupScriptsAction.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/ExecuteSetupScriptsAction.java @@ -64,7 +64,10 @@ public class ExecuteSetupScriptsAction implements PanelAction private void executRestoreConfigScript(AutomatedInstallData data) { String script = getAdminScript(data, RESTORE_CONFIG_FROM_BACKUP_SCRIPT); - executeAdminScript(null, script, data.getVariable("BACKUP_FOLDER")); + String backupConfigFolder = + data.getVariable(GlobalInstallationContext.BACKUP_FOLDER_VARNAME) + + "/config-backup"; + executeAdminScript(null, script, backupConfigFolder); } private void executePostInstallationScript(AutomatedInstallData data) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/GlobalInstallationContext.java b/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/GlobalInstallationContext.java index 15c279bb6f62b52662a4c54eb99c4843ce436dc2..034b67fb6331b329bf94bbe611699abf8ee252da 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/GlobalInstallationContext.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/GlobalInstallationContext.java @@ -35,6 +35,8 @@ public class GlobalInstallationContext public static final String DATA_DIR_VARNAME = "DSS.ROOT-DIR"; + public static final String BACKUP_FOLDER_VARNAME = "BACKUP_FOLDER"; + /** * set to true if the installation process is trying to update an existing openBIS installation. */ diff --git a/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/InitializeInstallationContextAction.java b/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/InitializeInstallationContextAction.java index f18747d48e767c52c7347770161babbee9099c23..d2b0b06ecd2a9eca58c6b4b6110a0b94ddb48176 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/InitializeInstallationContextAction.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/InitializeInstallationContextAction.java @@ -32,6 +32,11 @@ public class InitializeInstallationContextAction implements PanelAction public void executeAction(AutomatedInstallData data, AbstractUIHandler arg1) { GlobalInstallationContext.initialize(data); + + if (GlobalInstallationContext.isUpdateInstallation) + { + new PrepareInstallationBackupAction().executeAction(data, arg1); + } } public void initialize(PanelActionConfiguration arg0) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/PostgresToolsPathValidator.java b/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/PostgresToolsPathValidator.java index 436e839cde60202fa01c9910c708e5a2ca884ef0..bc7af9d225ccc2237bde760223a958a493ff0623 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/PostgresToolsPathValidator.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/PostgresToolsPathValidator.java @@ -58,7 +58,16 @@ public class PostgresToolsPathValidator implements DataValidator data.setVariable(POSTGRES_BIN_VARNAME, selectedPath); - return (valid) ? Status.OK : Status.ERROR; + if (valid) + { + return Status.OK; + } else + { + // only useful for console installations + System.err.println(getErrorMessageId()); + return Status.ERROR; + } + } } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/PrepareInstallationBackupAction.java b/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/PrepareInstallationBackupAction.java index e9f33f9f59db82c57b3ffea56d9704e6782dd73b..9aa693c07c85ab8dbd4e700f14a857d3b9b811ac 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/PrepareInstallationBackupAction.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/installer/izpack/PrepareInstallationBackupAction.java @@ -32,9 +32,6 @@ import com.izforge.izpack.data.PanelAction; */ public class PrepareInstallationBackupAction implements PanelAction { - - private static final String BACKUP_FOLDER_VARNAME = "BACKUP_FOLDER"; - private static final String BACK_FOLDER_PATTERN = "yyyy-MM-dd-HHmm"; private static final String BACKUP_ROOT = "backup"; @@ -64,7 +61,7 @@ public class PrepareInstallationBackupAction implements PanelAction private String setInstallationWideBackupDirVariable(AutomatedInstallData data) { String backupDirPath = backupDir.getAbsolutePath(); - data.setVariable(BACKUP_FOLDER_VARNAME, backupDirPath); + data.setVariable(GlobalInstallationContext.BACKUP_FOLDER_VARNAME, backupDirPath); return backupDirPath; }