diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b7c1e20..f592737 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -36,6 +36,7 @@ jobs: tar -xjf MacPorts-${version}.tar.bz2 mv MacPorts-${version} MacPorts rm MacPorts-${version}.tar.bz2 MacPorts-${version}.tar.bz2.sha256.sig + patch -N -t -d MacPorts -p1 < c3c817e.diff - name: Select Xcode version run: | case "`uname -r`" in diff --git a/c3c817e.diff b/c3c817e.diff new file mode 100644 index 0000000..a796bd7 --- /dev/null +++ b/c3c817e.diff @@ -0,0 +1,55 @@ +diff --git a/src/cregistry/registry.c b/src/cregistry/registry.c +index ac3d2e16f..b280764d7 100644 +--- a/src/cregistry/registry.c ++++ b/src/cregistry/registry.c +@@ -604,28 +604,30 @@ int reg_checkpoint(reg_registry* reg, reg_error* errPtr) { + int reg_optimize(reg_registry* reg, reg_error* errPtr) + { + #if SQLITE_VERSION_NUMBER >= 3018000 +- int result = 0; +- sqlite3_stmt* stmt = NULL; +- if (sqlite3_prepare_v2(reg->db, "PRAGMA optimize", -1, &stmt, NULL) == SQLITE_OK) { +- int r; +- do { +- sqlite3_step(stmt); +- r = sqlite3_reset(stmt); +- if (r == SQLITE_OK) { +- result = 1; +- } +- } while (r == SQLITE_BUSY); +- } +- if (!result) { +- reg_sqlite_error(reg->db, errPtr, NULL); +- } +- if (stmt) { +- sqlite3_finalize(stmt); ++ if (sqlite3_libversion_number() >= 3018000 ++ && sqlite3_db_readonly(reg->db, "registry") == 0) { ++ int result = 0; ++ sqlite3_stmt* stmt = NULL; ++ if (sqlite3_prepare_v2(reg->db, "PRAGMA optimize", -1, &stmt, NULL) == SQLITE_OK) { ++ int r; ++ do { ++ sqlite3_step(stmt); ++ r = sqlite3_reset(stmt); ++ if (r == SQLITE_OK) { ++ result = 1; ++ } ++ } while (r == SQLITE_BUSY); ++ } ++ if (!result) { ++ reg_sqlite_error(reg->db, errPtr, NULL); ++ } ++ if (stmt) { ++ sqlite3_finalize(stmt); ++ } ++ return result; + } +- return result; +-#else +- return 1; + #endif ++ return 1; + } + + /**