Rev 6637 | Rev 6639 | 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 |
6637 | dbo | 66 | # chemin du dépot local ( à modifier ) |
67 | depot="/var/se3-2/repos/apt/debian" |
||
6638 | dbo | 68 | sshcmd="sh -c" |
6637 | dbo | 69 | else |
6635 | dbo | 70 | # user ( creer l'utilisateur sur le serveur et faire ssh-copy-id reprepo@serveur avant ) |
71 | repouser="reprepo" |
||
6631 | dbo | 72 | |
6635 | dbo | 73 | # chemin du depot debian sur le serveur distant |
74 | # ( a modifier ): |
||
75 | depot="/var/se3-2/repos/apt/debian" |
||
76 | url="$repouser@se3:~/" |
||
77 | sshcmd="ssh $repouser@se3" |
||
78 | scpcmd="scp" |
||
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 |