[--debian=distros]
[--ubuntu=distros]
[--centos=distros]
+ [--concurrency=level]
+ [--update=true|false]
[--upload]
EOF
exit $1
}
+D0=`dirname $0`
+ID_DEB_BUILD=`cd $D0; pwd`
+update=true
do_help=false
upload=false
+concurrency=8
+ARCHS="i386 amd64"
while test $# -gt 0; do
case "$1" in
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
--centos=*)
CENTOS_DIST_A=$optarg
;;
+ --concurrency=*)
+ concurrency=$optarg
+ ;;
--upload)
upload=true
;;
+ --update=*)
+ update=$optarg
+ ;;
-*)
do_help=yes
;;
UBUNTU_DIST=$UBUNTU_DIST_A
CENTOS_DIST=$CENTOS_DIST_A
fi
-ID_DEB_BUILD=~/proj/git-tools/id-deb-build
if test "$DEBIAN_DIST" -o "$UBUNTU_DIST"; then
debian=true
DNAME=`awk '/Source:/ {print $2}' debian/control`
fi
PRODUCT=$RNAME
if test ! -d ~/rpmbuild; then
+ echo "Creating ~/rpmbuild"
mkdir -p ~/pmbuild/BUILD
mkdir -p ~/rpmbuild/RPMS/noarch
mkdir -p ~/rpmbuild/RPMS/x86_64
mkdir -p ~/rpmbuild/SPECS
mkdir -p ~/rpmbuild/SRPMS
fi
+ if test ! -f ~/.rpmmacros; then
+ echo "Creating ~/.rpmmacros"
+ echo "%_topdir $HOME/rpmbuild" >~/.rpmmacros
+ echo "%_source_filedigest_algorithm 0" >>~/.rpmmacros
+ echo "%_binary_filedigest_algorithm 0" >>~/.rpmmacros
+ fi
else
centos=false
fi
UPLOAD_URI=${UPLOAD_HOST}:${UPLOAD_PATH}/${PRODUCT}
echo "Uploading to ${UPLOAD_URI}"
if $centos; then
- pkg_names=`rpm -q --specfile ${PRODUCT}.spec --queryformat "%{NAME}-%{VERSION}-%{RELEASE}\n"`
+ pkg_names=`sudo lxc-attach -n mockbuild -- rpm -q --specfile ~/rpmbuild/SPECS/${PRODUCT}.spec --queryformat "%{NAME}-%{VERSION}-%{RELEASE}\n"`
for dist in ${CENTOS_DIST}; do
case $dist in
centos5)
if grep "Architecture: all" $DSC >/dev/null; then
USE_ARCHS=i386
else
- USE_ARCHS="i386 amd64"
+ USE_ARCHS=$ARCHS
fi
+ rm -f ~/.pbuilderrc
+ i=0
+ cat ${ID_DEB_BUILD}/pbuilderrc > ~/.pbuilderrc
for dist in ${DEBIAN_DIST} ${UBUNTU_DIST}; do
for arch in ${USE_ARCHS}; do
- echo -n "dist=$dist arch=$arch"
- rm -f ~/.pbuilderrc
- echo "DIST=$dist" > ~/.pbuilderrc
- echo "ARCH=$arch" >> ~/.pbuilderrc
- cat ${ID_DEB_BUILD}/pbuilderrc >> ~/.pbuilderrc
- echo -n " update"
- if ! sudo lxc-attach -n pbuilder -- pbuilder --update --override-config >update-${dist}-${arch}.log 2>&1; then
- echo -n " create"
- if ! sudo lxc-attach -n pbuilder -- pbuilder --create >create-${dist}-${arch}.log 2>&1; then
- echo " failed. Inspect deb-src/create-${dist}-${arch}.log"
- exit 1
- fi
- echo -n " update"
- if ! sudo lxc-attach -n pbuilder -- pbuilder --update --override-config >update-${dist}-${arch}.log 2>&1; then
- echo " failed. Inspect deb-src/update-${dist}-${arch}.log"
+ sudo ${ID_DEB_BUILD}/id-pbuild-root.sh --update=$update --dsc=$DSC --arch=$arch --dist=$dist &
+ i=`expr $i + 1`
+ if test $i -ge $concurrency; then
+ i=0
+ wait
+ if ! test -f ${dist}-${arch}/*.dsc; then
+ echo "FAILED: No .dsc file for ${dist}-${arch}"
exit 1
- fi
+ fi
fi
- echo -n " build"
- if sudo lxc-attach -n pbuilder -- pbuilder --build $DSC >build-${dist}-${arch}.log 2>&1; then
- echo " done"
- else
- echo " failed. Inspect deb-src/build-${dist}-${arch}.log"
+ done
+ done
+ wait
+ for dist in ${DEBIAN_DIST} ${UBUNTU_DIST}; do
+ for arch in ${USE_ARCHS}; do
+ if ! test -f ${dist}-${arch}/*.dsc; then
+ echo "FAILED: No .dsc file for ${dist}-${arch}"
exit 1
fi
done