fix: Resolving symlinks when updating relative paths in template #3764
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Which issue(s) does this change fix?
No issue was created.
Why is this change necessary?
Running
sam build
against a template that is in a symlinked directory results in incorrect relative paths in the generated template. (See additional context below)How does it address the issue?
This change resolves symlinks in the
original_root
andnew_root
before updating relative paths in the generated template at the end of a build.What side effects does this change have?
None.
Mandatory Checklist
PRs will only be reviewed after checklist is complete
make pr
passesmake update-reproducible-reqs
if dependencies were changedBy submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
Additional Context
Given the project structure:
When the project is built via
sam build -t build/cdk.out/Application.template.json
, inapp_builder.py
absolute paths are constructed by resolving all symlinks and then made relative as seen here. Before the template is written, the relative file paths are updated to be relative to anew_root
, however neither thenew_root
nor theoriginal_root
are resolved to accommodate symlinks. This results in an incorrect code path andsam local invoke
fails to mount the source.