#!/bin/bash - this is a sourced file but this header helps vim # $HeadURL$ $LastChangedRevision$ init_rpm() { local ERRSTACK_REF="$1"; shift ade_inherit ROOTDIR || return $? local DIR # Sanity checks and derivations DIR=${ROOTDIR%/}/etc/yum.repos.d # Guts if [ -d $DIR ] && [ "X$(ls $DIR)" != X ]; then save_old_dir_contents "$ERRSTACK_REF" mv $DIR || return $? elif [ -d $DIR ]; then : elif [ -e $DIR ]; then ade_error "$ERRSTACK_REF" PAA_ERR_MISC "$DIR: exists but is not an empty directory" return $ADE_FAIL fi return $ADE_OK } access_rpm() { local ERRSTACK_REF="$1"; shift ade_inherit ROOTDIR THIS_HOST || return $? local SPECIFIED_REPO SPECIFIED_RELEASE SPECIFIED_PORT SPECIFIED_SECTIONS SPECIFIED_URL local LAYOUT EXPANDED_LAYOUT EXPANDED_URL # Argument processing [ $# = 5 ] || ade_internal "$ERRSTACK_REF" "access_rpm: usage error (arg count $#)" SPECIFIED_REPO=$1 SPECIFIED_RELEASE=$2 SPECIFIED_PORT=$3 SPECIFIED_SECTIONS="$4" # ignored SPECIFIED_URL=$5 # No args for the time being; everything inherited. ade_debug "$ERRSTACK_REF" 10 "access_rpm: SPECIFIED_REPO=$SPECIFIED_REPO, SPECIFIED_RELEASE=$SPECIFIED_RELEASE, SPECIFIED_PORT=$SPECIFIED_PORT, SPECIFIED_SECTIONS=$SPECIFIED_SECTIONS, SPECIFIED_URL=$SPECIFIED_URL" # Sanity checks and derivations detokenise "$ERRSTACK_REF" $SPECIFIED_URL EXPANDED_URL HOST=$THIS_HOST REPO=$SPECIFIED_REPO || return $? ade_write_sql "$ERRSTACK_REF" "select layout from releases where repo == '$REPO' and release == '$RELEASE';" LAYOUT || return $? detokenise "$ERRSTACK_REF" $LAYOUT EXPANDED_LAYOUT RELEASE=$SPECIFIED_RELEASE PORT=$SPECIFIED_PORT || return $? # Guts mkdir -p ${ROOTDIR%/}/etc/yum.repos.d if [ -f ${ROOTDIR%/}/etc/yum.repos.d/$SPECIFIED_REPO.repo ]; then write_test_file "$ERRSTACK_REF" ${ROOTDIR%/}/etc/yum.repos.d/$SPECIFIED_REPO.repo || return $? else write_test_dir "$ERRSTACK_REF" ${ROOTDIR%/}/etc/yum.repos.d fi { echo "[$SPECIFIED_REPO]" echo "name=$SPECIFIED_REPO" if [ "X$EXPANDED_LAYOUT" != "." ]; then echo "baseurl=${EXPANDED_URL%/}/${EXPANDED_LAYOUT#/}/" else echo "baseurl=${EXPANDED_URL%/}/" fi echo "enabled=1" echo "gpgcheck=0" } > ${ROOTDIR%/}/etc/yum.repos.d/$SPECIFIED_REPO.repo return $ADE_OK } unaccess_rpm() { local ERRSTACK_REF="$1"; shift ade_inherit ROOTDIR || return $? # Argument processing # No args for the time being; everything inherited. [ $# = 0 ] || ade_internal "$ERRSTACK_REF" "unaccess_rpm: usage error (arg count $#)" ade_inherit REPO ade_debug "$ERRSTACK_REF" 10 "access_rpm: REPO=$REPO" # Sanity checks and derivations # Guts rm -f ${ROOTDIR%/}/etc/yum.repos.d/$SPECIFIED_REPO.repo return $ADE_OK } analyse_rpm() { local ERRSTACK_REF="$1"; shift local SPECIFIED_FILE local NAME_REF ARCH_REF VERSION_REF # Process arguments [ $# = 4 ] || ade_internal "$ERRSTACK_REF" "analyse_rpm: usage error (arg count $#)" SPECIFIED_FILE=$1 NAME_REF=$2 ARCH_REF=$3 VERSION_REF=$4 ade_inherit --allow-empty $NAME_REF $ARCH_REF $VERSION_REF # Sanity checks and derivations ade_validate_command "$ERRSTACK_REF" rpm || return $? # Guts eval "$NAME_REF=\"\$(rpm -qp --qf='%{name}\n' $SPECIFIED_FILE 2>/dev/null)\"" eval "$ARCH_REF=\"\$(rpm -qp --qf='%{arch}\n' $SPECIFIED_FILE 2>/dev/null)\"" eval "$VERSION_REF=\"\$(rpm -qp --qf='%{version}-%{release}\n' $SPECIFIED_FILE 2>/dev/null)\"" for VAR in $NAME_REF $ARCH_REF $VERSION_REF; do eval "[ \"X\$$VAR\" != X ]" || { ade_error "$ERRSTACK_REF" PAA_ERR_MISC "$SPECIFIED_FILE: failed to collect some RPM info (is file an accessible RPM?)"; return $ADE_FAIL; } done return $ADE_OK } control_section_rpm() { local ERRSTACK_REF="$1"; shift local SPECIFIED_REPO SPECIFIED_RELEASE SPECIFIED_PORT SPECIFIED_SECTION # Process arguments [ $# = 4 ] || ade_internal "$ERRSTACK_REF" "control_section_rpm: usage error (arg count $#)" SPECIFIED_REPO=$1 SPECIFIED_RELEASE=$2 SPECIFIED_PORT=$3 SPECIFIED_SECTION=$4 return $ADE_OK } control_port_rpm() { local ERRSTACK_REF="$1"; shift local SPECIFIED_REPO SPECIFIED_RELEASE SPECIFIED_PORT local EXPANDED_LAYOUT LAYOUT # Process arguments [ $# = 3 ] || ade_internal "$ERRSTACK_REF" "control_port_rpm: usage error (arg count $#)" SPECIFIED_REPO=$1 SPECIFIED_RELEASE=$2 SPECIFIED_PORT=$3 # Sanity checks and derivations ade_write_sql "$ERRSTACK_REF" "select path from extendeds where repo == '$SPECIFIED_REPO';" REPOPATH || return $? ade_write_sql "$ERRSTACK_REF" "select layout from releases where repo == '$SPECIFIED_REPO' and release == '$SPECIFIED_RELEASE';" LAYOUT || return $? detokenise "$ERRSTACK_REF" $LAYOUT EXPANDED_LAYOUT RELEASE=$SPECIFIED_RELEASE PORT=$SPECIFIED_PORT || return $? # Try using createrepo ade_validate_command "$ERRSTACK_REF" createrepo RC=$? if [ $RC = $ADE_OK ]; then createrepo --quiet --simple-md-filenames --outputdir=$REPOPATH/$EXPANDED_LAYOUT $REPOPATH/$EXPANDED_LAYOUT 2>/dev/null return $ADE_OK fi ade_set_messaging_parameters "$ERRSTACK_REF" "stack=$ERRSTACK_REF" # Try using createrepo_c ade_validate_command "$ERRSTACK_REF" createrepo_c RC=$? if [ $RC = $ADE_OK ]; then createrepo_c --quiet --simple-md-filenames --outputdir=$REPOPATH/$EXPANDED_LAYOUT $REPOPATH/$EXPANDED_LAYOUT 2>/dev/null return $ADE_OK fi ade_set_messaging_parameters "$ERRSTACK_REF" "stack=$ERRSTACK_REF" # If both failed then fatal. ade_err_error "$ERRSTACK_REF" PAA_ERR_MISC "could not find createrepo or createrepo_c" return $ADE_FAIL } control_release_rpm() { local ERRSTACK_REF="$1"; shift local SPECIFIED_REPO SPECIFIED_RELEASE # Process arguments [ $# = 2 ] || ade_internal "$ERRSTACK_REF" "control_release_rpm: usage error (arg count $#)" SPECIFIED_REPO=$1 SPECIFIED_RELEASE=$2 return $ADE_OK } control_repo_rpm() { local ERRSTACK_REF="$1"; shift local SPECIFIED_REPO # Process arguments [ $# = 1 ] || ade_internal "$ERRSTACK_REF" "control_repo_rpm: usage error (arg count $#)" SPECIFIED_REPO=$1 return $ADE_OK } reload_apache_rpm() { local ERRSTACK_REF="$1"; shift ade_inherit ROOTDIR || return $? # Process arguments [ $# = 0 ] || ade_internal "$ERRSTACK_REF" "reload_apache_rpm: bad arg count ($#)" # Sanity checks and derivations # Guts if [ ! -x ${ROOTDIR%/}/sbin/service ]; then ade_error "$ERRSTACK_REF" PAA_ERR_MISC "${ROOTDIR%/}/sbin/service: not found" return $ADE_FAIL # SL6.3 says this elif ! OUTPUT=$(${ROOTDIR%/}/sbin/service httpd reload 2>&1); then ade_error "$ERRSTACK_REF" PAA_ERR_MISC "apache reload failed (output was: $OUTPUT)" return $ADE_FAIL elif [ "X$OUTPUT" != "XReloading httpd: " ]; then ade_warning "$ERRSTACK_REF" PAA_ERR_MISC "apache reload succeeded but did not produce expected output (output was: $OUTPUT)" fi return $ADE_OK }