]> TLD Linux GIT Repositories - TLD.git/blob - pld-builder.new/client/rebuild-th-kernel.sh
3688bae8b3ee43a3707aec90a981821c260142a2
[TLD.git] / pld-builder.new / client / rebuild-th-kernel.sh
1 #!/bin/sh
2 set -e
3
4 dir=$(cd "$(dirname "$0")"; pwd)
5 rpmdir=$(rpm -E %_topdir)
6 dist=th
7
8 pkgs_head="
9         dahdi-linux
10         e1000e
11         igb
12         ipset
13         ixgbe
14         linuxrdac
15         lirc
16         madwifi-ng
17         open-vm-tools
18         r8168
19         VirtualBox
20         xorg-driver-video-fglrx
21         xorg-driver-video-fglrx-legacy-12.x
22         xorg-driver-video-nvidia
23         xtables-addons
24 "
25
26 pkgs_longterm="
27         iscsitarget
28         openvswitch
29         xorg-driver-video-nvidia-legacy3
30 "
31
32 # autotag from rpm-build-macros
33 # displays latest used tag for a specfile
34 autotag() {
35         local out spec pkg
36         for spec in "$@"; do
37                 # strip branches
38                 pkg=${spec%:*}
39                 # ensure package ends with .spec
40                 spec=${pkg%.spec}.spec
41                 # and pkg without subdir
42                 pkg=${pkg#*/}
43                 # or .ext
44                 pkg=${pkg%%.spec}
45                 out=$(cvs status -v $spec | awk "!/Sticky/&&/auto-$dist-$pkg-$alt_kernel/{if (!a++) print \$1}")
46                 echo "$spec:$out"
47         done
48 }
49
50 get_last_tags() {
51         local pkg spec
52
53         echo >&2 "Fetching package tags: $*..."
54         for pkg in "$@"; do
55                 echo >&2 "$pkg... "
56                 if [ ! -e $pkg/$pkg.spec ]; then
57                         $rpmdir/builder -g $pkg -ns -r HEAD 1>&2
58                 fi
59                 if [ ! -e $pkg/$pkg.spec ]; then
60                         # just print it out, to fallback to base pkg name
61                         echo "$pkg"
62                 else
63                         spec=$(autotag $pkg/$pkg.spec)
64                         spec=${spec#*/}
65                         echo >&2 "... $spec"
66                         echo $spec
67                 fi
68         done
69 }
70
71 cd $rpmdir
72 case "$1" in
73         head)
74                 kernel=$(get_last_tags kernel)
75                 kernel=$(echo ${kernel#*auto-??-} | tr _ .)
76                 specs=""
77                 for pkg in $pkgs_head; do
78                         echo >&2 "Rebuilding $pkg..."
79                         $rpmdir/builder -g $pkg -ns
80                         $rpmdir/relup.sh -m "rebuild for $kernel" -ui $pkg/$pkg.spec
81                         specs="$specs $pkg.spec"
82                 done
83                 $dir/make-request.sh -nd -r -d $dist $specs
84                 ;;
85         longterm)
86                 kernel=$(alt_kernel=longterm get_last_tags kernel)
87                 kernel=$(echo ${kernel#*auto-??-} | tr _ .)
88                 specs=""
89                 for pkg in $pkgs_longterm; do
90                         echo >&2 "Rebuilding $pkg..."
91                         $rpmdir/builder -g $pkg -ns
92                         $rpmdir/relup.sh -m "rebuild for $kernel" -ui $pkg/$pkg.spec
93                         specs="$specs $pkg.spec"
94                 done
95                 # first build with main pkg (userspace), later build from tag
96                 $dir/make-request.sh -nd -r -d $dist --without kernel $specs
97
98                 specs=$(get_last_tags $pkgs_head $pkgs_longterm)
99                 $dir/make-request.sh -nd -r -d $dist --kernel longterm --without userspace $specs
100                 ;;
101         *)
102                 # try to parse all args, filling them with last autotag
103                 while [ $# -gt 0 ]; do
104                         case "$1" in
105                         --kernel|--with|--without)
106                                 args="$1 $2"
107                                 shift
108                                 ;;
109                         -*)
110                                 args="$args $1"
111                                 ;;
112                         *)
113                                 specs="$specs $1"
114                                 ;;
115                         esac
116                         shift
117                 done
118                 specs=$(get_last_tags $specs)
119                 $dir/make-request.sh -nd -r -d $dist $args $specs
120                 ;;
121 esac