diff options
author | Alfredo Tupone <tupone@gentoo.org> | 2008-11-16 16:00:40 +0000 |
---|---|---|
committer | Alfredo Tupone <tupone@gentoo.org> | 2008-11-16 16:00:40 +0000 |
commit | 6f58ea0a32db5850b792a2e305e20cd946b319fb (patch) | |
tree | 7d86c64e7f8e2ed8bfa2c82b8171bf454e66d3b4 | |
parent | Fixed inability to stop pmacctd, bug #234051 thank Patrick for report and fix. (diff) | |
download | historical-6f58ea0a32db5850b792a2e305e20cd946b319fb.tar.gz historical-6f58ea0a32db5850b792a2e305e20cd946b319fb.tar.bz2 historical-6f58ea0a32db5850b792a2e305e20cd946b319fb.zip |
Fix dialog not finding tty.
Package-Manager: portage-2.1.4.5
-rw-r--r-- | app-admin/zprod-manager/Manifest | 10 | ||||
-rw-r--r-- | app-admin/zprod-manager/files/0.3.3/zprod-manager | 385 |
2 files changed, 391 insertions, 4 deletions
diff --git a/app-admin/zprod-manager/Manifest b/app-admin/zprod-manager/Manifest index ce4f5da9b354..13493ac057fa 100644 --- a/app-admin/zprod-manager/Manifest +++ b/app-admin/zprod-manager/Manifest @@ -3,16 +3,18 @@ Hash: SHA1 AUX 0.3.1/zprod-manager 8424 RMD160 02261aec98cc4fb16254f052560b7622b4a857b2 SHA1 1ab27279f8b2b8abcba2340c986f38017bc36ccf SHA256 dc4f537b2c5e0c9135ae9594572d8b3200c8c468987f9a5e27688705fe3c7d40 AUX 0.3.2/zprod-manager 9436 RMD160 e26b6a87ce1993dd5e8c2044826e6a6e41dc3a28 SHA1 39892604587ac8a0db949fa97577705e57ff67bd SHA256 094cbb9981c13f6f2e00f061529a2acc32361a52c2588119534cff5a43ab2c0b +AUX 0.3.3/zprod-manager 9584 RMD160 47817e5983d1c07e30a93b2318725c32348fa015 SHA1 7cae6f9b2823a415fc071c4d80b07292e3ee9fc3 SHA256 89abc8be0018b5b545c1f7b83d20c1d9f44dc14a52207b5aa8e6d485c889bb35 AUX 0.3/zprod-manager 8339 RMD160 5e890d2dbe362a645acde90b036e0272cf4db3ea SHA1 2a3c9aa7019a714c19edc1e8b2c6896671216e0f SHA256 56a7ecbf588fe3588643bebda857f7c4e43cc6c89914ce55a18601646b46f1e9 EBUILD zprod-manager-0.3.1.ebuild 578 RMD160 e1048b8b60d5a2b363f0bfff78b5446c054f7bf3 SHA1 a488af2d2492ae8c467e12293ce5cacdfddaa537 SHA256 bfa3d3064836430900d35cc7cc2f08004901d7fabced7979e7621a1792b30cd7 EBUILD zprod-manager-0.3.2-r1.ebuild 533 RMD160 5a097da51364fc0463b4f94b5600bdb645108883 SHA1 0010342f4dbc33e95fe1921d32c1196ef6adbcc0 SHA256 9dda5bcbc734b419561a1639a72241ca14664eb5606310d2e6dac4d9686ed623 +EBUILD zprod-manager-0.3.3.ebuild 533 RMD160 0c43888290bab828b3f47e66d53771f125665bfc SHA1 535ab2067d748f858b0d72f944fa7255a406a86e SHA256 7319192f261a32fe6f248a9e18199f4be6d5abb26a4d8735d9c0c959855788c8 EBUILD zprod-manager-0.3.ebuild 549 RMD160 0a52d235cb922f23d6f8a46a443db0ca038971f9 SHA1 aaddbeed82ad51abccd8a2ae290ee2bff83e0819 SHA256 4e0407084fca792c2d494c7f107cb39425f3cebea99eec02013910ac3e261cbb -MISC ChangeLog 3825 RMD160 88fa5c94d0ad777a22da35968803c68375158f15 SHA1 fd64be7720ba1c8906703a983d6b28a93fb0199b SHA256 1da84517cdbe3bf7a328791c9cb2bb0a612ba285d2c3c4652e6930b55205b96d +MISC ChangeLog 4001 RMD160 8a2063b7b679a0f1ca8edb31f1037b0bb10ed360 SHA1 fa86631b8097b3b4cec108c9d3a13594a5262fc8 SHA256 0c46ed03654aeb2e52c0aaeba211090ad20bfcaa2d1987d4d9620a0ab67a34df MISC metadata.xml 236 RMD160 2426a5550a3a3bd590e34d0a94b7c70172e2da62 SHA1 029a41327079b38d4be4c4d9f48605c45e586d33 SHA256 1042e4d1be90d4fda4021f1d84b5a8e986c4e42d7b0e0aae82f488ef17bb0331 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) -iEYEARECAAYFAkkW3vAACgkQkKaRLQcq0GI2PwCfQPLieSvSvCNYhy9elmTE0hBq -hBwAnjsi95FaMGEpYAR4RSYGPBj2Obly -=UvYe +iEYEARECAAYFAkkgQ6MACgkQSYz9rjec82YX7gCeK0HF+liKVpFt8vm1CLKF/8H6 +qmQAnjLGyNS9CDwUiZbESxtF8zXzSXXa +=b4Oy -----END PGP SIGNATURE----- diff --git a/app-admin/zprod-manager/files/0.3.3/zprod-manager b/app-admin/zprod-manager/files/0.3.3/zprod-manager new file mode 100644 index 000000000000..085447caaaba --- /dev/null +++ b/app-admin/zprod-manager/files/0.3.3/zprod-manager @@ -0,0 +1,385 @@ +#!/bin/bash +# Gentoo Zope Product selection tool. +# Copyright 2003 Jason Shoemaker <kutsuya@gentoo.org> +# Distributed under GPL v2 +# $Header: /var/cvsroot/gentoo-x86/app-admin/zprod-manager/files/0.3.3/zprod-manager,v 1.1 2008/11/16 16:00:40 tupone Exp $ + +VERSION="0.3.3" +COMMAND_LIST="add del" +ZS_DIR="/usr/share/zope/" +ZI_DIR="/var/lib/zope/" +ZPROD_DIR="/usr/share/zproduct/" + +ZINST_DEFAULT=".default" +ZPROD_FLIST_FNAME=".zfolder.lst" +ZPROD_LLIST_FNAME=".zlfolder.lst" +ZPROD_PLIST_FNAME=".zproduct.lst" + +# Assume the standard dialog return codes +#DIALOG_CANCEL=1 +#DIALOG_ERROR=-1 +#DIALOG_ESC=-255 +#DIALOG_OK=0 +#DIALOG_ERROR may equal #DIALOG_ESC + +# Return codes used in this program: +E_SUCCESS=0 +E_FAILURE=1 + +E_ZPLIST=20 +E_ZILIST=22 +E_COMMAND=24 +E_OVERWRITE=26 + +## copied from zope-config + +zinst_dir_get() +{ + local RESULT=${E_FAILURE} + local LIST=$(ls ${ZI_DIR}) + local LIST_CNT=$(echo ${LIST} | wc -w) + local DLIST= + + if [ ${LIST_CNT} -eq 1 ] ; then + ZINST_DIR=${LIST} + RESULT=${E_SUCCESS} + elif [ ${LIST_CNT} -ne 0 ] ; then + for N in ${LIST} ; do + DLIST="${DLIST} $N -" + done + dialog \ + --title "Zope Instance List" \ + --menu "Select desired zinstance:" 0 0 ${LIST_CNT} ${DLIST} 2> $tempfile + RESULT=$? + ZINST_DIR=$(cat $tempfile) + else + RESULT=${E_ZILIST} # There are no zinstances + fi + ZINST_DIR="${ZI_DIR}${ZINST_DIR}" + return ${RESULT} +} + +# params: none +# TODO: Maybe try to break this function down some more. +# TODO: verify items in ZP_PLIST and ZI_PLIST + +mode_interactive() +{ + local RESULT= + if [ $(is_command "${COMMAND_LIST}" ${1})${?} -ne 0 ] ; then + RESULT=${?} + return ${RESULT} + fi + ZP_PLIST=$(ls ${ZPROD_DIR}) + if [ "${ZP_PLIST}" ] ; then + zinst_dir_get + RESULT=$? + if [ ${RESULT} -eq 0 ] ; then + ZI_PLIST=$(cat ${ZINST_DIR}/${ZPROD_PLIST_FNAME}) + # Create CLIST for --menu + if [ "${ZI_PLIST}" ] ; then + for N in ${ZP_PLIST} ; do + echo ${ZI_PLIST} |grep ${N} >/dev/null + if [ $? -eq 0 ] ; then + STATUS=ON + else + STATUS=OFF + fi + CLIST="${CLIST} ${N} - ${STATUS}" + done + dialog \ + --backtitle "Select the zproducts you want installed for zinstance(${ZINST_DIR})." \ + --checklist "Select:" 0 0 0 ${CLIST} 2> $tempfile + RESULT=$? + CTAGS=$(cat $tempfile) + CTAGS=$(echo ${CTAGS} | sed -e "s:\"::g") + # Prepare to add and delete zproducts installed in zinstance + if [[ ${RESULT} -eq 0 && "${CTAGS}" ]] ; then + for N in ${ZI_PLIST} ; do + echo "$CTAGS" |grep ${N} >/dev/null + if [ $? -ne 0 ] ; then + prod_del ${ZPROD_DIR}/${N} ${ZINST_DIR} + fi + done + for N in ${CTAGS} ; do + echo ${ZI_PLIST} |grep ${N} >/dev/null + if [ $? -ne 0 ] ; then + prod_add ${ZPROD_DIR}/${N} ${ZINST_DIR} + fi + done + RESULT=$? + elif [ ${RESULT} -eq 0 ] ; then # $CTAGS is empty + for N in ${ZI_PLIST} ; do + prod_del ${ZPROD_DIR}/${N} ${ZINST_DIR} + done + RESULT=$? + fi + else # ZI_PLIST is empty + for N in ${ZP_PLIST} ; do + CLIST="${CLIST} ${N} - 0" + done + dialog \ + --backtitle "Select the zproducts you want installed for zinstance(${ZINST_DIR})." \ + --checklist "Select:" 0 0 0 ${CLIST} 2> $tempfile + RESULT=$? + CTAGS=$(cat $tempfile) + CTAGS=$(echo "${CTAGS}" | sed -e "s:\"::g") + if [[ ${RESULT} -eq 0 && "${CTAGS}" ]] ; then + for N in ${CTAGS} ; do + # as this is empty Products directory in instance if-case, we can safely ignore + # RESULT returned from prod_add in case of overwrite error. It can not happen + # when ZI_PLIST is empty, right? ;) <radek@gentoo.org> + prod_add ${ZPROD_DIR}/${N} ${ZINST_DIR} + done + fi + fi + fi + else # ZP_PLIST is empty + RESULT=${E_ZPLIST} + fi + return ${RESULT} +} + + +# Parameters: +# $1 = command list +# $2 = command received +# Returns: +# true or false + +is_command() +{ + local RESULT=${E_COMMAND} + local N= + + echo ${1} |grep ${2} >/dev/null + if [ $? -eq 0 ] ; then + RESULT=0 + fi + + return ${RESULT} +} + +# Parameters: +# $1 = /path/to/zinstance +# Returns: +# true or false + +is_zinstanceDir() +{ + local RESULT=${E_ZILIST} + # If can't find these, probably not a zinstance. + if [[ -d "${1}/Products" && -d "${1}/var" && -d "${1}/import" && -d "${1}/Extensions" ]] ; then + RESULT=0 + fi + return ${RESULT} +} + +# Parameters: +# $1 = /path/to/zproduct +# Returns: +# true or false + +is_zproductDir() +{ + local RESULT=${E_ZPLIST} + # look for something in .zproduct.lst in $1, if we can't find that... + if [ -s "${1}/${ZPROD_FLIST_FNAME}" ] ; then + RESULT=0 + fi + return ${RESULT} +} + +# Parameters: +# $1 = /path/to/zinst_dir +# Returns: +# stdout = name of defautl zinstance, if any. + +zinst_default_get() +{ + if [ -s ${1}/${ZINST_DEFAULT} ] ; then + cat ${1}/${ZINST_DEFAULT} + fi +} + +# Parameters: +# $1 = /path/to/zproduct +# $2 = /path/to/zinstance + +# be warned, using this function you have to immediately fail if functionss returns error. + +prod_add() +{ + local RESULT= + local N= + + # checks if some products components are already installed, + # if yes, we have to break with error, as overwrites are DANGEROUS! + for N in $(cat "${1}/${ZPROD_FLIST_FNAME}") + do + if [ -d ${2}/Products/${N} ] + then + echo "ZPROD-MANAGER WARNING: Overwrite possiblity detected at ${N}" + return ${E_OVERWRITE} + fi + done + if [ -f "${1}/${ZPROD_LLIST_FNAME}" ]; then + for N in $(cat "${1}/${ZPROD_LLIST_FNAME}"); do + if [ -d ${2}/lib/python/${N} ]; then + echo "ZPROD-MANAGER WARNING: Overwrite detected at ${N}" + return ${E_OVERWRITE} + fi + done + fi + + # we do copy instead of link, because its much safer, + # and zope-development-way compliant + if [ -e ${1}/Products ] ; then + for N in $(cat "${1}/${ZPROD_FLIST_FNAME}") ; do + cp -Ra ${1}/Products/${N} ${2}/Products + done + else + for N in $(cat "${1}/${ZPROD_FLIST_FNAME}") ; do + cp -Ra ${1}/${N} ${2}/Products + done + fi + if [ -f "${1}/${ZPROD_LLIST_FNAME}" ]; then + for N in $(cat "${1}/${ZPROD_LLIST_FNAME}") ; do + cp -Ra ${1}/lib/python/${N} ${2}/lib/python + done + fi + RESULT=$? + if [ ${RESULT} -eq 0 ] ; then + # basically adding ${PF} to .zproduct.lst + echo $(basename $1) >> ${2}/${ZPROD_PLIST_FNAME} + sort -u ${2}/${ZPROD_PLIST_FNAME} > ${2}/.tmp + mv -f ${2}/.tmp ${2}/${ZPROD_PLIST_FNAME} + RESULT=$? + + # setting owner and group as in Products folder, so we can compile + # python scripts with the zope user + # gives group writing perms (very often need in development teams) + # takes all perms from others to comply with 770 instance policy + for N in $(cat "${1}/${ZPROD_FLIST_FNAME}") ; do + chown -R `stat -c %U:%G ${2}/Products` ${2}/Products/${N} + chmod -R g+rwX,o-rwx ${2}/Products/${N} + done + if [ -f "${1}/${ZPROD_LLIST_FNAME}" ]; then + for N in $(cat "${1}/${ZPROD_LLIST_FNAME}") ; do + chown -R `stat -c %U:%G ${2}/Products` ${2}/lib/python/${N} + chmod -R g+rwX,o-rwx ${2}/lib/python/${N} + done + fi + fi + + return ${RESULT} +} + +# Parameters: +# $1 = /path/to/zproduct +# $2 = /path/to/zinstance + +prod_del() +{ + local RESULT= + local N= + local PF=$(basename $1) + + grep "${PF}" "${2}/${ZPROD_PLIST_FNAME}" >/dev/null + RESULT=$? + if [ ${RESULT} -eq 0 ] ; then + for N in $(cat ${1}/${ZPROD_FLIST_FNAME}) ; do + rm -rf ${2}/Products/${N} + done + if [ -f "${1}/${ZPROD_LLIST_FNAME}" ]; then + for N in $(cat ${1}/${ZPROD_LLIST_FNAME}) ; do + rm -rf ${2}/lib/python/${N} + done + fi + # remove zproduct from .zproduct.lst + sed -i -e "s/${PF}$//" -e "/^$/d" ${2}/${ZPROD_PLIST_FNAME} + RESULT=$? + fi + return ${RESULT} +} + +# Parameters: +# $1 = (optional) error message + +mode_help() +{ + echo "$(basename $0) version ${VERSION}" + echo "A Gentoo Zope Product selection tool." + echo + echo "Interactive usage:" + echo -e "\t$(basename $0) [add | del]" + echo "Default zinstance usage:" + echo -e "\t$(basename $0) [add |del] /path/of/zproduct" + echo "Non-interactive usage:" + echo -e "\t$(basename $0) [add | del] /path/of/zproduct /path/of/zinstance/" +} + +# Parameters: +# $1 = command +# $2 = /path/to/zproductDir + +mode_defaultZinst() +{ + local DEFAULT_ZINST=$(zinst_default_get ${ZI_DIR}) + local RESULT=$? + if [ -n "${DEFAULT_ZINST}" ] ; then + mode_explicit ${1} ${2} ${ZI_DIR}/${DEFAULT_ZINST} + RESULT=${?} + fi + return ${RESULT} +} + +# Parameters: +# $1 = command +# $2 = /path/to/zproduct +# $3 = /path/to/zinstance + +mode_explicit() +{ + local RESULT= + if [[ $(is_command "${COMMAND_LIST}" ${1})${?} -eq 0 && \ + $(is_zproductDir ${2})${?} -eq 0 && \ + $(is_zinstanceDir ${3})${?} -eq 0 ]] ; then + if [ ${1} = "add" ] ; then + prod_add ${2} ${3} + RESULT=$? + elif [ ${1} = "del" ] ; then + prod_del ${2} ${3} + RESULT=$? + else + RESULT=${E_COMMAND} + fi + fi + return ${RESULT} +} + +### MAIN + +tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$ +trap "rm -f $tempfile" 0 1 2 15 + +if [ ${!#} = "--help" ] ; then + mode_help +else + case "${#}" in + 0) mode_help ;; + 1) mode_interactive ${1} ;; + 2) mode_defaultZinst ${1} ${2} ;; + 3) mode_explicit ${1} ${2} ${3} ;; + *) mode_help "Error: Too many parameters" ;; + esac +fi + +RESULT=$? + +if [ ${RESULT} -ne 0 ] ; then + echo "ERROR ${?}" +fi + + +# vim:ts=8 |