Merge branch 'master' into 2857-collection-tests
[arvados.git] / docker / build_tools / Makefile
index 7fdad914c84f3ed3fa8389de730724da89ae3821..298551fa1566b9b62ce3b588a8230e5c42cbc22b 100644 (file)
@@ -3,6 +3,7 @@ all: api-image doc-image workbench-image warehouse-image sso-image
 # `make clean' removes the files generated in the build directory
 # but does not remove any docker images generated in previous builds
 clean:
+       -rm -rf build
        -rm *-image */generated/*
        -@rmdir */generated
 
@@ -19,8 +20,12 @@ realclean: clean
 
 CONFIG_RB = build_tools/config.rb
 
+BUILD = build/.buildstamp
+
 BASE_DEPS = base/Dockerfile $(BASE_GENERATED)
 
+JOBS_DEPS = jobs/Dockerfile
+
 API_DEPS = api/Dockerfile $(API_GENERATED)
 
 DOC_DEPS = doc/Dockerfile doc/apache2_vhost
@@ -79,12 +84,21 @@ SSO_GENERATED_IN = \
         sso/seeds.rb.in \
         sso/secret_token.rb.in
 
-$(BASE_GENERATED): config.yml
+$(BUILD):
+       mkdir -p build
+       rsync -rlp --exclude=docker/ --exclude='**/log/*' --exclude='**/tmp/*' \
+               --chmod=Da+rx,Fa+rX ../ build/
+       find build/ -name \*.gem -delete
+       cd build/services/fuse/ && python setup.py build
+       cd build/sdk/python/ && python setup.py build
+       cd build/sdk/cli && gem build arvados-cli.gemspec
+       cd build/sdk/ruby && gem build arvados.gemspec
+       touch build/.buildstamp
+
+$(BASE_GENERATED): config.yml $(BUILD)
        $(CONFIG_RB)
        mkdir -p base/generated
-       tar -c -z -f base/generated/arvados.tar.gz -C .. . \
-         --exclude=services/api/log/* --exclude=docker/*
-
+       tar -czf base/generated/arvados.tar.gz -C build .
 
 $(API_GENERATED): config.yml $(API_GENERATED_IN)
        $(CONFIG_RB)
@@ -106,31 +120,35 @@ DOCKER_BUILD = docker build -q
 # ============================================================
 # The main Arvados servers: api, doc, workbench, warehouse
 
-api-image: passenger-image $(API_DEPS)
+api-image: passenger-image $(BUILD) $(API_DEPS)
        mkdir -p api/generated
-       tar -c -z -f api/generated/api.tar.gz -C ../services api --exclude=api/log/*
+       tar -czf api/generated/api.tar.gz -C build/services api
        $(DOCKER_BUILD) -t arvados/api api
-       echo -n "Built at $(date)" > api-image
+       date >api-image
 
-doc-image: base-image $(DOC_DEPS)
+doc-image: base-image $(BUILD) $(DOC_DEPS)
        mkdir -p doc/generated
-       tar -c -z -f doc/generated/doc.tar.gz -C .. doc
+       tar -czf doc/generated/doc.tar.gz -C build doc
        $(DOCKER_BUILD) -t arvados/doc doc
-       echo -n "Built at $(date)" > doc-image
+       date >doc-image
 
-workbench-image: passenger-image $(WORKBENCH_DEPS)
+jobs-image: base-image $(BUILD) $(JOBS_DEPS)
+       $(DOCKER_BUILD) -t arvados/jobs jobs
+       date >jobs-image
+
+workbench-image: passenger-image $(BUILD) $(WORKBENCH_DEPS)
        mkdir -p workbench/generated
-       tar -c -z -f workbench/generated/workbench.tar.gz -C ../apps workbench
+       tar -czf workbench/generated/workbench.tar.gz -C build/apps workbench
        $(DOCKER_BUILD) -t arvados/workbench workbench
-       echo -n "Built at $(date)" > workbench-image
+       date >workbench-image
 
 warehouse-image: base-image $(WAREHOUSE_DEPS)
        $(DOCKER_BUILD) -t arvados/warehouse warehouse
-       echo -n "Built at $(date)" > warehouse-image
+       date >warehouse-image
 
 sso-image: passenger-image $(SSO_DEPS)
        $(DOCKER_BUILD) -t arvados/sso sso
-       echo -n "Built at $(date)" > sso-image
+       date >sso-image
 
 # ============================================================
 # The arvados/base image is the base Debian image plus packages
@@ -138,13 +156,12 @@ sso-image: passenger-image $(SSO_DEPS)
 
 passenger-image: base-image
        $(DOCKER_BUILD) -t arvados/passenger passenger
-       echo -n "Built at $(date)" > passenger-image
+       date >passenger-image
 
 base-image: debian-image $(BASE_DEPS)
        $(DOCKER_BUILD) -t arvados/base base
-       echo -n "Built at $(date)" > base-image
+       date >base-image
 
 debian-image:
        ./mkimage-debootstrap.sh arvados/debian wheezy ftp://ftp.us.debian.org/debian/
-       echo -n "Built at $(date)" > debian-image
-
+       date >debian-image