]> git.pld-linux.org Git - packages/rpm-build-tools.git/blob - ci
on -j define __jobs instead of _smp_mflags
[packages/rpm-build-tools.git] / ci
1 #!/bin/sh
2
3 SPEC=$(basename "$1" .spec).spec
4 PACKAGE=$(basename "$SPEC" .spec)
5 TOPDIR=$(rpm -E %_topdir)
6 PACKAGEDIR=$TOPDIR/$PACKAGE
7 SPECFILE="$TOPDIR/$PACKAGE/$SPEC"
8 CLEANBUILDDIR="$HOME/PLD"
9 CIVIM=$PWD/civim
10
11 if [ $# -ne 1 -o ! -d "$PACKAGEDIR" -o ! -f "$SPECFILE" ]; then
12         echo "spec file missing"
13         exit 1
14 fi
15
16 if [ ! -x "$CIVIM" ]; then
17         echo "civim missing"
18         exit 1
19 fi
20
21 diffcol()
22 {
23         # vim like diff colourization
24 LC_ALL=en_US.UTF-8 gawk ' {
25         split( $0, S, /\t/ );
26         $0 = S[ 1 ];
27         for ( i = 2; i in S; i++ ) {
28                 spaces = 7 - ( (length( $0 ) - 1) % 8 );
29                 $0 = $0 "\xE2\x9E\x94";
30                 for ( y = 0; y < spaces; y++ )
31                         $0 = $0 "\xE2\x87\xBE";
32                 $0 = $0 S[ i ];
33         }
34         gsub( /\033/, "\033[44m^[\033[49m" );
35         cmd = "";
36         if ( sub( /^ /, "" ) )
37                 cmd = " ";
38         sub( /(\xE2\x9E\x94(\xE2\x87\xBE)*| )+$/, "\033[31;41m&\033[39;49m" );
39         gsub( /\xE2\x9E\x94(\xE2\x87\xBE)*/, "\033[7m&\033[27m" );
40         gsub( /\xE2\x87\xBE/, " " );
41         $0 = cmd $0;
42         gsub( /\007/, "\033[44m^G\033[49m" );
43         gsub( /\r/, "\033[44m^M\033[49m" );
44 }
45 /^(Index:|diff|---|\+\+\+) / { $0 = "\033[32m" $0 }
46 /^@@ / { $0 = "\033[33m" $0 }
47 /^-/ { $0 = "\033[35m" $0 }
48 /^+/ { $0 = "\033[36m" $0 }
49 { $0 = $0 "\033[0m"; print }
50 ' "$@"
51 }
52
53 pause()
54 {
55         echo "$*"
56         echo -n "[Press ENTER to continue, ^C to abort] "
57         read ans
58 }
59
60 cd $PACKAGEDIR
61
62 git diff --color=auto $SPEC
63
64 pause "Proceed ?"
65
66 sed '/^# AUTO: /d' -i "$SPECFILE"
67 SIMPLE_DIFF="$(cd $PACKAGEDIR && git diff "$SPEC")"
68
69 ./adapter "$SPECFILE"
70
71 diff=$(git diff $SPEC)
72 git diff --color=auto $SPEC
73
74 ver=$(echo "$diff" | awk '
75         /^\+Version/ { ver = $2 }
76         /^\+%define[ \t]+[_a-zA-Z0-9]*ver/ { ver = $3 }
77         END { print ver }
78 ')
79 rel=$(echo "$diff" | awk '
80         /^\+Release/ { rel = $2 }
81         /^\+%define[ \t]+_?rel/ { rel = $3 }
82         END { print rel }
83 ')
84
85 add=$(echo "$diff" | awk '
86         function s( n ) { sub(/}/,"",n); return n; }
87         /^\+(%{[a-zA-Z0-9_]+:)?BuildRequires/ { add[ s( $2 ) ] = 1; };
88         /^-(%{[a-zA-Z0-9_]+:)?BuildRequires/ { del[ s( $2 ) ] = 1; };
89         END { for ( n in add ) { if ( !del[ n ] ) print n; } }' | 
90         perl -p -e 'chomp; push @a, $_; undef $_; END { print join ", ", sort @a }
91 ')
92
93 del=$(echo "$diff" | awk '
94         function s( n ) { sub(/}/,"",n); return n; }
95         /^\+(%{[a-zA-Z0-9_]+:)?BuildRequires/ { add[ s( $2 ) ] = 1; };
96         /^-(%{[a-zA-Z0-9_]+:)?BuildRequires/ { del[ s( $2 ) ] = 1; };
97         END { for ( n in del ) { if ( !add[ n ] ) print n; } }' |
98         perl -p -e 'chomp; push @a, $_; undef $_; END { print join ", ", sort @a }
99 ')
100
101 n="$(echo -e '\nn')"
102 n="${n%%n}"
103 msg=""
104 [ -n "$ver" ] && msg="$msg- up to $ver$n"
105 [ -n "$rel" -a "$rel" != "1" ] && msg="$msg- release $rel$n"
106 [ -n "$add" ] && msg="$msg- BR: $add$n"
107 [ -n "$del" ] && msg="$msg- dropped BR: $del$n"
108
109 echo
110 echo "Message:"
111 echo "$msg"
112 pause "Commit ?"
113
114 export COMMIT_MESSAGE="$msg"
115 export COMMIT_PACKAGES="$SPECFILE"
116 export VISUAL="$CIVIM"
117 git ci "$SPECFILE"
118
119 [ -n "$CLEANBUILDDIR" ] && rm -f $CLEANBUILDDIR/installed/$SPEC
This page took 0.041309 seconds and 3 git commands to generate.