mkdocs-monorepo-plugin icon indicating copy to clipboard operation
mkdocs-monorepo-plugin copied to clipboard

mkdocs build failed with "No such file or directory"

Open manuzhang opened this issue 4 months ago • 3 comments

Iceberg site build, mkdocs build, failed after upgrading mkdocs-monorepo-plugin from a fork of 1.1.0 to 1.1.2 with following error


Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.13.7/x64/bin/mkdocs", line 7, in <module>
    sys.exit(cli())
             ~~~^^
  File "/opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages/click/core.py", line 1442, in __call__
    return self.main(*args, **kwargs)
           ~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages/click/core.py", line 1363, in main
    rv = self.invoke(ctx)
  File "/opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages/click/core.py", line 1830, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages/click/core.py", line 1226, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages/click/core.py", line 794, in invoke
    return callback(*args, **kwargs)
  File "/opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages/mkdocs/__main__.py", line 315, in gh_deploy_command
    build.build(cfg, dirty=not clean)
    ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages/mkdocs/commands/build.py", line 325, in build
    files.copy_static_files(dirty=dirty, inclusion=inclusion)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages/mkdocs/structure/files.py", line 122, in copy_static_files
    file.copy_file(dirty)
    ~~~~~~~~~~~~~~^^^^^^^
  File "/opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages/mkdocs/structure/files.py", line 485, in copy_file
    utils.copy_file(self.abs_src_path, output_path)
    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/site-packages/mkdocs/utils/__init__.py", line 123, in copy_file
    shutil.copyfile(source_path, output_path)
    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.13.7/x64/lib/python3.13/shutil.py", line 260, in copyfile
    with open(src, 'rb') as fsrc:
         ~~~~^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/docs_oxlrjl8_/docs/nightly/docs'

It can be resolved by reverting https://github.com/backstage/mkdocs-monorepo-plugin/pull/126

manuzhang avatar Sep 08 '25 09:09 manuzhang

After enabling DEBUG log, I find the error was thrown when copying the symlink docs/nightly/docs

DEBUG   -  Copying media file: 'docs/nightly/docs'
Traceback (most recent call last):
  File "/Users/tianlzhang/miniconda3/bin/mkdocs", line 8, in <module>
    sys.exit(cli())
  File "/Users/tianlzhang/miniconda3/lib/python3.10/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/Users/tianlzhang/miniconda3/lib/python3.10/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/Users/tianlzhang/miniconda3/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/tianlzhang/miniconda3/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/tianlzhang/miniconda3/lib/python3.10/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/Users/tianlzhang/miniconda3/lib/python3.10/site-packages/mkdocs/__main__.py", line 288, in build_command
    build.build(cfg, dirty=not clean)
  File "/Users/tianlzhang/miniconda3/lib/python3.10/site-packages/mkdocs/commands/build.py", line 325, in build
    files.copy_static_files(dirty=dirty, inclusion=inclusion)
  File "/Users/tianlzhang/miniconda3/lib/python3.10/site-packages/mkdocs/structure/files.py", line 122, in copy_static_files
    file.copy_file(dirty)
  File "/Users/tianlzhang/miniconda3/lib/python3.10/site-packages/mkdocs/structure/files.py", line 485, in copy_file
    utils.copy_file(self.abs_src_path, output_path)
  File "/Users/tianlzhang/miniconda3/lib/python3.10/site-packages/mkdocs/utils/__init__.py", line 123, in copy_file
    shutil.copyfile(source_path, output_path)
  File "/Users/tianlzhang/miniconda3/lib/python3.10/shutil.py", line 254, in copyfile
    with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: '/var/folders/pv/9kgp4f8j685fqb28n83cdb800000gq/T/docs_b52iu7n9/docs/nightly/docs'

manuzhang avatar Sep 09 '25 16:09 manuzhang

@bih could you please take a look?

manuzhang avatar Sep 10 '25 02:09 manuzhang

I'm not sure if this is the case for you, but I ran into a similar error and traced it to the inability to work with symbolic links in included docs/ directories, at least when those links point to a file outside of the included docs/ directories.

I created a separate Issue #145 , but these may be the same issue.

tleonhardt avatar Sep 15 '25 00:09 tleonhardt