Options:
[--debian=distros]
[--ubuntu=distros]
+ [--verbose]
[--upload]
EOF
exit $1
}
-set -x
+
+
+centos_map()
+{
+ dist=$1
+ case $dist in
+ centos6)
+ F=6;;
+ centos7)
+ F=7;;
+ *)
+ echo "$dist not supported"
+ exit 1
+ esac
+ return $F
+}
+
+prepare_deb()
+{
+ TYPE=$1
+ DISTS=$2
+
+ for dist in ${DISTS}; do
+ test -d build/$TYPE/$dist && sudo rm -fr build/$TYPE/$dist
+ mkdir -p build/$TYPE
+ cp -a deb-src build/$TYPE/$dist
+ cp ${ID_DEB_BUILD}/in-docker-deb.sh build/$TYPE/$dist
+ done
+}
+
+run_deb()
+{
+ TYPE=$1
+ DISTS=$2
+
+ for dist in ${DISTS}; do
+ cd build/$TYPE/$dist
+ echo "FROM $TYPE:$dist" >Dockerfile
+ echo "ENV DEBIAN_FRONTEND noninteractive" >>Dockerfile
+ echo 'RUN apt-get update && apt-get -q install -y wget devscripts equivs' >>Dockerfile
+ echo 'RUN wget -q -O - http://ftp.indexdata.dk/debian/indexdata.asc|apt-key add -' >>Dockerfile
+ echo "RUN echo \"deb http://ftp.indexdata.dk/$TYPE $dist main\" >/etc/apt/sources.list.d/indexdata.list" >>Dockerfile
+ docker build -t indexdata-build-$TYPE:$dist .
+ echo -n "$TYPE $dist "
+ docker run --rm -v "$PWD:/build" -w /build/$PRODUCT-$VERSION indexdata-build-$TYPE:$dist ../in-docker-deb.sh >log 2>&1
+ if test $? -eq 0; then
+ echo Done
+ else
+ echo "Fail. Inspect build/$TYPE/$dist/log"
+ exit 1
+ fi
+ cd ../../..
+ done
+}
+
D0=`dirname $0`
ID_DEB_BUILD=`cd $D0; pwd`
--centos=*)
CENTOS_DIST_A=$optarg
;;
- --concurrency=*)
- concurrency=$optarg
- ;;
--upload)
upload=true
;;
+ --verbose)
+ set -x
+ ;;
-*)
do_help=yes
;;
fi
TAR=${PRODUCT}-${VERSION}.tar.gz
+if test ! -f "$TAR"; then
+ echo "tar $TAR missing"
+ exit 1
+fi
if $upload; then
UPLOAD_URI=${UPLOAD_HOST}:${UPLOAD_PATH}/${PRODUCT}
echo "Uploading to ${UPLOAD_URI}"
+ if $centos; then
+ for dist in ${CENTOS_DIST}; do
+ centos_map $dist
+ F=$?
+ test $F = "5" && F=5.5
+ ssh ${UPLOAD_HOST} "mkdir -p ${UPLOAD_PATH}/${PRODUCT}/redhat/centos/$F/RPMS"
+ ssh ${UPLOAD_HOST} "mkdir -p ${UPLOAD_PATH}/${PRODUCT}/redhat/centos/$F/SRPMS"
+ scp -r build/centos/$dist/rpmbuild/RPMS ${UPLOAD_URI}/redhat/centos/$F
+ scp -r build/centos/$dist/rpmbuild/SRPMS ${UPLOAD_URI}/redhat/centos/$F
+ done
+ if ! ssh ${UPLOAD_HOST} "sudo -n /home/indexdata/proj/git-tools/update-archive/update-yum-archive.sh" >yum-update.log 2>&1; then
+ echo "update-yum-archive.sh failed; inspect yum-update.log"
+ exit 1
+ fi
+ fi
if $debian; then
if test -n "${DEBIAN_DIST}"; then
for dist in ${DEBIAN_DIST}; do
ssh ${UPLOAD_HOST} "mkdir -p ${UPLOAD_PATH}/${PRODUCT}/debian/${dist}"
- if ! scp build/debian/${dist}/* ${UPLOAD_URI}/debian/${dist}; then
+ if ! scp build/debian/${dist}/*_${VERSION}* ${UPLOAD_URI}/debian/${dist}; then
echo "Upload failed for $dist"
exit 1
fi
if test -n "${UBUNTU_DIST}"; then
for dist in ${UBUNTU_DIST}; do
ssh ${UPLOAD_HOST} "mkdir -p ${UPLOAD_PATH}/${PRODUCT}/ubuntu/${dist}"
- if ! scp build/ubuntu/${dist}/* ${UPLOAD_URI}/ubuntu/${dist}; then
+ if ! scp build/ubuntu/${dist}/*_${VERSION}* ${UPLOAD_URI}/ubuntu/${dist}; then
echo "Upload failed for $dist"
exit 1
fi
fi
if $centos; then
- mkdir -p rpmbuild/BUILD
- mkdir -p rpmbuild/BUILDROOT
- mkdir -p rpmbuild/RPMS/noarch
- mkdir -p rpmbuild/RPMS/x86_64
- mkdir -p rpmbuild/SOURCES
- mkdir -p rpmbuild/SPECS
- mkdir -p rpmbuild/SRPMS
-
- echo "%_topdir /home/mock/rpmbuild" >rpmbuild/rpmmacros
- echo "%_source_filedigest_algorithm 0" >>rpmbuild/rpmmacros
- echo "%_binary_filedigest_algorithm 0" >>rpmbuild/rpmmacros
-
- cp ${ID_DEB_BUILD}/Dockerfile.mock rpmbuild
- cp ${TAR} rpmbuild/SOURCES
- SPEC=${PRODUCT}.spec
- cat ${SPEC}|sed "s/%define idmetaversion.*/%define idmetaversion ${VERSION}/" >rpmbuild/SPECS/${SPEC}
-
- if true; then
- for dist in ${CENTOS_DIST}; do
- case $dist in
- centos5)
- r=epel-5-x86_64 ;;
- centos6)
- r=epel-6-x86_64 ;;
- centos7)
- r=epel-7-x86_64 ;;
- *)
- r=$dist ;;
- esac
- echo -n "$r"
-
- rm -f rpmbuild/run.sh
- echo '#!/bin/sh' >rpmbuild/run.sh
- echo "rpmbuild -bs rpmbuild/SPECS/${SPEC}" >>rpmbuild/run.sh
- echo "/usr/bin/mock --resultdir=rpmbuild -r $r rpmbuild/SRPMS/${PRODUCT}-${VERSION}*src.rpm" >>rpmbuild/run.sh
-
- docker build -t indexdata-fedora-mock -f rpmbuild/Dockerfile.mock .
- docker run --privileged -it --rm indexdata-fedora-mock rpmbuild/run.sh
- echo "done"
- done
- fi
+ for dist in ${CENTOS_DIST}; do
+ test -d build/centos/$dist && sudo rm -fr build/centos/$dist
+ mkdir -p build/centos/$dist/rpmbuild
+ mkdir -p build/centos/$dist/rpmbuild/BUILD
+ mkdir -p build/centos/$dist/rpmbuild/BUILDROOT
+ mkdir -p build/centos/$dist/rpmbuild/RPMS/noarch
+ mkdir -p build/centos/$dist/rpmbuild/RPMS/x86_64
+ mkdir -p build/centos/$dist/rpmbuild/SOURCES
+ mkdir -p build/centos/$dist/rpmbuild/SPECS
+ mkdir -p build/centos/$dist/rpmbuild/SRPMS
+ cp ${TAR} build/centos/$dist/rpmbuild/SOURCES
+ SPEC=${PRODUCT}.spec
+ cp ${SPEC} build/centos/$dist/rpmbuild/SPECS
+ cp IDMETA build/centos/$dist/rpmbuild
+ cp ${ID_DEB_BUILD}/in-docker-rpm.sh build/centos/$dist
+ done
+
fi
+
if $debian; then
MKDEBSRC=${ID_DEB_BUILD}/id-mk-deb-src.sh
if test ! -x $MKDEBSRC; then
echo "$MKDEBSRC not found"
exit 1
fi
- cp ${ID_DEB_BUILD}/in-docker.sh .
if ! ${ID_DEB_BUILD}/id-mk-deb-changelog.sh; then
echo "id-mk-deb-changelog.sh failed"
fi
+ rm -fr deb-src
if ! ${MKDEBSRC}; then
echo "id-mk-deb-src.sh failed"
fi
echo "${DSC} does not exist"
exit 1
fi
+fi
+if test "${DEBIAN_DIST}"; then
+ prepare_deb debian "${DEBIAN_DIST}"
+fi
+if test "${UBUNTU_DIST}"; then
+ prepare_deb ubuntu "${UBUNTU_DIST}"
+fi
- if test "${DEBIAN_DIST}"; then
- for dist in ${DEBIAN_DIST}; do
- sudo rm -fr build/debian/$dist
- mkdir -p build/debian
- cp -a deb-src build/debian/$dist
- cp ${ID_DEB_BUILD}/in-docker.sh build/debian/$dist
- done
- fi
- if test "${UBUNTU_DIST}"; then
- for dist in ${UBUNTU_DIST}; do
- sudo rm -fr build/ubuntu/$dist
- mkdir -p build/ubuntu
- cp -a deb-src build/ubuntu/$dist
- cp ${ID_DEB_BUILD}/in-docker.sh build/ubuntu/$dist
- done
- fi
- if test "${DEBIAN_DIST}"; then
- for dist in ${DEBIAN_DIST}; do
- cd build/debian/$dist
- docker run -it --rm -v "$PWD:/build" -w /build/$PRODUCT-$VERSION debian:$dist ../in-docker.sh debian $dist
- cd ../../..
- done
- fi
- if test "${UBUNTU_DIST}"; then
- for dist in ${UBUNTU_DIST}; do
- cd build/ubuntu/$dist
- docker run -it --rm -v "$PWD:/build" -w /build/$PRODUCT-$VERSION ubuntu:$dist ../in-docker.sh ubuntu $dist
- cd ../../..
- done
- fi
+if test "${CENTOS_DIST}"; then
+ for dist in ${CENTOS_DIST}; do
+ centos_map $dist
+ D=$?
+ F=$D
+ test $F = "5" && F=5.5
+ cd build/centos/$dist
+ echo "FROM centos:$D" >Dockerfile
+ echo "RUN yum install -y wget yum-utils redhat-rpm-config rpm-build gcc gcc-c++ make" >>Dockerfile
+ echo "RUN rpm --import http://ftp.indexdata.com/pub/yum/centos/$F/RPM-GPG-KEY-indexdata" >>Dockerfile
+ echo "RUN wget -q http://ftp.indexdata.com/pub/yum/centos/$F/indexdata.repo -P /etc/yum.repos.d/" >>Dockerfile
+ echo 'ENTRYPOINT ["/bin/sh", "-c"]' >>Dockerfile
+ docker build -t indexdata-build-centos:$D .
+ echo -n "$dist "
+ docker run --rm -v "$PWD:/build" -w /build/rpmbuild indexdata-build-centos:$D ../in-docker-rpm.sh >log 2>&1
+ if test $? -eq 0; then
+ echo Done
+ else
+ echo "Fail. Inspect build/centos/$dist/log"
+ exit 1
+ fi
+ cd ../../..
+ done
+fi
+if test "${DEBIAN_DIST}"; then
+ run_deb debian "${DEBIAN_DIST}"
+fi
+if test "${UBUNTU_DIST}"; then
+ run_deb ubuntu "${UBUNTU_DIST}"
fi
# Local Variables: