Hi Iwase-san, On Tue, 8 Nov 2016 09:51:18 +0900 Iwase Yusuke <[email protected]> wrote:
> Hi Kakuma-San, > > Thank you for your reply! > > > On 2016年11月07日 21:50, fumihiko kakuma wrote: > > Hi Iwase-san, > > > > I am sorry for the delay in my reply. > > > > On Mon, 7 Nov 2016 16:08:09 +0900 > > Iwase Yusuke <[email protected]> wrote: > > > >> Hi Kakuma-San, > >> > >> Could you check my answer as following? > >> This patch will fix the Travis-CI build error of Ryu upstream. > >> > > > > I also was checking it and I found that it is caused by the fact that > > tinyrpc is not installed. > > Yes, the embedded tinyrpc has been deleted in the latest Ryu, > but docker_base.py does not install it yet. > > > > I answered in inline. > > > >> Thanks, > >> Iwase > >> > >> > >> On 2016年11月06日 14:28, Iwase Yusuke wrote: > >>> Hi, Kakuma-San, > >>> > >>> > >>> On 2016年11月04日 06:52, fumihiko kakuma wrote: > >>>> Hi Iwase-san, > >>>> > >>>> On Wed, 2 Nov 2016 16:51:35 +0900 > >>>> IWASE Yusuke <[email protected]> wrote: > >>>> > >>>>> Signed-off-by: IWASE Yusuke <[email protected]> > >>>>> --- > >>>>> ryu/tests/integrated/common/docker_base.py | 23 +++++++++++++---------- > >>>>> 1 file changed, 13 insertions(+), 10 deletions(-) > >>>>> > >>>>> diff --git a/ryu/tests/integrated/common/docker_base.py > >>>>> b/ryu/tests/integrated/common/docker_base.py > >>>>> index 13fe223..fd3ceef 100644 > >>>>> --- a/ryu/tests/integrated/common/docker_base.py > >>>>> +++ b/ryu/tests/integrated/common/docker_base.py > >>>>> @@ -196,25 +196,28 @@ class DockerImage(object): > >>>>> def create_ryu(self, tagname='ryu', image=None, check_exist=False): > >>>>> if check_exist and self.exist(tagname): > >>>>> return tagname > >>>>> - workdir = TEST_BASE_DIR + '/' + tagname > >>>>> + workdir = '%s/%s' % (TEST_BASE_DIR, tagname) > >>>>> workdir_ctn = '/root/osrg/ryu' > >>>>> - pkges = 'telnet tcpdump iproute2 ' > >>>>> - pkges += 'gcc python-pip python-dev libffi-dev libssl-dev' > >>>>> + pkges = 'telnet tcpdump iproute2' > >>>>> + pkges += ' gcc python-dev libffi-dev libssl-dev' > >>>>> + pkges += ' libxml2-dev libxslt1-dev zlib1g-dev' > >>>>> if image: > >>>>> use_image = image > >>>>> else: > >>>>> use_image = self.baseimage > >>>>> c = CmdBuffer() > >>>>> - c << 'FROM ' + use_image > >>>>> + c << 'FROM %s' % use_image > >>>>> c << 'RUN apt-get update' > >>>>> - c << 'RUN apt-get install -qy --no-install-recommends ' + pkges > >>>>> - c << 'RUN pip install -U six paramiko msgpack-rpc-python' > >>>>> - c << 'ADD ryu ' + workdir_ctn > >>>>> - install = 'RUN cd %s && pip install -r tools/pip-requires ' % > >>>>> workdir_ctn > >>>>> - install += '&& python setup.py install' > >>>>> + c << 'RUN apt-get install -qy --no-install-recommends %s' % > >>>>> pkges > >>>>> + c << 'ADD ryu %s' % workdir_ctn > >>>>> + install = 'RUN cd %s' % workdir_ctn > >>>>> + install += ' && pip install' > >>>>> + install += ' -r tools/pip-requires' > >>>>> + install += ' -r tools/test-requires' > >>>> > >>>> Why do we need the test-requires to run a ryu app on a container? > >>>> I think that we may need a pip-requires which some packages are added or > >>>> an another required file. > >>> > >>> test-requires also includes the optional requirements (e.g. paramiko, > >>> tinyrpc) > >>> to run BGPSpeaker and OF-Config, for example. > >>> > >>> http://ryu.readthedocs.io/en/latest/getting_started.html#optional-requirements > >>> > >>> So, when we want to test the other feature on osrg/ryu based Docker > >>> container, > >>> we must have installed them, I guess. > > > > Yes, but I didn't like to install test tool(mock, nose and etc). > > I agree with you. > I don't prefer to installing unnecessary packages too. > > Well, I would like to separate test-requires into two files("test > requirements" and "optional requirements"). > Oh, it's greate! > # Removes "optional requirements" from test-requires. > $ cat tools/test-requires > coverage > mock > nose > pep8 > pylint > formencode > > # Create a new file for "optional requirements". > $ cat tools/optional-requires > lxml; platform_python_implementation != 'PyPy' # OF-Config > lxml==3.4.0; platform_python_implementation == 'PyPy' > cryptography==1.5 > paramiko # NETCONF, BGP speaker > tinyrpc # RPC > ncclient # OF-Config > > > > > >>> I prefer to separating the optional requirements from "test-requires", > >>> though... > >>> > > > > But I am ok in using test-requires if it makes many works. > > > >>>> > >>>> And the above Dockerfile seems to faile in a case not to use > >>>> osrg/ryu image. But we may not need that case. > >>> > >>> You mean the above does not have "python-pip", for example? > > > > > > Yes. And I get the following error while I build ryu image file. > > > > $ cat /tmp/ctn_docker/bgp/ryu/Dockerfile > > FROM ubuntu:14.04.5 > > RUN apt-get update > > RUN apt-get install -qy --no-install-recommends telnet tcpdump iproute2 gcc > > python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev zlib1g-dev > > python-pip > > ADD ryu /root/osrg/ryu > > RUN cd /root/osrg/ryu && pip install -r tools/pip-requires -r > > tools/test-requires && python setup.py install > > $ sudo docker build -t ryu /tmp/ctn_docker/bgp/ryu > > Sending build context to Docker daemon 179.3 MB > > Step 1 : FROM ubuntu:14.04.5 > > ---> f2d8ce9fa988 > > Step 2 : RUN apt-get update > > ---> Running in 90d7f0bb0ef3 > > Ign http://archive.ubuntu.com trusty InRelease > > Get:1 http://archive.ubuntu.com trusty-updates InRelease [65.9 kB] > > > > ... > > > > Removing intermediate container 384b0764eeaf > > Step 4 : ADD ryu /root/osrg/ryu > > ---> ee57cfffe5d9 > > Removing intermediate container 1adb83f316e9 > > Step 5 : RUN cd /root/osrg/ryu && pip install -r tools/pip-requires -r > > tools/test-requires && python setup.py install > > ---> Running in 9de973780048 > > Exception: > > Traceback (most recent call last): > > File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in > > main > > status = self.run(options, args) > > File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line > > 262, in run > > for req in parse_requirements(filename, finder=finder, options=options, > > session=session): > > File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1632, in > > parse_requirements > > req = InstallRequirement.from_line(line, comes_from, > > prereleases=getattr(options, "pre", None)) > > File "/usr/lib/python2.7/dist-packages/pip/req.py", line 173, in from_line > > return cls(req, comes_from, url=url, prereleases=prereleases) > > File "/usr/lib/python2.7/dist-packages/pip/req.py", line 71, in __init__ > > req = pkg_resources.Requirement.parse(req) > > File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2667, in > > parse > > reqs = list(parse_requirements(s)) > > File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2605, in > > parse_requirements > > line, p, specs = scan_list(VERSION,LINE_END,line,p,(1,2),"version spec") > > File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2573, in > > scan_list > > raise ValueError("Expected "+item_name+" in",line,"at",line[p:]) > > ValueError: ('Expected version spec in', "lxml; > > platform_python_implementation != 'PyPy'", 'at', "; > > platform_python_implementation != 'PyPy'") > > > > Storing debug log for failure in /root/.pip/pip.log > > The command '/bin/sh -c cd /root/osrg/ryu && pip install -r > > tools/pip-requires -r tools/test-requires && python setup.py install' > > returned a non-zero code: 2 > > $ > > The above error show the pip version is too old, I guess. > The packaged python-pip on Ubuntu 14.04 might be old to use > the environment marker in the requirements file. > https://www.python.org/dev/peps/pep-0345/#environment-markers > Thank you for your explanation. > > > > >>> Well, is there any case or request for using the other base image? > >>> If any, I guess we can use the Ubuntu based image only... > >>> > > > > In the default DockerImage class uses ubuntu 14.04.5. > > I think that there may be a case try multiple ubuntu version and > > the latest ubuntu version and use debian. > > But I don't know whether we try those cases. > > > > BTW how about having a separate method like the following? > > > > def create_ryu(self, tagname='ryu', image=None, check_exist=False): > > ... > > > > def create_ryu_osrg(self, tagname='ryu', image='osrg/ryu', > > check_exist=False): > > ... > > Hummm... I don't want to separate method for the specific case... > I don't like that. But I thought that in case osrg/ryu and create from the begining we may need a different procedure. If we have the optional requirements file, we will not need separate method. > With Ubuntu 16.04, the packaged python-pip version is enough to > use the environment marker, so this problem will not occur. > But, if we should consider the multiple Ubuntu version, > I will update my patch to include python-pip. Pehaps when the latest ubuntu(for example 18.04) is released, we will face the same problem. I think that we will can use get-pip.py # apt-get install curl # curl -k -f --retry 6 -o get-pip.py https://bootstrap.pypa.io/get-pip.py # python get-pip.py # pip --version pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7) # > > Thanks, > Iwase > > > > > > > > Thank you, > > fumihiko kakuma > > > > > >>> Thanks, > >>> Iwase > >>> > >>>> > >>>>> + install += ' && python setup.py install' > >>>>> c << install > >>>>> > >>>>> - self.cmd.sudo('rm -rf ' + workdir) > >>>>> + self.cmd.sudo('rm -rf %s' % workdir) > >>>>> self.cmd.execute('mkdir -p ' + workdir) > >>>>> self.cmd.execute("echo '%s' > %s/Dockerfile" % (str(c), > >>>>> workdir)) > >>>>> self.cmd.execute('cp -r ../ryu %s/' % workdir) > >>>>> -- > >>>>> 2.7.4 > >>>>> > >>>>> > >>>>> ------------------------------------------------------------------------------ > >>>>> Developer Access Program for Intel Xeon Phi Processors > >>>>> Access to Intel Xeon Phi processor-based developer platforms. > >>>>> With one year of Intel Parallel Studio XE. > >>>>> Training and support from Colfax. > >>>>> Order your platform today. http://sdm.link/xeonphi > >>>>> _______________________________________________ > >>>>> Ryu-devel mailing list > >>>>> [email protected] > >>>>> https://lists.sourceforge.net/lists/listinfo/ryu-devel > >>>> > > -- fumihiko kakuma <[email protected]> ------------------------------------------------------------------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today. http://sdm.link/xeonphi _______________________________________________ Ryu-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ryu-devel
