Mercurial > vanilla
annotate Scripts/bulk.sh @ 897:6e605e9a2b91
meta/meta-xfce: initial import
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 26 Aug 2019 20:20:00 +0200 |
parents | ca249bc7e3a7 |
children | ddab65a5b3f5 |
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 |