Input/Output paths on `.framework` paths are not detected as dirty (new build system only)

Originator:dnkoutso
Number:rdar://45285000 Date Originated:10/15/18
Status:Duplicate of 41126633 Resolved:No
Product:iOS Product Version:
Classification:Bug Reproducible:Always
 
Area:
Something not on this list

Summary:
If a script phase includes input/output paths that point to a `.framework` making changes to said framework will not cause the script phase to run again due to the fact that the folder is no longer considered "dirty". This is despite the fact that the binary inside the `.framework` has actually changed.

Updating the script phase to use the binary path directly works but this means that if Resources (or anything else) changes within the `.framework` folder it will not cause the script phase to be executed.

Steps to Reproduce:
Open Example/FooBar.xcworkspace build and run and see "Hello world!" on the log output.

Change FooBar.swift to print something else "Hello World 2!" build and run again and you will see "Hello World" instead.

Expected Results:
Changes to files that belong to a framework should cause script phases to be re-executed or Apple to provide suggestion on which files to monitor.

Actual Results:
Script phase does not re-execute and is instead skipped.

Version/Build:
Xcode 10

Configuration:
New Build System

NOTE: Old build system works correctly.
NOTE 2: The project was setup with CocoaPods but does not require any CocoaPods command to run. It is only used to demonstrate the issue faster but this issue occurs without CocoaPods at all.

Comments

Same also applies for .bundle input and output paths.


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!