[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: svn-autoreleasedeb [Era: pacchettizzare automaticamente da vcs]



> nextime@nexlab.it ha scritto:
> > svn-autoreleasedeb?
> grazie nextime,
> 
> sembra proprio quello che stavo cercando! Tuttavia, a parte  leggere il
> man non ho trovato altre guide che spiegano bene come si usa...
> 
> Qualcuno ha qualche idea?
> 
-- MEGASNIP --

Allora, non so quanto possa essere adattabile alla tua situazione, ma io
lo uso in questo modo:

Tengo un mio repository ( non locale, su web ) dei miei pacchi.

Ho un svn ( dietro https ) su cui metto tutto.

Ho una macchina di sviluppo con un utente "autorepository" che uso per
tutte le modifiche cazzi mazzi e antani che faccio ai pacchetti.

A quel punto faccio cosi':
-----------------------------------------
danex:~$ crontab -l
# m h  dom mon dow   command
*/10 * * * * /home/autorepository/bin/aggiorna >> /var/log/autorepository/autorepository.log 2>&1
----------------------------------------------
danex:~$ cat /home/autorepository/bin/aggiorna
#!/bin/bash

h=$HOME

for i in `ls ~/dists` ; do
        export HOME=$h/dists/$i
        svn-autoreleasedeb
done

export HOME=$h

/home/web/sites/packages.medianix.net/scripts/aggiornarepo


dentro la directory ~/dists ho:

danex:~/dists$ ls -l
drwxr-xr-x 4 autorepository autorepository 4096 2007-02-27 22:59 mdxdev
drwxr-xr-x 4 autorepository autorepository 4096 2007-02-27 23:15 mercury

e dentro ognuna di esse:
danex:~/dists/mdxdev$ ls -la
total 16
drwxr-xr-x 4 autorepository autorepository 4096 2007-02-27 22:59 .
drwxr-xr-x 4 autorepository autorepository 4096 2007-02-21 00:21 ..
drwxr-xr-x 2 autorepository autorepository 4096 2007-02-27 22:59 .fontconfig
lrwxrwxrwx 1 autorepository autorepository   27 2007-02-21 00:21 .gnupg -> /home/autorepository/.gnupg
lrwxrwxrwx 1 autorepository autorepository   32 2007-02-21 00:21 .subversion -> /home/autorepository/.subversion
drwxr-xr-x 4 autorepository autorepository 4096 2007-06-01 20:00 .svn-autoreleasedeb


poi ho una directory ~/configs dove tengo:

danex:~/configs$ ls
mdxdev.conf  mdxdev.conf~  mercury.conf  mercury.conf~

che altro non sono che i file di configurazione di autoreleasedeb, ad
esempio ( uno stralcio )


        <server name="medianix-mdxdev-astronomy">
                <package name="qastrocam" svnserver="https://svn.nexlab.it/"; prefix="medianix/packages/astronomy" tag="trunk"/>
      <package name="xephem-mdx" svnserver="https://svn.nexlab.it/"; prefix="medianix/packages/astronomy" tag="trunk"/>
        </server>

etc etc.

Ora lo script nel cron in pratica esegue autoreleasedeb su quelle config, in base alle mie varie
versioni ( in pratica sono la mia stable e la mia unstable ), e quando ha finito mi richiama un altro script,
/home/web/sites/packages.medianix.net/scripts/aggiornarepo.
questo script e' cosi' fatto:

#!/bin/bash
echo `date`

DISTROS="mdxdev mercury"
COMPONENTS="main astronomy telephony mdxmodcommon"

INCOMING="/home/web/sites/packages.medianix.net/incoming"

REPOSITORY="/home/web/sites/packages.medianix.net/medianix/"

repreprocmd="reprepro --ignore=wrongdistribution -Vb ${REPOSITORY}"


#svn-autoreleasedeb

for DISTRO in ${DISTROS}
        do
        for COMPONENT in ${COMPONENTS}
                do
                cd ${INCOMING}/${DISTRO}/${COMPONENT}
                found=0
                doit="YES"
                for package in *.changes
                        do
                        if [ -e ${package} ] ; then
                                found=`expr ${found} + 1`
                        fi
                done
                if [ ! "${found}" -lt 1 ] ; then
                        for package in *.changes ; do
                                ${repreprocmd} -C ${COMPONENT} include ${DISTRO} ${package}
                                sed '1,/Files:/d' ${package} | sed '/BEGIN PGP SIGNATURE/,$d' \
                                | while read MD SIZE SECTION PRIORITY NAME ; do
                                if [ -z ${NAME} ] ; then
                                        continue
                                fi
                                if [ -f ${INCOMING}/${DISTRO}/${COMPONENT}/${NAME} ] ; then
                                        rm ${INCOMING}/${DISTRO}/${COMPONENT}/${NAME}
                                fi
                                done
                                rm ${INCOMING}/${DISTRO}/${COMPONENT}/${package}
                        done
                fi
                cd ${INCOMING}
        done
done


con tutto sto casino, piu difficile da spiegare che da fare sinceramente, in poche parole 
io piglio il mio pacco, faccio quel che devo fare, faccio il commit nell'svn, e entro 10 
minuti il pacchetto e' rebuildato e messo nel repository.

Spero che possa servirti come spunto, anche se forse e' poco comprensibile 
spiegato in questo modo.


-- 

Franco (nextime) Lanza
Busto Arsizio - Italy
SIP://casa@casa.nexlab.it

NO TCPA: http://www.no1984.org
you can download my public key at:
http://danex.nexlab.it/nextime.asc || Key Servers
Key ID = D6132D50
Key fingerprint = 66ED 5211 9D59 DA53 1DF7  4189 DFED F580 D613 2D50
-----------------------------------
echo 16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D212153574F444E49572045535520454D20454B414D204F54204847554F4E452059415020544F4E4E4143205345544147204C4C4942snlbxq | dc
-----------------------------------

Attachment: signature.asc
Description: PGP signature


Reply to: