Subversion Repositories se3

Rev

Rev 6625 | Rev 6634 | 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
#
6631 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
 
6631 dbo 59
# user ( faire ssh-copy-id reprepo@serveur avant )
60
repouser="reprepo"
61
#clessh="id_rsa.reprepo"
62
 
6625 dbo 63
# chemin du depot debian sur le serveur
64
depot="/var/se3-2/repos/apt/debian"
6631 dbo 65
url="$repouser@se3"
66
sshcmd="ssh  $url"
67
scpcmd="scp"
6625 dbo 68
 
6631 dbo 69
echo "#!/bin/bash" > $repocmd
6625 dbo 70
chmod u+x $repocmd
71
 
72
 
6631 dbo 73
[ "$VERSION" == "2.1" ]  && url_branche="$svnurl/branches/$VERSION"
6625 dbo 74
[ "$VERSION" == "2.2" ] && url_branche="$svnurl/trunk"
75
 
6631 dbo 76
if [ $# -eq "0" ]
77
then
78
  echo "compilation des modules :"
79
  liste_modules=$(svn list $url_branche | sed "s|/||g")
80
  echo "$liste_modules"
81
else
82
  liste_modules=$@
83
  echo "compilation de $@"
84
fi
6625 dbo 85
 
86
# paquets debian sources ( versions avec dch ) ou DEBIAN
87
function compile {
88
  if [ "$1" == "se3master" ]; then
89
     module="se3"
90
  else
91
     module="$1"
92
  fi
93
  if [ -d "$builddir/svn/$module" ]; then          
6631 dbo 94
     svn switch $url_branche/$1 $builddir/svn/$module >> build.log
6625 dbo 95
  else
6631 dbo 96
     svn checkout $url_branche/$1 $builddir/svn/$module >> build.log
6625 dbo 97
  fi
6631 dbo 98
  VERSION_MODULE=${VERSION}.$(svn info $builddir/svn/$module | grep "R*vision de la der" | awk '{ print $NF }')
99
  mkdir -p $builddir/build/tmp
100
  cp -a $builddir/svn/$module/* $builddir/build/tmp
101
  cd $builddir/build/tmp
6625 dbo 102
  find * -name .svn -exec rm -fr "{}" \; &>/dev/null  
103
  # commandes specifiques a un paquet ( a eviter si possible, modifier les sources !)
104
  [ -f "$builddir/buildscripts.d/$module" ] && . $builddir/buildscripts.d/$module
105
  #
106
  if [ -d DEBIAN ]; then
6631 dbo 107
     # packages DEBIAN
6625 dbo 108
     sed -i "s/#VERSION#/$VERSION_MODULE/g" DEBIAN/control*
109
     find * -name .svn -exec rm -fr "{}" \; &>/dev/null
110
     deb="${module}_${VERSION_MODULE}_all.deb"
6631 dbo 111
     dpkg-deb -b . ../$deb >> build.log
6625 dbo 112
  elif [ -d sources/debian ]; then
6631 dbo 113
     # packages source/debian
6625 dbo 114
     cd sources
115
     dh_clean
6631 dbo 116
     debuild -uc -us -b >> build.log
117
  elif [ -d debian ]; then
118
     # packages debian
119
     dh_clean
120
     debuild -uc -us -b >> build.log
6625 dbo 121
  fi
6631 dbo 122
  cd ..
123
  if changesfile=$(ls ${module}_*.changes 2>/dev/null); then
124
     [ "$UPLOAD" == "1" ] && echo "$scpcmd $builddir/debs/$changesfile $url:~/" >> $repocmd
125
     [ "$UPLOAD" == "1" ] && echo "$scpcmd $builddir/debs/${module}_*.deb $url:~/" >> $repocmd
126
     [ "$FORCE" == "1" ] && echo "$sshcmd \"reprepro -C $BRANCHE -b $depot remove $DISTRIB $module\"" >> $repocmd  
127
     echo "$sshcmd \"reprepro -C $BRANCHE --ignore=wrongdistribution -b $depot include $DISTRIB $changesfile\"" >> $repocmd  
128
     [ "$UPLOAD" == "1" ] && cp $changesfile $builddir/debs
129
     [ "$UPLOAD" == "1" ] && cp ${module}_*.deb $builddir/debs
130
  elif debfile=$(ls ${module}_*.deb 2>/dev/null); then
131
     [ "$UPLOAD" == "1" ] && echo "$scpcmd $builddir/debs/$debfile $url:~/" >> $repocmd
132
     [ "$FORCE" == "1" ] && echo "$sshcmd \"reprepro -C $BRANCHE -b $depot remove $DISTRIB $module\"" >> $repocmd  
133
     echo "$sshcmd \"reprepro -C $BRANCHE -b $depot includedeb $DISTRIB $debfile\"" >> $repocmd
134
     [ "$UPLOAD" == "1" ] && cp $debfile $builddir/debs
135
  else
136
     echo "ERREUR : le paquet $module n'a pas été généré"
137
  fi
6625 dbo 138
  cd $builddir
6631 dbo 139
  rm -fr $builddir/build/*
6625 dbo 140
}
141
 
6631 dbo 142
for package in $liste_modules ;  do
6625 dbo 143
    echo "compilation de $package pour la branche $BRANCHE version $VERSION distrib $DISTRIB"
144
    compile $package
145
done
146
 
6631 dbo 147
if [ "$UPDATE" == "1" ]; then
148
    $repocmd
149
fi
6625 dbo 150
exit 0