#!/bin/bash # BEGIN COPYRIGHT BLOCK # (C) 2007 Red Hat, Inc. # All rights reserved. # END COPYRIGHT BLOCK # Always switch into the base directory three levels # above this shell script prior to executing it so # that all of its output is written to this directory cd `dirname $0`/../../.. # Retrieve the name of this base directory PKI_PWD=`pwd` # Establish the release directory PKI_RELEASE_ROOT="${PKI_PWD}/release" # Establish the name of the machine PKI_HOSTNAME=`hostname` # Set pre-defined variables PKI_DIR="pki" PKI_SRC_DIR="base" ROOT_UID=0 # This script may ONLY be run on Linux! PKI_OS=`uname` if [ "${PKI_OS}" != "Linux" ]; then printf "The '$0' script is ONLY executable\n" printf "on a 'Linux' machine!\n" exit 255 fi # Set Linux variables PKI_FLAVOR="linux" PKI_UI_DIR="${PKI_DIR}/${PKI_FLAVOR}" PKI_BUILD_SCRIPT_DIR="${PKI_PWD}/${PKI_UI_DIR}" PKI_BUILD_SCRIPT="build_linux" # Set packaging variables RPM_EXE="/bin/rpm" RPM_EXE_OPTIONS="-Uvh --force" RPM_DIR="dist/rpmpkg/RPMS/*/" RPM_EXT="-[0-9]*.rpm" # Set sudo variables PKI_SUDO="/usr/bin/sudo" PKI_SUDOERS="/etc/sudoers" # Set user identity variables PKI_EUID=`/usr/bin/id -u` PKI_UID=`/usr/bin/id -ur` PKI_USERNAME=`/usr/bin/id -un` # Make sure that this script is NOT being run as root! if [ ${PKI_UID} -eq ${ROOT_UID} ] || [ ${PKI_EUID} -eq ${ROOT_UID} ]; then printf "The '$0' script may NOT be run as root!\n" exit 255 fi # Check for the presence of the 'sudo' executable if [ ! -x "${PKI_SUDO}" ]; then printf "The '$0' script requires the '${PKI_SUDO}' executable\n" printf "to be available on '${PKI_HOSTNAME}'!\n" exit 255 fi # Check for the presence of the 'sudoers' file if [ ! -e "${PKI_SUDOERS}" ]; then printf "The '$0' script requires the '${PKI_SUDOERS}' file\n" printf "to be available on '${PKI_HOSTNAME}'!\n" exit 255 fi # Check for the presence of the required sudoers command PKI_SUDOERS_COMMAND="(root) NOPASSWD: ${RPM_EXE}" PKI_SUDOERS_LINE="${PKI_USERNAME} ALL = NOPASSWD: ${RPM_EXE}" printf "Checking if '${PKI_USERNAME}' has the appropriate '${PKI_SUDO}' permissions . . .\n" printf "[NOTE: A password prompt may appear requiring ${PKI_USERNAME}'s password.]\n" `${PKI_SUDO} -l | grep "${PKI_SUDOERS_COMMAND}" > /dev/null 2>&1` if [ $? -ne 0 ]; then printf "The '$0' script requires that the\n" printf "'${PKI_SUDOERS}' file MUST contain this line:\n\n" printf " '${PKI_SUDOERS_LINE}'\n\n" exit 255 fi # Establish release subdirectories PKI_RELEASE_DIR="${PKI_RELEASE_ROOT}/${PKI_DIR}/${PKI_SRC_DIR}" PKI_RELEASE_UI_DIR="${PKI_RELEASE_ROOT}/${PKI_UI_DIR}" # Establish common PKI package names OSUTIL=osutil${RPM_EXT} SYMKEY=symkey${RPM_EXT} PKI_NATIVE_TOOLS=pki-native-tools${RPM_EXT} PKI_UTIL=pki-util${RPM_EXT} PKI_UTIL_JAVADOC=pki-util-javadoc${RPM_EXT} PKI_SETUP=pki-setup${RPM_EXT} PKI_JAVA_TOOLS=pki-java-tools${RPM_EXT} PKI_JAVA_TOOLS_JAVADOC=pki-java-tools-javadoc${RPM_EXT} PKI_COMMON_UI=pki-common-ui${RPM_EXT} PKI_COMMON=pki-common${RPM_EXT} PKI_COMMON_JAVADOC=pki-common-javadoc${RPM_EXT} # Establish PKI subsystem package names PKI_CA_UI=pki-ca-ui${RPM_EXT} PKI_CA=pki-ca${RPM_EXT} # Establish optional PKI package names PKI_CONSOLE_UI=pki-console-ui${RPM_EXT} PKI_CONSOLE=pki-console${RPM_EXT} PKI_SILENT=pki-silent${RPM_EXT} # Always start with a new release root directory rm -rf ${PKI_RELEASE_ROOT} mkdir -p ${PKI_RELEASE_ROOT} # Build and install 'osutil' packages ${PKI_BUILD_SCRIPT_DIR}/osutil/${PKI_BUILD_SCRIPT} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/osutil/${RPM_DIR}/${OSUTIL} # Build and install 'symkey' packages ${PKI_BUILD_SCRIPT_DIR}/symkey/${PKI_BUILD_SCRIPT} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/symkey/${RPM_DIR}/${SYMKEY} # Build and install 'pki-native-tools' packages ${PKI_BUILD_SCRIPT_DIR}/native-tools/${PKI_BUILD_SCRIPT} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/native-tools/${RPM_DIR}/${PKI_NATIVE_TOOLS} # Build and install 'pki-util' packages ${PKI_BUILD_SCRIPT_DIR}/util/${PKI_BUILD_SCRIPT} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/util/${RPM_DIR}/${PKI_UTIL} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/util/${RPM_DIR}/${PKI_UTIL_JAVADOC} # Build and install 'pki-setup' packages ${PKI_BUILD_SCRIPT_DIR}/setup/${PKI_BUILD_SCRIPT} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/setup/${RPM_DIR}/${PKI_SETUP} # Build and install 'pki-java-tools' packages ${PKI_BUILD_SCRIPT_DIR}/java-tools/${PKI_BUILD_SCRIPT} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/java-tools/${RPM_DIR}/${PKI_JAVA_TOOLS} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/java-tools/${RPM_DIR}/${PKI_JAVA_TOOLS_JAVADOC} # Build and install 'pki-common-ui' packages ${PKI_BUILD_SCRIPT_DIR}/common-ui/${PKI_BUILD_SCRIPT} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_UI_DIR}/common-ui/${RPM_DIR}/${PKI_COMMON_UI} # Build and install 'pki-common' packages ${PKI_BUILD_SCRIPT_DIR}/common/${PKI_BUILD_SCRIPT} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/common/${RPM_DIR}/${PKI_COMMON} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/common/${RPM_DIR}/${PKI_COMMON_JAVADOC} # Build and install 'pki-ca-ui' packages ${PKI_BUILD_SCRIPT_DIR}/ca-ui/${PKI_BUILD_SCRIPT} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_UI_DIR}/ca-ui/${RPM_DIR}/${PKI_CA_UI} # Build and install 'pki-ca' packages ${PKI_BUILD_SCRIPT_DIR}/ca/${PKI_BUILD_SCRIPT} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/ca/${RPM_DIR}/${PKI_CA} # Build and install 'pki-console-ui' packages ${PKI_BUILD_SCRIPT_DIR}/console-ui/${PKI_BUILD_SCRIPT} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_UI_DIR}/console-ui/${RPM_DIR}/${PKI_CONSOLE_UI} # Build and install 'pki-console' packages ${PKI_BUILD_SCRIPT_DIR}/console/${PKI_BUILD_SCRIPT} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/console/${RPM_DIR}/${PKI_CONSOLE} # Build and install 'pki-silent' packages ${PKI_BUILD_SCRIPT_DIR}/silent/${PKI_BUILD_SCRIPT} ${PKI_SUDO} ${RPM_EXE} ${RPM_EXE_OPTIONS} ${PKI_RELEASE_DIR}/silent/${RPM_DIR}/${PKI_SILENT}