1 | #!/bin/bash |
---|
2 | set -xe |
---|
3 | package=$1 |
---|
4 | stamp=$2 |
---|
5 | suite=$3 |
---|
6 | psuite=$4 |
---|
7 | : ${DEBATHENA_APT=/mit/debathena/apt} |
---|
8 | : ${DEBATHENA_BUILD_AREA=/afs/sipb.mit.edu/project/debathena/packages} |
---|
9 | . /mit/debathena/bin/debian-versions.sh |
---|
10 | tag=$(gettag $suite) |
---|
11 | [ -n "$1" ] |
---|
12 | [ -n "$2" ] |
---|
13 | trap 'echo "An error occured. Press Enter to continue." >&2; echo -en "\a"; read ERROR; touch "$stamp.error"' EXIT |
---|
14 | touch "$stamp.started" |
---|
15 | dir=$(echo ${DEBATHENA_BUILD_AREA}/*/"${package#debathena-}") |
---|
16 | if [ ! -e $dir ]; then |
---|
17 | dir=$(echo ${DEBATHENA_BUILD_AREA}/*/"${package}") |
---|
18 | fi |
---|
19 | [ -e "$dir" ] |
---|
20 | cd "$dir" |
---|
21 | debathenificator=$(echo ./debathenify-*) |
---|
22 | if [ "$debathenificator" != "./debathenify-*" ]; then |
---|
23 | "$debathenificator" "${suite}-amd64" -A source binary upload |
---|
24 | "$debathenificator" "${suite}-i386" source binary upload |
---|
25 | touch "$stamp.done" |
---|
26 | trap - EXIT |
---|
27 | exit |
---|
28 | fi |
---|
29 | version=$(zcat ${DEBATHENA_APT}/dists/$psuite/*/source/Sources.gz | dpkg-awk -f - "Package:^$package\$" -- Version | sed -n 's/Version: // p') |
---|
30 | if [ -d "built/" ]; then |
---|
31 | dsc="built/${package}_$version.dsc" |
---|
32 | fi |
---|
33 | if ! [ -e "$dsc" ]; then |
---|
34 | if ! [ -e "${package}_$version.dsc" ]; then |
---|
35 | schroot -c "${psuite}-amd64-sbuild" -- apt-get source "$package" |
---|
36 | fi |
---|
37 | if ! [ -e "${package}_${version}_source.changes" ]; then |
---|
38 | (cd "${package}-${version/-*/}" && dpkg-genchanges -S -sa >"../${package}_${version}_source.changes") |
---|
39 | fi |
---|
40 | dsc="${package}_$version.dsc" |
---|
41 | fi |
---|
42 | [ -e "$dsc" ] |
---|
43 | |
---|
44 | if [ -e "${dsc%.dsc}_amd64.changes" ] || [ -e "${dsc%.dsc}_i386.changes" ]; then |
---|
45 | changes="${dsc%.dsc}_amd64.changes" |
---|
46 | buildlog="${dsc%.dsc}_amd64.build" |
---|
47 | if [ ! -e $changes ]; then |
---|
48 | changes="${dsc%.dsc}_i386.changes" |
---|
49 | buildlog="${dsc%.dsc}_i386.build" |
---|
50 | fi |
---|
51 | grep -q 'dpkg-source.* -b equivs' $buildlog |
---|
52 | else |
---|
53 | [ -e "${dsc%.dsc}_source.changes" ] |
---|
54 | changes="${dsc%.dsc}_source.changes" |
---|
55 | A=1 |
---|
56 | if (zcat ${DEBATHENA_APT}/dists/$psuite/*/binary-i386/Packages.gz | dpkg-awk -f - "Source:^$package\$" -- Architecture; zcat ${DEBATHENA_APT}/dists/$psuite/*/binary-i386/Packages.gz | dpkg-awk -f - "Package:^$package\$" -- Architecture) | grep -Fxv 'Architecture: all' | grep -q .; then |
---|
57 | A=0 |
---|
58 | fi |
---|
59 | sbuildhack "${suite}-amd64" -A "$dsc" |
---|
60 | [ $A -eq 1 ] || sbuildhack "${suite}-i386" "$dsc" |
---|
61 | changes=$changes\ "$(basename "${dsc%.dsc}${tag}_amd64.changes")" |
---|
62 | [ $A -eq 1 ] || changes=$changes\ "$(basename "${dsc%.dsc}${tag}_i386.changes")" |
---|
63 | fi |
---|
64 | |
---|
65 | #while |
---|
66 | # echo "Type yes to upload: $changes" |
---|
67 | # echo -en "\a" |
---|
68 | # read UPLOAD |
---|
69 | # [ "$UPLOAD" != "yes" ]; do |
---|
70 | # : |
---|
71 | #done |
---|
72 | |
---|
73 | REPREPRO="reprepro -Vb ${DEBATHENA_APT}" |
---|
74 | |
---|
75 | ( |
---|
76 | flock -x 200 |
---|
77 | files= |
---|
78 | for change in $changes; do |
---|
79 | if [ "$change" = "${dsc%.dsc}_source.changes" ]; then |
---|
80 | $REPREPRO --ignore=wrongdistribution include "$suite" "$change" |
---|
81 | else |
---|
82 | $REPREPRO --ignore=wrongdistribution include "$suite" "$change" |
---|
83 | files=$files\ $change\ $(perl -0ne '$_ =~ /\nFiles: *\n(( [^\n]*\n)*)/; print $1;' "$change" | awk '{print $5}' | grep -v '\.orig\.tar\.gz$' || :) |
---|
84 | fi |
---|
85 | done |
---|
86 | ! [ -d "built/" ] || mv -i $files "built/" |
---|
87 | ) 200> /tmp/debathena-repository-lock |
---|
88 | |
---|
89 | touch "$stamp.done" |
---|
90 | trap - EXIT |
---|