Subversion Repositories se3

Rev

Rev 6631 | Rev 6635 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6625 dbo 1
#!/bin/bash
2
#
6634 dbo 3
## $Id$ ##
6625 dbo 4
#
6631 dbo 5
##### Met a jour Se3 depuis le depot SVN #####
6625 dbo 6
#
7
 
8
 
9
function usage {
6631 dbo 10
        echo "usage: $0 -b branche -a archi -d distrib -v version [-n maj] [-u] [-fs] [package]"
11
        echo "       -b :  choix de la branche (se3testing|se3XP)"
6625 dbo 12
        echo "       -a :  choix de l'architecture (i386|amd64)"       
13
        echo "       -d :  choix de la distrib (lenny|squeeze)"
14
        echo "       -v :  choix de la version (2.1|2.2)"
6631 dbo 15
        echo "       -n :  majnb pour se3master"
16
        echo "       -u :  met a jour automatiquement (implique -f et -s) le depot"
17
        echo "       -f :  force la mise a jour même si cette version est deja sur le depot"
18
        echo "       -s :  upload des fichiers"
6625 dbo 19
        exit $1;
20
}
21
 
6631 dbo 22
while getopts ":hb:a:d:v:n:ufs" cmd
6625 dbo 23
do
24
        case $cmd in   
25
          b) BRANCHE=$OPTARG ;;
26
          a) ARCH=$OPTARG;;
27
          d) DISTRIB=$OPTARG;;
28
          v) VERSION=$OPTARG ;;
29
          n) MAJNB=$OPTARG ;;
6631 dbo 30
          u) UPDATE=1
31
              FORCE=1
32
              UPLOAD=1 ;;
33
          f) FORCE=1 ;;
34
          s) UPLOAD=1 ;;
6625 dbo 35
          h) usage 0 ;;
36
          ?) echo "bad option!"
37
              usage 1 ;;
38
        esac
39
done
40
 
41
shift $(($OPTIND - 1))
42
 
43
if ( [ -z "$VERSION" ] || [ -z "$DISTRIB" ] || [ -z "$BRANCHE" ]  ); then
44
usage 1
45
fi
6631 dbo 46
[ "$BRANCHE" == "xp" -o "$BRANCHE" == "se3xp" ] && BRANCHE="se3XP" && VERSION="2.2"
6625 dbo 47
 
48
builddir=$(pwd)
49
mkdir -p debs
50
mkdir -p svn
51
 
52
svnurl="https://svn.ac-grenoble.fr/svn/se3"
6631 dbo 53
 
54
# configuration de la liaison ssh avec le serveur pour la mise a jour
55
 
6625 dbo 56
repocmd="$builddir/debs/update_repo_${BRANCHE}.sh"
57
 
58
 
6634 dbo 59
# user ( creer l'utilisateur sur le serveur et  faire ssh-copy-id reprepo@serveur avant )
6631 dbo 60
repouser="reprepo"
61
 
6625 dbo 62
# chemin du depot debian sur le serveur
6634 dbo 63
# exemple pour dépôt distant :
6625 dbo 64
depot="/var/se3-2/repos/apt/debian"
6634 dbo 65
url="$repouser@se3:~/"
66
sshcmd="ssh  $repouser@se3"
6631 dbo 67
scpcmd="scp"
6634 dbo 68
# exemple pour dépôt local :
69
#depot="/var/se3-2/repos/apt/debian"
70
#url="~/"
71
#sshcmd=""
72
#scpcmd="cp"
6625 dbo 73
 
6634 dbo 74
 
6631 dbo 75
echo "#!/bin/bash" > $repocmd
6625 dbo 76
chmod u+x $repocmd
77
 
78
 
6631 dbo 79
[ "$VERSION" == "2.1" ]  && url_branche="$svnurl/branches/$VERSION"
6625 dbo 80
[ "$VERSION" == "2.2" ] && url_branche="$svnurl/trunk"
81
 
6631 dbo 82
if [ $# -eq "0" ]
83
then
84
  echo "compilation des modules :"
85
  liste_modules=$(svn list $url_branche | sed "s|/||g")
86
  echo "$liste_modules"
87
else
88
  liste_modules=$@
89
  echo "compilation de $@"
90
fi
6625 dbo 91
 
92
# paquets debian sources ( versions avec dch ) ou DEBIAN
93
function compile {
94
  if [ "$1" == "se3master" ]; then
95
     module="se3"
96
  else
97
     module="$1"
98
  fi
99
  if [ -d "$builddir/svn/$module" ]; then          
6634 dbo 100
     svn switch $url_branche/$1 $builddir/svn/$module >> $builddir/build.log
6625 dbo 101
  else
6634 dbo 102
     svn checkout $url_branche/$1 $builddir/svn/$module >> $builddir/build.log
6625 dbo 103
  fi
6631 dbo 104
  VERSION_MODULE=${VERSION}.$(svn info $builddir/svn/$module | grep "R*vision de la der" | awk '{ print $NF }')
105
  mkdir -p $builddir/build/tmp
106
  cp -a $builddir/svn/$module/* $builddir/build/tmp
107
  cd $builddir/build/tmp
6625 dbo 108
  find * -name .svn -exec rm -fr "{}" \; &>/dev/null  
109
  # commandes specifiques a un paquet ( a eviter si possible, modifier les sources !)
110
  [ -f "$builddir/buildscripts.d/$module" ] && . $builddir/buildscripts.d/$module
111
  if [ -d DEBIAN ]; then
6631 dbo 112
     # packages DEBIAN
6625 dbo 113
     sed -i "s/#VERSION#/$VERSION_MODULE/g" DEBIAN/control*
114
     find * -name .svn -exec rm -fr "{}" \; &>/dev/null
115
     deb="${module}_${VERSION_MODULE}_all.deb"
6634 dbo 116
     dpkg-deb -b . ../$deb >> $builddir/build.log
6625 dbo 117
  elif [ -d sources/debian ]; then
6631 dbo 118
     # packages source/debian
6625 dbo 119
     cd sources
120
     dh_clean
6634 dbo 121
     debuild -uc -us -b >> $builddir/build.log
6631 dbo 122
  elif [ -d debian ]; then
123
     # packages debian
124
     dh_clean
6634 dbo 125
     debuild -uc -us -b >> $builddir/build.log
6625 dbo 126
  fi
6631 dbo 127
  cd ..
128
  if changesfile=$(ls ${module}_*.changes 2>/dev/null); then
6634 dbo 129
     [ "$UPLOAD" == "1" ] && echo "$scpcmd $builddir/debs/$changesfile $url" >> $repocmd
130
     [ "$UPLOAD" == "1" ] && echo "$scpcmd $builddir/debs/${module}_*.deb $url" >> $repocmd
6631 dbo 131
     [ "$FORCE" == "1" ] && echo "$sshcmd \"reprepro -C $BRANCHE -b $depot remove $DISTRIB $module\"" >> $repocmd  
132
     echo "$sshcmd \"reprepro -C $BRANCHE --ignore=wrongdistribution -b $depot include $DISTRIB $changesfile\"" >> $repocmd  
133
     [ "$UPLOAD" == "1" ] && cp $changesfile $builddir/debs
134
     [ "$UPLOAD" == "1" ] && cp ${module}_*.deb $builddir/debs
135
  elif debfile=$(ls ${module}_*.deb 2>/dev/null); then
6634 dbo 136
     [ "$UPLOAD" == "1" ] && echo "$scpcmd $builddir/debs/$debfile $url" >> $repocmd
6631 dbo 137
     [ "$FORCE" == "1" ] && echo "$sshcmd \"reprepro -C $BRANCHE -b $depot remove $DISTRIB $module\"" >> $repocmd  
138
     echo "$sshcmd \"reprepro -C $BRANCHE -b $depot includedeb $DISTRIB $debfile\"" >> $repocmd
139
     [ "$UPLOAD" == "1" ] && cp $debfile $builddir/debs
140
  else
141
     echo "ERREUR : le paquet $module n'a pas été généré"
142
  fi
6625 dbo 143
  cd $builddir
6631 dbo 144
  rm -fr $builddir/build/*
6625 dbo 145
}
146
 
6631 dbo 147
for package in $liste_modules ;  do
6625 dbo 148
    echo "compilation de $package pour la branche $BRANCHE version $VERSION distrib $DISTRIB"
149
    compile $package
150
done
151
 
6631 dbo 152
if [ "$UPDATE" == "1" ]; then
153
    $repocmd
154
fi
6625 dbo 155
exit 0