apk and opkg side by side
[openwrt/staging/aparcar.git] / package / system / fstools / files / snapshot
1 #!/bin/sh
2 # Copyright (C) 2014 OpenWrt.org
3
4
5 do_snapshot_unpack() {
6 echo "- snapshot -"
7 mkdir /tmp/snapshot
8 cd /tmp/snapshot
9 snapshot_tool read
10 block=`ls block*.tar.gz 2> /dev/null`
11 [ -z "$block" ] || for a in $block; do
12 tar xzf $a -C /
13 rm -f $a
14 done
15 }
16
17 do_config_unpack() {
18 echo "- config -"
19 snapshot_tool config_read
20 [ -f /tmp/config.tar.gz ] && {
21 tar xzf /tmp/config.tar.gz -C /
22 rm -f /tmp/config.tar.gz
23 }
24 }
25
26 do_snapshot_push() {
27 cd /volatile/upper
28 tar czf /tmp/snapshot.tar.gz *
29 snapshot_tool write
30 reboot
31 }
32
33 do_config_push() {
34 cd /volatile/upper
35 tar czf /tmp/config.tar.gz *
36 snapshot_tool config_write
37 }
38
39 do_snapshot_upgrade() {
40 if command -v opkg; then
41 opkg update
42 [ $? -eq 0 ] || exit 1
43
44 opkg list-upgradable
45 [ $? -eq 0 ] || exit 2
46
47 UPDATES=`opkg list-upgradable | cut -d" " -f1`
48 [ -z "${UPDATES}" ] && exit 0
49
50 opkg upgrade ${UPDATES}
51 [ $? -eq 0 ] || exit 3
52 else
53 apk upgrade
54 fi
55
56 do_snapshot_push
57 sleep 5
58 reboot
59 sleep 10
60 }
61
62 do_convert_jffs2() {
63 snapshot_tool write
64 sleep 2
65 reboot -f
66 }
67
68 do_convert() {
69 . /lib/functions.sh
70 . /lib/upgrade/common.sh
71
72 cd /overlay/upper
73 tar czf /tmp/snapshot.tar.gz *
74
75 install_bin /sbin/upgraded
76 ubus call system sysupgrade "{
77 \"prefix\": \"$RAM_ROOT\",
78 \"path\": \"\",
79 \"command\": \". /sbin/snapshot; do_convert_jffs2\"
80 }"
81 }
82
83 [ -n "$(cat /proc/mounts|grep /overlay|grep jffs2)" ] && {
84 case $1 in
85 convert)
86 do_convert
87 ;;
88 esac
89 }
90
91 [ -d /volatile/upper ] && {
92 case $1 in
93 push)
94 do_snapshot_push
95 ;;
96 config)
97 do_config_push
98 ;;
99 upgrade)
100 do_snapshot_upgrade
101 ;;
102 info)
103 snapshot_tool info
104 ;;
105 esac
106 }
107
108 [ "$SNAPSHOT" = "magic" ] && {
109 case $1 in
110 unpack)
111 do_snapshot_unpack
112 ;;
113 config_unpack)
114 do_config_unpack
115 ;;
116 esac
117 }