annotate Scripts/bulk.sh @ 877:368b3e99b6e2

emulation/libretro-pocketcdg: initial import, closes #2172
author David Demelier <markand@malikania.fr>
date Sun, 25 Aug 2019 13:36:17 +0200
parents ca249bc7e3a7
children ddab65a5b3f5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
781
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 #!/bin/sh
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 #
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 # bulk.sh -- basic bulk build script
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 #
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 # Copyright (c) 2019 David Demelier <markand@malikania.fr>
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 #
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 # Permission to use, copy, modify, and/or distribute this software for any
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 # purpose with or without fee is hereby granted, provided that the above
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 # copyright notice and this permission notice appear in all copies.
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 #
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
18 #
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
19
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 alias basename="busybox basename"
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 alias dirname="busybox dirname"
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 alias echo="busybox echo"
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 alias find="busybox find"
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 alias grep="busybox grep"
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 alias realpath="busybox realpath"
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 TOP=$(realpath $(dirname $0)/../)
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 PROGNAME=$(basename $0)
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 rm -f /tmp/fail.*
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 force=0
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 missing=0
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
34
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 #
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 # build
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 #
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 # Build a package if not already installed.
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 #
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 build()
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 {(
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 name=$(basename $1)
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
43
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 if [ $force -eq 1 ] || ! vpk info $name > /dev/null 2>&1; then
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 # TODO: dependencies here.
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 echo -n "building $name: "
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 cd $TOP/$pkg
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
49
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 if vpk build > /tmp/fail.$name 2>&1; then
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 rm -f /var/lib/vpk/$name
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 rm -f /tmp/fail.$name
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 echo "ok"
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 yes | vpk install -t none /tmp/vpk/$name*pkg.txz
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 else
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 echo "failed"
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 return 1
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 fi
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 fi
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 )}
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
61
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 #
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 # build_missing
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 #
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 # Rebuild a package that is installed but not available in /tmp/vpk.
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 #
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 build_missing()
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 {
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 name=$(basename $1)
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 rebuild=0
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
71
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 # Build if not installed at all.
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 if ! vpk info $name > /dev/null 2>&1; then
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 rebuild=1
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 else
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 version=$(vpk info -m version $name 2> /dev/null)
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 revision=$(vpk info -m revision $name 2> /dev/null)
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 filename="$name#$version-$revision-pkg.txz"
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
79
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 if [ ! -f /tmp/vpk/$filename ]; then
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 rebuild=1
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 fi
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 fi
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
84
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 if [ $rebuild -eq 1 ]; then
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 build $1
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 fi
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 }
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
89
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 usage()
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 {
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 echo "usage: bulk.sh [-fm] [packages...]"
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 exit 1
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 }
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
95
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 while getopts "fm" arg; do
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 case $arg in
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 f)
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 force=1
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 ;;
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 m)
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 missing=1
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 force=1
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 ;;
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 *)
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 usage
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 ;;
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 esac
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 done
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
110
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 shift $((OPTIND - 1))
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
112
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 $TOP/Scripts/list.sh "$@" | while read -r pkg; do
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 if [ $missing -eq 1 ]; then
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 build_missing $pkg
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 else
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 build $pkg
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 fi
ca249bc7e3a7 scripts: add basic bulk.sh
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 done