Subversion Repositories se3

Rev

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