Re: [Qemu-devel] [PATCH v3 10/13] docker: Add travis tool

2016-03-16 Thread Alex Bennée

Fam Zheng  writes:

> On Wed, 03/16 09:09, Alex Bennée wrote:
>>
>> Fam Zheng  writes:
>>
>> > On Fri, 03/11 16:14, Alex Bennée wrote:
>> >>
>> >> Fam Zheng  writes:
>> >>
>> >> > The script is not named test-travis.sh so it won't run with "make
>> >> > docker-run", because it can take too long.
>> >> >
>> >> > Run it with "make docker-run-travis.sh@ubuntu".
>> >>
>> >> 16:08 alex@zen/x86_64  [qemu.git/review/docker-v3] >make 
>> >> docker-run-travis.sh@ubuntu
>> >> ARCHIVE qemu.tgz
>> >> COPY RUNNER
>> >> RUN travis.sh in ubuntu
>> >> ./run: line 49: /tmp/qemu-test/src/tests/docker/travis.sh: No such file 
>> >> or directory
>> >
>> > Will update the commit message.
>>
>> I had a bit of a further play with this while trying to help with the
>> recent Travis breakage.
>
> Did this help?

Daniel fixed it before I could get something up and running.

>
>> I realised we need to be clearer about what this
>> does. It's not the same as running on travis, just a way of iterating
>> through the travis build matrix on whatever image you happen to be on.
>
> Right. I have no idea how to precisely replicate travis environment, and I
> ignored python version, packages etc for simplicity, only the command matrix
> was simulated. But are there any major differences you are noticing? At least
> we are also on Ubuntu Trusty, the same as:
>
> https://docs.travis-ci.com/user/ci-environment/

No the current container based CI environment is Precise (Trusty is in
beta). I tried creating a precise image from scratch but apt got
confused about having both i386 and amd64 packages in package lists and
I didn't get the bottom of it before upstream was fixed.

>
> Fam
>
>>
>> It would be nice to have a travis image for local debug but that seems
>> to be harder to do than I thought. I couldn't find any such images on
>> the hub.


--
Alex Bennée



Re: [Qemu-devel] [PATCH v3 10/13] docker: Add travis tool

2016-03-16 Thread Fam Zheng
On Wed, 03/16 09:09, Alex Bennée wrote:
> 
> Fam Zheng  writes:
> 
> > On Fri, 03/11 16:14, Alex Bennée wrote:
> >>
> >> Fam Zheng  writes:
> >>
> >> > The script is not named test-travis.sh so it won't run with "make
> >> > docker-run", because it can take too long.
> >> >
> >> > Run it with "make docker-run-travis.sh@ubuntu".
> >>
> >> 16:08 alex@zen/x86_64  [qemu.git/review/docker-v3] >make 
> >> docker-run-travis.sh@ubuntu
> >> ARCHIVE qemu.tgz
> >> COPY RUNNER
> >> RUN travis.sh in ubuntu
> >> ./run: line 49: /tmp/qemu-test/src/tests/docker/travis.sh: No such file or 
> >> directory
> >
> > Will update the commit message.
> 
> I had a bit of a further play with this while trying to help with the
> recent Travis breakage.

Did this help?

> I realised we need to be clearer about what this
> does. It's not the same as running on travis, just a way of iterating
> through the travis build matrix on whatever image you happen to be on.

Right. I have no idea how to precisely replicate travis environment, and I
ignored python version, packages etc for simplicity, only the command matrix
was simulated. But are there any major differences you are noticing? At least
we are also on Ubuntu Trusty, the same as:

https://docs.travis-ci.com/user/ci-environment/

Fam

> 
> It would be nice to have a travis image for local debug but that seems
> to be harder to do than I thought. I couldn't find any such images on
> the hub.





Re: [Qemu-devel] [PATCH v3 10/13] docker: Add travis tool

2016-03-16 Thread Alex Bennée

Fam Zheng  writes:

> On Fri, 03/11 16:14, Alex Bennée wrote:
>>
>> Fam Zheng  writes:
>>
>> > The script is not named test-travis.sh so it won't run with "make
>> > docker-run", because it can take too long.
>> >
>> > Run it with "make docker-run-travis.sh@ubuntu".
>>
>> 16:08 alex@zen/x86_64  [qemu.git/review/docker-v3] >make 
>> docker-run-travis.sh@ubuntu
>> ARCHIVE qemu.tgz
>> COPY RUNNER
>> RUN travis.sh in ubuntu
>> ./run: line 49: /tmp/qemu-test/src/tests/docker/travis.sh: No such file or 
>> directory
>
> Will update the commit message.

I had a bit of a further play with this while trying to help with the
recent Travis breakage. I realised we need to be clearer about what this
does. It's not the same as running on travis, just a way of iterating
through the travis build matrix on whatever image you happen to be on.

It would be nice to have a travis image for local debug but that seems
to be harder to do than I thought. I couldn't find any such images on
the hub.


>
> Fam


--
Alex Bennée



Re: [Qemu-devel] [PATCH v3 10/13] docker: Add travis tool

2016-03-15 Thread Fam Zheng
On Fri, 03/11 16:14, Alex Bennée wrote:
> 
> Fam Zheng  writes:
> 
> > The script is not named test-travis.sh so it won't run with "make
> > docker-run", because it can take too long.
> >
> > Run it with "make docker-run-travis.sh@ubuntu".
> 
> 16:08 alex@zen/x86_64  [qemu.git/review/docker-v3] >make 
> docker-run-travis.sh@ubuntu
> ARCHIVE qemu.tgz
> COPY RUNNER
> RUN travis.sh in ubuntu
> ./run: line 49: /tmp/qemu-test/src/tests/docker/travis.sh: No such file or 
> directory

Will update the commit message.

Fam



Re: [Qemu-devel] [PATCH v3 10/13] docker: Add travis tool

2016-03-11 Thread Alex Bennée

Fam Zheng  writes:

> The script is not named test-travis.sh so it won't run with "make
> docker-run", because it can take too long.
>
> Run it with "make docker-run-travis.sh@ubuntu".

16:08 alex@zen/x86_64  [qemu.git/review/docker-v3] >make 
docker-run-travis.sh@ubuntu
ARCHIVE qemu.tgz
COPY RUNNER
RUN travis.sh in ubuntu
./run: line 49: /tmp/qemu-test/src/tests/docker/travis.sh: No such file or 
directory

>
> Signed-off-by: Fam Zheng 
> ---
>  tests/docker/travis| 21 +
>  tests/docker/travis.py | 48 
>  2 files changed, 69 insertions(+)
>  create mode 100755 tests/docker/travis
>  create mode 100755 tests/docker/travis.py
>
> diff --git a/tests/docker/travis b/tests/docker/travis
> new file mode 100755
> index 000..d345393
> --- /dev/null
> +++ b/tests/docker/travis
> @@ -0,0 +1,21 @@
> +#!/bin/bash -e
> +#
> +# Mimic a travis testing matrix
> +#
> +# Copyright (c) 2016 Red Hat Inc.
> +#
> +# Authors:
> +#  Fam Zheng 
> +#
> +# This work is licensed under the terms of the GNU GPL, version 2
> +# or (at your option) any later version. See the COPYING file in
> +# the top-level directory.
> +
> +. common.rc
> +
> +requires pyyaml
> +cmdfile=/tmp/travis_cmd_list.sh
> +$QEMU_SRC/tests/docker/travis.py $QEMU_SRC/.travis.yml > $cmdfile
> +chmod +x $cmdfile
> +cd "$QEMU_SRC"
> +$cmdfile
> diff --git a/tests/docker/travis.py b/tests/docker/travis.py
> new file mode 100755
> index 000..8dcc964
> --- /dev/null
> +++ b/tests/docker/travis.py
> @@ -0,0 +1,48 @@
> +#!/usr/bin/env python
> +#
> +# Travis YAML config parser
> +#
> +# Copyright (c) 2016 Red Hat Inc.
> +#
> +# Authors:
> +#  Fam Zheng 
> +#
> +# This work is licensed under the terms of the GNU GPL, version 2
> +# or (at your option) any later version. See the COPYING file in
> +# the top-level directory.
> +
> +import sys
> +import yaml
> +import itertools
> +
> +def load_yaml(fname):
> +return yaml.load(open(fname, "r").read())
> +
> +def conf_iter(conf):
> +def env_to_list(env):
> +return env if isinstance(env, list) else [env]
> +global_env = conf["env"]["global"]
> +for entry in conf["matrix"]["include"]:
> +yield {"env": global_env + env_to_list(entry["env"]),
> +   "compiler": entry["compiler"]}
> +for entry in itertools.product(conf["compiler"],
> +   conf["env"]["matrix"]):
> +yield {"env": global_env + env_to_list(entry[1]),
> +   "compiler": entry[0]}
> +
> +def main():
> +if len(sys.argv) < 2:
> +sys.stderr.write("Usage: %s \n" % sys.argv[0])
> +return 1
> +conf = load_yaml(sys.argv[1])
> +for config in conf_iter(conf):
> +print "("
> +print "\n".join(config["env"])
> +print "alias cc=" + config["compiler"]
> +print "\n".join(conf["before_script"])
> +print "\n".join(conf["script"])
> +print ")"
> +return 0
> +
> +if __name__ == "__main__":
> +sys.exit(main())


--
Alex Bennée



[Qemu-devel] [PATCH v3 10/13] docker: Add travis tool

2016-03-04 Thread Fam Zheng
The script is not named test-travis.sh so it won't run with "make
docker-run", because it can take too long.

Run it with "make docker-run-travis.sh@ubuntu".

Signed-off-by: Fam Zheng 
---
 tests/docker/travis| 21 +
 tests/docker/travis.py | 48 
 2 files changed, 69 insertions(+)
 create mode 100755 tests/docker/travis
 create mode 100755 tests/docker/travis.py

diff --git a/tests/docker/travis b/tests/docker/travis
new file mode 100755
index 000..d345393
--- /dev/null
+++ b/tests/docker/travis
@@ -0,0 +1,21 @@
+#!/bin/bash -e
+#
+# Mimic a travis testing matrix
+#
+# Copyright (c) 2016 Red Hat Inc.
+#
+# Authors:
+#  Fam Zheng 
+#
+# This work is licensed under the terms of the GNU GPL, version 2
+# or (at your option) any later version. See the COPYING file in
+# the top-level directory.
+
+. common.rc
+
+requires pyyaml
+cmdfile=/tmp/travis_cmd_list.sh
+$QEMU_SRC/tests/docker/travis.py $QEMU_SRC/.travis.yml > $cmdfile
+chmod +x $cmdfile
+cd "$QEMU_SRC"
+$cmdfile
diff --git a/tests/docker/travis.py b/tests/docker/travis.py
new file mode 100755
index 000..8dcc964
--- /dev/null
+++ b/tests/docker/travis.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+#
+# Travis YAML config parser
+#
+# Copyright (c) 2016 Red Hat Inc.
+#
+# Authors:
+#  Fam Zheng 
+#
+# This work is licensed under the terms of the GNU GPL, version 2
+# or (at your option) any later version. See the COPYING file in
+# the top-level directory.
+
+import sys
+import yaml
+import itertools
+
+def load_yaml(fname):
+return yaml.load(open(fname, "r").read())
+
+def conf_iter(conf):
+def env_to_list(env):
+return env if isinstance(env, list) else [env]
+global_env = conf["env"]["global"]
+for entry in conf["matrix"]["include"]:
+yield {"env": global_env + env_to_list(entry["env"]),
+   "compiler": entry["compiler"]}
+for entry in itertools.product(conf["compiler"],
+   conf["env"]["matrix"]):
+yield {"env": global_env + env_to_list(entry[1]),
+   "compiler": entry[0]}
+
+def main():
+if len(sys.argv) < 2:
+sys.stderr.write("Usage: %s \n" % sys.argv[0])
+return 1
+conf = load_yaml(sys.argv[1])
+for config in conf_iter(conf):
+print "("
+print "\n".join(config["env"])
+print "alias cc=" + config["compiler"]
+print "\n".join(conf["before_script"])
+print "\n".join(conf["script"])
+print ")"
+return 0
+
+if __name__ == "__main__":
+sys.exit(main())
-- 
2.4.3