Skip to content

Commit 3617401

Browse files
authored
Merge branch 'XcodesOrg:main' into main
2 parents bbc3ef1 + 6cf9647 commit 3617401

11 files changed

Lines changed: 191 additions & 98 deletions

File tree

Scripts/fix_libfido2_framework.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/bin/sh
2+
3+
# Fix libfido2.framework structure for macOS validation
4+
# If this script is not run, the build will fail because xcodebuild is expecting the library in a specific structure
5+
FRAMEWORK_PATH="${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/Frameworks/libfido2.framework"
6+
7+
if [ -d "$FRAMEWORK_PATH" ] && [ -f "$FRAMEWORK_PATH/Info.plist" ] && [ ! -d "$FRAMEWORK_PATH/Versions" ]; then
8+
echo "Fixing libfido2.framework bundle structure..."
9+
10+
# Create proper bundle structure
11+
mkdir -p "$FRAMEWORK_PATH/Versions/A/Resources"
12+
13+
# Move files to proper locations
14+
mv "$FRAMEWORK_PATH/Info.plist" "$FRAMEWORK_PATH/Versions/A/Resources/"
15+
mv "$FRAMEWORK_PATH/libfido2" "$FRAMEWORK_PATH/Versions/A/"
16+
if [ -f "$FRAMEWORK_PATH/LICENSE" ]; then
17+
mv "$FRAMEWORK_PATH/LICENSE" "$FRAMEWORK_PATH/Versions/A/"
18+
fi
19+
20+
# Create symbolic links
21+
ln -sf A "$FRAMEWORK_PATH/Versions/Current"
22+
ln -sf Versions/Current/libfido2 "$FRAMEWORK_PATH/libfido2"
23+
ln -sf Versions/Current/Resources "$FRAMEWORK_PATH/Resources"
24+
25+
echo "libfido2.framework structure fixed"
26+
fi

Xcodes.xcodeproj/project.pbxproj

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@
139139
E8DA461125FAF7FB002E85EF /* NotificationsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8DA461025FAF7FB002E85EF /* NotificationsView.swift */; };
140140
E8E98A9025D8631800EC89A0 /* InstallationStepRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAFBC3FF259AC17F00E2A3D8 /* InstallationStepRowView.swift */; };
141141
E8E98A9625D863D700EC89A0 /* InstallationStepDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8E98A9525D863D700EC89A0 /* InstallationStepDetailView.swift */; };
142+
E8EEAD1D2E79174F00BE67E8 /* XcodesIcon.icon in Resources */ = {isa = PBXBuildFile; fileRef = E8EEAD1C2E79174F00BE67E8 /* XcodesIcon.icon */; };
142143
E8F44A1E296B4CD7002D6592 /* Path in Frameworks */ = {isa = PBXBuildFile; productRef = E8F44A1D296B4CD7002D6592 /* Path */; };
143144
E8FA00542B5B109800769CE0 /* com.xcodesorg.xcodesapp.Helper in Copy Helper */ = {isa = PBXBuildFile; fileRef = CA9FF8AE2595967A00E47BAF /* com.xcodesorg.xcodesapp.Helper */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
144145
E8FD5727291EE4AC001E004C /* AsyncNetworkService in Frameworks */ = {isa = PBXBuildFile; productRef = E8FD5726291EE4AC001E004C /* AsyncNetworkService */; };
@@ -341,6 +342,7 @@
341342
E8D655BF288DD04700A139C2 /* SelectedActionType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectedActionType.swift; sourceTree = "<group>"; };
342343
E8DA461025FAF7FB002E85EF /* NotificationsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationsView.swift; sourceTree = "<group>"; };
343344
E8E98A9525D863D700EC89A0 /* InstallationStepDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstallationStepDetailView.swift; sourceTree = "<group>"; };
345+
E8EEAD1C2E79174F00BE67E8 /* XcodesIcon.icon */ = {isa = PBXFileReference; lastKnownFileType = folder.iconcomposer.icon; path = XcodesIcon.icon; sourceTree = "<group>"; };
344346
/* End PBXFileReference section */
345347

346348
/* Begin PBXFrameworksBuildPhase section */
@@ -560,6 +562,7 @@
560562
CABFAA1D2592F7F200380FEE /* Resources */ = {
561563
isa = PBXGroup;
562564
children = (
565+
E8EEAD1C2E79174F00BE67E8 /* XcodesIcon.icon */,
563566
CAA858DA25A3E11F00ACF8C0 /* aria2-release-1.35.0.tar.gz */,
564567
CAA8588025A2B63A00ACF8C0 /* aria2c */,
565568
CAA8588A25A2B69300ACF8C0 /* aria2c.LICENSE */,
@@ -703,6 +706,7 @@
703706
buildConfigurationList = CAD2E7BC2449575100113D76 /* Build configuration list for PBXNativeTarget "Xcodes" */;
704707
buildPhases = (
705708
CAD2E79A2449574E00113D76 /* Sources */,
709+
D971F84C2E79102E005F84C9 /* Fix libfido2 structure */,
706710
CAD2E79B2449574E00113D76 /* Frameworks */,
707711
CA9FF8292594F33200E47BAF /* Generate Acknowledgements */,
708712
CAD2E79C2449574E00113D76 /* Resources */,
@@ -837,6 +841,7 @@
837841
files = (
838842
CAD2E7A92449575000113D76 /* Preview Assets.xcassets in Resources */,
839843
9DD4FFCB2B13EC1800C974F1 /* Localizable.xcstrings in Resources */,
844+
E8EEAD1D2E79174F00BE67E8 /* XcodesIcon.icon in Resources */,
840845
CA9FF83F2594FBC000E47BAF /* Licenses.rtf in Resources */,
841846
CAA858DB25A3E11F00ACF8C0 /* aria2-release-1.35.0.tar.gz in Resources */,
842847
CAD2E7A62449575000113D76 /* Assets.xcassets in Resources */,
@@ -876,6 +881,24 @@
876881
shellPath = /bin/sh;
877882
shellScript = "cd \"${SRCROOT}/Xcodes/AcknowledgementsGenerator\"\nxcrun -sdk macosx swift run AcknowledgementsGenerator \\\n -p \"${SRCROOT}/Xcodes.xcodeproj\" \\\n -o \"${SRCROOT}/Xcodes/Resources/Licenses.rtf\"\n";
878883
};
884+
D971F84C2E79102E005F84C9 /* Fix libfido2 structure */ = {
885+
isa = PBXShellScriptBuildPhase;
886+
buildActionMask = 2147483647;
887+
files = (
888+
);
889+
inputFileListPaths = (
890+
);
891+
inputPaths = (
892+
);
893+
name = "Fix libfido2 structure";
894+
outputFileListPaths = (
895+
);
896+
outputPaths = (
897+
);
898+
runOnlyForDeploymentPostprocessing = 0;
899+
shellPath = /bin/sh;
900+
shellScript = "${SRCROOT}/Scripts/fix_libfido2_framework.sh\n";
901+
};
879902
/* End PBXShellScriptBuildPhase section */
880903

881904
/* Begin PBXSourcesBuildPhase section */
@@ -1092,7 +1115,8 @@
10921115
CA8FB636256E154800469DA5 /* Test */ = {
10931116
isa = XCBuildConfiguration;
10941117
buildSettings = {
1095-
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1118+
ASSETCATALOG_COMPILER_APPICON_NAME = XcodesIcon;
1119+
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
10961120
CODE_SIGNING_SUBJECT_ORGANIZATIONAL_UNIT = ZU6GR6B2FY;
10971121
CODE_SIGN_ENTITLEMENTS = Xcodes/Resources/XcodesTest.entitlements;
10981122
CODE_SIGN_IDENTITY = "-";
@@ -1344,7 +1368,8 @@
13441368
CAD2E7BD2449575100113D76 /* Debug */ = {
13451369
isa = XCBuildConfiguration;
13461370
buildSettings = {
1347-
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1371+
ASSETCATALOG_COMPILER_APPICON_NAME = XcodesIcon;
1372+
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
13481373
CODE_SIGNING_SUBJECT_ORGANIZATIONAL_UNIT = ZU6GR6B2FY;
13491374
CODE_SIGN_ENTITLEMENTS = Xcodes/Resources/Xcodes.entitlements;
13501375
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
@@ -1372,7 +1397,8 @@
13721397
CAD2E7BE2449575100113D76 /* Release */ = {
13731398
isa = XCBuildConfiguration;
13741399
buildSettings = {
1375-
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1400+
ASSETCATALOG_COMPILER_APPICON_NAME = XcodesIcon;
1401+
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO;
13761402
CODE_SIGNING_SUBJECT_ORGANIZATIONAL_UNIT = ZU6GR6B2FY;
13771403
CODE_SIGN_ENTITLEMENTS = Xcodes/Resources/Xcodes.entitlements;
13781404
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";

Xcodes/Backend/AppState+Runtimes.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ extension AppState {
6363
if selectedXcode.version > Version(major: 16, minor: 0, patch: 0) {
6464

6565
if runtime.architectures?.isAppleSilicon ?? false {
66-
if selectedXcode.version > Version(major: 26, minor: 0, patch: 0) {
66+
// Need Xcode 26 but with some RC/Beta's its simpler to just to greater > 25
67+
if selectedXcode.version > Version(major: 25, minor: 0, patch: 0) {
6768
downloadRuntimeViaXcodeBuild(runtime: runtime)
6869
} else {
6970
// not supported

Xcodes/Frontend/InfoPane/PlatformsView.swift

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,18 @@ struct PlatformsView: View {
3535
.frame(maxWidth: .infinity, alignment: .leading)
3636
if !architectures.isEmpty {
3737
Spacer()
38-
Button {
39-
switch selectedRuntimeArchitecture {
40-
case .arm64: selectedRuntimeArchitecture = .x86_64
41-
case .x86_64: selectedRuntimeArchitecture = .arm64
42-
}
43-
} label: {
44-
switch selectedRuntimeArchitecture {
45-
case .arm64:
46-
Label(selectedRuntimeArchitecture.displayString, systemImage: "m4.button.horizontal")
47-
.labelStyle(.trailingIcon)
48-
case .x86_64:
49-
Label(selectedRuntimeArchitecture.displayString, systemImage: "cpu.fill")
50-
.labelStyle(.trailingIcon)
38+
Picker("Architecture", selection: $selectedRuntimeArchitecture) {
39+
ForEach(Architecture.allCases, id: \.self) { arch in
40+
Label(arch.displayString, systemImage: arch.iconName)
41+
.tag(arch)
5142
}
43+
.labelStyle(.trailingIcon)
5244
}
45+
.pickerStyle(.menu)
46+
.menuStyle(.button)
47+
.buttonStyle(.borderless)
48+
.fixedSize()
49+
.labelsHidden()
5350
}
5451
}
5552

Xcodes/Frontend/XcodeList/MainToolbar.swift

Lines changed: 31 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -22,60 +22,44 @@ struct MainToolbarModifier: ViewModifier {
2222
}
2323
.keyboardShortcut(KeyEquivalent("r"))
2424
.help("RefreshDescription")
25+
2526
Spacer()
26-
27-
Button(action: {
28-
switch architectures {
29-
case .universal: architectures = .appleSilicon
30-
case .appleSilicon: architectures = .universal
31-
}
32-
}) {
33-
switch architectures {
34-
case .universal:
35-
Label("Universal", systemImage: "cpu.fill")
36-
case .appleSilicon:
37-
Label("Apple Silicon", systemImage: "m4.button.horizontal")
38-
.labelStyle(.trailingIcon)
39-
.foregroundColor(.accentColor)
40-
}
41-
}
42-
.help("FilterAvailableDescription")
43-
.disabled(architectures.isManaged)
4427

45-
Button(action: {
46-
switch category {
47-
case .all: category = .release
48-
case .release: category = .beta
49-
case .beta: category = .all
28+
let isFiltering = isInstalledOnly || category != .all || architectures != .universal
29+
Menu("Filter", systemImage: "line.horizontal.3.decrease.circle") {
30+
Section {
31+
Toggle("Installed Only", systemImage: "arrow.down.app", isOn: $isInstalledOnly) .labelStyle(.titleAndIcon)
5032
}
51-
}) {
52-
switch category {
53-
case .all:
54-
Label("All", systemImage: "line.horizontal.3.decrease.circle")
55-
case .release:
33+
.help("FilterInstalledDescription")
34+
35+
Section {
36+
Picker("Category", selection: $category) {
37+
Label("All", systemImage: "line.horizontal.3.decrease.circle")
38+
.tag(XcodeListCategory.all)
5639
Label("ReleaseOnly", systemImage: "line.horizontal.3.decrease.circle.fill")
57-
.labelStyle(.trailingIcon)
58-
.foregroundColor(.accentColor)
59-
case .beta:
60-
Label("BetaOnly", systemImage: "line.horizontal.3.decrease.circle.fill")
61-
.labelStyle(.trailingIcon)
62-
.foregroundColor(.accentColor)
40+
.tag(XcodeListCategory.release)
41+
Label("BetaOnly", systemImage: "line.horizontal.3.decrease.circle.fill")
42+
.tag(XcodeListCategory.beta)
43+
}
6344
}
64-
}
65-
.help("FilterAvailableDescription")
66-
.disabled(category.isManaged)
67-
68-
Button(action: {
69-
isInstalledOnly.toggle()
70-
}) {
71-
if isInstalledOnly {
72-
Label("Filter", systemImage: "arrow.down.app.fill")
73-
.foregroundColor(.accentColor)
74-
} else {
75-
Label("Filter", systemImage: "arrow.down.app")
45+
.help("FilterAvailableDescription")
46+
.disabled(category.isManaged)
47+
48+
Section {
49+
Picker("Architecture", selection: $architectures) {
50+
Label("Universal", systemImage: "cpu.fill")
51+
.tag(XcodeListArchitecture.universal)
52+
Label("Apple Silicon", systemImage: "m4.button.horizontal")
53+
.foregroundColor(.accentColor)
54+
.tag(XcodeListArchitecture.appleSilicon)
55+
}
56+
.help("FilterArchitecturesDescription")
57+
.disabled(architectures.isManaged)
7658
}
59+
.labelStyle(.titleAndIcon)
7760
}
78-
.help("FilterInstalledDescription")
61+
.pickerStyle(.inline)
62+
.symbolVariant(isFiltering ? .fill : .none)
7963
}
8064
}
8165
}

0 commit comments

Comments
 (0)