Symptom: `gcloud functions deploy` fails with "Build failed" and a buildpacks error. The function never gets a revision.

Cause: the build step could not turn your source into a runnable container. Almost always one of: entry point mismatch, unsupported runtime, or source packaging problems.

Confirm:
1. Read the build logs fully: `gcloud functions logs read` or the Cloud Build log link in the error. The actual error is usually lines up from the bottom, not the summary line.
2. Entry point: does --entry-point exactly match the exported function name in your code? Case-sensitive. This is the top cause.
3. Runtime: is --runtime still supported? Old runtimes are decommissioned on a schedule; a deploy that worked six months ago can fail today on runtime alone.
4. Source dir: is --source pointing at the right directory? Does it contain the dependency manifest (package.json, requirements.txt, go.mod)? A missing manifest gives dependency-resolution failures.

Fix:
- Entry point mismatch: correct the flag or the export name so they match.
- Runtime: move to a supported runtime and retest locally first.
- Bloated source: check .gcloudignore excludes what should be excluded; huge uploads time out or pick up wrong files.
- Dependency errors: pin versions in the manifest; unpinned installs break when upstream releases.

Do not redeploy unchanged source hoping the build "recovers". Builds are deterministic; the same input fails the same way.

Verify: the build log shows a successful build and push, then the function revision becomes active and the trigger works.