Commit f62ab6bb authored by Peter Maydell's avatar Peter Maydell
Browse files

Merge remote-tracking branch 'remotes/famz/tags/for-upstream' into staging



Docker testing and shippable patches

Hi Peter,

These are testing and build automation patches:

- Shippable.com powered CI config
- Docker cross build
- Fixes and MAINTAINERS tweaks.

# gpg: Signature made Fri 24 Feb 2017 06:31:10 GMT
# gpg:                using RSA key 0xCA35624C6A9171C6
# gpg: Good signature from "Fam Zheng <famz@redhat.com>"
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 5003 7CB7 9706 0F76 F021  AD56 CA35 624C 6A91 71C6

* remotes/famz/tags/for-upstream:
  docker: Install python2 explicitly in docker image
  MAINTAINERS: merge Build and test automation with Docker tests
  .shippable.yml: new CI provider
  new: debian docker targets for cross-compiling
  tests/docker: add basic user mapping support

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parents d7941f4e a8f159d4
Loading
Loading
Loading
Loading

.shippable.yml

0 → 100644
+19 −0
Original line number Diff line number Diff line
language: c
env:
  matrix:
    - IMAGE=debian-armhf-cross
      TARGET_LIST=arm-softmmu,arm-linux-user
    - IMAGE=debian-arm64-cross
      TARGET_LIST=aarch64-softmmu,aarch64-linux-user
build:
  pre_ci:
    - make docker-image-${IMAGE}
  pre_ci_boot:
    image_name: qemu
    image_tag: ${IMAGE}
    pull: false
    options: "-e HOME=/root"
  ci:
    - unset CC
    - ./configure ${QEMU_CONFIGURE_OPTS} --target-list=${TARGET_LIST}
    - make -j2
+6 −7
Original line number Diff line number Diff line
@@ -1800,9 +1800,14 @@ F: docs/block-replication.txt
Build and test automation
-------------------------
M: Alex Bennée <alex.bennee@linaro.org>
M: Fam Zheng <famz@redhat.com>
L: qemu-devel@nongnu.org
S: Supported
S: Maintained
F: .travis.yml
F: .shippable.yml
F: tests/docker/
W: https://travis-ci.org/qemu/qemu
W: http://patchew.org/QEMU/

Documentation
-------------
@@ -1811,9 +1816,3 @@ M: Daniel P. Berrange <berrange@redhat.com>
S: Odd Fixes
F: docs/build-system.txt
Docker testing
--------------
Docker based testing framework and cases
M: Fam Zheng <famz@redhat.com>
S: Maintained
F: tests/docker/
+6 −0
Original line number Diff line number Diff line
@@ -50,9 +50,14 @@ docker-image-%: $(DOCKER_FILES_DIR)/%.docker
	$(call quiet-command,\
		$(SRC_PATH)/tests/docker/docker.py build qemu:$* $< \
		$(if $V,,--quiet) $(if $(NOCACHE),--no-cache) \
		$(if $(NOUSER),,--add-current-user) \
		$(if $(EXECUTABLE),--include-executable=$(EXECUTABLE)),\
		"BUILD","$*")

# Enforce dependancies for composite images
docker-image-debian-armhf-cross: docker-image-debian
docker-image-debian-arm64-cross: docker-image-debian

# Expand all the pre-requistes for each docker image and test combination
$(foreach i,$(DOCKER_IMAGES), \
	$(foreach t,$(DOCKER_TESTS) $(DOCKER_TOOLS), \
@@ -99,6 +104,7 @@ docker:
	@echo '                         (default is 1)'
	@echo '    DEBUG=1              Stop and drop to shell in the created container'
	@echo '                         before running the command.'
	@echo '    NOUSER               Define to disable adding current user to containers passwd.'
	@echo '    NOCACHE=1            Ignore cache when build images.'
	@echo '    EXECUTABLE=<path>    Include executable in image.'

+1 −1
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ build_qemu()
    config_opts="--enable-werror \
                 ${TARGET_LIST:+--target-list=${TARGET_LIST}} \
                 --prefix=$PWD/install \
                 $EXTRA_CONFIGURE_OPTS \
                 $QEMU_CONFIGURE_OPTS $EXTRA_CONFIGURE_OPTS \
                 $@"
    echo "Configure options:"
    echo $config_opts
+14 −2
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import signal
from tarfile import TarFile, TarInfo
from StringIO import StringIO
from shutil import copy, rmtree
from pwd import getpwuid


DEVNULL = open(os.devnull, 'wb')
@@ -149,13 +150,21 @@ class Docker(object):
        labels = json.loads(resp)[0]["Config"].get("Labels", {})
        return labels.get("com.qemu.dockerfile-checksum", "")

    def build_image(self, tag, docker_dir, dockerfile, quiet=True, argv=None):
    def build_image(self, tag, docker_dir, dockerfile,
                    quiet=True, user=False, argv=None):
        if argv == None:
            argv = []

        tmp_df = tempfile.NamedTemporaryFile(dir=docker_dir, suffix=".docker")
        tmp_df.write(dockerfile)

        if user:
            uid = os.getuid()
            uname = getpwuid(uid).pw_name
            tmp_df.write("\n")
            tmp_df.write("RUN id %s 2>/dev/null || useradd -u %d -U %s" %
                         (uname, uid, uname))

        tmp_df.write("\n")
        tmp_df.write("LABEL com.qemu.dockerfile-checksum=%s" %
                     _text_checksum(dockerfile))
@@ -225,6 +234,9 @@ class BuildCommand(SubCommand):
                            help="""Specify a binary that will be copied to the
                            container together with all its dependent
                            libraries""")
        parser.add_argument("--add-current-user", "-u", dest="user",
                            action="store_true",
                            help="Add the current user to image's passwd")
        parser.add_argument("tag",
                            help="Image Tag")
        parser.add_argument("dockerfile",
@@ -261,7 +273,7 @@ class BuildCommand(SubCommand):
                                       docker_dir)

            dkr.build_image(tag, docker_dir, dockerfile,
                            quiet=args.quiet, argv=argv)
                            quiet=args.quiet, user=args.user, argv=argv)

            rmtree(docker_dir)

Loading