def setup(self, links=None, force=False, only_links=False):
if not links:<EOL><INDENT>links = []<EOL><DEDENT>if only_links:<EOL><INDENT>logger.info("<STR_LIT>")<EOL>for link in links:<EOL><INDENT>self.check_call('<STR_LIT>' % {<EOL>'<STR_LIT>': escape_queue(self.queue),<EOL>'<STR_LIT>': escape_queue(link)})<EOL><DEDENT>return<EOL><DEDENT>queue, depth = self._resolve_queue(self.queue)<EOL>if queue is not None or depth > <NUM_LIT:0>:<EOL><INDENT>if force:<EOL><INDENT>if queue is None:<EOL><INDENT>logger.info("<STR_LIT>")<EOL><DEDENT>elif depth > <NUM_LIT:0>:<EOL><INDENT>logger.info("<STR_LIT>", queue)<EOL><DEDENT>else:<EOL><INDENT>logger.info("<STR_LIT>")<EOL><DEDENT>self.check_call('<STR_LIT>' % escape_queue(self.queue))<EOL><DEDENT>else:<EOL><INDENT>if queue is not None and depth > <NUM_LIT:0>:<EOL><INDENT>raise QueueExists("<STR_LIT>"<EOL>"<STR_LIT>" % queue)<EOL><DEDENT>elif depth > <NUM_LIT:0>:<EOL><INDENT>raise QueueExists("<STR_LIT>"<EOL>"<STR_LIT>")<EOL><DEDENT>else:<EOL><INDENT>raise QueueExists("<STR_LIT>"<EOL>"<STR_LIT>")<EOL><DEDENT><DEDENT><DEDENT>queue = self._setup()<EOL>for link in links:<EOL><INDENT>self.check_call('<STR_LIT>' % {<EOL>'<STR_LIT>': escape_queue(queue),<EOL>'<STR_LIT>': escape_queue(link)})<EOL><DEDENT>
Installs the runtime at the target location.

        This will not replace an existing installation, unless `force` is True.

        After installation, creates links to this installation at the specified
        locations.