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