source: soft/build_system/build_system/upload/robot/trunk/admin_old_structure @ 1

Last change on this file since 1 was 1, checked in by fasma, 13 years ago

Initial Import from Mandriva's soft revision 224062 and package revision 45733

File size: 18.3 KB
Line 
1#!/bin/sh
2#---------------------------------------------------------------
3# Project         : Linux-Mandrake
4# Module          : robot
5# File            : admin
6# Version         : $Id: admin_old_structure 888 2005-10-17 16:28:14Z mandrake $
7# Author          : Chmouel Boudjnah
8# Purpose         : process upload queues
9#---------------------------------------------------------------
10
11umask 022
12COOKER=/mnt/BIG/distrib/cooker
13
14CVS=$HOME/poSPECS/
15CVS_RSH=ssh
16export CVS_RSH
17
18contrib_rpm=$COOKER/contrib
19
20frozen_archs="i586"
21#all_archs="i586 ppc ia64"
22all_archs="i586 ppc alpha ia64 amd64 sparc"
23#archs_for_noarch="i586 ppc alpha ia64 sparc"
24not_frozen_archs="ppc alpha ia64 amd64 sparc"
25CHECK_NEW=0
26
27TMP=/mnt/BIG/distrib/.update_in_progress
28TMPDIR=${TMPDIR=~/tmp}
29
30INMAIN="These packages are already in main"
31NEWINREP="These packages have older version that the ones in the repository"
32NONEWVERSION="New versions are not authorized"
33ERROR="These packages are corrupted"
34NONEW="New packages are not allowed"
35ALREADYINCONTRIB="These packages are already in contrib"
36DEEPFREEZE="The distribution is in deep freeze, ask qateam@mandriva.com, flepied@mandriva.com, warly@mandriva.com for authorization"
37LOSTCHANGE="You have not built your package with the changes from the previous package"
38
39export PERL5LIB=/home/mandrake/perl/lib/perl5/site_perl/5.8.0/:/home/mandrake/perl/lib/perl5/5.8.0/
40
41shopt -s extglob
42
43cleanup() {
44    rm -f $TMP $TMPDIR/.list.*
45}
46
47# uncomment the following line to stop uploads
48#exit 0
49
50cd ~/
51
52mkdir -p $TMPDIR
53
54if [ "$1" = "-f" ];then
55    FORCE=true
56    shift;
57fi
58
59if [ -e "$TMP" ]; then
60    pid=`cat $TMP`
61    if [ "$pid" -gt 0 ]; then
62        kill -0 $pid > /dev/null 2>&1
63        if [ $? != 0 ]; then
64            echo "stale lock: removing it"
65            rm -f "$TMP"
66        fi
67    fi
68fi
69       
70[ -z "$FORCE" ] && [ -e "$TMP" ] && {
71    echo "Sound like a another cow boys run admin."
72    echo "The PID :"
73    cat $TMP
74    echo "kill me -9 or use the -f options"
75    exit 0
76}
77
78echo "$$" > $TMP
79
80trap cleanup 0
81
82check_freeze() {
83    arch=$1
84    for f in $frozen_archs; do
85        if [ "$f" = "$arch" ]; then
86            return 0
87        fi
88    done
89    return 1
90}
91
92check_bad_version() {
93    file=$1
94    dir=$2
95    allow_old=$3
96    allow_new=$4
97    srpm=$5
98    contrib=$6
99    force_b=$6
100
101    echo file $file dir $dir allow_old $allow_old allow_new $allow_new srpm $srpm contrib $contrib force_b $force_b
102   
103    # new package naming scheme
104    case $file in
105        */kernel2?-tmb*)
106        ;;
107        */kernel-multimedia*)
108        ;;
109        */kernel*-1-1mdk*)
110            allow_old=0
111            allow_new=1
112        ;;
113    esac
114
115    if [ -z $srpm ]; then
116        target=`rpm -qp --queryformat '%{NAME}' $file`
117        sdir=$dir
118    else   
119        target=`rpm -qp --qf '%{SOURCERPM}' $file | sed 's/-[^-]\+-[^-]\+.src.rpm//'`
120        sdir=$srpm
121    fi
122    isnew=0
123    if ! ls $sdir/${target}-!(*-*)-!(*-*).src.rpm > /dev/null 2>&1; then
124        isnew=1
125    fi
126    if [ $allow_new = 0 ]; then
127        if [ -z $target ]; then
128            reason=$ERROR
129            return 0
130        fi
131        if [[ $isnew == 1 ]]; then
132            reason=$NONEW
133            return 0
134        fi           
135        if [ -n $contrib ]; then
136            if ls $contrib/${target}-!(*-*)-!(*-*).src.rpm > /dev/null 2>&1; then
137                reason=$ALREADYINCONTRIB
138                return 0
139            fi 
140        fi
141    fi
142   
143    if $HOME/robot/check_old.pl $dir $file; then
144        reason=$NEWINREP
145        return 0
146    fi
147    if [[ $isnew == 0 && $force_b == 0 ]] && ! $HOME/robot/check_changelog.sh $dir $file; then
148        reason=$LOSTCHANGE
149        return 0
150    fi
151    if [ "$allow_old" -eq 0 ]; then
152        return 1
153    fi
154
155    target=`rpm -qp --queryformat '%{NAME}-%{VERSION}' $file`
156    if ls $dir/${target}-!(*-*).!(*\.*).rpm > /dev/null 2>&1; then
157        return 1
158    else
159        reason=$NONEWVERSION
160        return 0
161    fi
162}
163
164function insert_me_a_po_in_the_ass () {
165    RPM=$1
166    NAME=$(rpm -qp --qf '%{NAME}\n' $RPM)
167    if [ -f $CVS/$NAME.po ];then
168        [ -x /usr/lib/rpm/rpmputtext ] && /usr/lib/rpm/rpmputtext -C $CVS/$NAME.po $RPM
169    else
170        if [ -x /usr/lib/rpm/rpmgettext ]; then
171        /usr/lib/rpm/rpmgettext $RPM > $CVS/$NAME.po
172        (
173            cd $CVS/
174            cvs add $NAME.po
175            cvs commit -m "Changelog Automatic" $NAME.po
176        )
177        fi
178    fi
179}
180
181function resign_me_my_geule () {
182    RPM=$1
183    sudo -H /root/bin/resign_cooker $RPM
184}
185
186function process_queue () {
187
188#arguments parsing
189queue=$1
190check_old=$2
191allow_new=$3
192deep_freeze=$4
193force=$5
194i586_frozen=$6
195archs_to_process=$7
196top=$8
197vers=$9
198branch=$10
199if [ -n "$vers" ]; then
200    changelog_arg="-f $vers"
201else
202    changelog_arg=
203fi
204srpms=$top/SRPMS/
205contrib_srpm=$top/contrib/SRPMS/
206
207if [ -n "$branch" ]; then
208    branch_args="-u $branch"
209fi
210
211echo process_queue $1 $2 $3 $4 $5 $6 $7 $8 $9 $10
212
213if [[ "$i586_frozen" = "0" ]]; then
214  ################################################################################
215  # SOURCE
216  ################################################################################
217 
218  # fredl 04/07/2000
219  # source must be separated to prevent rpmputtext to
220  # mess up the package.
221  # chmou 04/08/2001
222  # launch cvstag scripts if we upload initscripts
223 
224  /bin/ls $queue/SRPMS/*.src.rpm &> /dev/null && {
225      for i in $queue/SRPMS/*.src.rpm;do
226        rpm -qp $i &> /dev/null && {
227          reason=$DEEPFREEZE
228        if [[ "$deep_freeze" = "1" ]]; then
229            continue   
230        fi
231        if check_bad_version $i $srpms $check_old $allow_new '' $contrib_srpm $force; then
232            ~/robot/rejected "$reason" "src" "$vers" $i
233            echo $reason
234            mv -vf $i $queue/rejected/
235            continue
236        fi
237       
238  #     if [[ $(basename $i) = initscripts-* ]];then
239  #         if [ -f ~/robot/tagcvs ];then
240  #             ~/robot/tagcvs
241  #         fi
242  #     fi
243       
244        ~/robot/cvcp $branch_arg $i
245        echo ~/robot/changelog_old_structure $changelog_arg $i
246        ~/robot/changelog_old_structure $changelog_arg $i
247        resign_me_my_geule $i
248       
249        mv -vf $i $srpms
250        }
251      done
252  }
253fi
254################################################################################
255# ARCH
256################################################################################
257
258for arch in $archs_to_process; do
259 /bin/ls $queue/RPMS/*.$arch.rpm &> /dev/null && {
260    if check_freeze $arch; then
261        check_old_tmp=$check_old
262        deep_freeze_tmp=$deep_freeze
263    else
264        check_old_tmp=0
265        deep_freeze_tmp=0
266    fi
267    for i in $queue/RPMS/*.$arch.rpm;do
268        rpm -qp $i &> /dev/null && {
269            reason=$DEEPFREEZE
270            if [[ "$deep_freeze_tmp" = "1" ]]; then
271                continue
272            fi
273            if check_bad_version $i $top/$arch/Mandrake/RPMS $check_old_tmp $allow_new $srpms $contrib_srpm $force; then
274                ~/robot/rejected "$reason" "$arch" "$vers" $i
275                echo $reason
276                mv -vf $i $queue/rejected/
277                continue
278            fi
279
280            insert_me_a_po_in_the_ass $i
281            resign_me_my_geule $i
282            if [ $arch = i586 ]; then
283                ~/robot/extracts $i
284            fi
285
286            GENME="$GENME $arch"
287            if [ -n $version ]; then
288                community_to_gen="$community_to_gen $version"
289            fi
290
291            ~/robot/process-obsoletes $i $srpms $top/$arch/Mandrake/RPMS
292            mv -vf $i $top/$arch/Mandrake/RPMS/
293        }
294    done
295 }
296done
297
298
299if [[ "$i586_frozen" = "0" ]]; then
300################################################################################
301# NOARCH
302################################################################################
303
304  /bin/ls $queue/RPMS/*.noarch.rpm &> /dev/null && {
305      for i in $queue/RPMS/*.noarch.rpm;do
306          rpm -qp $i &> /dev/null && {
307              reason=$FROZEN
308              if [[ "$deep_freeze" = "1" ]]; then
309                continue
310              fi
311              if check_bad_version $i $top/i586/Mandrake/RPMS $check_old $allow_new $srpms $contrib_srpm $force; then
312                ~/robot/rejected "$reason" "noarch" "$vers" $i
313                echo $reason
314                mv -vf $i $queue/rejected/
315                continue
316              fi
317
318              insert_me_a_po_in_the_ass $i
319              resign_me_my_geule $i
320              ~/robot/extracts $i
321
322              GENME="$all_archs"
323              if [ -n $version ]; then
324                      community_to_gen="$community_to_gen $version"
325              fi
326              ~/robot/process-obsoletes $i $srpms $top/i586/Mandrake/RPMS
327              mv -vf $i $top/i586/Mandrake/RPMS/
328
329              for arch in $arch_to_process; do
330                      if [ $arch != i586 ]; then
331                              (cd $top/$arch/Mandrake/RPMS; ln ../../../i586/Mandrake/RPMS/`basename $i`)
332                              ~/robot/process-obsoletes $top/$arch/Mandrake/RPMS/`basename $i` $srpms $top/$arch/Mandrake/RPMS
333                      fi
334              done
335      }
336      done
337    }
338  fi
339}
340
341################################################################################
342# CONTRIB
343################################################################################
344function process_contrib {
345    queue=$1
346    force=$2
347    arch_to_process=$3
348    i586_frozen=$4
349    top=$5
350    version=$6
351    if [ -n "$version" ]; then
352        changelog_arg="-f $version"
353    else
354        changelog_arg=
355    fi
356    contrib_rpm=$top/contrib/
357    contrib_srpm=$top/contrib/SRPMS/
358    for arch in $arch_to_process; do
359        /bin/ls $queue/RPMS/*.$arch.rpm &> /dev/null && {
360        for i in $queue/RPMS/*.$arch.rpm; do
361                rpm -qp $i &> /dev/null && {
362                if [ $force == 0 ]; then
363                        target=`rpm -qp --queryformat '%{NAME}' $i`
364                        kernel=${target:0:7}
365                        if [ "$kernel" != "kernel-" ]; then
366                                echo TEST 1 $top/$arch/Mandrake/RPMS/${target}-!(*-*)-!(*-*).!(*\.*).rpm
367                                if ls $top/$arch/Mandrake/RPMS/${target}-!(*-*)-!(*-*).!(*\.*).rpm &> /dev/null || ! check_bad_version $i 0 0 0 $top/SRPMS; then
368                                        ~/robot/rejected "$INMAIN" "$arch" "$version" $i
369                                        echo $INMAIN
370                                        mv -vf $i $queue/rejected/
371                                        continue
372                                fi
373                        fi
374                        if check_bad_version $i $top/contrib/$arch 0 1 $contrib_srpm 0; then
375                                ~/robot/rejected "$reason" "$arch" "$version" $i
376                                echo $reason
377                                mv -vf $i $queue/rejected/
378                                continue
379                        fi
380                fi
381                resign_me_my_geule $i
382                ~/robot/process-obsoletes $i $contrib_srpm $contrib_rpm/$arch
383                GENME="$GENME $arch"
384                if [ -n $version ]; then
385                        community_to_gen="$community_to_gen $version"
386                fi
387                mv -vf $i $contrib_rpm/$arch
388            }
389      done
390  }
391  done
392
393  if [[ "$i586_frozen" = "0" ]]; then
394          /bin/ls $queue/RPMS/*.noarch.rpm &> /dev/null && {
395              for i in $queue/RPMS/*.noarch.rpm;do
396                  rpm -qp $i &> /dev/null && {
397                  if [ $force == 0 ]; then
398                          target=`rpm -qp --queryformat '%{NAME}' $i`
399                          kernel=${target:0:7}
400                          if [ "$kernel" != "kernel-" ]; then
401                                  if ! check_bad_version $i 0 0 0 $top/SRPMS; then
402                                          ~/robot/rejected "$INMAIN" "noarch" "$version" $i
403                                          echo $INMAIN
404                                          mv -vf $i $queue/rejected/
405                                          continue
406                                  fi
407                          fi
408                          if  check_bad_version $i $top/contrib/i586 0 1 $contrib_srpm 0; then
409                                  ~/robot/rejected "$reason" "noarch" "$version" $i
410                                  echo $reason
411                                  mv -vf $i $queue/rejected/
412                                  continue
413                          fi
414
415                  fi
416
417                  ~/robot/process-obsoletes $i $contrib_srpm $contrib_rpm/$arch
418                  resign_me_my_geule $i
419                  mv -vf $i $contrib_rpm/i586
420                  GENME="$all_arch"
421                  if [ -n $version ]; then
422                          community_to_gen="$community_to_gen $version"
423                  fi
424                  for arch in $all_archs; do
425                          if [ $arch != i586 ]; then
426                                  (cd $contrib_rpm/$arch; ln ../i586/`basename $i`)
427                          fi
428                  done
429                 }
430            done
431        }
432
433        ########################################################################
434        # SRPMS                                     
435        ########################################################################
436        /bin/ls $queue/SRPMS/*.src.rpm &> /dev/null && {
437            for i in $queue/SRPMS/*.src.rpm;do
438                rpm -qp $i &> /dev/null && {
439                    if [ $force == 0 ]; then
440                            target=`rpm -qp --queryformat '%{NAME}' $i`
441                            kernel=${target:0:7}
442                            if [ "$kernel" != "kernel-" ]; then
443                                    if ! check_bad_version $i $top/SRPMS 0 0; then
444                                            ~/robot/rejected "$INMAIN" "src" "$version" $i
445                                            echo $INMAIN
446                                            mv -vf $i $queue/rejected/
447                                            continue
448                                    fi
449                            fi
450                    fi
451                    ~/robot/cvcp $branch_arg -c $i
452                    echo ~/robot/changelog_old_structure -c $changelog_arg $i
453                    ~/robot/changelog_old_structure -c $changelog_arg $i
454                    resign_me_my_geule $i
455                    mv -vf $i $contrib_srpm
456                }
457            done
458        }
459    fi
460}
461
462function process_club {
463    arch_to_process=$1
464    version_to_process=$2
465    for vers in $version_to_process; do
466        changelog_arg="-f $vers"
467        for arch in $arch_to_process; do
468            for i in ~/uploads/$vers/club/RPMS/*.$arch.rpm; do
469                if [ -f $i ]; then
470                    rpm -qp $i &> /dev/null && resign_me_my_geule $i
471                    scp $i devmandrake@upload.mandrakeclub.com:Volunteer/free/$vers/$arch && \
472                        rm -f $i
473                fi
474            done
475        done
476        for i in ~/uploads/$vers/club/SRPMS/*.src.rpm; do
477            if [ -f $i ]; then
478                rpm -qp $i &> /dev/null && resign_me_my_geule $i
479                ~/robot/changelog_old_structure -C $changelog_arg $i
480                scp $i devmandrake@upload.mandrakeclub.com:Volunteer/free/$vers/SRPMS && \
481                    rm -f $i
482            fi
483        done
484    done
485}
486
487
488################################################################################
489# PROCESS QUEUES
490#################################################################################
491for d in cooker/RPMS cooker/SRPMS cooker/force/RPMS cooker/force/SRPMS contrib/force/RPMS contrib/force/SRPMS contrib/RPMS contrib/SRPMS frozen/RPMS/ frozen/SRPMS frozen/force/RPMS frozen/force/SRPMS 10.0/RPMS 10.0/SRPMS 10.0/contrib/RPMS/ 10.0/contrib/SRPMS 10.0/force/RPMS 10.0/force/SRPMS 10.0/contrib/force/RPMS 10.0/contrib/force/SRPMS 10.0/club/RPMS 10.0/club/SRPMS 9.2/club/RPMS 9.2/club/SRPMS; do
492    files=`ssh kenobi "ls ~/uploads/$d/*.rpm"`
493    for f in $files; do
494        scp -c arcfour -q -B kenobi:$f ~/uploads/$d/ && \
495        ssh kenobi "rm -f $f"
496#       ssh kenobi "mkdir -p ~/tmp/$d; mv $f ~/tmp/$d"
497    done
498done
499
500for version in 10.0
501do
502  BRANCH=`echo "MDK-$version" | sed s/\\./_/`
503  if [ -d /mnt/BIG/dis/community/$version/i586/Mandrake/RPMS ]; then
504
505# process queue option:
506#
507# queue=$1
508# check_old=$2 1=>only allow new release
509# allow_new=$3 1=>allow to upload new packages
510# deep_freeze=$4  1=>reject everything
511# force=$5
512# i586_frozen=$7
513# archs_to_process=$8
514# top=$9
515# version=$9 (version if not cooker)
516
517    if ls $HOME/uploads/$version/force/RPMS/*.rpm || ls $HOME/uploads/$version/force/SRPMS/*.rpm || ls $HOME/uploads/$version/contrib/force/RPMS/*.rpm || ls $HOME/uploads/$version/contrib/force/SRPMS/*.rpm; then
518      #process_queue $HOME/uploads/$version 0 0 0 0 0 "$all_archs" /mnt/BIG/dis/community/$version/ 10.0
519      process_queue $HOME/uploads/$version/force 0 1 0 1 0 "i586" /mnt/BIG/dis/community/$version/ $version $BRANCH
520      process_contrib $HOME/uploads/$version/contrib/force 1 "i586" 0 /mnt/BIG/dis/community/$version $version $BRANCH
521      # generate descriptions file to have a working MandrakeUpdate in Community
522      echo Generate descriptions files for $version Community updates
523      ~/bin/gen-descriptions2 $version i586 > /mnt/BIG/dis/community/$version/i586/Mandrake/descriptions
524    fi
525  fi
526done
527
528# normal time
529# 20040721 new structure #process_queue $HOME/uploads/cooker 0 0 0 0 0 "$all_archs" /mnt/BIG/dis/cooker/
530
531# frozen time, only allow new release
532#process_queue $HOME/uploads/cooker 1 0 0 0 0 "$all_archs" /mnt/BIG/dis/cooker/
533
534# deep frozen time, does not upload main arch
535#process_queue $HOME/uploads/cooker 1 0 1 0 1 "$not_frozen_archs" /mnt/BIG/dis/cooker/
536 
537# 20040721 new structure #process_queue $HOME/uploads/cooker/force 0 1 0 1 0 "$all_archs" /mnt/BIG/dis/cooker/
538
539
540# normal time
541# 20040721 new structure #process_contrib $HOME/uploads/contrib/ 1 "$all_archs" 0 /mnt/BIG/dis/cooker/
542# 20040721 new structure #process_contrib $HOME/uploads/contrib/force 1 "$all_archs" 1 /mnt/BIG/dis/cooker/
543
544# frozen time
545#process_contrib $HOME/uploads/contrib/force 1 "$not_frozen_archs" 1 /mnt/BIG/dis/cooker/
546
547for version in 9.2 10.0
548do
549        process_club "$all_archs" "$version"
550done
551################################################################################
552# CLEAN UP
553################################################################################
554mkdir -p ~/old
555
556remove_old() {
557    dir=$1
558    if [ -d $dir ]; then
559        cd $dir
560        for i in $(~/bin/doble2 $dir);do
561            if [ -L $i ]; then rm -vf $i; else mv -vf $i ~/old; rm -f $i; fi
562            touch ~/old/$i
563        done
564    fi
565}
566
567# do a subshell because we do cd
568(
569for arch in $all_archs; do
570     remove_old $COOKER/$arch/Mandrake/RPMS
571     remove_old $contrib_rpm/$arch
572done
573
574if [ -d $FROZEN/i586/Mandrake/RPMS ]; then
575    for arch in $frozen_archs; do
576        remove_old $FROZEN/$arch/Mandrake/RPMS
577    done
578fi
579
580for version in 10.0
581do
582  if [ -d /mnt/BIG/dis/community/$version/i586/Mandrake/RPMS ]; then
583    remove_old /mnt/BIG/dis/community/$version/i586/Mandrake/RPMS
584    remove_old /mnt/BIG/dis/community/$version/contrib/i586/
585    remove_old /mnt/BIG/dis/community/$version/contrib/SRPMS
586    remove_old /mnt/BIG/dis/community/$version/SRPMS
587  fi   
588done
589
590remove_old /SRPMS/
591remove_old /contrib/SRPMS/
592)
593
594################################################################################
595# Regenerate lists
596################################################################################
597
598function generate_hdlist () {
599    path=/mnt/BIG/dis/$1
600    version=$2
601    name=$3
602    genme=$4
603    for arch in $genme; do
604        if [ -e $TMPDIR/.list.$name.$arch ]; then
605                continue
606        fi
607        touch $TMPDIR/.list.$name.$arch
608        cd $path/$arch
609        pwd
610        path=`pwd`
611        echo TMPDIR=$TMPDIR/$name/$version/ /home/mandrake/local/bin/gendistrib --nobadrpm --noclean --distrib $path
612        TMPDIR=$TMPDIR/$name/$version/ /home/mandrake/local/bin/gendistrib --nobadrpm --noclean --distrib $path
613        $path/misc/MakeCD --update-rpmsrate $path/Mandrake/base/rpmsrate $path/Mandrake/RPMS/
614        pushd  $path/Mandrake/base/
615        md5sum hdlist* synthesis* > MD5SUM
616        popd
617        ln -f $path/Mandrake/base/synthesis.hdlist.cz $path/Mandrake/RPMS/
618        ln -f $path/Mandrake/base/synthesis.hdlist2.cz $path/Mandrake/RPMS2/synthesis.hdlist.cz
619        ln -f $path/Mandrake/base/synthesis.hdlist3.cz $path/Mandrake/RPMS3/synthesis.hdlist.cz
620        # deprecated fred 20010118
621        #genhdlist_cz2 --noclean --ordered-depslist Mandrake/base/depslist.ordered -o Mandrake/base/hdlist.cz Mandrake/RPMS
622        #genbasefiles Mandrake/base/ Mandrake/base/hdlist.cz
623        echo "Mandrakelinux $name $version-Download-$arch `date +"%Y%m%d %k:%M"`" > VERSION
624    done
625}
626
627for version in $community_to_gen
628do
629  if [ -d /mnt/BIG/dis/community/$version/i586/Mandrake/RPMS ]; then
630      generate_hdlist community/$version $version Community i586
631  fi
632done
633 
634#generate_hdlist cooker 10.1 Cooker $GENME
635
636# admin.sh ends here
Note: See TracBrowser for help on using the repository browser.