X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=id-deb-build%2Fid-pbuild.sh;h=e72f05260992df4620195f3aa8ea59ee436d2331;hb=f23a522439343470ed9e0df49d4d1efe222b3e44;hp=8c76b9e6f648d9394df2e83c7162c1d886912409;hpb=62940f2aa7112e76b06a04ce3a91d2b5a6c8bdb6;p=git-tools-moved-to-github.git diff --git a/id-deb-build/id-pbuild.sh b/id-deb-build/id-pbuild.sh index 8c76b9e..e72f052 100755 --- a/id-deb-build/id-pbuild.sh +++ b/id-deb-build/id-pbuild.sh @@ -7,12 +7,19 @@ Options: [--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]*=//'` ;; @@ -28,9 +35,15 @@ while test $# -gt 0; do --centos=*) CENTOS_DIST_A=$optarg ;; + --concurrency=*) + concurrency=$optarg + ;; --upload) upload=true ;; + --update=*) + update=$optarg + ;; -*) do_help=yes ;; @@ -58,7 +71,6 @@ if test "$DEBIAN_DIST_A" -o "$UBUNTU_DIST_A" -o "$CENTOS_DIST_A"; then 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` @@ -79,6 +91,7 @@ if test "$CENTOS_DIST"; then 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 @@ -86,6 +99,12 @@ if test "$CENTOS_DIST"; then 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 @@ -95,7 +114,7 @@ if $upload; then 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) @@ -212,33 +231,30 @@ if $debian; then 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