Skip to content

Conversation

@edmorley
Copy link
Member

@edmorley edmorley commented Nov 14, 2025

On Honeycomb I've seen cases of builds failing due to a pre/post-compile hook having deleted the buildpack's internal build data file - typically as part of the user trying to clean up the build cache.

This file is required for the buildpack to function correctly, so deleting it isn't supported. However, we can show a clearer error message.

Before:

-----> Running bin/post_compile hook
       + rm -rf /tmp/cache
jq: error: Could not open file /tmp/cache/build-data/python.json: No such file or directory
jq: error: Could not open file /tmp/cache/build-data/python.json: No such file or directory

 !     Internal Error: An unhandled buildpack error occurred.
 !
 !     An unhandled error occurred while executing the command:
 !     jq --exit-status --arg key "${key}" "${jq_args[@]}" '. + { ($key): ($value) }' "${BUILD_DATA_FILE}"
 !
 !     If this issue persists, please open a support ticket or file
 !     an issue on the buildpack's GitHub repository:
 !     https://help.heroku.com/
 !     https://github.com/heroku/heroku-buildpack-python/issues
 !
 !     Stack trace:
 !     build_data::_set @ /tmp/buildpack/lib/build_data.sh:109
 !     build_data::set_raw @ /tmp/buildpack/lib/build_data.sh:76
 !     build_data::set_duration @ /tmp/buildpack/lib/build_data.sh:60
 !     hooks::run_hook @ /tmp/buildpack/lib/hooks.sh:37
 !     main @ ./bin/compile:289

jq: error: Could not open file /tmp/cache/build-data/python.json: No such file or directory
jq: error: Could not open file /tmp/cache/build-data/python.json: No such file or directory

 !     Internal Error: An unhandled buildpack error occurred.
 !
 !     An unhandled error occurred while executing the command:
 !     new_data_file_contents="$(jq --exit-status --arg key "${key}" "${jq_args[@]}" '. + { ($key): ($value) }' "${BUILD_DATA_FILE}")"
 !
 !     If this issue persists, please open a support ticket or file
 !     an issue on the buildpack's GitHub repository:
 !     https://help.heroku.com/
 !     https://github.com/heroku/heroku-buildpack-python/issues
 !
 !     Stack trace:
 !     build_data::_set @ /tmp/buildpack/lib/build_data.sh:109
 !     build_data::set_raw @ /tmp/buildpack/lib/build_data.sh:76
 !     build_data::set_duration @ /tmp/buildpack/lib/build_data.sh:60
 !     hooks::run_hook @ /tmp/buildpack/lib/hooks.sh:37
 !     main @ ./bin/compile:289

jq: error: Could not open file /tmp/cache/build-data/python.json: No such file or directory

After:

-----> Running bin/post_compile hook
       + rm -rf /tmp/cache

 !     Error: The buildpack's build data file has been deleted.
 !
 !     The Python buildpack's build data file can't be found:
 !     /tmp/cache/build-data/python.json
 !
 !     This file is required for the buildpack to work correctly,
 !     and so you must not delete it when removing files from the
 !     build cache or /tmp directories.

Lastly, we also now use --exit-status in more places to prevent invalid empty build data files from being silently ignored.

GUS-W-20220731.

@edmorley edmorley self-assigned this Nov 14, 2025
On Honeycomb I've seen cases of builds failing due to a pre/post-compile
hook having deleted the buildpacks internal build data file - typically
as part of the user trying to clean up the build cache.

This file is required for the buildpack to function correctly, so
deleting it isn't supported. However, we can show a clearer error
message.

Before:

```
-----> Running bin/post_compile hook
       + rm -rf /tmp/cache
jq: error: Could not open file /tmp/cache/build-data/python.json: No such file or directory
jq: error: Could not open file /tmp/cache/build-data/python.json: No such file or directory

 !     Internal Error: An unhandled buildpack error occurred.
 !
 !     An unhandled error occurred while executing the command:
 !     jq --exit-status --arg key "${key}" "${jq_args[@]}" '. + { ($key): ($value) }' "${BUILD_DATA_FILE}"
 !
 !     If this issue persists, please open a support ticket or file
 !     an issue on the buildpack's GitHub repository:
 !     https://help.heroku.com/
 !     https://github.com/heroku/heroku-buildpack-python/issues
 !
 !     Stack trace:
 !     build_data::_set @ /tmp/buildpack/lib/build_data.sh:109
 !     build_data::set_raw @ /tmp/buildpack/lib/build_data.sh:76
 !     build_data::set_duration @ /tmp/buildpack/lib/build_data.sh:60
 !     hooks::run_hook @ /tmp/buildpack/lib/hooks.sh:37
 !     main @ ./bin/compile:289

jq: error: Could not open file /tmp/cache/build-data/python.json: No such file or directory
jq: error: Could not open file /tmp/cache/build-data/python.json: No such file or directory

 !     Internal Error: An unhandled buildpack error occurred.
 !
 !     An unhandled error occurred while executing the command:
 !     new_data_file_contents="$(jq --exit-status --arg key "${key}" "${jq_args[@]}" '. + { ($key): ($value) }' "${BUILD_DATA_FILE}")"
 !
 !     If this issue persists, please open a support ticket or file
 !     an issue on the buildpack's GitHub repository:
 !     https://help.heroku.com/
 !     https://github.com/heroku/heroku-buildpack-python/issues
 !
 !     Stack trace:
 !     build_data::_set @ /tmp/buildpack/lib/build_data.sh:109
 !     build_data::set_raw @ /tmp/buildpack/lib/build_data.sh:76
 !     build_data::set_duration @ /tmp/buildpack/lib/build_data.sh:60
 !     hooks::run_hook @ /tmp/buildpack/lib/hooks.sh:37
 !     main @ ./bin/compile:289

jq: error: Could not open file /tmp/cache/build-data/python.json: No such file or directory
```

After:

```
-----> Running bin/post_compile hook
       + rm -rf /tmp/cache

 !     Error: The buildpack's build data file has been deleted.
 !
 !     The Python buildpack's build data file can't be found:
 !     /tmp/cache/build-data/python.json
 !
 !     This file is required for the buildpack to work correctly,
 !     and so you must not delete it when removing files from the
 !     build cache or /tmp directories.
```

Lastly, we also now use `--exit-status` in more places to prevent
invalid empty build data files from being silently ignored.

GUS-W-20220731.
@edmorley edmorley force-pushed the build-data-set-error-handling branch from 515b5dd to 0321510 Compare November 14, 2025 14:10
@edmorley edmorley marked this pull request as ready for review November 14, 2025 14:14
@edmorley edmorley requested a review from a team as a code owner November 14, 2025 14:14
@edmorley edmorley merged commit b732e6f into main Nov 14, 2025
6 checks passed
@edmorley edmorley deleted the build-data-set-error-handling branch November 14, 2025 14:48
@heroku-linguist heroku-linguist bot mentioned this pull request Nov 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants