From 0cb9d77aca9773022be6931e3a16d92b2c353e5d Mon Sep 17 00:00:00 2001 From: Troy Stump Date: Wed, 29 May 2024 19:26:28 -0700 Subject: [PATCH] Fix Privacy Manifest resource bundling for CocoaPods and Swift Package Manager installation methods --- CHANGES_AND_TODO_LIST.txt | 3 +++ CONTRIBUTORS.txt | 1 + FMDB.podspec | 57 +++++++++++++++++++-------------------- Package.swift | 3 ++- README.markdown | 4 +-- Tests/FMDatabaseTests.m | 2 +- src/fmdb/FMDatabase.h | 2 +- src/fmdb/FMDatabase.m | 2 +- 8 files changed, 38 insertions(+), 36 deletions(-) diff --git a/CHANGES_AND_TODO_LIST.txt b/CHANGES_AND_TODO_LIST.txt index 2d036362..87ef60ed 100644 --- a/CHANGES_AND_TODO_LIST.txt +++ b/CHANGES_AND_TODO_LIST.txt @@ -3,6 +3,9 @@ Zip, nada, zilch. Got any ideas? If you would like to contribute some code ... awesome! I just ask that you make it conform to the coding conventions already set in here, and to add the necessary of tests for your new code to tests target. And of course, the code should be of general use to more than just a couple of folks. Send your patches to gus@flyingmeat.com. +2024.05.29 Version 2.7.12 + Fix Privacy Manifest resource bundling for CocoaPods and Swift Package Manager installation methods. + 2023.02.08 - 2023.05.23 Versions 2.7.9 - 2.7.11 CocoaPods-related fixes and tweaks. diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index d219fd78..32409e56 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -47,5 +47,6 @@ David Hart Mike Ash Julius Scott Justin Miller +Troy Stump Aaaaannnd, Gus Mueller (that's me!) diff --git a/FMDB.podspec b/FMDB.podspec index a37dc907..3bef4060 100644 --- a/FMDB.podspec +++ b/FMDB.podspec @@ -1,60 +1,57 @@ Pod::Spec.new do |s| s.name = 'FMDB' - s.version = '2.7.11' + s.version = '2.7.12' s.summary = 'A Cocoa / Objective-C wrapper around SQLite.' s.homepage = 'https://github.com/ccgus/fmdb' s.license = 'MIT' s.author = { 'August Mueller' => 'gus@flyingmeat.com' } s.source = { :git => 'https://github.com/ccgus/fmdb.git', :tag => "#{s.version}" } s.requires_arc = true - s.ios.deployment_target = '11.0' + s.ios.deployment_target = '12.0' s.osx.deployment_target = '10.13' s.watchos.deployment_target = '7.0' - s.tvos.deployment_target = '11.0' + s.tvos.deployment_target = '12.0' + s.cocoapods_version = '>= 1.12.0' s.default_subspec = 'standard' - # use the built-in library version of sqlite3 - s.subspec 'standard' do |ss| - ss.library = 'sqlite3' + s.subspec 'Core' do |ss| ss.source_files = 'src/fmdb/FM*.{h,m}' ss.exclude_files = 'src/fmdb.m' ss.header_dir = 'fmdb' + ss.resource_bundles = { 'FMDB_Privacy' => 'privacy/PrivacyInfo.xcprivacy' } + end + + # use the built-in library version of sqlite3 + s.subspec 'standard' do |ss| + ss.dependency 'FMDB/Core' + ss.library = 'sqlite3' end # use the built-in library version of sqlite3 with custom FTS tokenizer source files s.subspec 'FTS' do |ss| - ss.source_files = 'src/extra/fts3/*.{h,m}' ss.dependency 'FMDB/standard' + ss.source_files = 'src/extra/fts3/*.{h,m}' end - - # Commenting these out (2024.2.26) to get CocoaPods upstream stuff working again. + # build the latest stable version of sqlite3 - #s.subspec 'standalone' do |ss| - # ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DFMDB_SQLITE_STANDALONE' } - # ss.dependency 'sqlite3' - # ss.source_files = 'src/fmdb/FM*.{h,m}' - # ss.exclude_files = 'src/fmdb.m' - # ss.header_dir = 'fmdb' - #end + s.subspec 'standalone' do |ss| + ss.dependency 'FMDB/Core' + ss.dependency 'sqlite3', '~> 3.46' + ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DFMDB_SQLITE_STANDALONE' } + end # build with FTS support and custom FTS tokenizer source files - #s.subspec 'standalone-fts' do |ss| - # ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DFMDB_SQLITE_STANDALONE' } - # ss.source_files = 'src/fmdb/FM*.{h,m}', 'src/extra/fts3/*.{h,m}' - # ss.exclude_files = 'src/fmdb.m' - # ss.header_dir = 'fmdb' - # ss.dependency 'sqlite3/fts' - #end + s.subspec 'standalone-fts' do |ss| + ss.dependency 'FMDB/Core' + ss.dependency 'sqlite3/fts', '~> 3.46' + ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DFMDB_SQLITE_STANDALONE' } + ss.source_files = 'src/extra/fts3/*.{h,m}' + end # use SQLCipher and enable -DSQLITE_HAS_CODEC flag s.subspec 'SQLCipher' do |ss| - ss.dependency 'SQLCipher', '~> 4.0' - ss.source_files = 'src/fmdb/FM*.{h,m}' - ss.exclude_files = 'src/fmdb.m' - ss.header_dir = 'fmdb' - ss.resource_bundles = {'SQLCipher' => ['privacy/PrivacyInfo.xcprivacy']} + ss.dependency 'FMDB/Core' + ss.dependency 'SQLCipher', '~> 4.6' ss.xcconfig = { 'OTHER_CFLAGS' => '$(inherited) -DSQLITE_HAS_CODEC -DHAVE_USLEEP=1 -DSQLCIPHER_CRYPTO', 'HEADER_SEARCH_PATHS' => 'SQLCipher' } end - - s.resource_bundles = {'FMDB' => ['privacy/PrivacyInfo.xcprivacy']} end diff --git a/Package.swift b/Package.swift index bf3b1a4d..1c91785b 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:5.0 +// swift-tools-version:5.9 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription @@ -20,6 +20,7 @@ let package = Package( name: "FMDB", dependencies: [], path: "src/fmdb", + resources: [.process("../../privacy/PrivacyInfo.xcprivacy")], publicHeadersPath: "."), ] ) diff --git a/README.markdown b/README.markdown index 6aa06ed3..05ffdbb8 100644 --- a/README.markdown +++ b/README.markdown @@ -32,7 +32,7 @@ Then, edit the `Podfile`, adding `FMDB`: ```ruby # Uncomment the next line to define a global platform for your project -# platform :ios, '9.0' +# platform :ios, '12.0' target 'MyApp' do # Comment the next line if you're not using Swift and don't want to use dynamic frameworks @@ -78,7 +78,7 @@ Declare FMDB as a package dependency. .package( name: "FMDB", url: "https://github.com/ccgus/fmdb", - .upToNextMinor(from: "2.7.8")), + .upToNextMinor(from: "2.7.12")), ``` Use FMDB in target dependencies diff --git a/Tests/FMDatabaseTests.m b/Tests/FMDatabaseTests.m index 03787417..f3f3e68b 100644 --- a/Tests/FMDatabaseTests.m +++ b/Tests/FMDatabaseTests.m @@ -1132,7 +1132,7 @@ - (void)createCustomFunctions { */ - (void)testUserVersion { - NSComparisonResult result = [[FMDatabase FMDBUserVersion] compare:@"2.7.8" options:NSNumericSearch]; + NSComparisonResult result = [[FMDatabase FMDBUserVersion] compare:@"2.7.12" options:NSNumericSearch]; XCTAssertEqual(result, NSOrderedSame); } diff --git a/src/fmdb/FMDatabase.h b/src/fmdb/FMDatabase.h index 2a4ead22..64719bef 100644 --- a/src/fmdb/FMDatabase.h +++ b/src/fmdb/FMDatabase.h @@ -1123,7 +1123,7 @@ func executeUpdate(sql: String, values: [Any]?) throws -> Bool { } + (NSString*)sqliteLibVersion; -/// The FMDB version number as a string in the form of @c "2.7.8" . +/// The FMDB version number as a string in the form of @c "2.7.12" . /// /// If you want to compare version number strings, you can use NSNumericSearch option: /// diff --git a/src/fmdb/FMDatabase.m b/src/fmdb/FMDatabase.m index d2fdfc06..e94710e4 100644 --- a/src/fmdb/FMDatabase.m +++ b/src/fmdb/FMDatabase.m @@ -112,7 +112,7 @@ - (NSURL *)databaseURL { } + (NSString*)FMDBUserVersion { - return @"2.7.8"; + return @"2.7.12"; } + (SInt32)FMDBVersion {