Skip to content
This repository was archived by the owner on Nov 10, 2023. It is now read-only.

Commit ae2347e

Browse files
LcsmarcalLucas Marçal
andauthored
[Apple] Add support to AppClips (#2552)
* Add app clip support * Add integration test * fix target name at Integration test * fix typo * Fix bundle ProductType Co-authored-by: Lucas Marçal <lucas.marcal@ifood.com.br>
1 parent 32440f9 commit ae2347e

24 files changed

+300
-7
lines changed

src/com/facebook/buck/apple/AppleBinaryDescription.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,8 @@ private BuildRule createBundleBuildRule(
430430
swiftBuckConfig.getUseLipoThin(),
431431
cxxBuckConfig.shouldCacheStrip(),
432432
appleConfig.useEntitlementsWhenAdhocCodeSigning(),
433-
Predicates.alwaysTrue());
433+
Predicates.alwaysTrue(),
434+
Optional.empty());
434435
}
435436

436437
private BuildRule createBinary(

src/com/facebook/buck/apple/AppleBundle.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ public class AppleBundle extends AbstractBuildRule
190190
private final Duration codesignTimeout;
191191
private final BuildRuleParams buildRuleParams;
192192
private BuildableSupport.DepsSupplier depsSupplier;
193+
private final Optional<Boolean> isAppClip;
193194

194195
AppleBundle(
195196
BuildTarget buildTarget,
@@ -224,7 +225,8 @@ public class AppleBundle extends AbstractBuildRule
224225
Duration codesignTimeout,
225226
boolean copySwiftStdlibToFrameworks,
226227
boolean useLipoThin,
227-
boolean useEntitlementsWhenAdhocCodeSigning) {
228+
boolean useEntitlementsWhenAdhocCodeSigning,
229+
Optional<Boolean> isAppClip) {
228230
super(buildTarget, projectFilesystem);
229231
this.buildRuleParams = params;
230232
this.extension =
@@ -301,6 +303,7 @@ public class AppleBundle extends AbstractBuildRule
301303
this.useLipoThin = useLipoThin;
302304
this.useEntitlementsWhenAdhocCodeSigning = useEntitlementsWhenAdhocCodeSigning;
303305
this.depsSupplier = BuildableSupport.buildDepsSupplier(this, graphBuilder);
306+
this.isAppClip = isAppClip;
304307
}
305308

306309
public static String getBinaryName(BuildTarget buildTarget, Optional<String> productName) {
@@ -991,6 +994,10 @@ private ImmutableMap<String, NSObject> getInfoPlistAdditionalKeys() {
991994
return keys.build();
992995
}
993996

997+
public Boolean getIsAppClip() {
998+
return isAppClip.orElse(false);
999+
}
1000+
9941001
@Override
9951002
public boolean isTestedBy(BuildTarget testRule) {
9961003
if (tests.contains(testRule)) {

src/com/facebook/buck/apple/AppleBundleDescription.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,8 @@ public AppleBundle createBuildRule(
222222
swiftBuckConfig.getUseLipoThin(),
223223
cxxBuckConfig.shouldCacheStrip(),
224224
appleConfig.useEntitlementsWhenAdhocCodeSigning(),
225-
resourceFilter);
225+
resourceFilter,
226+
args.getIsAppClip());
226227
}
227228

228229
/**

src/com/facebook/buck/apple/AppleBundleDestination.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
public enum AppleBundleDestination {
2626
RESOURCES,
2727
FRAMEWORKS,
28+
APPCLIPS,
2829
EXECUTABLES,
2930
PLUGINS,
3031
XPCSERVICES;
@@ -43,6 +44,8 @@ public Path getPath(AppleBundleDestinations destinations) {
4344
return destinations.getResourcesPath();
4445
case EXECUTABLES:
4546
return destinations.getExecutablesPath();
47+
case APPCLIPS:
48+
return destinations.getAppClipsPath();
4649
case FRAMEWORKS:
4750
return destinations.getFrameworksPath();
4851
case PLUGINS:

src/com/facebook/buck/apple/AppleBundleDestinations.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ abstract class AppleBundleDestinations implements AddsToRuleKey {
3535
@AddToRuleKey(stringify = true)
3636
public abstract Path getExecutablesPath();
3737

38+
@AddToRuleKey(stringify = true)
39+
public abstract Path getAppClipsPath();
40+
3841
@AddToRuleKey(stringify = true)
3942
public abstract Path getFrameworksPath();
4043

@@ -62,6 +65,7 @@ abstract class AppleBundleDestinations implements AddsToRuleKey {
6265
OSX_CONTENTS_PATH,
6366
OSX_CONTENTS_PATH.resolve("Resources"),
6467
OSX_CONTENTS_PATH.resolve("MacOS"),
68+
OSX_CONTENTS_PATH,
6569
OSX_CONTENTS_PATH.resolve("Frameworks"),
6670
OSX_CONTENTS_PATH.resolve("PlugIns"),
6771
OSX_CONTENTS_PATH,
@@ -76,6 +80,7 @@ abstract class AppleBundleDestinations implements AddsToRuleKey {
7680
OSX_FRAMEWORK_CONTENTS_PATH.resolve("Resources"),
7781
OSX_FRAMEWORK_CONTENTS_PATH.resolve("Resources"),
7882
OSX_FRAMEWORK_CONTENTS_PATH,
83+
OSX_FRAMEWORK_CONTENTS_PATH,
7984
OSX_FRAMEWORK_CONTENTS_PATH.resolve("Frameworks"),
8085
OSX_FRAMEWORK_CONTENTS_PATH,
8186
OSX_FRAMEWORK_CONTENTS_PATH,
@@ -90,6 +95,7 @@ abstract class AppleBundleDestinations implements AddsToRuleKey {
9095
IOS_CONTENTS_PATH,
9196
IOS_CONTENTS_PATH,
9297
IOS_CONTENTS_PATH,
98+
IOS_CONTENTS_PATH.resolve("AppClips"),
9399
IOS_CONTENTS_PATH.resolve("Frameworks"),
94100
IOS_CONTENTS_PATH.resolve("PlugIns"),
95101
IOS_CONTENTS_PATH.resolve("Watch"),
@@ -104,6 +110,7 @@ abstract class AppleBundleDestinations implements AddsToRuleKey {
104110
IOS_FRAMEWORK_CONTENTS_PATH,
105111
IOS_FRAMEWORK_CONTENTS_PATH,
106112
IOS_FRAMEWORK_CONTENTS_PATH,
113+
IOS_FRAMEWORK_CONTENTS_PATH,
107114
IOS_FRAMEWORK_CONTENTS_PATH.resolve("Frameworks"),
108115
IOS_FRAMEWORK_CONTENTS_PATH,
109116
IOS_FRAMEWORK_CONTENTS_PATH,

src/com/facebook/buck/apple/AppleDescriptions.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -675,7 +675,8 @@ static AppleBundle createAppleBundle(
675675
boolean useLipoThin,
676676
boolean cacheStrips,
677677
boolean useEntitlementsWhenAdhocCodeSigning,
678-
Predicate<BuildTarget> filter) {
678+
Predicate<BuildTarget> filter,
679+
Optional<Boolean> isAppClip) {
679680
AppleCxxPlatform appleCxxPlatform =
680681
ApplePlatforms.getAppleCxxPlatformForBuildTarget(
681682
graphBuilder,
@@ -918,7 +919,8 @@ static AppleBundle createAppleBundle(
918919
codesignTimeout,
919920
copySwiftStdlibToFrameworks,
920921
useLipoThin,
921-
useEntitlementsWhenAdhocCodeSigning);
922+
useEntitlementsWhenAdhocCodeSigning,
923+
isAppClip);
922924
}
923925

924926
/**
@@ -1100,6 +1102,9 @@ private static ImmutableMap<SourcePath, String> collectFirstLevelAppleDependency
11001102
destinationPath = destinations.getWatchAppPath();
11011103
} else if (appleBundle.isLegacyWatchApp()) {
11021104
destinationPath = destinations.getResourcesPath();
1105+
}
1106+
else if (appleBundle.getIsAppClip()) {
1107+
destinationPath = destinations.getAppClipsPath();
11031108
} else {
11041109
destinationPath = destinations.getPlugInsPath();
11051110
}

src/com/facebook/buck/apple/AppleLibraryDescription.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,8 @@ private <A extends AbstractAppleLibraryDescriptionArg> BuildRule createFramework
467467
swiftBuckConfig.getUseLipoThin(),
468468
cxxBuckConfig.shouldCacheStrip(),
469469
appleConfig.useEntitlementsWhenAdhocCodeSigning(),
470-
Predicates.alwaysTrue());
470+
Predicates.alwaysTrue(),
471+
Optional.empty());
471472
}
472473

473474
/**

src/com/facebook/buck/apple/AppleTestDescription.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,8 @@ public BuildRule createBuildRule(
374374
swiftBuckConfig.getUseLipoThin(),
375375
cxxBuckConfig.shouldCacheStrip(),
376376
appleConfig.useEntitlementsWhenAdhocCodeSigning(),
377-
Predicates.alwaysTrue())));
377+
Predicates.alwaysTrue(),
378+
Optional.empty())));
378379

379380
Optional<SourcePath> xctool =
380381
getXctool(projectFilesystem, params, targetConfiguration, graphBuilder);

src/com/facebook/buck/apple/HasAppleBundleFields.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ public interface HasAppleBundleFields {
3131

3232
Optional<String> getXcodeProductType();
3333

34+
Optional<Boolean> getIsAppClip();
35+
3436
ImmutableMap<String, String> getInfoPlistSubstitutions();
3537

3638
@Value.Default

src/com/facebook/buck/apple/xcode/xcodeproj/PBXCopyFilesBuildPhase.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public enum Destination {
2828
WRAPPER(1),
2929
EXECUTABLES(6),
3030
RESOURCES(7),
31+
APPCLIPS(16),
3132
FRAMEWORKS(10),
3233
SHARED_FRAMEWORKS(11),
3334
SHARED_SUPPORT(12),

0 commit comments

Comments
 (0)