- Timestamp:
- 11/11/2009 14:19:10 (3 years ago)
- Location:
- branches/confman-1.9
- Files:
-
- 5 edited
-
. (modified) (1 prop)
-
confaudit.in (modified) (2 diffs)
-
confman.in (modified) (54 diffs)
-
confmanlib.sh.in (modified) (4 diffs)
-
confsync.in (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/confman-1.9
-
branches/confman-1.9/confaudit.in
r468 r483 61 61 fi 62 62 63 conf_lock_system 63 system_lock=$(conf_lock_system) 64 64 65 65 conf_require_recipe … … 130 130 echo "Audit operation finished successfully" | conf_logger 131 131 132 conf_unlock_system 132 conf_unlock_system $system_lock 133 133 134 134 rm -rf $tmproot -
branches/confman-1.9/confman.in
r482 r483 57 57 function setup { 58 58 local response 59 local wcopy_lock 59 60 60 61 if conf_wcopy_is_locked; then … … 78 79 else 79 80 mkdir -p ${WORK_PATH} 80 conf_lock_wcopy81 wcopy_lock=$(conf_lock_wcopy) 81 82 conf_checkout_tree 82 conf_unlock_wcopy 83 conf_unlock_wcopy $wcopy_lock 83 84 fi 84 85 fi … … 86 87 87 88 function create { 89 local wcopy_lock 88 90 if [ -z "$*" ] ; then 89 91 print_usage 1 90 92 else 91 conf_lock_wcopy93 wcopy_lock=$(conf_lock_wcopy) 92 94 conf_create_modules "$@" || exit 1 93 conf_unlock_wcopy 95 conf_unlock_wcopy $wcopy_lock 94 96 fi 95 97 } 96 98 97 99 function update { 98 conf_lock_wcopy 100 local wcopy_lock 101 wcopy_lock=$(conf_lock_wcopy) 99 102 conf_update_tree "$@" || exit 1 100 conf_unlock_wcopy 103 conf_unlock_wcopy $wcopy_lock 101 104 } 102 105 103 106 function revert { 107 local wcopy_lock 104 108 if [ -z "$*" ] ; then 105 109 print_usage 1 106 110 else 107 conf_lock_wcopy111 wcopy_lock=$(conf_lock_wcopy) 108 112 conf_revert "$@" 109 conf_unlock_wcopy 113 conf_unlock_wcopy $wcopy_lock 110 114 fi 111 115 } … … 188 192 local nocommit=true 189 193 local opt OPTIND OPTARG 194 local wcopy_lock system_lock 190 195 191 196 while getopts ":m:F:" opt ; do … … 203 208 204 209 conf_require_recipe 205 conf_lock_system206 conf_lock_wcopy210 system_lock=$(conf_lock_system) 211 wcopy_lock=$(conf_lock_wcopy) 207 212 208 213 for module in $(conf_get_recipe) ; do … … 235 240 echo "Commit operation finished successfully" >&2 236 241 rm -f $msg 237 conf_unlock_wcopy 238 conf_unlock_system 242 conf_unlock_wcopy $wcopy_lock 243 conf_unlock_system $system_lock 239 244 } 240 245 … … 242 247 function inst { 243 248 local file livefile 244 local msg status files file 249 local msg status files file sing 245 250 local nocommit=true 251 local system_lock wcopy_lock 246 252 local opt OPTIND OPTARG 247 253 … … 250 256 m) LOG_MESSAGE="$OPTARG"; LOG_MESSAGE_SET="true" ;; 251 257 F) LOG_FILE="$OPTARG" ;; 258 N) innercall=true ;; 252 259 *) echo "Invalid option '-${OPTARG}'." >&4 253 260 print_usage 1 … … 257 264 shift $(($OPTIND - 1)) 258 265 266 system_lock=$(conf_lock_system) 267 wcopy_lock=$(conf_lock_wcopy) 259 268 conf_require_recipe 260 conf_lock_wcopy261 conf_lock_system262 269 263 270 for file in "$@"; do … … 265 272 done 266 273 267 268 274 $SUDO ${SUDO:+-v} 269 conf_update_tree || conf_cleanExit 270 271 if status=$(get_status $files) ; then 272 nocommit=false 273 msg=$(get_log "$status") || conf_cleanExit 274 rm -f "$status" 275 fi 276 277 echo "Installation operation started." >&2 278 $nocommit || conf_commit_file "$msg" "$files" || return $? 279 for layer in $(conf_get_recipe) ; do 280 conf_install $layer "$@" 281 done 282 for file in $SINGULARITIES ; do 283 conf_assemble_sing $file || conf_cleanExit 275 276 # This stuff we only do in the top-level call, not on recursive calls... 277 if ! conf_lock_is_recursive $wcopy_lock ; then 278 conf_update_tree || conf_cleanExit 279 if status=$(get_status $files) ; then 280 nocommit=false 281 msg=$(get_log "$status") || conf_cleanExit 282 rm -f "$status" 283 fi 284 echo "Installation operation started." >&2 285 $nocommit || conf_commit_file "$msg" "$files" || return $? 286 fi 287 288 for file in "$@" ; do 289 for layer in $(conf_get_recipe) ; do 290 conf_install $layer "$@" 291 done 292 for sing in $SINGULARITIES ; do 293 if [ "$sing" = "$file" ] ; then 294 conf_assemble_sing $file || conf_cleanExit 295 fi 296 done 284 297 done 285 298 conf_recordAction install … … 289 302 fi 290 303 echo "Installation operation succeeded." >&2 291 conf_unlock_wcopy 292 conf_unlock_system 304 conf_unlock_wcopy $wcopy_lock 305 conf_unlock_system $system_lock 293 306 } 294 307 295 308 296 309 function import { 297 local recursive_lock 298 299 # A placeholder to track the first recursive call for the final unlock 300 if conf_wcopy_is_locked ; then 301 recursive_lock=1 302 conf_debug import called with lock already held 303 else 304 recursive_lock=0 305 conf_debug import called without lock 306 fi 310 local wcopy_lock 307 311 308 312 local item OPTIND flags … … 330 334 shift 331 335 336 wcopy_lock=$(conf_lock_wcopy) 337 332 338 if [ -z "$module" ] || [ -z "$1" ] ; then 333 if [ "$recursive_lock" -eq "0" ]; then339 if ! conf_lock_is_recursive $wcopy_lock ; then 334 340 print_usage 1 335 341 return 1 … … 342 348 return 1 343 349 fi 344 345 conf_lock_wcopy346 350 347 351 $SUDO ${SUDO:+-v} … … 364 368 "Skipping." >&4 365 369 import $flags $module "$@" 366 conf_unlock_wcopy $ recursive_lock370 conf_unlock_wcopy $wcopy_lock 367 371 return 368 372 fi … … 375 379 echo "Did you mean -f ?" >&4 376 380 import $flags $module "$@" 377 conf_unlock_wcopy $ recursive_lock381 conf_unlock_wcopy $wcopy_lock 378 382 return 379 383 fi … … 442 446 443 447 import $flags $module "$@" 444 conf_unlock_wcopy $ recursive_lock448 conf_unlock_wcopy $wcopy_lock 445 449 return 446 450 else … … 490 494 fi 491 495 492 conf_unlock_wcopy $ recursive_lock496 conf_unlock_wcopy $wcopy_lock 493 497 } 494 498 495 499 function remove { 500 local wcopy_lock 496 501 if [ -z $1 ]; then 497 502 print_usage 1 498 503 fi 499 504 500 conf_lock_wcopy505 wcopy_lock=$(conf_lock_wcopy) 501 506 conf_rm_file "$@" 502 conf_unlock_wcopy 507 conf_unlock_wcopy $wcopy_lock 503 508 } 504 509 … … 511 516 local comment="dir" 512 517 local workdir=`$ABSPATH .` 513 514 local recursive_lock 515 516 # A placeholder to track the first recursive call for the final unlock 517 if conf_wcopy_is_locked ; then 518 recursive_lock=1 519 else 520 recursive_lock=0 521 fi 518 local wcopy_lock 522 519 523 520 if [ -z "$dir" ] ; then … … 525 522 fi 526 523 527 conf_lock_wcopy524 wcopy_lock=$(conf_lock_wcopy) 528 525 # Find the "real" directory's path if not already specified 529 526 if [[ ! $dir =~ ^/ ]] ; then … … 572 569 done 573 570 574 if [ "$recursive_lock" -eq 0 ]; then 575 conf_unlock_wcopy 576 fi 571 conf_unlock_wcopy $wcopy_lock 577 572 } 578 573 … … 602 597 603 598 function chowner { 604 local recursive_lock owner file 605 606 # A placeholder to track the first recursive call for the final unlock 607 if conf_wcopy_is_locked ; then 608 recursive_lock=1 609 else 610 recursive_lock=0 611 fi 599 local owner file wcopy_lock 612 600 613 601 local recursive item OPTIND … … 627 615 file=$2 628 616 629 conf_lock_wcopy617 wcopy_lock=$(conf_lock_wcopy) 630 618 conf_set_prop $file owner $owner 631 619 … … 636 624 fi 637 625 638 if [ "$recursive_lock" -eq 0 ]; then 639 conf_unlock_wcopy 640 fi 626 conf_unlock_wcopy $wcopy_lock 641 627 } 642 628 643 629 function chgroup { 644 local recursive_lock group file 645 646 # A placeholder to track the first recursive call for the final unlock 647 if conf_wcopy_is_locked ; then 648 recursive_lock=1 649 else 650 recursive_lock=0 651 fi 630 local group file wcopy_lock 652 631 653 632 local recursive item OPTIND … … 667 646 file=$2 668 647 669 conf_lock_wcopy648 wcopy_lock=$(conf_lock_wcopy) 670 649 conf_set_prop $file group $group 671 650 … … 676 655 fi 677 656 678 if [ "$recursive_lock" -eq 0 ]; then 679 conf_unlock_wcopy 680 fi 657 conf_unlock_wcopy $wcopy_lock 681 658 } 682 659 683 660 function chmode { 684 local recursive item OPTIND mode file 685 686 # A placeholder to track the first recursive call for the final unlock 687 if conf_wcopy_is_locked ; then 688 recursive_lock=1 689 else 690 recursive_lock=0 691 fi 661 local recursive item OPTIND mode file wcopy_lock 692 662 693 663 while getopts "R" opt ; do … … 706 676 file=$2 707 677 708 conf_lock_wcopy678 wcopy_lock=$(conf_lock_wcopy) 709 679 conf_set_prop $file mode $mode 710 680 if [ ! -z $recursive ] && [ -d $file ] ; then … … 714 684 fi 715 685 716 if [ "$recursive_lock" -eq 0 ]; then 717 conf_unlock_wcopy 718 fi 686 conf_unlock_wcopy $wcopy_lock 719 687 } 720 688 721 689 function chcom { 722 conf_lock_wcopy690 local wcopy_lock 723 691 local comment="$1" 724 692 local file=$2 693 wcopy_lock=$(conf_lock_wcopy) 725 694 conf_set_prop $file comment "$comment" 726 conf_unlock_wcopy 695 conf_unlock_wcopy $wcopy_lock 727 696 } 728 697 … … 730 699 local symlink="$1" 731 700 local file="$2" 701 local wcopy_lock 732 702 733 703 if [ $# -lt 2 ] ; then … … 735 705 fi 736 706 737 conf_lock_wcopy707 wcopy_lock=$(conf_lock_wcopy) 738 708 conf_set_prop "$file" symlink "$symlink" 739 conf_unlock_wcopy 709 conf_unlock_wcopy $wcopy_lock 740 710 } 741 711 … … 755 725 local module=$1 756 726 local checkpoint=$2 727 local wcopy_lock 757 728 if [ -z $2 ] ; then 758 729 print_usage 1 759 730 else 760 conf_lock_wcopy731 wcopy_lock=$(conf_lock_wcopy) 761 732 conf_new_checkpoint $module $checkpoint 762 conf_unlock_wcopy 733 conf_unlock_wcopy $wcopy_lock 763 734 fi 764 735 } … … 767 738 local module=$1 768 739 local checkpoint=$2 740 local wcopy_lock 769 741 if [ -z $2 ] ; then 770 742 print_usage 1 771 743 else 772 conf_lock_wcopy744 wcopy_lock=$(conf_lock_wcopy) 773 745 conf_rm_checkpoint $module $checkpoint 774 conf_unlock_wcopy 746 conf_unlock_wcopy $wcopy_lock 775 747 fi 776 748 } … … 780 752 local checkpoint=$2 781 753 local clock=$3 754 local wcopy_lock system_lock 782 755 783 756 if [ -z "$2" ] ; then … … 785 758 else 786 759 conf_require_recipe 787 conf_lock_wcopy788 conf_lock_system760 wcopy_lock=$(conf_lock_wcopy) 761 system_lock=$(conf_lock_system) 789 762 echo "Rolling $module back to $checkpoint $clock" >&2 790 763 conf_rollback $module $checkpoint $clock || conf_cleanExit … … 798 771 done 799 772 echo "Rollback succeeded." >&2 800 conf_unlock_wcopy 801 conf_unlock_system 773 conf_unlock_wcopy $wcopy_lock 774 conf_unlock_system $system_lock 802 775 fi 803 776 } 804 777 805 778 function rmmod { 779 local wcopy_lock 806 780 if [ -z "$*" ] ; then 807 781 print_usage 1 808 782 else 809 conf_lock_wcopy783 wcopy_lock=$(conf_lock_wcopy) 810 784 conf_remove_modules "$@" || exit 1 811 conf_unlock_wcopy 785 conf_unlock_wcopy $wcopy_lock 812 786 fi 813 787 } … … 816 790 local oldmod=$1 817 791 local newmod=$2 792 local wcopy_lock 818 793 if [ -z $newmod ] ; then 819 794 print_usage 1 … … 827 802 conf_cleanExit 828 803 fi 829 conf_lock_wcopy804 wcopy_lock=$(conf_lock_wcopy) 830 805 conf_rename $oldmod $newmod 831 conf_unlock_wcopy 806 conf_unlock_wcopy $wcopy_lock 832 807 } 833 808 … … 843 818 local src=$1 844 819 local dest=$2 820 local wcopy_lock 845 821 if [ -z $2 ]; then 846 822 print_usage 1 847 823 fi 848 conf_lock_wcopy824 wcopy_lock=$(conf_lock_wcopy) 849 825 conf_cp $src $dest 850 conf_unlock_wcopy 826 conf_unlock_wcopy $wcopy_lock 851 827 } 852 828 … … 854 830 local src=$1 855 831 local dest=$2 832 local wcopy_lock 856 833 if [ -z $2 ] 857 834 then 858 835 print_usage 1 859 836 fi 860 conf_lock_wcopy837 wcopy_lock=$(conf_lock_wcopy) 861 838 conf_mv $src $dest 862 conf_unlock_wcopy 839 conf_unlock_wcopy $wcopy_lock 863 840 } 864 841 … … 879 856 local target=$1 880 857 local link=$2 881 conf_lock_wcopy 858 local wcopy_lock 859 wcopy_lock=$(conf_lock_wcopy) 882 860 conf_ln $target $link $forced 883 conf_unlock_wcopy 861 conf_unlock_wcopy $(wcopy_lock) 884 862 } 885 863 … … 898 876 shift 899 877 if [ -z "$1" ] ; then print_usage 1 ; fi 900 901 conf_lock_wcopy 878 local wcopy_lock 879 880 wcopy_lock=$(conf_lock_wcopy) 902 881 conf_chattr "$attr" "$value" "$@" 903 conf_unlock_wcopy 882 conf_unlock_wcopy $(wcopy_lock) 904 883 } 905 884 … … 907 886 local attr="$1" 908 887 shift 888 local wcopy_lock 909 889 if [ -z "$1" ] ; then print_usage 1 ; fi 910 890 911 conf_lock_wcopy891 wcopy_lock=$(conf_lock_wcopy) 912 892 conf_rmattr "$attr" "$@" 913 conf_unlock_wcopy 893 conf_unlock_wcopy $wcopy_lock 914 894 } 915 895 … … 923 903 924 904 function audit { 905 local wcopy_lock system_lock 925 906 if [ -z "$*" ] ; then 926 907 conf_require_recipe 927 conf_lock_system928 conf_lock_wcopy908 system_lock=$(conf_lock_system) 909 wcopy_lock=$(conf_lock_wcopy) 929 910 local tmproot=$(conf_tmp_dir) 930 911 local live_root="${LIVE_ROOT}" … … 945 926 $SUDO diff -ru ${live_root}/ $tmproot | grep -v "^Only in" 946 927 echo "Audit operation finished successfully" >&2 947 conf_unlock_wcopy 948 conf_unlock_system 928 conf_unlock_wcopy $wcopy_lock 929 conf_unlock_system $system_lock 949 930 $SUDO rm -rf $tmproot 950 931 else … … 954 935 955 936 function recipe_edit { 956 local recipe 937 local recipe wcopy_lock 957 938 local new_recipe_file recipe_file 958 939 local repeat msg status … … 972 953 if [ -z "$1" ] ; then print_usage 1 ; fi 973 954 974 conf_lock_wcopy955 wcopy_lock=$(conf_lock_wcopy) 975 956 recipe="$1" 976 957 recipe_file=$(conf_recipe_dir)/${recipe} … … 995 976 fi 996 977 rm -f "$new_recipe_file" 997 conf_unlock_wcopy 978 conf_unlock_wcopy $wcopy_lock 998 979 } 999 980 1000 981 function recipe_create { 1001 local recipe recipe_file opt OPTIND msg status 982 local recipe recipe_file opt OPTIND msg status wcopy_lock 1002 983 while getopts ":m:F:R:" opt ; do 1003 984 case $opt in … … 1018 999 fi 1019 1000 1020 conf_lock_wcopy1001 wcopy_lock=$(conf_lock_wcopy) 1021 1002 recipe_file=$(conf_recipe_dir)/${recipe} 1022 1003 conf_recipe_create "$recipe" || return 1 … … 1025 1006 if ! recipe_edit "$recipe" ; then 1026 1007 conf_rm_file --force "${new_recipe_file}" 1027 conf_unlock_wcopy 1008 conf_unlock_wcopy $wcopy_lock 1028 1009 return 1 1029 1010 fi 1030 conf_unlock_wcopy 1011 conf_unlock_wcopy $wcopy_lock 1031 1012 return 0 1032 1013 fi … … 1038 1019 conf_commit_recipe "$msg" "$recipe" 1039 1020 fi 1040 conf_unlock_wcopy 1021 conf_unlock_wcopy $wcopy_lock 1041 1022 return 0 1042 1023 else 1043 1024 conf_rm_file --force "${recipe_file}" 1044 conf_unlock_wcopy 1025 conf_unlock_wcopy $wcopy_lock 1045 1026 return 1 1046 1027 fi … … 1049 1030 function recipe_remove { 1050 1031 local opt OPTIND OPTARG 1051 local msg status recipes recipe 1032 local msg status recipes recipe wcopy_lock 1052 1033 local nocommit=true 1053 1034 while getopts ":m:F:" opt ; do … … 1062 1043 shift $(($OPTIND - 1)) 1063 1044 1064 conf_lock_wcopy1045 wcopy_lock=$(conf_lock_wcopy) 1065 1046 1066 1047 conf_remove_recipes "$@" || exit 1 … … 1078 1059 $nocommit || conf_commit_recipes "$msg" "$@" 1079 1060 1080 conf_unlock_wcopy 1061 conf_unlock_wcopy $wcopy_lock 1081 1062 } 1082 1063 … … 1089 1070 1090 1071 function recipe_set { 1072 local wcopy_lock system_lock 1091 1073 if [ -z "$1" ] ; then print_usage 1 ; fi 1092 1074 local recipe="$1" … … 1095 1077 exit 1 1096 1078 fi 1097 conf_lock_wcopy1098 conf_lock_system1079 wcopy_lock=$(conf_lock_wcopy) 1080 system_lock=$(conf_lock_system) 1099 1081 conf_set_recipe "$recipe" 1100 conf_unlock_system 1101 conf_unlock_wcopy 1082 conf_unlock_system $system_lock 1083 conf_unlock_wcopy $wcopy_lock 1102 1084 } 1103 1085 -
branches/confman-1.9/confmanlib.sh.in
r481 r483 131 131 132 132 function conf_lock_wcopy { 133 local locktype 133 134 conf_require_wcopy 134 ${LOCK} lock $$ $(conf_wcopy_lockfile) || exit 1 135 136 # If this process already has a lock on the wcopy 137 if conf_wcopy_is_locked; then 138 locktype="RECURSIVE" 139 else 140 locktype="ORIGINAL" 141 fi 142 143 ${LOCK} lock $$ $(conf_wcopy_lockfile) || die 135 144 WCOPY_DIRTY="true" 145 echo $locktype 136 146 } 137 147 138 148 function conf_unlock_wcopy { 139 local recursive_lock="$1" 140 141 # Don't release the lock if it was grabbed recursively 142 [ -n "$recursive_lock" ] && [ "$recursive_lock" = "1" ] && return 143 144 ${LOCK} unlock $$ $(conf_wcopy_lockfile) 149 local locktype="$1" 150 151 if [ "$locktype" = "RECURSIVE" ] ; then 152 return 0 153 elif [ "$locktype" = "ORIGINAL" ] ; then 154 ${LOCK} unlock $$ $(conf_wcopy_lockfile) 155 return $? 156 else 157 echo "Invalid lock type in conf_unlock_wcopy" >&4 158 die 159 fi 145 160 } 146 161 … … 150 165 151 166 function conf_lock_system { 152 ${SUDO} ${LOCK} lock $$ "$LOCKFILE" || exit 1 167 local locktype 168 169 # If this process already has a lock on the wcopy 170 if conf_system_is_locked; then 171 locktype="RECURSIVE" 172 else 173 locktype="ORIGINAL" 174 fi 175 176 ${SUDO} ${LOCK} lock $$ "$LOCKFILE" || die 177 echo $locktype 153 178 } 154 179 155 180 function conf_unlock_system { 156 ${SUDO} ${LOCK} unlock $$ "$LOCKFILE" 181 local locktype="$1" 182 183 if [ "$locktype" = "RECURSIVE" ] ; then 184 return 0 185 elif [ "$locktype" = "ORIGINAL" ] ; then 186 ${SUDO} ${LOCK} unlock $$ "$LOCKFILE" 187 return $? 188 else 189 echo "Invalid lock type in conf_unlock_system" >&2 190 die 191 fi 157 192 } 158 193 159 194 function conf_system_is_locked { 160 195 ${LOCK} haslock $$ "$LOCKFILE" 196 } 197 198 function conf_lock_is_recursive { 199 local locktype="$1" 200 case "$locktype" in 201 ORIGINAL) return 1;; 202 RECURSIVE) return 0;; 203 *) echo "Invalid lock type in conf_lock_is_recursive" >&2 204 die 205 ;; 206 esac 161 207 } 162 208 … … 1058 1104 echo "Received a signal. Exiting cleanly." | conf_logger 1059 1105 echo "Please wait until I finish cleaning up after you." >&4 1060 conf_cleanExit 1106 conf_cleanExit 1 1061 1107 } 1062 1108 … … 1070 1116 1071 1117 conf_debug "Removing any system or working copy locks..." >&4 1072 conf_wcopy_is_locked && conf_unlock_wcopy 1073 conf_system_is_locked && conf_unlock_system 1118 conf_wcopy_is_locked && conf_unlock_wcopy ORIGINAL 1119 conf_system_is_locked && conf_unlock_system ORIGINAL 1074 1120 1075 1121 # And this clears any locks we may have created on our working copy: -
branches/confman-1.9/confsync.in
r468 r483 64 64 fi 65 65 66 conf_lock_system 66 system_lock=$(conf_lock_system) 67 67 68 68 conf_require_recipe … … 145 145 echo "Sync operation finished successfully" | conf_logger 146 146 147 conf_unlock_system 147 conf_unlock_system $system_lock 148 148 149 149 rm -rf $tmpdir
Note: See TracChangeset
for help on using the changeset viewer.
