5 Usage: docker-build.sh [OPTIONS]
27 echo "$dist not supported"
38 for dist in ${DISTS}; do
39 test -f build/$TYPE/$dist && sudo rm -fr build/$TYPE/$dist
41 cp -a deb-src build/$TYPE/$dist
42 cp ${ID_DEB_BUILD}/in-docker-deb.sh build/$TYPE/$dist
51 for dist in ${DISTS}; do
53 echo "FROM $TYPE:$dist" >Dockerfile
54 echo "ENV DEBIAN_FRONTEND noninteractive" >>Dockerfile
55 echo 'RUN apt-get update && apt-get -q install -y wget devscripts equivs' >>Dockerfile
56 echo 'RUN wget -q -O - http://ftp.indexdata.dk/debian/indexdata.asc|apt-key add -' >>Dockerfile
57 echo "RUN echo \"deb http://ftp.indexdata.dk/$TYPE $dist main\" >/etc/apt/sources.list.d/indexdata.list" >>Dockerfile
58 docker build -t indexdata-build-$TYPE:$dist .
59 echo -n "$TYPE $dist "
60 docker run --rm -v "$PWD:/build" -w /build/$PRODUCT-$VERSION indexdata-build-$TYPE:$dist ../in-docker-deb.sh >log 2>&1
61 if test $? -eq 0; then
64 echo "Fail. Inspect build/$TYPE/$dist/log"
72 ID_DEB_BUILD=`cd $D0; pwd`
74 UPLOAD_HOST=${UPLOAD_HOST:=ftp.indexdata.dk}
75 UPLOAD_PATH=${UPLOAD_PATH:=/home/ftp/pub}
77 while test $# -gt 0; do
79 -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
104 if test -f IDMETA; then
107 echo "IDMETA missing"
110 if test "$DEBIAN_DIST_A" -o "$UBUNTU_DIST_A" -o "$CENTOS_DIST_A"; then
111 DEBIAN_DIST=$DEBIAN_DIST_A
112 UBUNTU_DIST=$UBUNTU_DIST_A
113 CENTOS_DIST=$CENTOS_DIST_A
116 if test "$CENTOS_DIST"; then
117 RNAME=`awk '/Name:/ {print $2}' *.spec`
118 if test "$NAME" -a "$NAME" != "$RNAME"; then
119 echo "NAME in IDMETA ($NAME) does not match RPM spec NAME ($RNAME)"
128 if test "$DEBIAN_DIST" -o "$UBUNTU_DIST"; then
130 DNAME=`awk '/Source:/ {print $2}' debian/control`
131 if test "$NAME" -a "$NAME" != "$DNAME"; then
132 echo "NAME in IDMETA ($NAME) does not match debian/control ($DNAME)"
140 TAR=${PRODUCT}-${VERSION}.tar.gz
141 if test ! -f "$TAR"; then
142 echo "tar $TAR missing"
147 UPLOAD_URI=${UPLOAD_HOST}:${UPLOAD_PATH}/${PRODUCT}
148 echo "Uploading to ${UPLOAD_URI}"
150 for dist in ${CENTOS_DIST}; do
153 test $F = "5" && F=5.5
154 ssh ${UPLOAD_HOST} "mkdir -p ${UPLOAD_PATH}/${PRODUCT}/redhat/centos/$F/RPMS"
155 ssh ${UPLOAD_HOST} "mkdir -p ${UPLOAD_PATH}/${PRODUCT}/redhat/centos/$F/SRPMS"
156 scp -r build/centos/$dist/rpmbuild/RPMS ${UPLOAD_URI}/redhat/centos/$F
157 scp -r build/centos/$dist/rpmbuild/SRPMS ${UPLOAD_URI}/redhat/centos/$F
159 if ! ssh ${UPLOAD_HOST} "sudo -n /home/indexdata/proj/git-tools/update-archive/update-yum-archive.sh" >yum-update.log 2>&1; then
160 echo "update-yum-archive.sh failed; inspect yum-update.log"
165 if test -n "${DEBIAN_DIST}"; then
166 for dist in ${DEBIAN_DIST}; do
167 ssh ${UPLOAD_HOST} "mkdir -p ${UPLOAD_PATH}/${PRODUCT}/debian/${dist}"
168 if ! scp build/debian/${dist}/*_${VERSION}* ${UPLOAD_URI}/debian/${dist}; then
169 echo "Upload failed for $dist"
174 if test -n "${UBUNTU_DIST}"; then
175 for dist in ${UBUNTU_DIST}; do
176 ssh ${UPLOAD_HOST} "mkdir -p ${UPLOAD_PATH}/${PRODUCT}/ubuntu/${dist}"
177 if ! scp build/ubuntu/${dist}/*_${VERSION}* ${UPLOAD_URI}/ubuntu/${dist}; then
178 echo "Upload failed for $dist"
183 if ! ssh ${UPLOAD_HOST} "sudo -n /home/indexdata/proj/git-tools/update-archive/update-archive.sh --ubuntu=\"${UBUNTU_DIST}\" --debian=\"${DEBIAN_DIST}\""; then
184 echo "update-archive.sh failed"
188 echo "Upload successful - we hope"
193 for dist in ${CENTOS_DIST}; do
194 test -d build/centos/$dist && sudo rm -fr build/centos/$dist
195 mkdir -p build/centos/$dist/rpmbuild
196 mkdir -p build/centos/$dist/rpmbuild/BUILD
197 mkdir -p build/centos/$dist/rpmbuild/BUILDROOT
198 mkdir -p build/centos/$dist/rpmbuild/RPMS/noarch
199 mkdir -p build/centos/$dist/rpmbuild/RPMS/x86_64
200 mkdir -p build/centos/$dist/rpmbuild/SOURCES
201 mkdir -p build/centos/$dist/rpmbuild/SPECS
202 mkdir -p build/centos/$dist/rpmbuild/SRPMS
203 cp ${TAR} build/centos/$dist/rpmbuild/SOURCES
205 cp ${SPEC} build/centos/$dist/rpmbuild/SPECS
206 cp IDMETA build/centos/$dist/rpmbuild
207 cp ${ID_DEB_BUILD}/in-docker-rpm.sh build/centos/$dist
213 MKDEBSRC=${ID_DEB_BUILD}/id-mk-deb-src.sh
214 if test ! -x $MKDEBSRC; then
215 echo "$MKDEBSRC not found"
218 if ! ${ID_DEB_BUILD}/id-mk-deb-changelog.sh; then
219 echo "id-mk-deb-changelog.sh failed"
222 if ! ${MKDEBSRC}; then
223 echo "id-mk-deb-src.sh failed"
227 if test -f "$f"; then
232 if test -z "$DSC"; then
233 echo "${DSC} does not exist"
237 if test "${DEBIAN_DIST}"; then
238 prepare_deb debian "${DEBIAN_DIST}"
240 if test "${UBUNTU_DIST}"; then
241 prepare_deb ubuntu "${UBUNTU_DIST}"
244 if test "${CENTOS_DIST}"; then
245 for dist in ${CENTOS_DIST}; do
249 test $F = "5" && F=5.5
250 cd build/centos/$dist
251 echo "FROM centos:$D" >Dockerfile
252 echo "RUN yum install -y wget yum-utils redhat-rpm-config rpm-build gcc gcc-c++ make" >>Dockerfile
253 echo "RUN rpm --import http://ftp.indexdata.com/pub/yum/centos/$F/RPM-GPG-KEY-indexdata" >>Dockerfile
254 echo "RUN wget -q http://ftp.indexdata.com/pub/yum/centos/$F/indexdata.repo -P /etc/yum.repos.d/" >>Dockerfile
255 echo 'ENTRYPOINT ["/bin/sh", "-c"]' >>Dockerfile
256 docker build -t indexdata-build-centos:$D .
258 docker run --rm -v "$PWD:/build" -w /build/rpmbuild indexdata-build-centos:$D ../in-docker-rpm.sh >log 2>&1
259 if test $? -eq 0; then
262 echo "Fail. Inspect build/centos/$dist/log"
268 if test "${DEBIAN_DIST}"; then
269 run_deb debian "${DEBIAN_DIST}"
271 if test "${UBUNTU_DIST}"; then
272 run_deb ubuntu "${UBUNTU_DIST}"