4 ROOT_DIR="/root/compilation"
6 #Les systeme à compiler
7 CHROOT_DIR="$ROOT_DIR/chroot"
8 #repertoire cible des compilations
9 BUILD_AREA="$ROOT_DIR/build-area"
10 #le repertoire contenant les sources
12 #repertoire local (dans chroot) contenant les builds area
13 LOCAL_BUILD_AREA="/root/build-area"
14 #Le depôt formaté pour le web
15 DEPOT_DIR="$ROOT_DIR/depot"
18 #SOURCES[x]='vcs url_ressource target_directory_in_chroot'
19 SOURCES[0]='svn https://www.alternc.org/svn/ /root/vcs/'
21 function prepare_chroot() {
23 #Traiter dans les chroot
24 for dir in $(ls $CHROOT_DIR); do
25 if [[ ! -d $CHROOT_DIR/$dir ]]; then
28 dist=$(echo $dir | sed 's/-.*//' )
29 arch=$(echo $dir | sed 's/.*-//' )
32 SCHROOT_SESSION=$(schroot -b -c $dir)
33 if [[ ! $SCHROOT_SESSION ]]; then
38 chroot_run $SCHROOT_SESSION "find /tmp/ -type f -exec rm {} \;" "./"
41 #Nettoyer les build-area dans les sources
42 # find $SRC_DIR -iname build-area -exec rm -r {} \;
44 #Purger le depot de transition
48 function get_sources() {
50 for CHROOT in $(ls $CHROOT_DIR); do
51 #CHROOT=${1:-"etch-i386"}
52 ELEMENTS=${#SOURCES[@]}
53 for ((i=0;i<$ELEMENTS;i++)); do
54 SOURCE=( `echo ${SOURCES[${i}]}` )
58 chroot_run $CHROOT "mkdir -p $TARGET" '/root/'
59 get_$VCS $CHROOT $SOURCE $TARGET
65 chroot_run ${1} "svn cleanup ${3}" ${3}
66 command="echo t |svn --force --no-auth-cache co ${2} ${3}"
67 chroot_run "$1" "$command" '/root/'
70 function chroot_run() {
71 SCHROOT_SESSION="${1}"
79 --chroot $SCHROOT_SESSION \
83 function create_packages() {
87 for dir in $(ls $CHROOT_DIR); do
88 if [[ ! -d $CHROOT_DIR/$dir ]]; then
91 dist=$(echo $dir | sed 's/-.*//' )
92 arch=$(echo $dir | sed 's/.*-//' )
95 SCHROOT_SESSION=$(schroot -b -c $dir)
96 if [[ ! $SCHROOT_SESSION ]]; then
100 CHROOT_SRC=$CHROOT_DIR/$dist-$arch$SRC_DIR
101 CHROOT_BUILD_AREA=$CHROOT_DIR/$dist-$arch/$LOCAL_BUILD_AREA
103 mkdir -p $BUILD_AREA/$dist-$arch
105 mkdir -p $CHROOT_BUILD_AREA
107 umount $CHROOT_BUILD_AREA
108 mount --bind $BUILD_AREA/$dist-$arch $CHROOT_BUILD_AREA
111 for paquet in $(find $CHROOT_SRC -ipath \*/debian -printf %h\\n); do
112 SVN_DIR=${paquet#$CHROOT_SRC}
113 STATUT=$(basename $SVN_DIR)
115 chroot_run $SCHROOT_SESSION "svn revert ./ -R" $SRC_DIR/$SVN_DIR
118 if [[ $STATUT != "trunk" ]]; then
119 STATUT=$(basename $(dirname $SVN_DIR))
121 version=( `schroot -p -r --chroot $SCHROOT_SESSION -d $SRC_DIR/$SVN_DIR -- egrep -o '\(.*\)' -m 1 debian/changelog | sed 's/(//'|sed s'/)//'` )
122 chroot_run $SCHROOT_SESSION "dch -v ${version}.1~`date +%Y-%m-%d` nightly" $SRC_DIR/$SVN_DIR
123 #echo "dch -l \"`date +%Y-%m-%d`\" nightly" | \
126 #Construire le package
128 mkdir -p "$CHROOT_BUILD_AREA/$STATUT"
129 chroot_run $SCHROOT_SESSION "svn-buildpackage -us -uc -rfakeroot --svn-move-to=$LOCAL_BUILD_AREA/$STATUT --svn-ignore" $SRC_DIR/$SVN_DIR
130 chroot_run $SCHROOT_SESSION "svn revert ./ -R" $SRC_DIR/$SVN_DIR
136 --chroot=$SCHROOT_SESSION
138 # umount $CHROOT_BUILD_AREA
143 function create_apt() {
147 for dir in $(ls $BUILD_AREA); do
148 if [[ ! -d $CHROOT_DIR/$dir ]]; then
151 dist=$(echo $dir | sed 's/-.*//' )
152 arch=$(echo $dir | sed 's/.*-//' )
154 DEPOT_DIST=$DEPOT_DIR/dists/$dist
156 CHROOT_BUILD_AREA=$BUILD_AREA/$dist-$arch
158 for dir in $(ls $CHROOT_BUILD_AREA); do
162 DEPOT_SRC=$DEPOT_DIST/$dir/source
163 DEPOT_BIN=$DEPOT_DIST/$dir/binary-$arch/
168 cd $CHROOT_BUILD_AREA/$dir
173 cp *.diff.gz $DEPOT_SRC
174 cp *.tar.gz $DEPOT_SRC
177 dpkg-scanpackages binary-$arch /dev/null dists/$dist/$dir/ | gzip -f9 > binary-$arch/Packages.gz
178 dpkg-scansources source /dev/null dists/$dist/$dir/ | gzip -f9 > source/Sources.gz
179 apt-ftparchive -c $ROOT_DIR/$dist-$arch-apt-ftparchive.conf release $DEPOT_BIN > $DEPOT_BIN/Release
180 apt-ftparchive -c $ROOT_DIR/$dist-$arch-apt-ftparchive.conf release $DEPOT_SRC > $DEPOT_SRC/Release