]>
Commit | Line | Data |
---|---|---|
356bd1e1 LO |
1 | #!/bin/bash |
2 | ||
3 | if [ "$#" != "2" ]; then | |
4 | echo "Usage: $0 <release> <revision>" 1>&2 | |
5 | exit 1 | |
6 | fi | |
7 | ||
8 | if [ "$DEBIAN" = "" ]; then | |
9 | . debian/debian.env | |
10 | fi | |
11 | ||
12 | ver=$1 | |
13 | revision=$2 | |
d3bbe380 | 14 | abi=$(echo $revision | sed -r -e 's/([^\+~]*)\.[^\.]+(~.*)?(\+.*)?$/\1/') |
356bd1e1 LO |
15 | |
16 | verabi=$ver-$abi | |
17 | verfull=$ver-$revision | |
18 | ||
19 | WGET="wget --tries=1 --timeout=10 --quiet -c" | |
20 | ||
21 | abidir="`pwd`/$DEBIAN/abi/$verfull" | |
22 | tmpdir="`pwd`/abi-tmp-$verfull" | |
23 | origdir="`pwd`" | |
24 | fwinfo=$abidir/fwinfo | |
25 | ||
26 | test -d $tmpdir || mkdir $tmpdir | |
27 | ||
28 | package_prefixes() { | |
29 | __package_prefixes="$@" | |
30 | } | |
31 | ||
32 | getall() { | |
33 | arch=$1 | |
34 | shift | |
35 | ||
36 | mkdir -p $abidir/$arch | |
37 | ||
38 | for sub in $@; do | |
39 | if [ -f $abidir/$arch/$sub ]; then | |
40 | echo "Exists: $sub" | |
41 | continue | |
42 | fi | |
43 | echo -n "Fetching $sub($arch)..." | |
44 | prefixes="" | |
45 | filenames="" | |
46 | cd $tmpdir | |
47 | for prefix in $__package_prefixes | |
48 | do | |
49 | filename=${prefix}-${verabi}-${sub}_${verfull}_${arch}.deb | |
50 | for r in "${repo_list[@]}" | |
51 | do | |
52 | if ! [ -f $filename ]; then | |
53 | $WGET $r/$filename | |
54 | fi | |
55 | if [ -f $filename ]; then | |
56 | prefixes="$prefixes $prefix" | |
57 | filenames="$filenames $filename" | |
58 | break | |
59 | fi | |
60 | done | |
61 | done | |
62 | if [ "$filenames" != "" ]; then | |
63 | echo -n "extracting$prefixes..." | |
64 | for filename in $filenames | |
65 | do | |
66 | dpkg-deb --extract $filename tmp | |
67 | done | |
68 | find tmp -name "*.ko" | while read f; do | |
69 | modinfo $f | grep ^firmware >> $fwinfo | |
70 | done | |
71 | if [ -f tmp/boot/abi-* ]; then | |
72 | mv tmp/boot/abi-* $abidir/$arch/$sub | |
73 | else | |
74 | echo -n "NO ABI FILE..." | |
75 | fi | |
76 | (cd tmp; find lib/modules/$verabi-$sub/kernel -name '*.ko') | \ | |
77 | sed -e 's/.*\/\([^\/]*\)\.ko/\1/' | sort > \ | |
78 | $abidir/$arch/$sub.modules | |
79 | ( | |
80 | cd tmp; | |
81 | # Prevent exposing some errors when called by python scripts. SIGPIPE seems to get | |
82 | # exposed when using the `find ...` form of the command. | |
83 | ko=$(find lib/modules/$verabi-$sub/kernel \ | |
84 | -name '*.ko' | head -1) | |
f722d17d | 85 | readelf -p .comment "$ko" | gawk ' |
356bd1e1 LO |
86 | ($1 == "[") { |
87 | printf("%s", $3); | |
88 | for (n=4; n<=NF; n++) { | |
89 | printf(" %s", $n); | |
90 | } | |
91 | print "" | |
92 | }' | sort -u >$abidir/$arch/$sub.compiler | |
93 | version=`cat $abidir/$arch/$sub.compiler` | |
94 | echo -n "$version..." | |
95 | ) | |
96 | rm -rf tmp $filenames | |
97 | echo "done." | |
98 | else | |
99 | echo "FAILED." | |
100 | fi | |
101 | cd $origdir | |
102 | done | |
103 | } | |
104 | ||
105 | # MAIN | |
106 | ||
107 | # Setup abi directory | |
108 | mkdir -p $abidir | |
109 | echo $abi > $abidir/abiname | |
110 | ||
111 | # NOTE: The flavours are hardcoded, because they may have changed from the | |
112 | # current build. | |
113 | ||
114 | __package_prefixes="linux-image" | |
115 | ||
116 | . $DEBIAN/etc/getabis | |
117 | ||
118 | compilers=`cat $abidir/*/*.compiler | sort -u | wc -l` | |
119 | if [ "$compilers" != 1 ]; then | |
120 | echo "WARNING: inconsistant compiler versions detected" 1>&2 | |
121 | fi | |
122 | ||
123 | sort < $fwinfo | uniq > fwinfo.tmp | |
124 | mv fwinfo.tmp $fwinfo | |
125 | ||
126 | rmdir $tmpdir | |
6595369a TG |
127 | |
128 | # Add the new ABI directory, remove the old | |
129 | git add $abidir | |
130 | find $DEBIAN/abi/* -maxdepth 0 -type d | grep -v $verfull | while read f; do git rm -r $f;done |