From 14cec5a4c92f4ddf153c7969714a0c8eaa0b1d1a Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Tue, 7 Jul 2020 19:20:04 +0200 Subject: [PATCH 1/9] Update libgit2 to 1.1.0 --- External/libgit2 | 2 +- ObjectiveGit.modulemap | 5 +++- ObjectiveGit/GTBlob.m | 8 ++++--- ObjectiveGit/GTConfiguration.m | 2 +- ObjectiveGit/GTCredential+Private.h | 2 +- ObjectiveGit/GTCredential.h | 12 +++++----- ObjectiveGit/GTCredential.m | 24 +++++++++---------- ObjectiveGit/GTDiff.m | 2 +- ObjectiveGit/GTIndex.m | 2 +- ObjectiveGit/GTOID.m | 2 +- ObjectiveGit/GTRemote.m | 6 ++--- ObjectiveGit/GTRepository+Merging.m | 8 +++---- ObjectiveGit/GTRepository+Pull.h | 2 +- ObjectiveGit/GTRepository+RemoteOperations.h | 2 +- ObjectiveGit/GTRepository+RemoteOperations.m | 9 ++++--- ObjectiveGit/GTRepository+Status.m | 2 +- ObjectiveGit/GTRepository.h | 2 +- ObjectiveGit/GTRepository.m | 6 ++--- .../project.pbxproj | 4 ---- ObjectiveGitTests/GTSubmoduleSpec.m | 3 ++- 20 files changed, 53 insertions(+), 52 deletions(-) diff --git a/External/libgit2 b/External/libgit2 index 1a107fac0..20c9fc916 160000 --- a/External/libgit2 +++ b/External/libgit2 @@ -1 +1 @@ -Subproject commit 1a107fac0fc88a4d74b64ffc9ae2fd178ba631c0 +Subproject commit 20c9fc9168ce14aca86e8bdfd2a55d337a030248 diff --git a/ObjectiveGit.modulemap b/ObjectiveGit.modulemap index 3ef32bc58..1b660272c 100644 --- a/ObjectiveGit.modulemap +++ b/ObjectiveGit.modulemap @@ -52,6 +52,7 @@ framework module ObjectiveGit { header "git2/version.h" header "git2/sys/commit.h" header "git2/sys/config.h" + header "git2/sys/credential.h" header "git2/sys/diff.h" header "git2/sys/filter.h" header "git2/sys/hashsig.h" @@ -64,7 +65,6 @@ framework module ObjectiveGit { header "git2/sys/refs.h" header "git2/sys/repository.h" header "git2/sys/transport.h" - header "git2/sys/time.h" header "git2/cred_helpers.h" header "git2/sys/openssl.h" header "git2/sys/stream.h" @@ -72,6 +72,7 @@ framework module ObjectiveGit { exclude header "git2/inttypes.h" exclude header "git2/stdint.h" + exclude header "git2/sys/git2/alloc.h" exclude header "git2/sys/git2/annotated_commit.h" exclude header "git2/sys/git2/attr.h" exclude header "git2/sys/git2/blame.h" @@ -82,6 +83,7 @@ framework module ObjectiveGit { exclude header "git2/sys/git2/cherrypick.h" exclude header "git2/sys/git2/clone.h" exclude header "git2/sys/git2/commit.h" + exclude header "git2/sys/git2/cred.h" exclude header "git2/sys/git2/cred_helpers.h" exclude header "git2/sys/git2/describe.h" exclude header "git2/sys/git2/errors.h" @@ -99,6 +101,7 @@ framework module ObjectiveGit { exclude header "git2/sys/git2/oidarray.h" exclude header "git2/sys/git2/pack.h" exclude header "git2/sys/git2/patch.h" + exclude header "git2/sys/git2/path.h" exclude header "git2/sys/git2/pathspec.h" exclude header "git2/sys/git2/rebase.h" exclude header "git2/sys/git2/refdb.h" diff --git a/ObjectiveGit/GTBlob.m b/ObjectiveGit/GTBlob.m index a1634dcf5..2087727df 100644 --- a/ObjectiveGit/GTBlob.m +++ b/ObjectiveGit/GTBlob.m @@ -84,7 +84,7 @@ - (instancetype)initWithData:(NSData *)data inRepository:(GTRepository *)reposit NSParameterAssert(repository != nil); git_oid oid; - int gitError = git_blob_create_frombuffer(&oid, repository.git_repository, [data bytes], data.length); + int gitError = git_blob_create_from_buffer(&oid, repository.git_repository, [data bytes], data.length); if(gitError < GIT_OK) { if(error != NULL) { *error = [NSError git_errorFor:gitError description:@"Failed to create blob from NSData"]; @@ -100,7 +100,7 @@ - (instancetype)initWithFile:(NSURL *)file inRepository:(GTRepository *)reposito NSParameterAssert(repository != nil); git_oid oid; - int gitError = git_blob_create_fromdisk(&oid, repository.git_repository, [[file path] fileSystemRepresentation]); + int gitError = git_blob_create_from_disk(&oid, repository.git_repository, [[file path] fileSystemRepresentation]); if(gitError < GIT_OK) { if(error != NULL) { *error = [NSError git_errorFor:gitError description:@"Failed to create blob from NSURL"]; @@ -137,7 +137,9 @@ - (NSData *)applyFiltersForPath:(NSString *)path error:(NSError **)error { NSCParameterAssert(path != nil); git_buf buffer = GIT_BUF_INIT_CONST(0, NULL); - int gitError = git_blob_filtered_content(&buffer, self.git_blob, path.UTF8String, 1); + + git_blob_filter_options opts = GIT_BLOB_FILTER_OPTIONS_INIT; + int gitError = git_blob_filter(&buffer, self.git_blob, path.UTF8String, &opts); if (gitError != GIT_OK) { if (error != NULL) *error = [NSError git_errorFor:gitError description:@"Failed to apply filters for path %@ to blob", path]; return nil; diff --git a/ObjectiveGit/GTConfiguration.m b/ObjectiveGit/GTConfiguration.m index acd46cd74..2a2634828 100644 --- a/ObjectiveGit/GTConfiguration.m +++ b/ObjectiveGit/GTConfiguration.m @@ -146,7 +146,7 @@ - (NSArray *)remotes { } } - git_strarray_free(&names); + git_strarray_dispose(&names); return remotes; } diff --git a/ObjectiveGit/GTCredential+Private.h b/ObjectiveGit/GTCredential+Private.h index 866b389a7..33a546359 100644 --- a/ObjectiveGit/GTCredential+Private.h +++ b/ObjectiveGit/GTCredential+Private.h @@ -27,4 +27,4 @@ typedef struct { __unsafe_unretained GTCredentialProvider *credProvider; } GTCredentialAcquireCallbackInfo; -int GTCredentialAcquireCallback(git_cred **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload); +int GTCredentialAcquireCallback(git_credential **cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload); diff --git a/ObjectiveGit/GTCredential.h b/ObjectiveGit/GTCredential.h index 560a8ba18..b016b8774 100644 --- a/ObjectiveGit/GTCredential.h +++ b/ObjectiveGit/GTCredential.h @@ -12,9 +12,9 @@ /// An enum describing the data needed for authentication. /// See `git_credtype_t`. typedef NS_ENUM(NSInteger, GTCredentialType) { - GTCredentialTypeUserPassPlaintext = GIT_CREDTYPE_USERPASS_PLAINTEXT, - GTCredentialTypeSSHKey = GIT_CREDTYPE_SSH_KEY, - GTCredentialTypeSSHCustom = GIT_CREDTYPE_SSH_CUSTOM, + GTCredentialTypeUserPassPlaintext = GIT_CREDENTIAL_USERPASS_PLAINTEXT, + GTCredentialTypeSSHKey = GIT_CREDENTIAL_SSH_KEY, + GTCredentialTypeSSHCustom = GIT_CREDENTIAL_SSH_CUSTOM, }; NS_ASSUME_NONNULL_BEGIN @@ -50,7 +50,7 @@ NS_ASSUME_NONNULL_BEGIN @end /// The GTCredential class is used to provide authentication data. -/// It acts as a wrapper around `git_cred` objects. +/// It acts as a wrapper around `git_credential` objects. @interface GTCredential : NSObject /// Create a credential object from a username/password pair. @@ -86,8 +86,8 @@ NS_ASSUME_NONNULL_BEGIN /// Return a new GTCredential instance, or nil if an error occurred + (instancetype _Nullable)credentialWithUserName:(NSString *)userName publicKeyString:(NSString * _Nullable)publicKeyString privateKeyString:(NSString *)privateKeyString passphrase:(NSString * _Nullable)passphrase error:(NSError **)error; -/// The underlying `git_cred` object. -- (git_cred *)git_cred __attribute__((objc_returns_inner_pointer)); +/// The underlying `git_credential` object. +- (git_credential *)git_credential __attribute__((objc_returns_inner_pointer)); @end diff --git a/ObjectiveGit/GTCredential.m b/ObjectiveGit/GTCredential.m index 1d3894b44..570b00ec2 100644 --- a/ObjectiveGit/GTCredential.m +++ b/ObjectiveGit/GTCredential.m @@ -39,14 +39,14 @@ - (GTCredential *)credentialForType:(GTCredentialType)type URL:(NSString *)URL u @end @interface GTCredential () -@property (nonatomic, assign, readonly) git_cred *git_cred; +@property (nonatomic, assign, readonly) git_credential *git_credential; @end @implementation GTCredential + (instancetype)credentialWithUserName:(NSString *)userName password:(NSString *)password error:(NSError **)error { - git_cred *cred; - int gitError = git_cred_userpass_plaintext_new(&cred, userName.UTF8String, password.UTF8String); + git_credential *cred; + int gitError = git_credential_userpass_plaintext_new(&cred, userName.UTF8String, password.UTF8String); if (gitError != GIT_OK) { if (error) *error = [NSError git_errorFor:gitError description:@"Failed to create credentials object" failureReason:@"There was an error creating a credential object for username %@.", userName]; return nil; @@ -61,8 +61,8 @@ + (instancetype)credentialWithUserName:(NSString *)userName publicKeyURL:(NSURL NSString *privateKeyPath = privateKeyURL.filePathURL.path; NSAssert(privateKeyPath != nil, @"Invalid file URL passed: %@", privateKeyURL); - git_cred *cred; - int gitError = git_cred_ssh_key_new(&cred, userName.UTF8String, publicKeyPath.fileSystemRepresentation, privateKeyPath.fileSystemRepresentation, passphrase.UTF8String); + git_credential *cred; + int gitError = git_credential_ssh_key_new(&cred, userName.UTF8String, publicKeyPath.fileSystemRepresentation, privateKeyPath.fileSystemRepresentation, passphrase.UTF8String); if (gitError != GIT_OK) { if (error) *error = [NSError git_errorFor:gitError description:@"Failed to create credentials object" failureReason:@"There was an error creating a credential object for username %@ with the provided public/private key pair.\nPublic key: %@\nPrivate key: %@", userName, publicKeyURL, privateKeyURL]; return nil; @@ -74,8 +74,8 @@ + (instancetype)credentialWithUserName:(NSString *)userName publicKeyURL:(NSURL + (instancetype)credentialWithUserName:(NSString *)userName publicKeyString:(NSString *)publicKeyString privateKeyString:(NSString *)privateKeyString passphrase:(NSString *)passphrase error:(NSError **)error { NSParameterAssert(privateKeyString != nil); - git_cred *cred; - int gitError = git_cred_ssh_key_memory_new(&cred, userName.UTF8String, publicKeyString.UTF8String, privateKeyString.UTF8String, passphrase.UTF8String); + git_credential *cred; + int gitError = git_credential_ssh_key_memory_new(&cred, userName.UTF8String, publicKeyString.UTF8String, privateKeyString.UTF8String, passphrase.UTF8String); if (gitError != GIT_OK) { if (error) *error = [NSError git_errorFor:gitError description:@"Failed to create credentials object" failureReason:@"There was an error creating a credential object for username %@ with the provided public/private key pair.\nPublic key: %@", userName, publicKeyString]; return nil; @@ -84,21 +84,21 @@ + (instancetype)credentialWithUserName:(NSString *)userName publicKeyString:(NSS return [[self alloc] initWithGitCred:cred]; } -- (instancetype)initWithGitCred:(git_cred *)cred { +- (instancetype)initWithGitCred:(git_credential *)cred { NSParameterAssert(cred != nil); self = [self init]; if (self == nil) return nil; - _git_cred = cred; + _git_credential = cred; return self; } @end -int GTCredentialAcquireCallback(git_cred **git_cred, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload) { - NSCParameterAssert(git_cred != NULL); +int GTCredentialAcquireCallback(git_credential **git_credential, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload) { + NSCParameterAssert(git_credential != NULL); NSCParameterAssert(payload != NULL); GTCredentialAcquireCallbackInfo *info = payload; @@ -118,6 +118,6 @@ int GTCredentialAcquireCallback(git_cred **git_cred, const char *url, const char return GIT_ERROR; } - *git_cred = cred.git_cred; + *git_credential = cred.git_credential; return GIT_OK; } diff --git a/ObjectiveGit/GTDiff.m b/ObjectiveGit/GTDiff.m index b3de61898..cf4b40f33 100644 --- a/ObjectiveGit/GTDiff.m +++ b/ObjectiveGit/GTDiff.m @@ -71,7 +71,7 @@ + (int)handleParsedOptionsDictionary:(NSDictionary *)dictionary usingBlock:(int git_strarray strArray = pathSpec.git_strarray; if (pathSpec != nil) newOptions.pathspec = strArray; @onExit { - git_strarray_free((git_strarray *)&strArray); + git_strarray_dispose((git_strarray *)&strArray); }; git_diff_options *optionsPtr = &newOptions; diff --git a/ObjectiveGit/GTIndex.m b/ObjectiveGit/GTIndex.m index 8ee64fde6..1df55427a 100644 --- a/ObjectiveGit/GTIndex.m +++ b/ObjectiveGit/GTIndex.m @@ -196,7 +196,7 @@ - (BOOL)addData:(NSData *)data withPath:(NSString *)path error:(NSError **)error entry.path = [path cStringUsingEncoding:NSUTF8StringEncoding]; entry.mode = GIT_FILEMODE_BLOB; - int status = git_index_add_frombuffer(self.git_index, &entry, [data bytes], [data length]); + int status = git_index_add_from_buffer(self.git_index, &entry, [data bytes], [data length]); if (status != GIT_OK) { if (error != NULL) *error = [NSError git_errorFor:status description:@"Failed to add data with name %@ into index.", path]; diff --git a/ObjectiveGit/GTOID.m b/ObjectiveGit/GTOID.m index 8010c2885..57bb06867 100644 --- a/ObjectiveGit/GTOID.m +++ b/ObjectiveGit/GTOID.m @@ -98,7 +98,7 @@ + (instancetype)oidWithSHACString:(const char *)SHA { } - (BOOL)isZero { - return git_oid_iszero(self.git_oid) != 0; + return git_oid_is_zero(self.git_oid) != 0; } #pragma mark NSObject diff --git a/ObjectiveGit/GTRemote.m b/ObjectiveGit/GTRemote.m index 03f76b7ca..856cc9b30 100644 --- a/ObjectiveGit/GTRemote.m +++ b/ObjectiveGit/GTRemote.m @@ -157,7 +157,7 @@ - (BOOL)rename:(NSString *)name error:(NSError **)error { if (error != NULL) *error = [NSError git_errorFor:gitError description:@"Failed to rename remote" userInfo:userInfo failureReason:@"Couldn't rename remote %@ to %@", self.name, name]; } - git_strarray_free(&problematic_refspecs); + git_strarray_dispose(&problematic_refspecs); return gitError == GIT_OK; } @@ -168,7 +168,7 @@ - (NSArray *)fetchRefspecs { if (gitError != GIT_OK) return nil; @onExit { - git_strarray_free(&refspecs); + git_strarray_dispose(&refspecs); }; return [NSArray git_arrayWithStrarray:refspecs]; @@ -181,7 +181,7 @@ - (NSArray *)pushRefspecs { if (gitError != GIT_OK) return nil; @onExit { - git_strarray_free(&refspecs); + git_strarray_dispose(&refspecs); }; return [NSArray git_arrayWithStrarray:refspecs]; diff --git a/ObjectiveGit/GTRepository+Merging.m b/ObjectiveGit/GTRepository+Merging.m index f7b9837df..5bfd3abac 100644 --- a/ObjectiveGit/GTRepository+Merging.m +++ b/ObjectiveGit/GTRepository+Merging.m @@ -20,7 +20,7 @@ #import "GTOdbObject.h" #import "GTObjectDatabase.h" -typedef void (^GTRemoteFetchTransferProgressBlock)(const git_transfer_progress *stats, BOOL *stop); +typedef void (^GTRemoteFetchTransferProgressBlock)(const git_indexer_progress *stats, BOOL *stop); @implementation GTRepository (Merging) @@ -181,7 +181,7 @@ - (NSString * _Nullable)contentsOfDiffWithAncestor:(GTIndexEntry *)ancestor ourS // initialize the ancestor's merge file input git_merge_file_input ancestorInput; - int gitError = git_merge_file_init_input(&ancestorInput, GIT_MERGE_FILE_INPUT_VERSION); + int gitError = git_merge_file_input_init(&ancestorInput, GIT_MERGE_FILE_INPUT_VERSION); if (gitError != GIT_OK) { if (error != NULL) *error = [NSError git_errorFor:gitError description:@"Failed to create merge file input for ancestor"]; return nil; @@ -199,7 +199,7 @@ - (NSString * _Nullable)contentsOfDiffWithAncestor:(GTIndexEntry *)ancestor ourS // initialize our merge file input git_merge_file_input ourInput; - gitError = git_merge_file_init_input(&ourInput, GIT_MERGE_FILE_INPUT_VERSION); + gitError = git_merge_file_input_init(&ourInput, GIT_MERGE_FILE_INPUT_VERSION); if (gitError != GIT_OK) { if (error != NULL) *error = [NSError git_errorFor:gitError description:@"Failed to create merge file input for our side"]; return nil; @@ -217,7 +217,7 @@ - (NSString * _Nullable)contentsOfDiffWithAncestor:(GTIndexEntry *)ancestor ourS // initialize their merge file input git_merge_file_input theirInput; - gitError = git_merge_file_init_input(&theirInput, GIT_MERGE_FILE_INPUT_VERSION); + gitError = git_merge_file_input_init(&theirInput, GIT_MERGE_FILE_INPUT_VERSION); if (gitError != GIT_OK) { if (error != NULL) *error = [NSError git_errorFor:gitError description:@"Failed to create merge file input other side"]; return nil; diff --git a/ObjectiveGit/GTRepository+Pull.h b/ObjectiveGit/GTRepository+Pull.h index cbc1f74fd..939930e20 100644 --- a/ObjectiveGit/GTRepository+Pull.h +++ b/ObjectiveGit/GTRepository+Pull.h @@ -10,7 +10,7 @@ NS_ASSUME_NONNULL_BEGIN -typedef void (^GTRemoteFetchTransferProgressBlock)(const git_transfer_progress *progress, BOOL *stop); +typedef void (^GTRemoteFetchTransferProgressBlock)(const git_indexer_progress *progress, BOOL *stop); @interface GTRepository (Pull) diff --git a/ObjectiveGit/GTRepository+RemoteOperations.h b/ObjectiveGit/GTRepository+RemoteOperations.h index d93ebaad7..0e292dda1 100644 --- a/ObjectiveGit/GTRepository+RemoteOperations.h +++ b/ObjectiveGit/GTRepository+RemoteOperations.h @@ -51,7 +51,7 @@ typedef NS_ENUM(NSInteger, GTFetchPruneOption) { /// /// Returns YES if the fetch was successful, NO otherwise (and `error`, if provided, /// will point to an error describing what happened). -- (BOOL)fetchRemote:(GTRemote *)remote withOptions:(NSDictionary * _Nullable)options error:(NSError **)error progress:(void (^ _Nullable)(const git_transfer_progress *stats, BOOL *stop))progressBlock; +- (BOOL)fetchRemote:(GTRemote *)remote withOptions:(NSDictionary * _Nullable)options error:(NSError **)error progress:(void (^ _Nullable)(const git_indexer_progress *stats, BOOL *stop))progressBlock; /// Enumerate all available fetch head entries. /// diff --git a/ObjectiveGit/GTRepository+RemoteOperations.m b/ObjectiveGit/GTRepository+RemoteOperations.m index 822171ab9..4159f336a 100644 --- a/ObjectiveGit/GTRepository+RemoteOperations.m +++ b/ObjectiveGit/GTRepository+RemoteOperations.m @@ -30,7 +30,7 @@ NSString *const GTRepositoryRemoteOptionsDownloadTags = @"GTRepositoryRemoteOptionsDownloadTags"; NSString *const GTRepositoryRemoteOptionsPushNotes = @"GTRepositoryRemoteOptionsPushNotes"; -typedef void (^GTRemoteFetchTransferProgressBlock)(const git_transfer_progress *stats, BOOL *stop); +typedef void (^GTRemoteFetchTransferProgressBlock)(const git_indexer_progress *stats, BOOL *stop); typedef void (^GTRemotePushTransferProgressBlock)(unsigned int current, unsigned int total, size_t bytes, BOOL *stop); @implementation GTRepository (RemoteOperations) @@ -45,7 +45,7 @@ @implementation GTRepository (RemoteOperations) git_direction direction; } GTRemoteConnectionInfo; -int GTRemoteFetchTransferProgressCallback(const git_transfer_progress *stats, void *payload) { +int GTRemoteFetchTransferProgressCallback(const git_indexer_progress *stats, void *payload) { GTRemoteConnectionInfo *info = payload; BOOL stop = NO; @@ -97,7 +97,7 @@ - (BOOL)fetchRemote:(GTRemote *)remote withOptions:(NSDictionary *)options error } @onExit { - git_strarray_free(&refspecs); + git_strarray_dispose(&refspecs); }; NSString *reflog_message = [NSString stringWithFormat:@"fetching remote %@", remote.name]; @@ -286,8 +286,7 @@ - (BOOL)pushRefspecs:(NSArray *)refspecs toRemote:(GTRemote *)remote withOptions }; git_push_options push_options = GIT_PUSH_OPTIONS_INIT; - - gitError = git_push_init_options(&push_options, GIT_PUSH_OPTIONS_VERSION); + gitError = git_push_options_init(&push_options, GIT_PUSH_OPTIONS_VERSION); if (gitError != GIT_OK) { if (error != NULL) *error = [NSError git_errorFor:gitError description:@"Failed to init push options"]; return NO; diff --git a/ObjectiveGit/GTRepository+Status.m b/ObjectiveGit/GTRepository+Status.m index 7f2559134..5b0db99e2 100644 --- a/ObjectiveGit/GTRepository+Status.m +++ b/ObjectiveGit/GTRepository+Status.m @@ -41,7 +41,7 @@ - (BOOL)enumerateFileStatusWithOptions:(NSDictionary *)options error:(NSError ** int err = git_status_list_new(&statusList, self.git_repository, &gitOptions); @onExit { git_status_list_free(statusList); - if (gitOptions.pathspec.count > 0) git_strarray_free(&gitOptions.pathspec); + if (gitOptions.pathspec.count > 0) git_strarray_dispose(&gitOptions.pathspec); }; if (err != GIT_OK) { diff --git a/ObjectiveGit/GTRepository.h b/ObjectiveGit/GTRepository.h index b57430b50..28079183b 100644 --- a/ObjectiveGit/GTRepository.h +++ b/ObjectiveGit/GTRepository.h @@ -239,7 +239,7 @@ typedef NS_ENUM(NSInteger, GTRepositoryStateType) { /// May be NULL. /// /// returns nil (and fills the error parameter) if an error occurred, or a GTRepository object if successful. -+ (instancetype _Nullable)cloneFromURL:(NSURL *)originURL toWorkingDirectory:(NSURL *)workdirURL options:(NSDictionary * _Nullable)options error:(NSError **)error transferProgressBlock:(void (^ _Nullable)(const git_transfer_progress *, BOOL *stop))transferProgressBlock; ++ (instancetype _Nullable)cloneFromURL:(NSURL *)originURL toWorkingDirectory:(NSURL *)workdirURL options:(NSDictionary * _Nullable)options error:(NSError **)error transferProgressBlock:(void (^ _Nullable)(const git_indexer_progress *, BOOL *stop))transferProgressBlock; /// Lookup objects in the repo by oid or sha1 - (id _Nullable)lookUpObjectByOID:(GTOID *)oid objectType:(GTObjectType)type error:(NSError **)error; diff --git a/ObjectiveGit/GTRepository.m b/ObjectiveGit/GTRepository.m index 133216cd4..b0a439069 100644 --- a/ObjectiveGit/GTRepository.m +++ b/ObjectiveGit/GTRepository.m @@ -214,9 +214,9 @@ - (instancetype)initWithURL:(NSURL *)localFileURL flags:(NSInteger)flags ceiling } -typedef void(^GTTransferProgressBlock)(const git_transfer_progress *progress, BOOL *stop); +typedef void(^GTTransferProgressBlock)(const git_indexer_progress *progress, BOOL *stop); -static int transferProgressCallback(const git_transfer_progress *progress, void *payload) { +static int transferProgressCallback(const git_indexer_progress *progress, void *payload) { if (payload == NULL) return 0; struct GTClonePayload *pld = payload; if (pld->transferProgressBlock == NULL) return 0; @@ -244,7 +244,7 @@ static int remoteCreate(git_remote **remote, git_repository *repo, const char *n git_remote_callbacks remoteCallbacks; }; -+ (instancetype _Nullable)cloneFromURL:(NSURL *)originURL toWorkingDirectory:(NSURL *)workdirURL options:(NSDictionary * _Nullable)options error:(NSError **)error transferProgressBlock:(void (^ _Nullable)(const git_transfer_progress *, BOOL *stop))transferProgressBlock { ++ (instancetype _Nullable)cloneFromURL:(NSURL *)originURL toWorkingDirectory:(NSURL *)workdirURL options:(NSDictionary * _Nullable)options error:(NSError **)error transferProgressBlock:(void (^ _Nullable)(const git_indexer_progress *, BOOL *stop))transferProgressBlock { git_clone_options cloneOptions = GIT_CLONE_OPTIONS_INIT; diff --git a/ObjectiveGitFramework.xcodeproj/project.pbxproj b/ObjectiveGitFramework.xcodeproj/project.pbxproj index 3edf16bdf..d8b487bf4 100644 --- a/ObjectiveGitFramework.xcodeproj/project.pbxproj +++ b/ObjectiveGitFramework.xcodeproj/project.pbxproj @@ -1713,7 +1713,6 @@ /usr/local/lib/libssh2.a, "-lcrypto", "-lssl", - "-lcurl", ); PRODUCT_BUNDLE_IDENTIFIER = "org.libgit2.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = ObjectiveGit; @@ -1742,7 +1741,6 @@ /usr/local/lib/libssh2.a, "-lcrypto", "-lssl", - "-lcurl", ); PRODUCT_BUNDLE_IDENTIFIER = "org.libgit2.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = ObjectiveGit; @@ -1982,7 +1980,6 @@ /usr/local/lib/libssh2.a, "-lcrypto", "-lssl", - "-lcurl", ); PRODUCT_BUNDLE_IDENTIFIER = "org.libgit2.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = ObjectiveGit; @@ -2202,7 +2199,6 @@ /usr/local/lib/libssh2.a, "-lcrypto", "-lssl", - "-lcurl", ); PRODUCT_BUNDLE_IDENTIFIER = "org.libgit2.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = ObjectiveGit; diff --git a/ObjectiveGitTests/GTSubmoduleSpec.m b/ObjectiveGitTests/GTSubmoduleSpec.m index 0a25f5e35..0a2819c57 100644 --- a/ObjectiveGitTests/GTSubmoduleSpec.m +++ b/ObjectiveGitTests/GTSubmoduleSpec.m @@ -246,7 +246,8 @@ __block NSError *error = nil; expect(@([submodule sync:&error])).to(beTruthy()); - expect([config stringForKey:configKey]).to(equal(@"../Test_App")); + NSString *submoduleURL = [[[repo.fileURL URLByAppendingPathComponent:@"../Test_App"] URLByResolvingSymlinksInPath] path]; + expect([config stringForKey:configKey]).to(equal(submoduleURL)); }); }); From 60ade743ad9c91080b1c20c95bd3a80112bd2bb5 Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Tue, 7 Jul 2020 19:22:45 +0200 Subject: [PATCH 2/9] Update OpenSSL to 1.1.1i --- External/openssl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/External/openssl b/External/openssl index e71ebf275..90cebd1b2 160000 --- a/External/openssl +++ b/External/openssl @@ -1 +1 @@ -Subproject commit e71ebf275da66dfd601c92e0e80a35114c32f6f8 +Subproject commit 90cebd1b216e0a160fcfd8e0eddca47dad47c183 From d4c84f35a852ad49d344f34718a3cfc917987f45 Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Tue, 7 Jul 2020 19:23:28 +0200 Subject: [PATCH 3/9] Update libssh2 to 1.9.0 --- External/libssh2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/External/libssh2 b/External/libssh2 index f15b1e297..42d37aa63 160000 --- a/External/libssh2 +++ b/External/libssh2 @@ -1 +1 @@ -Subproject commit f15b1e297f72882214988101ccdc5e6ad30d7e6e +Subproject commit 42d37aa63129a1b2644bf6495198923534322d64 From 00e7e8bc28825496006ce8ba094b6962b442ad6b Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Thu, 28 Mar 2019 00:14:50 +0100 Subject: [PATCH 4/9] Bump Travis to Xcode 12.2 --- .travis.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4cab7cf69..52c7d6dcc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,17 +7,15 @@ # --- os: osx -osx_image: xcode9.3 +osx_image: xcode12.2 language: objective-c matrix: fast_finish: true include: - - osx_image: xcode9.3 - env: + - env: - SCHEME="ObjectiveGit Mac" - - osx_image: xcode9.3 - env: + - env: - SCHEME="ObjectiveGit iOS" before_install: From 6771e62b1a64918d9967b6699c684e08c9232a60 Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Sat, 11 May 2019 21:38:09 +0200 Subject: [PATCH 5/9] Bump Xcode version This updates the xconfigs, enables Swift 5, and fixes a few easy warnings/deprecations Xcode is worried about. --- Cartfile.private | 6 +- Cartfile.resolved | 8 +- Carthage/Checkouts/Nimble | 2 +- Carthage/Checkouts/Quick | 2 +- Carthage/Checkouts/ZipArchive | 2 +- Carthage/Checkouts/xcconfigs | 2 +- ObjectiveGit/Categories/NSArray+StringArray.h | 2 +- ObjectiveGit/Categories/NSData+Git.h | 4 +- .../Categories/NSDate+GTTimeAdditions.h | 2 +- ObjectiveGit/GTOID.h | 4 +- ObjectiveGit/GTObject.h | 2 +- ObjectiveGit/GTReflogEntry+Private.h | 2 +- .../project.pbxproj | 78 +++++++++++-------- 13 files changed, 66 insertions(+), 50 deletions(-) diff --git a/Cartfile.private b/Cartfile.private index 0dfa9b497..b021ce726 100644 --- a/Cartfile.private +++ b/Cartfile.private @@ -1,4 +1,4 @@ github "jspahrsummers/xcconfigs" "master" -github "Quick/Quick" ~> 1.3.4 -github "Quick/Nimble" ~> 7.3.3 -github "ZipArchive/ZipArchive" ~> 2.1.4 +github "Quick/Quick" ~> 2.1.0 +github "Quick/Nimble" ~> 8.0.1 +github "ZipArchive/ZipArchive" ~> 2.2.3 diff --git a/Cartfile.resolved b/Cartfile.resolved index 36c5288e0..1b6153da6 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,4 +1,4 @@ -github "Quick/Nimble" "v7.3.3" -github "Quick/Quick" "v1.3.4" -github "ZipArchive/ZipArchive" "v2.1.4" -github "jspahrsummers/xcconfigs" "bb795558a76e5daf3688500055bbcfe243bffa8d" +github "Quick/Nimble" "v8.1.2" +github "Quick/Quick" "v2.2.1" +github "ZipArchive/ZipArchive" "v2.2.3" +github "jspahrsummers/xcconfigs" "4ced0ad5a971220917994a4edfa6abf9702e3818" diff --git a/Carthage/Checkouts/Nimble b/Carthage/Checkouts/Nimble index 9a281b1cf..7a46a5fc8 160000 --- a/Carthage/Checkouts/Nimble +++ b/Carthage/Checkouts/Nimble @@ -1 +1 @@ -Subproject commit 9a281b1cfa1c53d1e8bd92e1798e4e473af8d263 +Subproject commit 7a46a5fc86cb917f69e3daf79fcb045283d8f008 diff --git a/Carthage/Checkouts/Quick b/Carthage/Checkouts/Quick index f2b5a0644..09b3becb3 160000 --- a/Carthage/Checkouts/Quick +++ b/Carthage/Checkouts/Quick @@ -1 +1 @@ -Subproject commit f2b5a06440ea87eba1a167cab37bf6496646c52e +Subproject commit 09b3becb37cb2163919a3842a4c5fa6ec7130792 diff --git a/Carthage/Checkouts/ZipArchive b/Carthage/Checkouts/ZipArchive index e8b08ceb6..f3379e6ef 160000 --- a/Carthage/Checkouts/ZipArchive +++ b/Carthage/Checkouts/ZipArchive @@ -1 +1 @@ -Subproject commit e8b08ceb6ab9ff56e0826913b13680a129a92828 +Subproject commit f3379e6efa93e657293573ad196302b94041e464 diff --git a/Carthage/Checkouts/xcconfigs b/Carthage/Checkouts/xcconfigs index bb795558a..4ced0ad5a 160000 --- a/Carthage/Checkouts/xcconfigs +++ b/Carthage/Checkouts/xcconfigs @@ -1 +1 @@ -Subproject commit bb795558a76e5daf3688500055bbcfe243bffa8d +Subproject commit 4ced0ad5a971220917994a4edfa6abf9702e3818 diff --git a/ObjectiveGit/Categories/NSArray+StringArray.h b/ObjectiveGit/Categories/NSArray+StringArray.h index 026521ba2..119e894d1 100644 --- a/ObjectiveGit/Categories/NSArray+StringArray.h +++ b/ObjectiveGit/Categories/NSArray+StringArray.h @@ -7,7 +7,7 @@ // #import -#import "git2/strarray.h" +#import @interface NSArray (StringArray) diff --git a/ObjectiveGit/Categories/NSData+Git.h b/ObjectiveGit/Categories/NSData+Git.h index ddc2a91e4..7f9de6c6b 100644 --- a/ObjectiveGit/Categories/NSData+Git.h +++ b/ObjectiveGit/Categories/NSData+Git.h @@ -3,8 +3,8 @@ // #import -#import "git2/buffer.h" -#import "git2/oid.h" +#import +#import @interface NSData (Git) diff --git a/ObjectiveGit/Categories/NSDate+GTTimeAdditions.h b/ObjectiveGit/Categories/NSDate+GTTimeAdditions.h index e87210310..e219be506 100644 --- a/ObjectiveGit/Categories/NSDate+GTTimeAdditions.h +++ b/ObjectiveGit/Categories/NSDate+GTTimeAdditions.h @@ -7,7 +7,7 @@ // #import -#import "git2/types.h" +#import @interface NSDate (GTTimeAdditions) diff --git a/ObjectiveGit/GTOID.h b/ObjectiveGit/GTOID.h index ab0590ee7..bd0502990 100644 --- a/ObjectiveGit/GTOID.h +++ b/ObjectiveGit/GTOID.h @@ -7,8 +7,8 @@ // #import -#import "git2/oid.h" -#import "GTObject.h" +#import +#import NS_ASSUME_NONNULL_BEGIN diff --git a/ObjectiveGit/GTObject.h b/ObjectiveGit/GTObject.h index a74ed418c..3167dc139 100644 --- a/ObjectiveGit/GTObject.h +++ b/ObjectiveGit/GTObject.h @@ -28,7 +28,7 @@ // #import -#import "git2/types.h" +#import typedef NS_ENUM(int, GTObjectType) { GTObjectTypeAny = GIT_OBJECT_ANY, /**< Object can be any of the following */ diff --git a/ObjectiveGit/GTReflogEntry+Private.h b/ObjectiveGit/GTReflogEntry+Private.h index b30415160..498bb4860 100644 --- a/ObjectiveGit/GTReflogEntry+Private.h +++ b/ObjectiveGit/GTReflogEntry+Private.h @@ -23,4 +23,4 @@ NS_ASSUME_NONNULL_BEGIN @end -NS_ASSUME_NONNULL_END \ No newline at end of file +NS_ASSUME_NONNULL_END diff --git a/ObjectiveGitFramework.xcodeproj/project.pbxproj b/ObjectiveGitFramework.xcodeproj/project.pbxproj index d8b487bf4..6f2cb7c16 100644 --- a/ObjectiveGitFramework.xcodeproj/project.pbxproj +++ b/ObjectiveGitFramework.xcodeproj/project.pbxproj @@ -89,6 +89,8 @@ 30FDC08116835A8100654BF0 /* GTDiffLine.m in Sources */ = {isa = PBXBuildFile; fileRef = 30FDC07E16835A8100654BF0 /* GTDiffLine.m */; }; 4D123240178E009E0048F785 /* GTRepositoryCommittingSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D12323F178E009E0048F785 /* GTRepositoryCommittingSpec.m */; }; 4D1C40D8182C006D00BE2960 /* GTBlobSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D1C40D7182C006D00BE2960 /* GTBlobSpec.m */; }; + 4D5AB893228742FE003CD3CE /* EXTScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 306123A917EA5261006591D4 /* EXTScope.h */; }; + 4D5AB89422874300003CD3CE /* EXTScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 306123A917EA5261006591D4 /* EXTScope.h */; }; 4D79C0EE17DF9F4D00997DE4 /* GTCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D79C0EC17DF9F4D00997DE4 /* GTCredential.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4D79C0EF17DF9F4D00997DE4 /* GTCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D79C0ED17DF9F4D00997DE4 /* GTCredential.m */; }; 4D9BCD24206D84AD003CD3CE /* libgit2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D9BCD23206D84AD003CD3CE /* libgit2.a */; }; @@ -487,6 +489,12 @@ 30FDC07E16835A8100654BF0 /* GTDiffLine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTDiffLine.m; sourceTree = ""; }; 4D12323F178E009E0048F785 /* GTRepositoryCommittingSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTRepositoryCommittingSpec.m; sourceTree = ""; }; 4D1C40D7182C006D00BE2960 /* GTBlobSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTBlobSpec.m; sourceTree = ""; }; + 4D5AB88C22873EA3003CD3CE /* macOS-Application.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "macOS-Application.xcconfig"; sourceTree = ""; }; + 4D5AB88D22873EA3003CD3CE /* macOS-Framework.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "macOS-Framework.xcconfig"; sourceTree = ""; }; + 4D5AB88E22873EA3003CD3CE /* macOS-StaticLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "macOS-StaticLibrary.xcconfig"; sourceTree = ""; }; + 4D5AB88F22873EA3003CD3CE /* macOS-Base.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "macOS-Base.xcconfig"; sourceTree = ""; }; + 4D5AB89022873EA3003CD3CE /* macOS-XCTest.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "macOS-XCTest.xcconfig"; sourceTree = ""; }; + 4D5AB89122873EA3003CD3CE /* macOS-DynamicLibrary.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "macOS-DynamicLibrary.xcconfig"; sourceTree = ""; }; 4D79C0EC17DF9F4D00997DE4 /* GTCredential.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTCredential.h; sourceTree = ""; }; 4D79C0ED17DF9F4D00997DE4 /* GTCredential.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTCredential.m; sourceTree = ""; }; 4D79C0F617DFAA7100997DE4 /* GTCredential+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTCredential+Private.h"; sourceTree = ""; }; @@ -822,6 +830,19 @@ name = "Other Sources"; sourceTree = ""; }; + 4D5AB88B22873EA3003CD3CE /* macOS */ = { + isa = PBXGroup; + children = ( + 4D5AB88C22873EA3003CD3CE /* macOS-Application.xcconfig */, + 4D5AB88D22873EA3003CD3CE /* macOS-Framework.xcconfig */, + 4D5AB88E22873EA3003CD3CE /* macOS-StaticLibrary.xcconfig */, + 4D5AB88F22873EA3003CD3CE /* macOS-Base.xcconfig */, + 4D5AB89022873EA3003CD3CE /* macOS-XCTest.xcconfig */, + 4D5AB89122873EA3003CD3CE /* macOS-DynamicLibrary.xcconfig */, + ); + path = macOS; + sourceTree = ""; + }; 88F05A7516011E5400B7AD1D /* ObjectiveGitTests */ = { isa = PBXGroup; children = ( @@ -1033,6 +1054,7 @@ isa = PBXGroup; children = ( D0A463D517E57C45000F5021 /* Base */, + 4D5AB88B22873EA3003CD3CE /* macOS */, D0D81862174421EB00995A2E /* iOS */, D0D81866174421EB00995A2E /* Mac OS X */, D0D8186C174421EB00995A2E /* README.md */, @@ -1124,6 +1146,7 @@ 8821547617147A5200D76B76 /* GTReflogEntry.h in Headers */, 30DCBA5C17B45213009B0EBD /* GTStatusDelta.h in Headers */, 88746CC417FA1C950005888A /* GTRepository+Committing.h in Headers */, + 4D5AB893228742FE003CD3CE /* EXTScope.h in Headers */, D09C2E361755F16200065E36 /* GTSubmodule.h in Headers */, F8D1BDEE1B31FE7C00CDEC90 /* GTRepository+Pull.h in Headers */, F964D5F11CE9D9B200F1D8DD /* GTNote.h in Headers */, @@ -1140,6 +1163,7 @@ D01B6F2319F82F8700D411BC /* GTRepository+Reset.h in Headers */, D01B6F2D19F82F8700D411BC /* GTEnumerator.h in Headers */, D01B6F5519F82FA600D411BC /* GTReflog.h in Headers */, + 4D5AB89422874300003CD3CE /* EXTScope.h in Headers */, 23F39FAF1C86DD0A00849F3C /* GTRepository+Merging.h in Headers */, D01B6F3519F82F8700D411BC /* GTBlob.h in Headers */, D01B6F4D19F82F8700D411BC /* GTRemote.h in Headers */, @@ -1383,7 +1407,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = script/update_libssl_ios; + shellScript = "script/update_libssl_ios\n"; }; 6A3C609117D5963700382DFF /* libssh2-iOS */ = { isa = PBXShellScriptBuildPhase; @@ -1411,7 +1435,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = script/update_libgit2; + shellScript = "script/update_libgit2\n"; }; D0A330F616027F3B00A616FA /* libgit2-iOS */ = { isa = PBXShellScriptBuildPhase; @@ -1425,7 +1449,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = script/update_libgit2_ios; + shellScript = "script/update_libgit2_ios\n"; }; /* End PBXShellScriptBuildPhase section */ @@ -1694,7 +1718,7 @@ /* Begin XCBuildConfiguration section */ 1DEB91AE08733DA50010E9CD /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0D8186A174421EB00995A2E /* Mac-Framework.xcconfig */; + baseConfigurationReference = 4D5AB88D22873EA3003CD3CE /* macOS-Framework.xcconfig */; buildSettings = { DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -1722,7 +1746,7 @@ }; 1DEB91AF08733DA50010E9CD /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0D8186A174421EB00995A2E /* Mac-Framework.xcconfig */; + baseConfigurationReference = 4D5AB88D22873EA3003CD3CE /* macOS-Framework.xcconfig */; buildSettings = { DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -1773,13 +1797,13 @@ ., External, ); - MACOSX_DEPLOYMENT_TARGET = 10.8; + MACOSX_DEPLOYMENT_TARGET = 10.10; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "$(inherited)", "-DGIT_SSH", ); - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; WARNING_CFLAGS = ( "$(inherited)", @@ -1812,12 +1836,12 @@ ., External, ); - MACOSX_DEPLOYMENT_TARGET = 10.8; + MACOSX_DEPLOYMENT_TARGET = 10.10; OTHER_CFLAGS = ( "$(inherited)", "-DGIT_SSH", ); - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; WARNING_CFLAGS = ( "$(inherited)", @@ -1876,7 +1900,7 @@ }; 88F05A8016011E5400B7AD1D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F81B6B54207B0A9F00AB0836 /* Mac-XCTest.xcconfig */; + baseConfigurationReference = 4D5AB89022873EA3003CD3CE /* macOS-XCTest.xcconfig */; buildSettings = { CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -1893,16 +1917,14 @@ /usr/local/include, ); INFOPLIST_FILE = "ObjectiveGitTests/ObjectiveGitTests-Info.plist"; - MACOSX_DEPLOYMENT_TARGET = 10.9; PRODUCT_BUNDLE_IDENTIFIER = "org.libgit2.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; }; name = Debug; }; 88F05A8116011E5400B7AD1D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0D81867174421EB00995A2E /* Mac-Application.xcconfig */; + baseConfigurationReference = 4D5AB89022873EA3003CD3CE /* macOS-XCTest.xcconfig */; buildSettings = { CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -1914,10 +1936,8 @@ /usr/local/include, ); INFOPLIST_FILE = "ObjectiveGitTests/ObjectiveGitTests-Info.plist"; - MACOSX_DEPLOYMENT_TARGET = 10.9; PRODUCT_BUNDLE_IDENTIFIER = "org.libgit2.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; }; name = Release; }; @@ -1945,12 +1965,12 @@ ., External, ); - MACOSX_DEPLOYMENT_TARGET = 10.8; + MACOSX_DEPLOYMENT_TARGET = 10.10; OTHER_CFLAGS = ( "$(inherited)", "-DGIT_SSH", ); - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; WARNING_CFLAGS = ( "$(inherited)", @@ -1961,7 +1981,7 @@ }; D019778E19F830F500F523DA /* Test */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0D8186A174421EB00995A2E /* Mac-Framework.xcconfig */; + baseConfigurationReference = 4D5AB88D22873EA3003CD3CE /* macOS-Framework.xcconfig */; buildSettings = { DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -1989,7 +2009,7 @@ }; D019778F19F830F500F523DA /* Test */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F81B6B54207B0A9F00AB0836 /* Mac-XCTest.xcconfig */; + baseConfigurationReference = 4D5AB89022873EA3003CD3CE /* macOS-XCTest.xcconfig */; buildSettings = { CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -2001,10 +2021,8 @@ /usr/local/include, ); INFOPLIST_FILE = "ObjectiveGitTests/ObjectiveGitTests-Info.plist"; - MACOSX_DEPLOYMENT_TARGET = 10.9; PRODUCT_BUNDLE_IDENTIFIER = "org.libgit2.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; }; name = Test; }; @@ -2035,7 +2053,7 @@ }; D019779219F830F500F523DA /* Test */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0D8186B174421EB00995A2E /* Mac-StaticLibrary.xcconfig */; + baseConfigurationReference = 4D5AB88E22873EA3003CD3CE /* macOS-StaticLibrary.xcconfig */; buildSettings = { PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -2164,12 +2182,12 @@ ., External, ); - MACOSX_DEPLOYMENT_TARGET = 10.8; + MACOSX_DEPLOYMENT_TARGET = 10.10; OTHER_CFLAGS = ( "$(inherited)", "-DGIT_SSH", ); - SWIFT_VERSION = 3.0; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; WARNING_CFLAGS = ( "$(inherited)", @@ -2180,7 +2198,7 @@ }; D03FC3D81602E97F00BCFA73 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0D8186A174421EB00995A2E /* Mac-Framework.xcconfig */; + baseConfigurationReference = 4D5AB88D22873EA3003CD3CE /* macOS-Framework.xcconfig */; buildSettings = { DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -2208,7 +2226,7 @@ }; D03FC3DA1602E97F00BCFA73 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0D81867174421EB00995A2E /* Mac-Application.xcconfig */; + baseConfigurationReference = 4D5AB89022873EA3003CD3CE /* macOS-XCTest.xcconfig */; buildSettings = { CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -2220,16 +2238,14 @@ /usr/local/include, ); INFOPLIST_FILE = "ObjectiveGitTests/ObjectiveGitTests-Info.plist"; - MACOSX_DEPLOYMENT_TARGET = 10.9; PRODUCT_BUNDLE_IDENTIFIER = "org.libgit2.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; }; name = Profile; }; D03FC3DB1602E97F00BCFA73 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0D8186B174421EB00995A2E /* Mac-StaticLibrary.xcconfig */; + baseConfigurationReference = 4D5AB88E22873EA3003CD3CE /* macOS-StaticLibrary.xcconfig */; buildSettings = { PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -2245,7 +2261,7 @@ }; D0A330EF16027F1E00A616FA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0D8186B174421EB00995A2E /* Mac-StaticLibrary.xcconfig */; + baseConfigurationReference = 4D5AB88E22873EA3003CD3CE /* macOS-StaticLibrary.xcconfig */; buildSettings = { PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -2253,7 +2269,7 @@ }; D0A330F016027F1E00A616FA /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0D8186B174421EB00995A2E /* Mac-StaticLibrary.xcconfig */; + baseConfigurationReference = 4D5AB88E22873EA3003CD3CE /* macOS-StaticLibrary.xcconfig */; buildSettings = { PRODUCT_NAME = "$(TARGET_NAME)"; }; From e0cc50c14030292e638c8d8fe01e7522543d53f8 Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Wed, 10 Feb 2021 15:50:20 +0100 Subject: [PATCH 6/9] Yank most of .gitignore file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As project.xcworkspace was ignored, this makes it pretty hard to have a consistent environment between me and the rest of the world 😞. --- .gitignore | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/.gitignore b/.gitignore index dc2f3d3ef..7ff5007c1 100644 --- a/.gitignore +++ b/.gitignore @@ -2,16 +2,6 @@ *.swp *~.nib -build/* -.build/* -build-iPhoneSimulator/* -build-iPhoneOS/* -objective-git.bridgesupport -ObjectiveGitFramework/build/* -ObjectiveGit-iOS.framework/* -External/libgit2*.a -External/libgit2-ios - *.pbxuser *.perspective *.perspectivev3 @@ -19,16 +9,9 @@ External/libgit2-ios *.mode1v3 *.mode2v3 -project.xcworkspace */xcuserdata/ *.xccheckout *.xcscmblueprint -ObjectiveGitTests/fixtures/Fixtures/* - -External/ios-openssl/include -External/ios-openssl/lib -External/libssh2-ios - Carthage/Build From e09dec7db5c361007606eb390adae6fadd5f0d0a Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Wed, 10 Feb 2021 15:14:17 +0100 Subject: [PATCH 7/9] Build system update --- .../project.pbxproj | 45 +++++++++++++----- .../xcschemes/ObjectiveGit iOS.xcscheme | 22 ++++----- .../contents.xcworkspacedata | 9 ---- script/bootstrap | 2 +- script/carthage.sh | 17 +++++++ script/cibuild | 4 +- script/ios_build_functions.sh | 13 ++--- script/update_libgit2_ios | 2 +- script/update_libssh2_ios | 9 +++- script/update_libssl_ios | 47 ++++++++++++------- 10 files changed, 102 insertions(+), 68 deletions(-) create mode 100755 script/carthage.sh diff --git a/ObjectiveGitFramework.xcodeproj/project.pbxproj b/ObjectiveGitFramework.xcodeproj/project.pbxproj index 6f2cb7c16..05fed3255 100644 --- a/ObjectiveGitFramework.xcodeproj/project.pbxproj +++ b/ObjectiveGitFramework.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXAggregateTarget section */ @@ -323,10 +323,10 @@ DD3D951D182AB25C004AF532 /* GTBlameHunk.m in Sources */ = {isa = PBXBuildFile; fileRef = DD3D951B182AB25C004AF532 /* GTBlameHunk.m */; }; F81B6B50207B032800AB0836 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8D63871207AE62A00D1FD32 /* XCTest.framework */; }; F81B6B59207B0D3B00AB0836 /* SwiftSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A0129619F9A660007F1914 /* SwiftSpec.swift */; }; - F84277BE207B104A008AB8E8 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8D63872207AE63A00D1FD32 /* XCTest.framework */; }; + F84277BE207B104A008AB8E8 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8D63872207AE63A00D1FD32 /* XCTest.framework */; platformFilter = ios; }; F86949AA1BF1B79E00A989D3 /* GTUtilityFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = F8EFA0391B4059ED000FF7D0 /* GTUtilityFunctions.m */; }; F879D8311B4B788F002D5C07 /* Libgit2FeaturesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = F879D82F1B4B77F4002D5C07 /* Libgit2FeaturesSpec.m */; }; - F879D83C1B4B7F7D002D5C07 /* ObjectiveGit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B6ED319F82E2000D411BC /* ObjectiveGit.framework */; }; + F879D83C1B4B7F7D002D5C07 /* ObjectiveGit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D01B6ED319F82E2000D411BC /* ObjectiveGit.framework */; platformFilter = ios; }; F879D8441B4B80C7002D5C07 /* Libgit2FeaturesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = F879D82F1B4B77F4002D5C07 /* Libgit2FeaturesSpec.m */; }; F8D007701B4F7CA8009A8DAF /* NSErrorGitSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = D0F4E28917C7F24200BBDE30 /* NSErrorGitSpec.m */; }; F8D007711B4F7CB0009A8DAF /* NSDataGitSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = D01EFD9F195DEF2200838D24 /* NSDataGitSpec.m */; }; @@ -543,7 +543,6 @@ 88746CC217FA1C950005888A /* GTRepository+Committing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTRepository+Committing.h"; sourceTree = ""; }; 88746CC317FA1C950005888A /* GTRepository+Committing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTRepository+Committing.m"; sourceTree = ""; }; 887B948D1A3A38130070D41D /* ObjectiveGit.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = ObjectiveGit.modulemap; sourceTree = ""; }; - 887DAFF615CB1C8000F30D0D /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 88948AC81779243600809CDA /* GTObjectDatabaseSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTObjectDatabaseSpec.m; sourceTree = ""; }; 889923F919FF5DD40092A9A6 /* git2 */ = {isa = PBXFileReference; lastKnownFileType = folder; name = git2; path = External/libgit2/include/git2; sourceTree = ""; }; 88A994B916FCE7D400402C7B /* GTBranchSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTBranchSpec.m; sourceTree = ""; }; @@ -772,7 +771,6 @@ F8D63865207ACCAA00D1FD32 /* Nimble.framework */, D0A0128819F98475007F1914 /* Quick.framework */, F8D63867207ACCEE00D1FD32 /* Quick.framework */, - 887DAFF615CB1C8000F30D0D /* Security.framework */, F8D63871207AE62A00D1FD32 /* XCTest.framework */, F8D63872207AE63A00D1FD32 /* XCTest.framework */, F8D6386B207ACE0600D1FD32 /* ZipArchive.framework */, @@ -1243,11 +1241,11 @@ isa = PBXNativeTarget; buildConfigurationList = 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "ObjectiveGit-Mac" */; buildPhases = ( + 79262F0F13C697BE00A4B1EA /* Copy git2 Headers */, + BEF7E4DF1A3A47450035BB8E /* Copy git2 Headers again */, 8DC2EF540486A6940098B216 /* Sources */, 8DC2EF520486A6940098B216 /* Resources */, 8DC2EF560486A6940098B216 /* Frameworks */, - 79262F0F13C697BE00A4B1EA /* Copy git2 Headers */, - BEF7E4DF1A3A47450035BB8E /* Copy git2 Headers again */, 8DC2EF500486A6940098B216 /* Headers */, 4D751E9D215D765D003CD3CE /* Package external libraries */, ); @@ -1266,9 +1264,9 @@ isa = PBXNativeTarget; buildConfigurationList = D01B6EE619F82E2000D411BC /* Build configuration list for PBXNativeTarget "ObjectiveGit-iOS" */; buildPhases = ( + D01B6ED019F82E2000D411BC /* Headers */, D01B6ECE19F82E2000D411BC /* Sources */, D01B6ECF19F82E2000D411BC /* Frameworks */, - D01B6ED019F82E2000D411BC /* Headers */, ); buildRules = ( ); @@ -1309,6 +1307,9 @@ LastUpgradeCheck = 0930; ORGANIZATIONNAME = "GitHub, Inc"; TargetAttributes = { + 4DD741D825D3F552009D9A17 = { + CreatedOnToolsVersion = 12.4; + }; 88F05A6A16011E5400B7AD1D = { LastSwiftMigration = 0830; }; @@ -1699,6 +1700,7 @@ }; F879D83E1B4B7F7D002D5C07 /* PBXTargetDependency */ = { isa = PBXTargetDependency; + platformFilter = ios; target = D01B6ED219F82E2000D411BC /* ObjectiveGit-iOS */; targetProxy = F879D83D1B4B7F7D002D5C07 /* PBXContainerItemProxy */; }; @@ -2331,7 +2333,11 @@ GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "ObjectiveGitTests/ObjectiveGitTests-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ( ., External, @@ -2375,7 +2381,11 @@ GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "ObjectiveGitTests/ObjectiveGitTests-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ( ., External, @@ -2420,7 +2430,11 @@ GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "ObjectiveGitTests/ObjectiveGitTests-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ( ., External, @@ -2429,7 +2443,8 @@ PRODUCT_BUNDLE_IDENTIFIER = "org.libgit2.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; VALIDATE_PRODUCT = YES; }; name = Release; @@ -2466,7 +2481,11 @@ GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "ObjectiveGitTests/ObjectiveGitTests-Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ( ., External, diff --git a/ObjectiveGitFramework.xcodeproj/xcshareddata/xcschemes/ObjectiveGit iOS.xcscheme b/ObjectiveGitFramework.xcodeproj/xcshareddata/xcschemes/ObjectiveGit iOS.xcscheme index e234f852a..f474d5e83 100644 --- a/ObjectiveGitFramework.xcodeproj/xcshareddata/xcschemes/ObjectiveGit iOS.xcscheme +++ b/ObjectiveGitFramework.xcodeproj/xcshareddata/xcschemes/ObjectiveGit iOS.xcscheme @@ -69,6 +69,15 @@ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"> + + + + @@ -81,17 +90,6 @@ - - - - - - - - - - - - - - diff --git a/script/bootstrap b/script/bootstrap index 18f76616a..aca53e814 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -62,7 +62,7 @@ check_deps () fi # Ensure that we have libgit2's dependencies installed. - installed=`brew list` + installed=`brew list --formula` for tool in $REQUIRED_TOOLS do diff --git a/script/carthage.sh b/script/carthage.sh new file mode 100755 index 000000000..adffae883 --- /dev/null +++ b/script/carthage.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +# carthage.sh +# Usage example: ./carthage.sh build --platform iOS + +set -euo pipefail + +xcconfig=$(mktemp /tmp/static.xcconfig.XXXXXX) +trap 'rm -f "$xcconfig"' INT TERM HUP EXIT + +# For Xcode 12 make sure EXCLUDED_ARCHS is set to arm architectures otherwise +# the build will fail on lipo due to duplicate architectures. +echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200 = arm64 arm64e armv7 armv7s armv6 armv8' >> $xcconfig +echo 'EXCLUDED_ARCHS = $(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(EFFECTIVE_PLATFORM_SUFFIX)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT)__XCODE_$(XCODE_VERSION_MAJOR))' >> $xcconfig + +export XCODE_XCCONFIG_FILE="$xcconfig" +carthage "$@" diff --git a/script/cibuild b/script/cibuild index cc58cb660..1dac91150 100755 --- a/script/cibuild +++ b/script/cibuild @@ -69,9 +69,9 @@ elif [ "$SCHEME" == "ObjectiveGit iOS" ]; then xcodebuild -workspace "$XCWORKSPACE" \ -scheme "$SCHEME" \ - -destination "platform=iOS Simulator,name=iPhone 5" \ + -destination "platform=iOS Simulator,name=iPhone 12" \ -sdk iphonesimulator \ ${XCODE_OPTIONS[*]} \ build test \ - 2>&1 | xcpretty $XCPRETTY_FORMAT_OPTIONS + 2>&1 #| xcpretty $XCPRETTY_FORMAT_OPTIONS fi diff --git a/script/ios_build_functions.sh b/script/ios_build_functions.sh index 515ca81b1..1a916969b 100755 --- a/script/ios_build_functions.sh +++ b/script/ios_build_functions.sh @@ -39,7 +39,7 @@ function setup_build_environment () CAN_BUILD_64BIT="1" fi - ARCHS="i386 armv7 armv7s" + ARCHS="armv7 armv7s" if [ "${CAN_BUILD_64BIT}" -eq "1" ] then # For some stupid reason cmake needs simulator @@ -72,20 +72,13 @@ function build_all_archs () do if [ "${ARCH}" == "i386" ] || [ "${ARCH}" == "x86_64" ] then - PLATFORM="iphonesimulator" + PLATFORM="iPhoneSimulator" else - PLATFORM="iphoneos" + PLATFORM="iPhoneOS" fi SDKVERSION=$(ios_sdk_version) - if [ "${ARCH}" == "arm64" ] - then - HOST="aarch64-apple-darwin" - else - HOST="${ARCH}-apple-darwin" - fi - SDKNAME="${PLATFORM}${SDKVERSION}" SDKROOT="$(ios_sdk_path ${SDKNAME})" diff --git a/script/update_libgit2_ios b/script/update_libgit2_ios index 2586f128b..5257856b8 100755 --- a/script/update_libgit2_ios +++ b/script/update_libgit2_ios @@ -46,7 +46,7 @@ function build_libgit2 () -DCMAKE_INSTALL_PREFIX:PATH="${ARCH_INSTALL_PATH}/" \ -DBUILD_CLAR:BOOL=OFF \ -DTHREADSAFE:BOOL=ON \ - -DCURL:BOOL=OFF \ + -DREGEX_BACKEND=builtin \ -DCMAKE_C_FLAGS:STRING="-fembed-bitcode" \ "${SYS_ROOT}" \ -DCMAKE_OSX_ARCHITECTURES:STRING="${ARCH}" \ diff --git a/script/update_libssh2_ios b/script/update_libssh2_ios index b015047c5..d329ed4c9 100755 --- a/script/update_libssh2_ios +++ b/script/update_libssh2_ios @@ -21,11 +21,18 @@ function build_ssh2 () cp -R "${ROOT_PATH}/External/libssh2" "${ARCH_INSTALL_PATH}/libssh2" pushd "${ARCH_INSTALL_PATH}/libssh2" > /dev/null + if [ "${ARCH}" == "arm64" ] + then + HOST="aarch64-apple-darwin" + else + HOST="${ARCH}-apple-darwin" + fi + export CFLAGS="-arch ${ARCH} -fembed-bitcode -pipe -no-cpp-precomp -isysroot ${SDKROOT} -miphoneos-version-min=${IPHONEOS_DEPLOYMENT_TARGET}" export CPPFLAGS="-arch ${ARCH} -fembed-bitcode -pipe -no-cpp-precomp -isysroot ${SDKROOT} -miphoneos-version-min=${IPHONEOS_DEPLOYMENT_TARGET}" ./buildconf >> "${LOG}" 2>&1 - ./configure --host=${HOST} --prefix="${ARCH_INSTALL_PATH}" --with-openssl --with-libssl-prefix="${INSTALL_PATH}" --disable-shared --enable-static >> "${LOG}" 2>&1 + ./configure --host=${HOST} --prefix="${ARCH_INSTALL_PATH}" --with-libssl-prefix="${INSTALL_PATH}" --disable-shared --enable-static >> "${LOG}" 2>&1 make >> "${LOG}" 2>&1 make install >> "${LOG}" 2>&1 popd > /dev/null diff --git a/script/update_libssl_ios b/script/update_libssl_ios index 2b4593683..6de9c21be 100755 --- a/script/update_libssl_ios +++ b/script/update_libssl_ios @@ -21,28 +21,39 @@ function setup () function build_ssl () { - cp -r "${ROOT_PATH}/External/openssl" "${ARCH_INSTALL_PATH}/openssl" - pushd "${ARCH_INSTALL_PATH}/openssl" > /dev/null + if [ -f "${ARCH_INSTALL_PATH}/lib/libssl.a" -a \ + -f "${ARCH_INSTALL_PATH}/lib/libcrypto.a" ]; then + echo "No building needed." 2>&1 + else - if [ "${ARCH}" == "arm64" ] || [ "${ARCH}" == "x86_64" ] - then - HOST="BSD-generic64" - CONFIG="no-gost no-asm enable-ec_nistp_64_gcc_128" - else - HOST="BSD-generic32" - CONFIG="no-gost no-asm" - perl -i -pe 's|static volatile sig_atomic_t intr_signal|static volatile int intr_signal|' crypto/ui/ui_openssl.c - fi + cp -r "${ROOT_PATH}/External/openssl" "${ARCH_INSTALL_PATH}/openssl" + pushd "${ARCH_INSTALL_PATH}/openssl" > /dev/null - ./Configure ${HOST} ${CONFIG} --openssldir="${ARCH_INSTALL_PATH}" >> "${LOG}" 2>&1 - perl -i -pe "s|^CC= gcc|CC= ${CLANG} -miphoneos-version-min=${IPHONEOS_DEPLOYMENT_TARGET} -arch ${ARCH} -fembed-bitcode |g" Makefile >> "${LOG}" 2>&1 - perl -i -pe "s|^CFLAG= (.*)|CFLAG= -isysroot ${SDKROOT} \$1|g" Makefile >> "${LOG}" 2>&1 - make >> "${LOG}" 2>&1 + if [ "${ARCH}" == "x86_64" ]; then + HOST="iossimulator-xcrun" + CONFIG="" + elif [ "${ARCH}" == "arm64" ]; then + HOST="ios64-cross" + CONFIG="" + elif [ "${ARCH}" == "armv7" ] || [ "${ARCH}" == "armv7s" ]; then + HOST="ios-cross" + CONFIG="" + else + echo "Unhandled ARCH: ${ARCH}" + exit -1 + fi - make install_sw >> "${LOG}" 2>&1 - popd > /dev/null + echo "./Configure ${HOST} ${CONFIG} --prefix=\"${ARCH_INSTALL_PATH}\" --openssldir=\"${ARCH_INSTALL_PATH}\" >> \"${LOG}\" 2>&1" + ./Configure ${HOST} ${CONFIG} --prefix=${ARCH_INSTALL_PATH} --openssldir="${ARCH_INSTALL_PATH}" >> "${LOG}" 2>&1 + perl -i -pe "s|^CFLAGS=(.*)|CFLAGS= -arch ${ARCH} -miphoneos-version-min=${IPHONEOS_DEPLOYMENT_TARGET} -isysroot ${SDKROOT} -fembed-bitcode \$1|g" Makefile >> "${LOG}" 2>&1 + perl -i -pe "s|-arch (\w+)|-arch ${ARCH}|g" Makefile >> "${LOG}" 2>&1 + make >> "${LOG}" 2>&1 - rm -rf "${ARCH_INSTALL_PATH}/openssl" + make install_sw >> "${LOG}" 2>&1 + popd > /dev/null + + rm -rf "${ARCH_INSTALL_PATH}/openssl" + fi BUILT_CRYPTO_PATHS+=("${ARCH_INSTALL_PATH}/lib/libcrypto.a") BUILT_SSL_PATHS+=("${ARCH_INSTALL_PATH}/lib/libssl.a") From a12b11c1f898ad01eb9c548746570039a5790b10 Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Sun, 7 Feb 2021 20:54:51 +0100 Subject: [PATCH 8/9] Add OpenSSL to the list of brewed dependencies --- script/bootstrap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/bootstrap b/script/bootstrap index aca53e814..1f5c90ae8 100755 --- a/script/bootstrap +++ b/script/bootstrap @@ -10,7 +10,7 @@ config () { # A whitespace-separated list of executables that must be present and locatable. # These will each be installed through Homebrew if not found. - : ${REQUIRED_TOOLS="cmake libssh2 libtool autoconf automake pkg-config"} + : ${REQUIRED_TOOLS="cmake libssh2 libtool autoconf automake pkg-config openssl@1.1"} export REQUIRED_TOOLS } From 3e3bea1fc236d43d3b33cd105f184bdc7a950d40 Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Wed, 10 Feb 2021 15:10:05 +0100 Subject: [PATCH 9/9] Rename macOS libgit.a --- .gitignore | 1 + .../project.pbxproj | 18 ++++++++++++------ script/update_libgit2 | 8 ++++---- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 7ff5007c1..7caa37186 100644 --- a/.gitignore +++ b/.gitignore @@ -13,5 +13,6 @@ *.xccheckout *.xcscmblueprint +External/libgit2-mac.a Carthage/Build diff --git a/ObjectiveGitFramework.xcodeproj/project.pbxproj b/ObjectiveGitFramework.xcodeproj/project.pbxproj index 05fed3255..75ac5042c 100644 --- a/ObjectiveGitFramework.xcodeproj/project.pbxproj +++ b/ObjectiveGitFramework.xcodeproj/project.pbxproj @@ -93,7 +93,6 @@ 4D5AB89422874300003CD3CE /* EXTScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 306123A917EA5261006591D4 /* EXTScope.h */; }; 4D79C0EE17DF9F4D00997DE4 /* GTCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D79C0EC17DF9F4D00997DE4 /* GTCredential.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4D79C0EF17DF9F4D00997DE4 /* GTCredential.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D79C0ED17DF9F4D00997DE4 /* GTCredential.m */; }; - 4D9BCD24206D84AD003CD3CE /* libgit2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D9BCD23206D84AD003CD3CE /* libgit2.a */; }; 4D9BCD25206D84B2003CD3CE /* libgit2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D9BCD23206D84AD003CD3CE /* libgit2.a */; }; 4DBA4A3217DA73CE006CD5F5 /* GTRemoteSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DBA4A3117DA73CE006CD5F5 /* GTRemoteSpec.m */; }; 4DC55AE51AD859AD0032563C /* GTCheckoutOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DC55AE31AD859AD0032563C /* GTCheckoutOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -101,6 +100,7 @@ 4DC55AE71AD859AD0032563C /* GTCheckoutOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DC55AE41AD859AD0032563C /* GTCheckoutOptions.m */; }; 4DC55AE81AD859AD0032563C /* GTCheckoutOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DC55AE41AD859AD0032563C /* GTCheckoutOptions.m */; }; 4DFA918F207D0B87003CD3CE /* Nimble.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8D63865207ACCAA00D1FD32 /* Nimble.framework */; }; + 4DD7422C25D3F8CB009D9A17 /* libgit2-mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DD7422B25D3F8CB009D9A17 /* libgit2-mac.a */; }; 4DFFB15B183AA8D600D1565E /* GTRepository+RemoteOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DFFB159183AA8D600D1565E /* GTRepository+RemoteOperations.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4DFFB15C183AA8D600D1565E /* GTRepository+RemoteOperations.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DFFB15A183AA8D600D1565E /* GTRepository+RemoteOperations.m */; }; 55C8055013861FE7004DCB0F /* GTObjectDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 55C8054D13861F34004DCB0F /* GTObjectDatabase.m */; }; @@ -502,6 +502,7 @@ 4DBA4A3117DA73CE006CD5F5 /* GTRemoteSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTRemoteSpec.m; sourceTree = ""; }; 4DC55AE31AD859AD0032563C /* GTCheckoutOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTCheckoutOptions.h; sourceTree = ""; }; 4DC55AE41AD859AD0032563C /* GTCheckoutOptions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTCheckoutOptions.m; sourceTree = ""; }; + 4DD7422B25D3F8CB009D9A17 /* libgit2-mac.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libgit2-mac.a"; path = "External/libgit2-mac.a"; sourceTree = ""; }; 4DE864341794A37E00371A65 /* GTRepository+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTRepository+Private.h"; sourceTree = ""; }; 4DFFB159183AA8D600D1565E /* GTRepository+RemoteOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTRepository+RemoteOperations.h"; sourceTree = ""; }; 4DFFB15A183AA8D600D1565E /* GTRepository+RemoteOperations.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTRepository+RemoteOperations.m"; sourceTree = ""; }; @@ -691,7 +692,7 @@ files = ( F8D6385D207AC75100D1FD32 /* libz.tbd in Frameworks */, F8D6385C207AC74A00D1FD32 /* libiconv.tbd in Frameworks */, - 4D9BCD24206D84AD003CD3CE /* libgit2.a in Frameworks */, + 4DD7422C25D3F8CB009D9A17 /* libgit2-mac.a in Frameworks */, 8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -766,6 +767,7 @@ 6A1F2FD417C6A8F3003DFADE /* libssl.a */, 6A502B8617D6892D00BAF4A5 /* libssh2.a */, 4D9BCD23206D84AD003CD3CE /* libgit2.a */, + 4DD7422B25D3F8CB009D9A17 /* libgit2-mac.a */, 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */, D0A0128B19F9853D007F1914 /* Nimble.framework */, F8D63865207ACCAA00D1FD32 /* Nimble.framework */, @@ -1730,12 +1732,13 @@ "$(inherited)", /usr/local/opt/openssl/lib, "$(PROJECT_DIR)/External/build/lib", + "$(PROJECT_DIR)/External", ); MODULEMAP_FILE = ObjectiveGit.modulemap; OTHER_LDFLAGS = ( "-lgit2", "-force_load", - External/libgit2.a, + "External/libgit2-mac.a", /usr/local/lib/libssh2.a, "-lcrypto", "-lssl", @@ -1758,12 +1761,13 @@ "$(inherited)", /usr/local/opt/openssl/lib, "$(PROJECT_DIR)/External/build/lib", + "$(PROJECT_DIR)/External", ); MODULEMAP_FILE = ObjectiveGit.modulemap; OTHER_LDFLAGS = ( "-lgit2", "-force_load", - External/libgit2.a, + "External/libgit2-mac.a", /usr/local/lib/libssh2.a, "-lcrypto", "-lssl", @@ -1993,12 +1997,13 @@ "$(inherited)", /usr/local/opt/openssl/lib, "$(PROJECT_DIR)/External/build/lib", + "$(PROJECT_DIR)/External", ); MODULEMAP_FILE = ObjectiveGit.modulemap; OTHER_LDFLAGS = ( "-lgit2", "-force_load", - External/libgit2.a, + "External/libgit2-mac.a", /usr/local/lib/libssh2.a, "-lcrypto", "-lssl", @@ -2210,12 +2215,13 @@ "$(inherited)", /usr/local/opt/openssl/lib, "$(PROJECT_DIR)/External/build/lib", + "$(PROJECT_DIR)/External", ); MODULEMAP_FILE = ObjectiveGit.modulemap; OTHER_LDFLAGS = ( "-lgit2", "-force_load", - External/libgit2.a, + "External/libgit2-mac.a", /usr/local/lib/libssh2.a, "-lcrypto", "-lssl", diff --git a/script/update_libgit2 b/script/update_libgit2 index 151231742..2c89cec38 100755 --- a/script/update_libgit2 +++ b/script/update_libgit2 @@ -7,7 +7,7 @@ set -e # ~/.MacOSX/environment.plist PATH="/usr/local/bin:$PATH" -if [ "External/libgit2.a" -nt "External/libgit2" ] +if [ "External/libgit2-mac.a" -nt "External/libgit2" ] then echo "No update needed." exit 0 @@ -33,9 +33,9 @@ cmake -DBUILD_SHARED_LIBS:BOOL=OFF \ cmake --build . product="libgit2.a" -install_path="../../${product}" -if [ "${product}" -nt "${install_path}" ]; then - cp -v "${product}" "${install_path}" +install_path="../../" +if [ "libgit2.a" -nt "${install_path}/libgit2-mac.a" ]; then + cp -v "libgit2.a" "${install_path}/libgit2-mac.a" fi echo "libgit2 has been updated."