Advertisement
hellsy

emerge-webrsync replacer

Jan 3rd, 2014
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.29 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. TARGET=/usr/portage
  4. TMP_TARGET=${TARGET}_tmp
  5. FILENAME=/usr/portage.sqfs
  6. PORTAGE_USER_GROUP='portage:portage'
  7. USE_TMPFS=1
  8. TMPFS_OPT='size=2G,nr_inodes=500k,mode=0700'
  9. SQUASHFS_OPT='-force-uid portage -force-gid portage -no-duplicates -b 65536'
  10.  
  11. RED='\e[1;31m'
  12. NC='\e[0m'
  13. MOUNTED=0
  14. TMPFS_MOUNTED=0
  15.  
  16. function redexit {
  17.     echo -e "${RED}${1}${NC}"
  18.     exit
  19. }
  20.  
  21. function quit {
  22.     if [ $MOUNTED == 1 ]
  23.     then
  24.         if [ umount $TMP_TARGET ]
  25.         then
  26.             rm -rf $TMP_TARGET
  27.         else
  28.             echo -e "${RED}Failed to unmount $FILENAME on ${TMP_TARGET}${NC}"
  29.         fi
  30.     fi
  31.     if [ $TMPFS_MOUNTED == 1 ]
  32.     then
  33.         umount $TARGET || echo -e "${RED}Failed to unmount tmpfs on ${TARGET}${NC}"
  34.     fi
  35.     exit
  36. }
  37.  
  38. # Unmount 1st.
  39. for NAME in $TARGET $TARGET $TARGET $TMP_TARGET $TMP_TARGET $TMP_TARGET
  40. do
  41.     if mount | grep -q " on $NAME type"
  42.     then
  43.         echo -e "Unmouting $NAME"
  44.         umount $NAME || redexit "Failed to unmount $FILENAME on $NAME"
  45.     fi
  46. done
  47.  
  48.  
  49.  
  50.  
  51. [ -d $TMP_TARGET ] && rm -rf $TMP_TARGET
  52. # if we have .sqfs - use it
  53. if [ -f $FILENAME ]
  54. then
  55.     mkdir $TMP_TARGET
  56.     chown $PORTAGE_USER_GROUP $TMP_TARGET
  57.     echo -e "$FILENAME found, remount..."
  58.     mount -t squashfs -o loop,ro $FILENAME $TMP_TARGET || redexit "Failed to mount $FILENAME on ${TMP_TARGET}"
  59.     MOUNTED=1
  60. fi
  61.  
  62. [ -d $TARGET ] && rm -rf $TARGET
  63. mkdir $TARGET
  64. chown $PORTAGE_USER_GROUP $TARGET
  65.  
  66. if [ $USE_TMPFS == "1" ] && [ $MOUNTED == "1" ]
  67. then
  68.     echo -e "Mounting TMPFS...";
  69.     mount -t tmpfs -o $TMPFS_OPT tmpfs $TARGET || redexit "Failed to mount tmpfs on ${TARGET}"
  70.     cp $TMP_TARGET/* $TARGET -a
  71.     TMPFS_MOUNTED=1
  72. fi
  73.  
  74. if [ $MOUNTED == "1" ]
  75. then
  76.     umount $TMP_TARGET || quit
  77.     rm -rf $TMP_TARGET
  78.     MOUNTED=0
  79. fi
  80.  
  81. [ -f ${TARGET}/metadata/timestamp.x ] && rm $TARGET/metadata/timestamp.x
  82. /usr/lib/portage/bin/emerge-webrsync
  83.  
  84. # Building squashfs
  85. [ -f $FILENAME ] && rm $FILENAME;
  86.  
  87. mksquashfs $TARGET $FILENAME $SQUASHFS_OPT || redexit "Making $TARGET fails"
  88.  
  89. if [ $TMPFS_MOUNTED == 1 ]
  90. then
  91.     umount $TARGET || redexit "Failed to unmount tmpfs on ${TARGET}"
  92. fi
  93.  
  94. mount -t squashfs -o loop,ro $FILENAME $TARGET || redexit "Failed to mount $FILENAME on ${TARGET}"
  95. rm /var/tmp/portage/* -rf
  96. echo "All done"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement