Ejemplo n.º 1
0
  def create_scaladoc_command(self, classpath, gendir, *targets):
    sources = []
    for target in targets:
      sources.extend(target.sources_relative_to_buildroot())
      # TODO(Tejal Desai): pantsbuild/pants/65: Remove java_sources attribute for ScalaLibrary
      # A '.scala' owning target may not have java_sources, eg: junit_tests
      if hasattr(target, 'java_sources'):
        for java_target in target.java_sources:
          sources.extend(java_target.sources_relative_to_buildroot())

    if not sources:
      return None

    scala_platform = ScalaPlatform.global_instance()
    tool_classpath = [cp_entry.path for cp_entry in scala_platform.compiler_classpath_entries(
      self.context.products, self.context._scheduler)]

    args = ['-usejavacp',
            '-classpath', ':'.join(classpath),
            '-d', gendir]

    args.extend(self.args)

    args.extend(sources)

    java_executor = SubprocessExecutor(DistributionLocator.cached())
    runner = java_executor.runner(jvm_options=self.jvm_options,
                                  classpath=tool_classpath,
                                  main='scala.tools.nsc.ScalaDoc',
                                  args=args)
    return runner.command
Ejemplo n.º 2
0
  def create_scaladoc_command(self, classpath, gendir, *targets):
    sources = []
    for target in targets:
      sources.extend(target.sources_relative_to_buildroot())
      # TODO(Tejal Desai): pantsbuild/pants/65: Remove java_sources attribute for ScalaLibrary
      for java_target in target.java_sources:
        sources.extend(java_target.sources_relative_to_buildroot())

    if not sources:
      return None

    scala_platform = ScalaPlatform.global_instance()
    tool_classpath = scala_platform.compiler_classpath(self.context.products)

    args = ['-usejavacp',
            '-classpath', ':'.join(classpath),
            '-d', gendir]

    args.extend(self.args)

    args.extend(sources)

    java_executor = SubprocessExecutor()
    runner = java_executor.runner(jvm_options=self.jvm_options,
                                  classpath=tool_classpath,
                                  main='scala.tools.nsc.ScalaDoc',
                                  args=args)
    return runner.command
Ejemplo n.º 3
0
    def create_scaladoc_command(self, classpath, gendir, *targets):
        sources = []
        for target in targets:
            sources.extend(target.sources_relative_to_buildroot())
            # TODO(Tejal Desai): pantsbuild/pants/65: Remove java_sources attribute for ScalaLibrary
            # A '.scala' owning target may not have java_sources, eg: junit_tests
            if hasattr(target, 'java_sources'):
                for java_target in target.java_sources:
                    sources.extend(java_target.sources_relative_to_buildroot())

        if not sources:
            return None

        scala_platform = ScalaPlatform.global_instance()
        tool_classpath = scala_platform.compiler_classpath(
            self.context.products)

        args = ['-usejavacp', '-classpath', ':'.join(classpath), '-d', gendir]

        args.extend(self.args)

        args.extend(sources)

        java_executor = SubprocessExecutor(DistributionLocator.cached())
        runner = java_executor.runner(jvm_options=self.jvm_options,
                                      classpath=tool_classpath,
                                      main='scala.tools.nsc.ScalaDoc',
                                      args=args)
        return runner.command
Ejemplo n.º 4
0
    def create_scaladoc_command(self, classpath, gendir, *targets):
        sources = []
        for target in targets:
            sources.extend(target.sources_relative_to_buildroot())
            # TODO(Tejal Desai): pantsbuild/pants/65: Remove java_sources attribute for ScalaLibrary
            # A '.scala' owning target may not have java_sources, eg: junit_tests
            if hasattr(target, "java_sources"):
                for java_target in target.java_sources:
                    sources.extend(java_target.sources_relative_to_buildroot())

        if not sources:
            return None

        scala_platform = ScalaPlatform.global_instance()
        tool_classpath = [
            cp_entry.path
            for cp_entry in scala_platform.compiler_classpath_entries(self.context.products)
        ]

        args = ["-usejavacp", "-classpath", ":".join(classpath), "-d", gendir]

        args.extend(self.args)

        args.extend(sources)

        java_executor = SubprocessExecutor(self.preferred_jvm_distribution_for_targets(targets))
        runner = java_executor.runner(
            jvm_options=self.jvm_options,
            classpath=tool_classpath,
            main="scala.tools.nsc.ScalaDoc",
            args=args,
        )
        return runner.command
Ejemplo n.º 5
0
  def create_javadoc_command(self, classpath, gendir, *targets):
    sources = []
    for target in targets:
      sources.extend(target.sources_relative_to_buildroot())

    if not sources:
      return None

    # Without a JDK/tools.jar we have no javadoc tool and cannot proceed, so check/acquire early.
    jdk = DistributionLocator.cached(jdk=True)
    tool_classpath = jdk.find_libs(['tools.jar'])

    args = ['-quiet',
            '-encoding', 'UTF-8',
            '-notimestamp',
            '-use',
            '-Xmaxerrs', '10000', # the default is 100
            '-Xmaxwarns', '10000', # the default is 100
            '-d', gendir]

    # Always provide external linking for java API
    offlinelinks = {'http://download.oracle.com/javase/8/docs/api/'}

    def link(target):
      for jar in target.jar_dependencies:
        if jar.apidocs:
          offlinelinks.add(jar.apidocs)
    for target in targets:
      target.walk(link, lambda t: isinstance(t, (JvmTarget, JarLibrary)))

    for link in offlinelinks:
      args.extend(['-linkoffline', link, link])

    args.extend(self.args)

    javadoc_classpath_file = os.path.join(self.workdir, f'{os.path.basename(gendir)}.classpath')
    with open(javadoc_classpath_file, 'w') as f:
      f.write('-classpath ')
      f.write(':'.join(classpath))
    args.extend([f'@{javadoc_classpath_file}'])

    javadoc_sources_file = os.path.join(self.workdir, f'{os.path.basename(gendir)}.source.files')
    with open(javadoc_sources_file, 'w') as f:
      f.write('\n'.join(sources))
    args.extend([f'@{javadoc_sources_file}'])

    java_executor = SubprocessExecutor(jdk)
    runner = java_executor.runner(jvm_options=self.jvm_options,
                                  classpath=tool_classpath,
                                  main='com.sun.tools.javadoc.Main',
                                  args=args)
    return runner.command
Ejemplo n.º 6
0
  def create_javadoc_command(self, classpath, gendir, *targets):
    sources = []
    for target in targets:
      sources.extend(target.sources_relative_to_buildroot())

    if not sources:
      return None

    # Without a JDK/tools.jar we have no javadoc tool and cannot proceed, so check/acquire early.
    jdk = DistributionLocator.cached(jdk=True)
    tool_classpath = jdk.find_libs(['tools.jar'])

    args = ['-quiet',
            '-encoding', 'UTF-8',
            '-notimestamp',
            '-use',
            '-Xmaxerrs', '10000', # the default is 100
            '-Xmaxwarns', '10000', # the default is 100
            '-d', gendir]

    # Always provide external linking for java API
    offlinelinks = {'http://download.oracle.com/javase/8/docs/api/'}

    def link(target):
      for jar in target.jar_dependencies:
        if jar.apidocs:
          offlinelinks.add(jar.apidocs)
    for target in targets:
      target.walk(link, lambda t: isinstance(t, (JvmTarget, JarLibrary)))

    for link in offlinelinks:
      args.extend(['-linkoffline', link, link])

    args.extend(self.args)

    javadoc_classpath_file = os.path.join(self.workdir, '{}.classpath'.format(os.path.basename(gendir)))
    with open(javadoc_classpath_file, 'w') as f:
      f.write('-classpath ')
      f.write(':'.join(classpath))
    args.extend(['@{}'.format(javadoc_classpath_file)])

    javadoc_sources_file = os.path.join(self.workdir, '{}.source.files'.format(os.path.basename(gendir)))
    with open(javadoc_sources_file, 'w') as f:
      f.write('\n'.join(sources))
    args.extend(['@{}'.format(javadoc_sources_file)])

    java_executor = SubprocessExecutor(jdk)
    runner = java_executor.runner(jvm_options=self.jvm_options,
                                  classpath=tool_classpath,
                                  main='com.sun.tools.javadoc.Main',
                                  args=args)
    return runner.command
Ejemplo n.º 7
0
  def create_javadoc_command(self, classpath, gendir, *targets):
    sources = []
    for target in targets:
      sources.extend(target.sources_relative_to_buildroot())

    if not sources:
      return None

    # Without a JDK/tools.jar we have no javadoc tool and cannot proceed, so check/acquire early.
    jdk = DistributionLocator.cached(jdk=True)
    tool_classpath = jdk.find_libs(['tools.jar'])

    args = ['-quiet',
            '-encoding', 'UTF-8',
            '-notimestamp',
            '-use',
            '-classpath', ':'.join(classpath),
            '-d', gendir]

    # Always provide external linking for java API
    offlinelinks = {'http://download.oracle.com/javase/6/docs/api/'}

    def link(target):
      for jar in target.jar_dependencies:
        if jar.apidocs:
          offlinelinks.add(jar.apidocs)
    for target in targets:
      target.walk(link, lambda t: t.is_jvm)

    for link in offlinelinks:
      args.extend(['-linkoffline', link, link])

    args.extend(self.args)

    args.extend(sources)

    java_executor = SubprocessExecutor(jdk)
    runner = java_executor.runner(jvm_options=self.jvm_options,
                                  classpath=tool_classpath,
                                  main='com.sun.tools.javadoc.Main',
                                  args=args)
    return runner.command
Ejemplo n.º 8
0
    def create_javadoc_command(self, classpath, gendir, *targets):
        sources = []
        for target in targets:
            sources.extend(target.sources_relative_to_buildroot())

        if not sources:
            return None

        # Without a JDK/tools.jar we have no javadoc tool and cannot proceed, so check/acquire early.
        jdk = self.preferred_jvm_distribution_for_targets(targets, jdk=True)
        tool_classpath = jdk.find_libs(["tools.jar"])

        args = [
            "-quiet",
            "-encoding",
            "UTF-8",
            "-notimestamp",
            "-use",
            "-Xmaxerrs",
            "10000",  # the default is 100
            "-Xmaxwarns",
            "10000",  # the default is 100
            "-d",
            gendir,
        ]

        # Always provide external linking for java API
        offlinelinks = {"http://download.oracle.com/javase/8/docs/api/"}

        def link(target):
            for jar in target.jar_dependencies:
                if jar.apidocs:
                    offlinelinks.add(jar.apidocs)

        for target in targets:
            target.walk(link, lambda t: isinstance(t, (JvmTarget, JarLibrary)))

        for link in offlinelinks:
            args.extend(["-linkoffline", link, link])

        args.extend(self.args)

        javadoc_classpath_file = os.path.join(
            self.workdir, f"{os.path.basename(gendir)}.classpath")
        with open(javadoc_classpath_file, "w") as f:
            f.write("-classpath ")
            f.write(":".join(classpath))
        args.extend([f"@{javadoc_classpath_file}"])

        javadoc_sources_file = os.path.join(
            self.workdir, f"{os.path.basename(gendir)}.source.files")
        with open(javadoc_sources_file, "w") as f:
            f.write("\n".join(sources))
        args.extend([f"@{javadoc_sources_file}"])

        java_executor = SubprocessExecutor(jdk)
        runner = java_executor.runner(
            jvm_options=self.jvm_options,
            classpath=tool_classpath,
            main="com.sun.tools.javadoc.Main",
            args=args,
        )
        return runner.command