code: def run_doxygen():
      """Run the doxygen make command in the designated folder."""
      curdir = os.path.normpath(os.path.abspath(os.path.curdir))
      if os.path.exists(TMP_DIR):
          print(f"Delete directory {TMP_DIR}")
          shutil.rmtree(TMP_DIR)
      else:
          print(f"Create directory {TMP_DIR}")
          os.mkdir(TMP_DIR)
      try:
          os.chdir(PROJECT_ROOT)
          if not os.path.exists(DOX_DIR):
              os.mkdir(DOX_DIR)
          os.chdir(os.path.join(PROJECT_ROOT, DOX_DIR))
          print(
              "Build doxygen at {}".format(
                  os.path.join(PROJECT_ROOT, DOX_DIR, "doc_doxygen")
              )
          )
          subprocess.check_call(
              ["cmake", "..", "-DBUILD_C_DOC=ON", "-GNinja"]
          )
          subprocess.check_call(["ninja", "doc_doxygen"])
  
          src = os.path.join(
              PROJECT_ROOT, DOX_DIR, "doc_doxygen", "html"
          )
          dest = os.path.join(TMP_DIR, "dev")
          print(f"Copy directory {src} -> {dest}")
          shutil.copytree(src, dest)
      except OSError as e:
          sys.stderr.write("doxygen execution failed: %s" % e)
      finally:
          os.chdir(curdir)
  
file_path: xgboost/doc/conf.py
imports: import os
  import re
  import shutil
  import subprocess
  import sys
  import tarfile
  import urllib.request
  import warnings
  from urllib.error import HTTPError
  from sh.contrib import git
  import xgboost
label_desc: Use image node_id 1 for calling a global function with example usage: run_doxygen() without return types