spm the libs build

This commit is contained in:
Joe Mattiello
2023-03-01 13:47:17 -05:00
parent 2d232fa702
commit e036f07875
101 changed files with 202 additions and 107 deletions

12
.gitmodules vendored
View File

@@ -7,3 +7,15 @@
[submodule "Dependencies/minimuxer"]
path = Dependencies/minimuxer
url = https://github.com/SideStore/minimuxer.git
[submodule "Sources/libimobiledevice/dependencies/libimobiledevice-glue"]
path = Sources/libimobiledevice/dependencies/libimobiledevice-glue
url = https://github.com/libimobiledevice/libimobiledevice-glue
[submodule "Sources/libimobiledevice/dependencies/libplist"]
path = Sources/libimobiledevice/dependencies/libplist
url = https://github.com/libimobiledevice/libplist.git
[submodule "Sources/libimobiledevice/dependencies/libusbmuxd"]
path = Sources/libimobiledevice/dependencies/libusbmuxd
url = https://github.com/libimobiledevice/libusbmuxd.git
[submodule "Sources/libimobiledevice/dependencies/libimobiledevice"]
path = Sources/libimobiledevice/dependencies/libimobiledevice
url = https://github.com/libimobiledevice/libimobiledevice

View File

@@ -9,7 +9,7 @@ let env: [String: Bool] = [
"USE_CARGO": false,
"USE_CXX_INTEROP": false,
"USE_CXX_MODULES": false,
"INHIBIT_UPSTREAM_WARNINGS": false,
"INHIBIT_UPSTREAM_WARNINGS": true,
"STATIC_LIBRARY": false,
]
@@ -19,6 +19,9 @@ let USE_CXX_MODULES = envBool("USE_CXX_MODULES")
let INHIBIT_UPSTREAM_WARNINGS = envBool("INHIBIT_UPSTREAM_WARNINGS")
let STATIC_LIBRARY = envBool("STATIC_LIBRARY")
let unsafe_flags: [String] = INHIBIT_UPSTREAM_WARNINGS ? ["-w"] : []
let unsafe_flags_cxx: [String] = INHIBIT_UPSTREAM_WARNINGS ? ["-w", "-Wno-module-import-in-extern-c"] : ["-Wno-module-import-in-extern-c"]
// let dependencies_cargo: [Package.Dependency] = {
// USE_CARGO ? [
// // CargoPlugin
@@ -77,13 +80,9 @@ let dependencies: [Package.Dependency] = [
.package(url: "https://github.com/kishikawakatsumi/KeychainAccess", from: "4.2.0"),
.package(url: "https://github.com/microsoft/appcenter-sdk-apple", from: "4.2.0"),
.package(url: "https://github.com/SideStore/AltSign", branch: "master"),
// .package(path: "../AltSign"),
.package(url: "https://github.com/SideStore/SideKit", from: "0.1.0"),
// .package(path: "../SideKit"),
// .package(url: "https://github.com/sindresorhus/LaunchAtLogin", from: "4.1.0"),
.package(url: "https://github.com/SwiftPackageIndex/SemanticVersion", from: "0.3.5"),
.package(url: "https://github.com/krzyzanowskim/OpenSSL.git", .upToNextMinor(from: "1.1.1700"))
] // + dependencies_cargo
let package = Package(
@@ -106,20 +105,6 @@ let package = Package(
name: "SideWidget",
targets: ["SideWidget"]
),
// .executable(
// name: "SideDaemon",
// targets: ["SideDaemon"]),
.library(name: "EmotionalDamage", targets: ["EmotionalDamage"]),
.library(name: "MiniMuxerSwift", targets: ["MiniMuxerSwift"]),
.library(name: "SideStoreCore", targets: ["SideStoreCore"]),
.library(name: "libplist", type: .dynamic, targets: ["libplist"]),
.library(name: "libusbmuxd", type: .dynamic, targets: ["libusbmuxd"]),
.library(name: "libimobiledevice", type: .dynamic, targets: ["libimobiledevice"]),
.library(name: "libimobiledevice-glue", type: .dynamic, targets: ["libimobiledevice-glue"]),
],
dependencies: dependencies,
@@ -211,15 +196,6 @@ let package = Package(
dependencies: [
"minimuxer",
"libimobiledevice",
],
cSettings: [
// .headerSearchPath("Dependencies/minimuxer/include"),
],
cxxSettings: [
],
swiftSettings: [
],
linkerSettings: [
]
),
@@ -259,24 +235,6 @@ let package = Package(
dependencies: []
),
// MARK: - SideDaemon
// .executableTarget(
// name: "SideDaemon",
// dependencies: [
// "Shared",
// .product(name: "SideKit", package: "SideKit"),
// .product(name: "AltSign", package: "AltSign"),
// .product(name: "CoreCrypto", package: "AltSign"),
// .product(name: "CCoreCrypto", package: "AltSign"),
// .product(name: "LaunchAtLogin", package: "LaunchAtLogin"),
// ]
// ),
//
// .testTarget(
// name: "SideDaemonTests",
// dependencies: ["SideDaemon"]
// ),
// MARK: - SideStoreCore
@@ -289,11 +247,6 @@ let package = Package(
"SemanticVersion",
.product(name: "Roxas", package: "Roxas"),
]
// swiftSettings: [
// .unsafeFlags([
//// "--xcconfig-overrides", "AltStoreCore.xconfig"
// ])
// ]
),
.testTarget(
@@ -329,14 +282,46 @@ let package = Package(
"libimobiledevice-glue",
"libplist",
"libusbmuxd",
"OpenSSL"
],
path: "Sources/libimobiledevice/libimobiledevice/",
exclude: [
"include/asprintf.h",
"include/Makefile.am",
"include/endianness.h",
],
publicHeadersPath: "include/libimobiledevice/"
publicHeadersPath: "include/",
cSettings: [
.headerSearchPath("include/"),
.headerSearchPath("../dependencies/libimobiledevice"),
.headerSearchPath("../dependencies/libimobiledevice/common"),
.headerSearchPath("../dependencies/libimobiledevice/include"),
.headerSearchPath("../dependencies/libimobiledevice-glue/include"),
.headerSearchPath("../dependencies/libplist/include"),
.headerSearchPath("../dependencies/libusbmuxd/include"),
.define("HAVE_OPENSSL"),
.define("HAVE_STPNCPY"),
.define("HAVE_STPCPY"),
.define("HAVE_VASPRINTF"),
.define("HAVE_ASPRINTF"),
.define("PACKAGE_STRING", to: "\"AltServer 1.0\""),
.define("HAVE_GETIFADDRS"),
.define("HAVE_STRNDUP"),
.unsafeFlags(unsafe_flags)
],
cxxSettings: [
.headerSearchPath("include/"),
.headerSearchPath("../dependencies/libimobiledevice"),
.headerSearchPath("../dependencies/libimobiledevice/common"),
.headerSearchPath("../dependencies/libimobiledevice/include"),
.headerSearchPath("../dependencies/libimobiledevice-glue/include"),
.headerSearchPath("../dependencies/libplist/include"),
.headerSearchPath("../dependencies/libusbmuxd/include"),
.define("HAVE_OPENSSL"),
.define("HAVE_STPNCPY"),
.define("HAVE_STPCPY"),
.define("HAVE_VASPRINTF"),
.define("HAVE_ASPRINTF"),
.define("PACKAGE_STRING", to: "\"AltServer 1.0\""),
.define("HAVE_GETIFADDRS"),
.define("HAVE_STRNDUP"),
.unsafeFlags(unsafe_flags_cxx)
]
),
// MARK: libmobiledevice-glue
@@ -363,9 +348,7 @@ let package = Package(
.define("PACKAGE_STRING", to: "\"AltServer 1.0\""),
.define("HAVE_GETIFADDRS"),
.define("HAVE_STRNDUP"),
.unsafeFlags([
"-w"
])
.unsafeFlags(unsafe_flags)
],
cxxSettings: [
.headerSearchPath("include/"),
@@ -379,10 +362,7 @@ let package = Package(
.define("PACKAGE_STRING", to: "\"AltServer 1.0\""),
.define("HAVE_GETIFADDRS"),
.define("HAVE_STRNDUP"),
.unsafeFlags([
"-w",
"-Wno-module-import-in-extern-c"
])
.unsafeFlags(unsafe_flags_cxx)
]
),
@@ -398,6 +378,9 @@ let package = Package(
"src/bplist.c",
"src/bytearray.c",
"src/hashtable.c",
"src/jplist.c",
"src/jsmn.c",
"src/oplist.c",
"src/plist.c",
"src/ptrarray.c",
"src/time64.c",
@@ -421,7 +404,6 @@ let package = Package(
cSettings: [
.headerSearchPath("include/"),
.headerSearchPath("../dependencies/libplist/include"),
// .headerSearchPath("../dependencies/libplist/libcnary/include"),
.define("HAVE_OPENSSL"),
.define("HAVE_STPNCPY"),
.define("HAVE_STPCPY"),
@@ -430,9 +412,7 @@ let package = Package(
.define("PACKAGE_STRING", to: "\"AltServer 1.0\""),
.define("HAVE_GETIFADDRS"),
.define("HAVE_STRNDUP"),
.unsafeFlags([
"-w"
])
.unsafeFlags(unsafe_flags)
],
cxxSettings: [
.headerSearchPath("include/"),
@@ -446,10 +426,7 @@ let package = Package(
.define("PACKAGE_STRING", to: "\"AltServer 1.0\""),
.define("HAVE_GETIFADDRS"),
.define("HAVE_STRNDUP"),
.unsafeFlags([
"-w",
"-Wno-module-import-in-extern-c"
])
.unsafeFlags(unsafe_flags_cxx)
]
),
@@ -470,6 +447,7 @@ let package = Package(
.headerSearchPath("../dependencies/libplist/include"),
.headerSearchPath("../dependencies/libplist/libcnary/include"),
.headerSearchPath("../dependencies/libusbmuxd/include"),
.headerSearchPath("../dependencies/libimobiledevice-glue/include/"),
.headerSearchPath("../dependencies/libimobiledevice-glue/include/libimobiledevice-glue/"),
.define("HAVE_OPENSSL"),
.define("HAVE_STPNCPY"),
@@ -479,14 +457,13 @@ let package = Package(
.define("PACKAGE_STRING", to: "\"AltServer 1.0\""),
.define("HAVE_GETIFADDRS"),
.define("HAVE_STRNDUP"),
.unsafeFlags([
"-w"
])
.unsafeFlags(unsafe_flags)
],
cxxSettings: [
.headerSearchPath("../dependencies/libplist/include"),
.headerSearchPath("../dependencies/libplist/libcnary/include"),
.headerSearchPath("../dependencies/libusbmuxd/include"),
.headerSearchPath("../dependencies/libimobiledevice-glue/include/"),
.headerSearchPath("../dependencies/libimobiledevice-glue/include/libimobiledevice-glue/"),
.define("HAVE_OPENSSL"),
.define("HAVE_STPNCPY"),
@@ -496,10 +473,7 @@ let package = Package(
.define("PACKAGE_STRING", to: "\"AltServer 1.0\""),
.define("HAVE_GETIFADDRS"),
.define("HAVE_STRNDUP"),
.unsafeFlags([
"-w",
"-Wno-module-import-in-extern-c"
])
.unsafeFlags(unsafe_flags_cxx)
]
),
],
@@ -515,3 +489,26 @@ func envBool(_ key: String) -> Bool {
let trueValues = ["1", "on", "true", "yes"]
return trueValues.contains(value.lowercased())
}
// MARK: - SideDaemon
// .executable(
// name: "SideDaemon",
// targets: ["SideDaemon"]),
// .executableTarget(
// name: "SideDaemon",
// dependencies: [
// "Shared",
// .product(name: "SideKit", package: "SideKit"),
// .product(name: "AltSign", package: "AltSign"),
// .product(name: "CoreCrypto", package: "AltSign"),
// .product(name: "CCoreCrypto", package: "AltSign"),
// .product(name: "LaunchAtLogin", package: "LaunchAtLogin"),
// ]
// ),
//
// .testTarget(
// name: "SideDaemonTests",
// dependencies: ["SideDaemon"]
// ),

View File

@@ -928,36 +928,37 @@
B3CD310529AF8B6D00374AF8 /* src */ = {
isa = PBXGroup;
children = (
B3CD311729AF8B6D00374AF8 /* Array.cpp */,
B3CD311D29AF8B6D00374AF8 /* base64.c */,
B3CD310C29AF8B6D00374AF8 /* base64.h */,
B3CD312029AF8B6D00374AF8 /* Boolean.cpp */,
B3CD310829AF8B6D00374AF8 /* bplist.c */,
B3CD311929AF8B6D00374AF8 /* bytearray.c */,
B3CD311C29AF8B6D00374AF8 /* hashtable.c */,
B3CD311429AF8B6D00374AF8 /* plist.c */,
B3CD311B29AF8B6D00374AF8 /* ptrarray.c */,
B3CD310929AF8B6D00374AF8 /* time64.c */,
B3CD310A29AF8B6D00374AF8 /* xplist.c */,
B3CD311729AF8B6D00374AF8 /* Array.cpp */,
B3CD312029AF8B6D00374AF8 /* Boolean.cpp */,
B3CD310729AF8B6D00374AF8 /* bytearray.h */,
B3CD311529AF8B6D00374AF8 /* Data.cpp */,
B3CD311129AF8B6D00374AF8 /* Date.cpp */,
B3CD312429AF8B6D00374AF8 /* Dictionary.cpp */,
B3CD311C29AF8B6D00374AF8 /* hashtable.c */,
B3CD310E29AF8B6D00374AF8 /* hashtable.h */,
B3CD311F29AF8B6D00374AF8 /* Integer.cpp */,
B3CD312129AF8B6D00374AF8 /* Key.cpp */,
B3CD311229AF8B6D00374AF8 /* Node.cpp */,
B3CD311429AF8B6D00374AF8 /* plist.c */,
B3CD312329AF8B6D00374AF8 /* plist.h */,
B3CD311B29AF8B6D00374AF8 /* ptrarray.c */,
B3CD310D29AF8B6D00374AF8 /* ptrarray.h */,
B3CD311829AF8B6D00374AF8 /* Real.cpp */,
B3CD310629AF8B6D00374AF8 /* strbuf.h */,
B3CD311329AF8B6D00374AF8 /* String.cpp */,
B3CD310F29AF8B6D00374AF8 /* Structure.cpp */,
B3CD311029AF8B6D00374AF8 /* Uid.cpp */,
B3CD310C29AF8B6D00374AF8 /* base64.h */,
B3CD310729AF8B6D00374AF8 /* bytearray.h */,
B3CD310E29AF8B6D00374AF8 /* hashtable.h */,
B3CD312329AF8B6D00374AF8 /* plist.h */,
B3CD310D29AF8B6D00374AF8 /* ptrarray.h */,
B3CD310629AF8B6D00374AF8 /* strbuf.h */,
B3CD311A29AF8B6D00374AF8 /* time64_limits.h */,
B3CD310929AF8B6D00374AF8 /* time64.c */,
B3CD311E29AF8B6D00374AF8 /* time64.h */,
B3CD311029AF8B6D00374AF8 /* Uid.cpp */,
B3CD310A29AF8B6D00374AF8 /* xplist.c */,
);
path = src;
name = src;
path = ../dependencies/libplist/src;
sourceTree = "<group>";
};
B3CD312529AF8B6D00374AF8 /* libusbmuxd */ = {
@@ -1045,7 +1046,8 @@
B3CD321D29AF8B6E00374AF8 /* syslog_relay.h */,
B3CD322029AF8B6E00374AF8 /* webinspector.h */,
);
path = src;
name = src;
path = ../dependencies/libimobiledevice/src;
sourceTree = "<group>";
};
BF0DCA642433BDE200E3A595 /* Analytics */ = {

View File

@@ -1 +0,0 @@
../dependencies/libimobiledevice/include

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/afc.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/bt_packet_logger.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/companion_proxy.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/debugserver.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/device_link_service.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/diagnostics_relay.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/file_relay.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/heartbeat.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/house_arrest.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/idevice.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/installation_proxy.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/lockdown.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/misagent.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/mobile_image_mounter.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/mobileactivation.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/mobilebackup.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/mobilebackup2.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/mobilesync.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/notification_proxy.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/preboard.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/property_list_service.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/restore.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/reverse_proxy.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/sbservices.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/screenshotr.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/service.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/syslog_relay.h

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/webinspector.h

View File

@@ -1 +0,0 @@
../dependencies/libimobiledevice/src

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/afc.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/bt_packet_logger.c

View File

@@ -0,0 +1 @@
../../../dependencies/libimobiledevice/common/debug.c

View File

@@ -0,0 +1 @@
../../../dependencies/libimobiledevice/common/userpref.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/companion_proxy.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/debugserver.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/device_link_service.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/diagnostics_relay.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/file_relay.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/heartbeat.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/house_arrest.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/idevice.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/installation_proxy.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/lockdown-cu.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/lockdown.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/misagent.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/mobile_image_mounter.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/mobileactivation.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/mobilebackup.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/mobilebackup2.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/mobilesync.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/notification_proxy.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/preboard.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/property_list_service.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/restore.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/reverse_proxy.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/sbservices.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/screenshotr.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/service.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/syslog_relay.c

View File

@@ -0,0 +1 @@
../../dependencies/libimobiledevice/src/webinspector.c

View File

@@ -1 +1 @@
../src/base64.h
../../dependencies/libplist/src/base64.h

View File

@@ -1 +1 @@
../src/bytearray.h
../../dependencies/libplist/src/bytearray.h

View File

@@ -1 +1 @@
../src/hashtable.h
../../dependencies/libplist/src/hashtable.h

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/jsmn.h

View File

@@ -1 +1 @@
../src/plist.h
../../dependencies/libplist/src/plist.h

View File

@@ -1 +1 @@
../src/ptrarray.h
../../dependencies/libplist/src/ptrarray.h

View File

@@ -1 +1 @@
../src/strbuf.h
../../dependencies/libplist/src/strbuf.h

View File

@@ -1 +1 @@
../src/time64.h
../../dependencies/libplist/src/time64.h

View File

@@ -1 +1 @@
../src/time64_limits.h
../../dependencies/libplist/src/time64_limits.h

View File

@@ -1 +0,0 @@
../dependencies/libplist/src

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/Array.cpp

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/Boolean.cpp

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/Data.cpp

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/Date.cpp

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/Dictionary.cpp

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/Integer.cpp

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/Key.cpp

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/Node.cpp

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/Real.cpp

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/String.cpp

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/Structure.cpp

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/Uid.cpp

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/base64.c

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/bplist.c

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/bytearray.c

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/hashtable.c

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/jplist.c

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/jsmn.c

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/oplist.c

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/plist.c

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/ptrarray.c

View File

@@ -0,0 +1 @@
../../dependencies/libplist/src/time64.c

Some files were not shown because too many files have changed in this diff Show More