Skip to content

Fix rebuild issue: disable dep file check for now! #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: wavewave/20241101
Choose a base branch
from

Conversation

wavewave
Copy link
Collaborator

@wavewave wavewave commented Feb 6, 2025

No description provided.

wavewave pushed a commit that referenced this pull request Apr 12, 2025
Summary:
# Context

App targets that contain app extension targets need to set up explicit target dependencies on the app extension targets.

This is similar to D60223003, where we set up target dependencies for UI tests, so we can reuse much of the infrastructure from there.

Here's a diff of our Xcode project before and after manually adding the target dependency in the f2-with-extensions project spec: https://www.internalfb.com/phabricator/paste/view/P1724920080?view=diff

 ---

So we need to add 2 things for each app extension target in the project:

## 1. A PBXContainerItemProxy

```
/* Begin PBXContainerItemProxy section */
		8F4F81192D51C2DF00E9EC84 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 2D699AA517DD0EA4E6F454A2 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = FF2546F571E94DE085D0A99B;
			remoteInfo = FocusPlaygroundShareExtension;
		};
/* End PBXContainerItemProxy section */
```

Needs:
1.  PBXProject's reference
2. App extension target's PBXNativeTarget's name and reference

## 2. PBXTargetDependency
```
/* Begin PBXTargetDependency section */
		8F4F811A2D51C2DF00E9EC84 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = FF2546F571E94DE085D0A99B /* FocusPlaygroundShareExtension */;
			targetProxy = 8F4F81192D51C2DF00E9EC84 /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */
```
Needs:
1. PBXContainerItemProxy's reference (Get from #1)
2. App extension target's reference

 ---

## Add all of the app extension PBXTargetDependency identifiers to the containing app's dependency list:

```
		738F5F018A4B4BF20629BF02 /* FocusPlayground */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 6A55E7FA57E7AAB88FF7C0E1 /* Build configuration list for PBXNativeTarget "FocusPlayground" */;
			buildPhases = (
				D243AE6F52E0F92791974A8D /* Buck Prebuild */,
				0579C1CFF2E1E6055656AEAB /* Buck Build */,
			);
			buildRules = (
			);
			dependencies = (
+				8F4F811A2D51C2DF00E9EC84 /* PBXTargetDependency */,
			);
			name = FocusPlayground;
			productName = FocusPlayground;
			productReference = 7A5EBA4A826A7828EEA9F8C3 /* FocusPlayground.app */;
			productType = "com.apple.product-type.application";
		};
```

Needs:
1. All app extension PBXTargetDependency references (Get from facebook#2)

 ---

Much like in D60223003, we'll need to generate the PBXContainerItemProxy and PBXTargetDependency objects in the aggregate stage, because only then will we know all the different targets being generated and be able to understand the relationships between them.

For generating the list of dependencies, we'll need to pass through a list of app extension dependencies from the app bundle and generate the references in the partial target generation. This does mean at some stage we'll need to filter the list of app extension to only those targets *currently being focused*.

# This Diff

In xcode-data, get the full set of app extension dependencies and add them to the [xcode-data] output. We explicitly want the `raw_target()` of the configured dependency because inter-target dependencies are a per-target concern, not a per configured_target concern.

Differential Revision: D69201882

fbshipit-source-id: 467138d970d3727d4831bc5d8c623d93f8e442d1
wavewave pushed a commit that referenced this pull request Apr 12, 2025
…ependency generation

Summary:
# Context

App targets that contain app extension targets need to set up explicit target dependencies on the app extension targets.

This is similar to D60223003, where we set up target dependencies for UI tests, so we can reuse much of the infrastructure from there.

Here's a diff of our Xcode project before and after manually adding the target dependency in the f2-with-extensions project spec: https://www.internalfb.com/phabricator/paste/view/P1724920080?view=diff

 ---

So we need to add 2 things for each app extension target in the project:

## 1. A PBXContainerItemProxy

```
/* Begin PBXContainerItemProxy section */
		8F4F81192D51C2DF00E9EC84 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 2D699AA517DD0EA4E6F454A2 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = FF2546F571E94DE085D0A99B;
			remoteInfo = FocusPlaygroundShareExtension;
		};
/* End PBXContainerItemProxy section */
```

Needs:
1.  PBXProject's reference
2. App extension target's PBXNativeTarget's name and reference

## 2. PBXTargetDependency
```
/* Begin PBXTargetDependency section */
		8F4F811A2D51C2DF00E9EC84 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = FF2546F571E94DE085D0A99B /* FocusPlaygroundShareExtension */;
			targetProxy = 8F4F81192D51C2DF00E9EC84 /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */
```
Needs:
1. PBXContainerItemProxy's reference (Get from #1)
2. App extension target's reference

 ---

## Add all of the app extension PBXTargetDependency identifiers to the containing app's dependency list:

```
		738F5F018A4B4BF20629BF02 /* FocusPlayground */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 6A55E7FA57E7AAB88FF7C0E1 /* Build configuration list for PBXNativeTarget "FocusPlayground" */;
			buildPhases = (
				D243AE6F52E0F92791974A8D /* Buck Prebuild */,
				0579C1CFF2E1E6055656AEAB /* Buck Build */,
			);
			buildRules = (
			);
			dependencies = (
+				8F4F811A2D51C2DF00E9EC84 /* PBXTargetDependency */,
			);
			name = FocusPlayground;
			productName = FocusPlayground;
			productReference = 7A5EBA4A826A7828EEA9F8C3 /* FocusPlayground.app */;
			productType = "com.apple.product-type.application";
		};
```

Needs:
1. All app extension PBXTargetDependency references (Get from facebook#2)

 ---

Much like in D60223003, we'll need to generate the PBXContainerItemProxy and PBXTargetDependency objects in the aggregate stage, because only then will we know all the different targets being generated and be able to understand the relationships between them.

For generating the list of dependencies, we'll need to pass through a list of app extension dependencies from the app bundle and generate the references in the partial target generation. This does mean at some stage we'll need to filter the list of app extension to only those targets *currently being focused*.

# This Diff

Not all app extension dependencies are necessarily going to be focused, so we don't want to generate an app extension dependency reference to an app extension that isn't going to actually be a target in the Xcode project (and therefore won't generate a PBXTargetDependency/PBXContainerItemProxy in the project file to resolve the reference).

Differential Revision: D69339302

fbshipit-source-id: 4b1859f4a524b0fca4b0d489aa48db9532ece22d
9999years pushed a commit that referenced this pull request Apr 28, 2025
Summary:
This will inject a specific list test command (when the configs are present) for generating the list test comand for android robolectric tests.

The next diff will fully test this e2e.

Notable configs:
`-c testinfra.build_codesense`

If true we will build the codesense binary (for development)
if not true we will use the dotslash version

 ---
`-c testinfra.codesense_static_listing`
If true we will inject the above RunInfo and use it in the robolectric.bzl
If not true we will not have this injected and the existing path will be used

## Rollout plan
For phase #1 we will create shadow runs for the robolectric continuous runs and inject the config `-c testinfra.codesense_static_listing` for those shadow runs. We can then compare between both runs and ensure the same tests were discovered.

After we have parity and all of the targets that won't support this (e.g., Parametrized tests)  we can move to a label based opt-out.

Reviewed By: jselbo

Differential Revision: D73158309

fbshipit-source-id: 179d6a8866c05123a29be0aaf32804afcb305a08
9999years pushed a commit that referenced this pull request May 1, 2025
Summary:
As part of Buck2 Error Customization Authors, we are doing two things:

1. better-categorizing errors that pop-up in Apple so that we can better lever the new `.message` property on `ActionSubError` which enables you to inline things like links to wikis.
2. Add help so that engineers can get wikis at their desk.

Looking at buck2's error categorization dashboard: https://fburl.com/unidash/symtoxim

`apple_compilation_failure` is the #1 at Meta, and that's because it's just an amalgamation of any errors. I chatted offline with williamtwilson + mzlee and I think it makes more sense to declare bankruptcy on this...

- it's too vague to inject a helpful message.
- it causing over-aggregation on the dashboards.
- I'm not sure anyone is looking at it.

Reviewed By: benb

Differential Revision: D73878564

fbshipit-source-id: 02fc29d9a661bd33747981d03dcae96096c54b73
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant