123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643 |
- #!/bin/sh
- ###############################################################################
- # Install utility for IBM i
- #
- # Copyright IBM Corp. 2012
- # The source code for this program is not published or other-
- # wise divested of its trade secrets, irrespective of what has
- # been deposited with the U.S. Copyright Office.
- #
- # ----------------------------------------------------------------------------
- #
- # You can optionally run the _iPostInstallUtility script after unzipping the
- # product archive file on IBM i. However, this step is only for administrative
- # installations. Do not use this command for private user installations.
- # The administrator must have *ALLOBJ and *SECADM special authority to run this
- # script.
- #
- #
- usage() {
- echo ""
- echo "Usage: _iPostInstallUtility [options]"
- echo ""
- echo "Options:"
- echo " --action [SETUPNATIVE | POSTINSTALLEXIT | POSTFPEXIT ]"
- echo " --installroot install_root"
- echo " --userroot user_root"
- echo ""
- echo "The --installroot option is required by the"
- echo "POSTINSTALLEXIT and POSTFPEXIT actions for"
- echo "InstallationManager type installs and is otherwise"
- echo "ignored."
- echo "The --userroot option is required by the"
- echo "POSTINSTALLEXIT action for InstallationManager type"
- echo "installs and is otherwise ignored."
- exit 1
- }
- set_wlp_install_dir() {
- CUR_DIR=`pwd`
- WLP_DIR=`dirname ${0}`/../../../../
- cd "${WLP_DIR}"
- WLP_INSTALL_DIR=`pwd`
- cd "${CUR_DIR}"
- }
- setInDefaultEnv() {
- echo "Setting $1=$2 in ${WLP_INSTALL_DIR}/etc/default.env."
- echo "# _iPostInstallUtility:" >> ${WLP_INSTALL_DIR}/etc/default.env
- echo "$1=$2" >> ${WLP_INSTALL_DIR}/etc/default.env
- }
- ##
- ## evalJavaPropsFile: Reads Java properties from file specified in $1,
- ## and for every property it replaces all "." with "_" in the property name,
- ## sets the resulting named script variable to the property value and exports
- ## the variable.
- evalJavaPropsFile()
- {
- if [ -f "$1" ]; then
- while read -r line; do
- case $line in
- \#*);;
- *=*)
- # Only accept alphanumeric variable names to avoid eval complexities.
- if var=`echo "$line" | sed -e 's/^\([a-zA-Z0-9_\.][a-zA-Z0-9_\.]*\)=.*/\1/'`; then
- var=`echo $var | sed -e 's/\./_/g'`
- value=\'`echo "$line" | sed -e 's/[^=]*=//' -e s/\'/\'\"\'\"\'/g`\'
- eval "$var=$value; export $var"
- fi
- esac
- done < "$1"
- fi
- }
- ######################################################################
- # post_fp_exit: Restore native objects after applying fixpacks
- ######################################################################
- post_fp_exit() {
- echo "Executing post_fp_exit"
- #Load the location of the WAS_PRODUCT_LIB, as setup_native determines it dynamically
- . ${WLP_INSTALL_DIR}/etc/default.env
- PROD_LIB=$WAS_PRODUCT_LIB
- echo "WLP install directory is ${WLP_INSTALL_DIR}"
- echo "Product library is ${PROD_LIB}"
- # Determine objects to restore
- PROD_PGMS=$(ls ${WLP_INSTALL_DIR}/lib/native/os400/pgms)
- PROD_SRVPGMS=$(ls ${WLP_INSTALL_DIR}/lib/native/os400/srvpgms)
- ALL_PROD_PRODUCT_PGMS=$(ls ${WLP_INSTALL_DIR}/lib/native/os400/product/pgms)
- PROD_PRODUCT_PGMS=""
- for PGM1 in $ALL_PROD_PRODUCT_PGMS
- do
- case "${PGM1}" in
- 'qwas01mx') if [ ${PRODUCT_EDITION} = "EXPRESS" ] && [ ${IS_IM_INSTALL} ]; then
- PROD_PRODUCT_PGMS="${PROD_PRODUCT_PGMS} ${PGM1}"
- fi
- ;;
- 'qwas02mx') if [ ${PRODUCT_EDITION} = "BASE" ] && [ ${IS_IM_INSTALL} ]; then
- PROD_PRODUCT_PGMS="${PROD_PRODUCT_PGMS} ${PGM1}"
- fi
- ;;
- 'qwas03mx') if [ ${PRODUCT_EDITION} = "ND" ] && [ ${IS_IM_INSTALL} ]; then
- PROD_PRODUCT_PGMS="${PROD_PRODUCT_PGMS} ${PGM1}"
- fi
- ;;
- 'qwas05mx') if [ ${PRODUCT_EDITION} = "LIBERTY_CORE" ] && [ ${IS_IM_INSTALL} ]; then
- if [ -e /QSYS.LIB/${SHR_PROD_LIB}.LIB/QWAS05M.PRDLOD ]; then
- PROD_PRODUCT_PGMS="${PROD_PRODUCT_PGMS} ${PGM1}"
- fi
- fi
- ;;
- *) PROD_PRODUCT_PGMS="${PROD_PRODUCT_PGMS} ${PGM1}"
- ;;
- esac
- done
- # Create temporary save file
- system "QSYS/CRTSAVF FILE(QGPL/${TMP_SF})"
- # Restore program objects - these go to the product library for the install
- for PGM in ${PROD_PGMS} ; do
- echo Processing ${WLP_INSTALL_DIR}/lib/native/os400/pgms/$PGM ...
- system "QSYS/CPYFRMSTMF FROMSTMF('${WLP_INSTALL_DIR}/lib/native/os400/pgms/${PGM}') TOMBR('/QSYS.LIB/QGPL.LIB/${TMP_SF}.FILE') MBROPT(*REPLACE)"
- system "QSYS/RSTOBJ OBJ(*ALL) SAVLIB(${SAV_LIB}) DEV(*SAVF) OBJTYPE(*ALL) SAVF(QGPL/${TMP_SF}) RSTLIB(${PROD_LIB}) ${V6R1FRC}"
- done
- # Restore shared product program objects - these go to the shared product library for the install
- for PRDPGM in ${PROD_PRODUCT_PGMS} ; do
- echo Processing ${WLP_INSTALL_DIR}/lib/native/os400/product/pgms/$PRDPGM ...
- system "QSYS/CPYFRMSTMF FROMSTMF('${WLP_INSTALL_DIR}/lib/native/os400/product/pgms/${PRDPGM}') TOMBR('/QSYS.LIB/QGPL.LIB/${TMP_SF}.FILE') MBROPT(*REPLACE)"
- system "QSYS/RSTOBJ OBJ(*ALL) SAVLIB(${SAV_LIB}) DEV(*SAVF) OBJTYPE(*ALL) SAVF(QGPL/${TMP_SF}) RSTLIB(${SHR_PROD_LIB}) ${V6R1FRC}"
- done
- # Restore service program objects - these go to the product library for the install
- for SRVPGM in ${PROD_SRVPGMS} ; do
- echo Processing ${WLP_INSTALL_DIR}/lib/native/os400/srvpgms/$SRVPGM ...
- system "QSYS/CPYFRMSTMF FROMSTMF('${WLP_INSTALL_DIR}/lib/native/os400/srvpgms/${SRVPGM}') TOMBR('/QSYS.LIB/QGPL.LIB/${TMP_SF}.FILE') MBROPT(*REPLACE)"
- system "QSYS/RSTOBJ OBJ(*ALL) SAVLIB(${SAV_LIB}) DEV(*SAVF) OBJTYPE(*ALL) SAVF(QGPL/${TMP_SF}) RSTLIB(${PROD_LIB}) ${V6R1FRC}"
- done
- # Delete temporary save file
- system "QSYS/DLTF FILE(QGPL/${TMP_SF})"
- # Update the *PGM and *SRVPGM to be bound to product library for this install
- # This must be done after all *PGMs and *SRVPGMs restored to avoid dependency problems
- for SRVPGM in ${PROD_SRVPGMS} ; do
- echo Processing ${WLP_INSTALL_DIR}/lib/native/os400/srvpgms/$SRVPGM ...
- system "QSYS/UPDSRVPGM SRVPGM(${PROD_LIB}/${SRVPGM}) MODULE(*NONE) SRVPGMLIB(${PROD_LIB})"
- done
- for PGM in ${PROD_PGMS} ; do
- echo Processing ${WLP_INSTALL_DIR}/lib/native/os400/pgms/$PGM ...
- system "QSYS/UPDPGM PGM(${PROD_LIB}/${PGM}) MODULE(*NONE) SRVPGMLIB(${PROD_LIB})"
- done
- # Verify existence of objects restored
- for PGM in ${PROD_PGMS} ; do
- if [ ! -e /QSYS.LIB/${PROD_LIB}.LIB/${PGM}.PGM ]; then
- echo "Error: ${PROD_LIB}/${PGM} does not exist."
- ERR_CHK=1
- fi
- done
- for SRVPGM in ${PROD_SRVPGMS} ; do
- if [ ! -e /QSYS.LIB/${PROD_LIB}.LIB/${SRVPGM}.SRVPGM ]; then
- echo "Error: ${PROD_LIB}/${SRVPGM} does not exist."
- ERR_CHK=1
- fi
- done
- # Set ownership and authorities on install dir
- if [ ${IS_IM_INSTALL} ]; then
- chown -R QSYS ${INSTALL_ROOT}
- else
- chown -R QSYS ${WLP_INSTALL_DIR}
- chmod -R o=rx ${WLP_INSTALL_DIR}
- fi
- }
- ######################################################################
- # setup_native: Restore native objects after installing
- ######################################################################
- setup_native() {
- echo "Executing setup_native"
- SHR_PROD_LIB=QWAS9
- CREATED_SHR_PROD_LIB=0
- TMP_SF=QTMPWASSF
- SAV_LIB=QWAS9
- V6R1FRC="FRCOBJCVN(*YES *ALL)"
- WAS_PRODUCT_LIB=
- # Create underlying product library for stuff common to all installs
- if [ -e /QSYS.LIB/${SHR_PROD_LIB}.LIB ]; then
- CREATED_SHR_PROD_LIB=1
- echo "Shared Product library, ${SHR_PROD_LIB}, already exists"
- else
- system "QSYS/CRTLIB LIB(${SHR_PROD_LIB}) AUT(*USE)"
- ERR_CHK=$?
- if [ ${ERR_CHK} -ne 0 ]; then
- echo "Error: Failed to create library ${SHR_PROD_LIB}"
- exit 1
- fi
- system "CHGOBJOWN OBJ(${SHR_PROD_LIB}) OBJTYPE(*LIB) NEWOWN(QSYS) CUROWNAUT(*REVOKE)"
- fi
- # Determine the name of the PROD_LIB to use for this install
-
- ALPHABET="A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
- PROD_LIB=${SHR_PROD_LIB}A
- for letter in $ALPHABET
- do
- if [ -e /QSYS.LIB/${PROD_LIB}.LIB ]; then
- PROD_LIB=${SHR_PROD_LIB}${letter}
- fi
- done
- # Create product library for this install
- if [ -e /QSYS.LIB/${PROD_LIB}.LIB ]; then
- echo "Product library, ${PROD_LIB}, already exists"
- else
- system "QSYS/CRTLIB LIB(${PROD_LIB}) AUT(*USE)"
- ERR_CHK=$?
- if [ ${ERR_CHK} -ne 0 ]; then
- echo "Error: Failed to create library ${PROD_LIB}"
- exit 1
- fi
- system "CHGOBJOWN OBJ(${PROD_LIB}) OBJTYPE(*LIB) NEWOWN(QSYS) CUROWNAUT(*REVOKE)"
- fi
- # Write the library info to the properties file
- if [ -e ${WLP_INSTALL_DIR}/etc/default.env ]; then
- rm -rf ${WLP_INSTALL_DIR}/etc/default.env
- else
- if [ ! -e ${WLP_INSTALL_DIR}/etc ]; then
- mkdir -p ${WLP_INSTALL_DIR}/etc
- fi
- fi
- touch -C 819 ${WLP_INSTALL_DIR}/etc/default.env
- chown QSYS ${WLP_INSTALL_DIR}/etc/default.env
- echo "############# Do not alter or edit this file! #############" >> ${WLP_INSTALL_DIR}/etc/default.env
- setInDefaultEnv WAS_SHARED_LIB "${SHR_PROD_LIB}"
- setInDefaultEnv WAS_PRODUCT_LIB "${PROD_LIB}"
- setInDefaultEnv WAS_PRODUCT_LIB_PATH "/QSYS.LIB/${PROD_LIB}.LIB"
- # Determine objects to restore
- PROD_PGMS=$(ls ${WLP_INSTALL_DIR}/lib/native/os400/pgms)
- PROD_SRVPGMS=$(ls ${WLP_INSTALL_DIR}/lib/native/os400/srvpgms)
- ALL_PROD_PRODUCT=$(ls ${WLP_INSTALL_DIR}/lib/native/os400/product)
- ALL_PROD_PRODUCT_PGMS=$(ls ${WLP_INSTALL_DIR}/lib/native/os400/product/pgms)
- PROD_PRODUCT_PGMS=""
- PROD_PRODUCT=""
- for PGM1 in $ALL_PROD_PRODUCT_PGMS
- do
- case "${PGM1}" in
- 'qwas01mx') if [ ${PRODUCT_EDITION} = "EXPRESS" ] && [ ${IS_IM_INSTALL} ]; then
- PROD_PRODUCT_PGMS="${PROD_PRODUCT_PGMS} ${PGM1}"
- fi
- ;;
- 'qwas02mx') if [ ${PRODUCT_EDITION} = "BASE" ] && [ ${IS_IM_INSTALL} ]; then
- PROD_PRODUCT_PGMS="${PROD_PRODUCT_PGMS} ${PGM1}"
- fi
- ;;
- 'qwas03mx') if [ ${PRODUCT_EDITION} = "ND" ] && [ ${IS_IM_INSTALL} ]; then
- PROD_PRODUCT_PGMS="${PROD_PRODUCT_PGMS} ${PGM1}"
- fi
- ;;
- 'qwas05mx') if [ ${PRODUCT_EDITION} = "LIBERTY_CORE" ] && [ ${IS_IM_INSTALL} ]; then
- if [ ${CREATED_SHR_PROD_LIB} -eq 0 ]; then
- PROD_PRODUCT_PGMS="${PROD_PRODUCT_PGMS} ${PGM1}"
- fi
- fi
- ;;
- *) PROD_PRODUCT_PGMS="${PROD_PRODUCT_PGMS} ${PGM1}"
- ;;
- esac
- done
- for PGM2 in $ALL_PROD_PRODUCT
- do
- case "${PGM2}" in
- 'qwas01') if [ ${PRODUCT_EDITION} = "EXPRESS" ] && [ ${IS_IM_INSTALL} ]; then
- PROD_PRODUCT="${PROD_PRODUCT} ${PGM2}"
- fi
- ;;
- 'qwas02') if [ ${PRODUCT_EDITION} = "BASE" ] && [ ${IS_IM_INSTALL} ]; then
- PROD_PRODUCT="${PROD_PRODUCT} ${PGM2}"
- fi
- ;;
- 'qwas03') if [ ${PRODUCT_EDITION} = "ND" ] && [ ${IS_IM_INSTALL} ]; then
- PROD_PRODUCT="${PROD_PRODUCT} ${PGM2}"
- fi
- ;;
- 'qwas05') if [ ${PRODUCT_EDITION} = "LIBERTY_CORE" ] && [ ${IS_IM_INSTALL} ]; then
- if [ ${CREATED_SHR_PROD_LIB} -eq 0 ]; then
- PROD_PRODUCT="${PROD_PRODUCT} ${PGM2}"
- fi
- fi
- ;;
- 'pgms')
- ;;
- *) PROD_PRODUCT="${PROD_PRODUCT} ${PGM2}"
- ;;
- esac
- done
- # Create temporary save file
- system "QSYS/CRTSAVF FILE(QGPL/${TMP_SF})"
- # Restore program objects - these go to the product library for the install
- for PGM in ${PROD_PGMS} ; do
- echo Processing ${WLP_INSTALL_DIR}/lib/native/os400/pgms/$PGM ...
- system "QSYS/CPYFRMSTMF FROMSTMF('${WLP_INSTALL_DIR}/lib/native/os400/pgms/${PGM}') TOMBR('/QSYS.LIB/QGPL.LIB/${TMP_SF}.FILE') MBROPT(*REPLACE)"
- system "QSYS/RSTOBJ OBJ(*ALL) SAVLIB(${SAV_LIB}) DEV(*SAVF) OBJTYPE(*ALL) SAVF(QGPL/${TMP_SF}) RSTLIB(${PROD_LIB}) ${V6R1FRC}"
- done
- # Restore shared product program objects - these go to the shared product library for the install
- for PRDPGM in ${PROD_PRODUCT_PGMS} ; do
- echo Processing ${WLP_INSTALL_DIR}/lib/native/os400/product/pgms/$PRDPGM ...
- system "QSYS/CPYFRMSTMF FROMSTMF('${WLP_INSTALL_DIR}/lib/native/os400/product/pgms/${PRDPGM}') TOMBR('/QSYS.LIB/QGPL.LIB/${TMP_SF}.FILE') MBROPT(*REPLACE)"
- system "QSYS/RSTOBJ OBJ(*ALL) SAVLIB(${SAV_LIB}) DEV(*SAVF) OBJTYPE(*ALL) SAVF(QGPL/${TMP_SF}) RSTLIB(${SHR_PROD_LIB}) ${V6R1FRC}"
- done
- # Restore service program objects - these go to the product library for the install
- for SRVPGM in ${PROD_SRVPGMS} ; do
- echo Processing ${WLP_INSTALL_DIR}/lib/native/os400/srvpgms/$SRVPGM ...
- system "QSYS/CPYFRMSTMF FROMSTMF('${WLP_INSTALL_DIR}/lib/native/os400/srvpgms/${SRVPGM}') TOMBR('/QSYS.LIB/QGPL.LIB/${TMP_SF}.FILE') MBROPT(*REPLACE)"
- system "QSYS/RSTOBJ OBJ(*ALL) SAVLIB(${SAV_LIB}) DEV(*SAVF) OBJTYPE(*ALL) SAVF(QGPL/${TMP_SF}) RSTLIB(${PROD_LIB}) ${V6R1FRC}"
- done
- # Restore product def/loads and message file objects - these go to the WAS shared common product library
- for PRODPART in ${PROD_PRODUCT} ; do
- # Do not restore Product Loads if they already exist (from another install). This will remove any PTFs applied for the product/option.
- if [ -e /QSYS.LIB/${SHR_PROD_LIB}.LIB/${PRODPART}M.PRDLOD ]; then
- echo "Skipping ${WLP_INSTALL_DIR}/lib/native/os400/product/${PRODPART}"
- else
- echo Processing ${WLP_INSTALL_DIR}/lib/native/os400/product/$PRODPART ...
- system "QSYS/CPYFRMSTMF FROMSTMF('${WLP_INSTALL_DIR}/lib/native/os400/product/${PRODPART}') TOMBR('/QSYS.LIB/QGPL.LIB/${TMP_SF}.FILE') MBROPT(*REPLACE)"
- system "QSYS/RSTOBJ OBJ(*ALL) SAVLIB(${SAV_LIB}) DEV(*SAVF) OBJTYPE(*ALL) SAVF(QGPL/${TMP_SF}) RSTLIB(${SHR_PROD_LIB}) ${V6R1FRC}"
- fi
- done
- # Delete temporary save file
- system "QSYS/DLTF FILE(QGPL/${TMP_SF})"
- # Update the *PGM and *SRVPGM to be bound to product library for this install
- # This must be done after all *PGMs and *SRVPGMs restored to avoid dependency problems
- for SRVPGM in ${PROD_SRVPGMS} ; do
- echo Processing ${WLP_INSTALL_DIR}/lib/native/os400/srvpgms/$SRVPGM ...
- system "QSYS/UPDSRVPGM SRVPGM(${PROD_LIB}/${SRVPGM}) MODULE(*NONE) SRVPGMLIB(${PROD_LIB})"
- done
- for PGM in ${PROD_PGMS} ; do
- echo Processing ${WLP_INSTALL_DIR}/lib/native/os400/pgms/$PGM ...
- system "QSYS/UPDPGM PGM(${PROD_LIB}/${PGM}) MODULE(*NONE) SRVPGMLIB(${PROD_LIB})"
- done
- # Verify existence of objects restored
- for PGM in ${PROD_PGMS} ; do
- if [ ! -e /QSYS.LIB/${PROD_LIB}.LIB/${PGM}.PGM ]; then
- echo "Error: ${PROD_LIB}/${PGM} does not exist."
- ERR_CHK=1
- fi
- done
- for SRVPGM in ${PROD_SRVPGMS} ; do
- if [ ! -e /QSYS.LIB/${PROD_LIB}.LIB/${SRVPGM}.SRVPGM ]; then
- echo "Error: ${PROD_LIB}/${SRVPGM} does not exist."
- ERR_CHK=1
- fi
- done
- if [ ${ERR_CHK} -eq 1 ]; then
- if [ ${ACTION} = "SETUPNATIVE" ]; then
- exit 1
- fi
- fi
- }
- ######################################################################
- #post_install_exit: Create native objects and set authorities
- ######################################################################
- post_install_exit() {
- echo "Executing post_install_exit"
- # Create the user directory
- if [ ${IS_IM_INSTALL} ]; then
- if [ ! -e ${USER_ROOT} ]; then
- mkdir -p ${USER_ROOT}
- chown QSYS ${USER_ROOT}
- chmod o=rx ${USER_ROOT}
- fi
- WLPUSRDIR=${USER_ROOT}/wlp/usr
- WLPOUTPUTDIR=${USER_ROOT}/wlp/output/servers
- if [ ! -e ${USER_ROOT}/wlp ]; then
- mkdir ${USER_ROOT}/wlp
- fi
- if [ ! -e ${WLPUSRDIR} ]; then
- if [ -e ${WLP_INSTALL_DIR}/usr ]; then
- cp -R ${WLP_INSTALL_DIR}/usr ${USER_ROOT}/wlp
- else mkdir ${WLPUSRDIR}
- fi
- fi
- if [ ! -e ${WLPOUTPUTDIR} ]; then
- mkdir -p ${WLPOUTPUTDIR}
- fi
- chown -R QSYS ${USER_ROOT}/wlp
- chmod -R 755 ${USER_ROOT}/wlp
- fi
- #Load the location of the WAS_PRODUCT_LIB, as setup_native determines it dynamically
- . ${WLP_INSTALL_DIR}/etc/default.env
- PROD_LIB=$WAS_PRODUCT_LIB
- echo "WLP install directory is ${WLP_INSTALL_DIR}"
- echo "Product library is ${PROD_LIB}"
- # Register QEJBSVR with security function
- # Allows server to run as QEJBSVR
- system "QSYS/CALL PGM(${PROD_LIB}/QWAS00)"
- # Add private authorities for product library parts
- system "QSYS/GRTOBJAUT OBJ(${PROD_LIB}/QWLPSEC) OBJTYPE(*SRVPGM) USER(QEJBSVR) AUT(*USE)"
- system "QSYS/GRTOBJAUT OBJ(${PROD_LIB}/QWLPCMN) OBJTYPE(*PGM) USER(QEJBSVR) AUT(*USE)"
- system "QSYS/GRTOBJAUT OBJ(${PROD_LIB}/QWLPSTRSVR) OBJTYPE(*PGM) USER(QEJBSVR) AUT(*USE)"
- system "QSYS/GRTOBJAUT OBJ(${PROD_LIB}/QWLPSTRSVR) OBJTYPE(*PGM) USER(*PUBLIC) AUT(*EXCLUDE)"
- # Create jobd, jobq, sbsd, etc.
- if [ ! -e /QSYS.LIB/${SHR_PROD_LIB}.LIB/QWAS9.CLS ]; then
- system "QSYS/CRTCLS CLS(${SHR_PROD_LIB}/QWAS9) RUNPTY(20) TIMESLICE(2000) TEXT('WebSphere Application Server class')"
- fi
- system "QSYS/CHGOBJOWN OBJ(${SHR_PROD_LIB}/QWAS9) OBJTYPE(*CLS) NEWOWN(QSYS) CUROWNAUT(*REVOKE)"
- if [ ! -e /QSYS.LIB/${SHR_PROD_LIB}.LIB/QWASJOBQ.JOBQ ]; then
- system "QSYS/CRTJOBQ JOBQ(${SHR_PROD_LIB}/QWASJOBQ) TEXT('WebSphere Application Server job queue') OPRCTL(*YES)"
- fi
- system "QSYS/CHGOBJOWN OBJ(${SHR_PROD_LIB}/QWASJOBQ) OBJTYPE(*JOBQ) NEWOWN(QSYS) CUROWNAUT(*REVOKE)"
- if [ ! -e /QSYS.LIB/${SHR_PROD_LIB}.LIB/QWASOUTQ.OUTQ ]; then
- system "QSYS/CRTOUTQ OUTQ(${SHR_PROD_LIB}/QWASOUTQ) TEXT('WebSphere Application Server output queue')"
- fi
- system "QSYS/CHGOBJOWN OBJ(${SHR_PROD_LIB}/QWASOUTQ) OBJTYPE(*OUTQ) NEWOWN(QSYS) CUROWNAUT(*REVOKE)"
- if [ ! -e /QSYS.LIB/${SHR_PROD_LIB}.LIB/QWASJOBD.JOBD ]; then
- system "QSYS/CRTJOBD JOBD(${SHR_PROD_LIB}/QWASJOBD) JOBQ(${SHR_PROD_LIB}/QWASJOBQ) OUTQ(${SHR_PROD_LIB}/QWASOUTQ) TEXT('WebSphere Application Server job description') INLLIBL(*SYSVAL) LOG(4 0 *SECLVL) JOBMSGQFL(*WRAP) ALWMLTTHD(*YES)"
- fi
- system "QSYS/CHGOBJOWN OBJ(${SHR_PROD_LIB}/QWASJOBD) OBJTYPE(*JOBD) NEWOWN(QSYS) CUROWNAUT(*REVOKE)"
- if [ ! -e /QSYS.LIB/${SHR_PROD_LIB}.LIB/QWAS9.SBSD ]; then
- system "QSYS/CRTSBSD SBSD(${SHR_PROD_LIB}/QWAS9) POOLS((1 *BASE)) MAXJOBS(*NOMAX) TEXT('WebSphere Application Server subsystem description')"
- system "QSYS/ADDRTGE SBSD(${SHR_PROD_LIB}/QWAS9) SEQNBR(9999) CMPVAL(*ANY) PGM(QSYS/QCMD)"
- system "QSYS/ADDJOBQE SBSD(${SHR_PROD_LIB}/QWAS9) JOBQ(${SHR_PROD_LIB}/QWASJOBQ) MAXACT(*NOMAX) SEQNBR(9999)"
- fi
- system "QSYS/CHGOBJOWN OBJ(${SHR_PROD_LIB}/QWAS9) OBJTYPE(*SBSD) NEWOWN(QSYS) CUROWNAUT(*REVOKE)"
- # Add private auths for QEJBSVR
- system "QSYS/GRTOBJAUT OBJ(${SHR_PROD_LIB}/QWAS9) OBJTYPE(*SBSD) USER(QEJBSVR) AUT(*OBJMGT *OBJOPR *READ *EXECUTE)"
- system "QSYS/GRTOBJAUT OBJ(${SHR_PROD_LIB}/QWASJOBD) OBJTYPE(*JOBD) USER(QEJBSVR) AUT(*OBJMGT *OBJOPR *READ *EXECUTE)"
- system "QSYS/GRTOBJAUT OBJ(${SHR_PROD_LIB}/QWASJOBQ) OBJTYPE(*JOBQ) USER(QEJBSVR) AUT(*USE)"
- system "QSYS/GRTOBJAUT OBJ(${SHR_PROD_LIB}/QWAS9) OBJTYPE(*CLS) USER(QEJBSVR) AUT(*USE)"
- # Add service table entries
- system "QSYS/ADDSRVTBLE SERVICE('was9-admin-ssl') PORT(9043) PROTOCOL('tcp') TEXT('Administrative console SSL port')"
- system "QSYS/ADDSRVTBLE SERVICE('was9-inthttp') PORT(9080) PROTOCOL('tcp') TEXT('Internal HTTP port')"
- # Set ownership and authorities on install dir
- if [ ${IS_IM_INSTALL} ]; then
- chown -R QSYS ${INSTALL_ROOT}
- else
- chown -R QSYS ${WLP_INSTALL_DIR}
- chmod -R o=rx ${WLP_INSTALL_DIR}
- fi
- #Set WLP_DEFAULT_JAVA_HOME, WLP_DEFAULT_USER_DIR and WLP_DEFAULT_OUTPUT_DIR in default.env
- #and set permissions for QEJBSVR
- WLP_DEFAULT_JAVA_HOME=
- WLP_DEFAULT_USER_DIR=
- WLP_DEFAULT_OUTPUT_DIR=
- #Source default.env if it exists, otherwise create it
- if [ ! -e ${WLP_INSTALL_DIR}/etc/default.env ]; then
- if [ ! -e ${WLP_INSTALL_DIR}/etc ]; then
- mkdir -p ${WLP_INSTALL_DIR}/etc
- fi
- touch -C 819 ${WLP_INSTALL_DIR}/etc/default.env
- chown QSYS ${WLP_INSTALL_DIR}/etc/default.env
- else
- . ${WLP_INSTALL_DIR}/etc/default.env
- fi
- if [ ${WLP_DEFAULT_JAVA_HOME} ]; then
- if [ -e ${WLP_DEFAULT_JAVA_HOME} ]; then
- SET_VAR_IN_SERVER_ENV=
- fi
- else
- setInDefaultEnv WLP_DEFAULT_JAVA_HOME $JAVA_LOCATION
- fi
- if [ ${WLPUSRDIR} ]; then
- if [ ${WLP_DEFAULT_USER_DIR} ]; then
- if [ -e ${WLPUSRDIR} ]; then
- if [ ! ${#WLPUSRDIR} = ${#WLP_DEFAULT_USER_DIR} ] || [ ! `echo ${WLP_DEFAULT_USER_DIR} | grep -i "${WLPUSRDIR}"` ]; then
- setInDefaultEnv WLP_DEFAULT_USER_DIR ${WLPUSRDIR}
- fi
- else
- echo "Error: Directory ${WLPUSRDIR} does not exist."
- ERR_CHK=1
- fi
- else
- if [ -e ${WLPUSRDIR} ]; then
- setInDefaultEnv WLP_DEFAULT_USER_DIR ${WLPUSRDIR}
- else
- echo "Error: Directory ${WLPUSRDIR} does not exist."
- ERR_CHK=1
- fi
- fi
- fi
- if [ ${WLPOUTPUTDIR} ]; then
- if [ ${WLP_DEFAULT_OUTPUT_DIR} ]; then
- if [ -e ${WLPOUTPUTDIR} ]; then
- if [ ! ${#WLP_DEFAULT_OUTPUT_DIR} = ${#WLPOUTPUTDIR} ] || [ ! `echo ${WLP_DEFAULT_OUTPUT_DIR} | grep -i "${WLPOUTPUTDIR}"` ]; then
- setInDefaultEnv WLP_DEFAULT_OUTPUT_DIR ${WLPOUTPUTDIR}
- fi
- else
- echo "Error: Directory ${WLPOUTPUTDIR} does not exist."
- ERR_CHK=1
- fi
- else
- if [ -e ${WLPOUTPUTDIR} ]; then
- setInDefaultEnv WLP_DEFAULT_OUTPUT_DIR ${WLPOUTPUTDIR}
- else
- echo "Error: Directory ${WLPOUTPUTDIR} does not exist."
- ERR_CHK=1
- fi
- fi
- fi
- ${WLP_INSTALL_DIR}/lib/native/os400/bin/_iAuthUtility --rolename server --userprofilename QEJBSVR
- if [ ${ERR_CHK} -eq 1 ]; then
- if [ ${ACTION} = "POSTINSTALLEXIT" ]; then
- exit 1
- fi
- fi
- }
- ######################################################################
- #do_all_install: Execute all install actions
- ######################################################################
- do_all_install() {
- echo "Executing $ACTION"
- setup_native
- post_install_exit
- }
- ######################################################################
- #main
- ######################################################################
- if [ "`uname`" != "OS400" ]; then
- exit 1
- fi
- ACTION=DOALL
- INSTALL_ROOT=
- USER_ROOT=
- ERR_CHK=0
- while [ $# -gt 0 ]; do
- case $1 in
- '--action') if [ $# -gt 1 ]; then
- ACTION=$2;shift
- fi
- ;;
- '--installroot') if [ $# -gt 1 ]; then
- INSTALL_ROOT=$2;shift
- fi
- ;;
- '--userroot') if [ $# -gt 1 ]; then
- USER_ROOT=$2;shift
- fi
- ;;
- *) usage
- ;;
- esac
- shift
- done
- set_wlp_install_dir
- echo "WebSphere liberty profile install root is ${WLP_INSTALL_DIR}"
- SHR_PROD_LIB=QWAS9
- TMP_SF=QTMPWASSF
- SAV_LIB=QWAS9
- V6R1FRC="FRCOBJCVN(*YES *ALL)"
- JAVA_LOCATION=/QOpenSys/QIBM/ProdData/JavaVM/jdk80/32bit
- evalJavaPropsFile ${WLP_INSTALL_DIR}/lib/versions/WebSphereApplicationServer.properties
- echo "Product edition is "${com_ibm_websphere_productEdition}
- echo "Installation type is "${com_ibm_websphere_productInstallType}
- IS_IM_INSTALL=
- if [ ${com_ibm_websphere_productInstallType} = "InstallationManager" ]; then
- IS_IM_INSTALL=true
- fi
- PRODUCT_EDITION=${com_ibm_websphere_productEdition}
- umask 022
- case "$ACTION" in
- 'DOALL') do_all_install
- ;;
- 'SETUPNATIVE') setup_native
- ;;
- 'POSTINSTALLEXIT')
- if [ ${IS_IM_INSTALL} ]; then
- if [ ! ${INSTALL_ROOT} ]; then
- usage
- fi
- if [ ! ${USER_ROOT} ]; then
- usage
- fi
- fi
- post_install_exit
- ;;
- 'POSTFPEXIT')
- if [ ${IS_IM_INSTALL} ]; then
- if [ ! ${INSTALL_ROOT} ]; then
- usage
- fi
- fi
- post_fp_exit
- ;;
- *)
- usage
- ;;
- esac
- exit ${ERR_CHK}
|