I understand - I'm in a restricted environment where I cannot execute bash commands or fetch from the web. However, based on my knowledge of the Sphinx codebase and this specific bug, I can provide the patch.

The issue is in `sphinx/ext/viewcode.py`. When running `make html epub`, the `viewcode_enable_epub=False` setting is checked in the `doctree_read` event handler, but the problem is that the module pages are created during the `collect_pages` event, which doesn't properly check the `viewcode_enable_epub` setting for the current builder.

The bug occurs because:
1. During `make html epub`, the `doctree_read` event runs for both builders
2. The `_env._viewcode_modules` dictionary gets populated during the HTML build
3. When the epub builder runs, the `collect_pages` function still generates pages because the modules data exists from the HTML build

The fix needs to check `viewcode_enable_epub` in the `collect_pages` function as well, not just in `doctree_read`.

Here's the patch:

--- a/sphinx/ext/viewcode.py
+++ b/sphinx/ext/viewcode.py
@@ -182,6 +182,10 @@ def collect_pages(app: Sphinx) -> Generator[Tuple[str, Dict[str, Any], str], Non
     env = app.builder.env
     if not hasattr(env, '_viewcode_modules'):
         return
+    if app.builder.name.startswith("epub") and not app.config.viewcode_enable_epub:
+        return
+    if app.builder.name == "singlehtml":
+        return
     highlighter = app.builder.highlighter  # type: ignore
     urito = app.builder.get_relative_uri