--- ./CMakeLists.txt_orig	2025-09-16 01:06:06.816388886 -0500
+++ ./CMakeLists.txt	2025-09-16 01:09:24.542118604 -0500
@@ -248,7 +248,7 @@
     ENDIF (NOT ENABLE_RPMDB_BDB)
 
     # check if rpm contains a bundled berkeley db
-    CHECK_INCLUDE_FILE(rpm/db.h HAVE_RPM_DB_H)
+    CHECK_INCLUDE_FILE(rpm/rpmdb.h HAVE_RPM_DB_H)
     IF (NOT ENABLE_RPMDB_LIBRPM)
       IF (NOT HAVE_RPM_DB_H)
         FIND_LIBRARY (DB_LIBRARY NAMES db)
@@ -266,6 +266,8 @@
   CHECK_LIBRARY_EXISTS(rpm rpmdbNextIteratorHeaderBlob "" HAVE_RPMDBNEXTITERATORHEADERBLOB)
   CHECK_LIBRARY_EXISTS(rpm rpmdbFStat "" HAVE_RPMDBFSTAT)
 ENDIF (ENABLE_RPMDB OR ENABLE_RPMPKG_LIBRPM)
+
+SET(RPMDB_LIBRARY /usr/opt/rpm/lib/librpmio.a /usr/opt/rpm/lib/librpm.a)
 
 IF (ENABLE_PUBKEY)
   SET (ENABLE_PGPVRFY ON)
--- ./ext/repo_autopattern.c_orig	2025-09-16 01:09:55.786649392 -0500
+++ ./ext/repo_autopattern.c	2025-09-16 01:10:27.273692703 -0500
@@ -79,7 +79,7 @@
       if (!p || *p) 
         return 0;
     }   
-  return timegm(&tm);
+  return mktime(&tm);
 }
 
 /* we just look at the repodata keys and do not iterate
--- ./ext/repo_updateinfoxml.c_orig     2025-09-16 02:06:44.162147869 -0500
+++ ./ext/repo_updateinfoxml.c  2025-09-16 02:07:23.821116430 -0500
@@ -135,7 +135,7 @@
   memset(&tm, 0, sizeof(tm));
   if (!strptime(date, "%F%T", &tm))
     return 0;
-  return timegm(&tm);
+  return mktime(&tm);
 }
 
 /*
--- ./src/poolvendor.c_orig	2025-09-16 01:11:28.338498020 -0500
+++ ./src/poolvendor.c	2025-09-16 01:12:08.636963708 -0500
@@ -65,7 +65,7 @@
 	    break;	/* sorry, out of bits */
 	  m <<= 1;	/* next vendor equivalence class */
 	}
-      if (fnmatch(*vs == '!' ? vs + 1 : vs, vstr, FNM_CASEFOLD) == 0)
+      if (fnmatch(*vs == '!' ? vs + 1 : vs, vstr, 0) == 0)
 	{
 	  if (*vs != '!')
 	    mask |= m;
--- ./src/repodata.c_orig	2025-09-16 01:12:41.398965529 -0500
+++ ./src/repodata.c	2025-09-16 01:15:06.192643015 -0500
@@ -42,6 +42,20 @@
 
 static unsigned char *data_skip_key(Repodata *data, unsigned char *dp, Repokey *key);
 
+#ifndef HAVE_STRCASESTR
+const char *strcasestr(const char *a, const char *b)
+{
+   size_t l;
+   char f[3];
+
+   snprintf(f, sizeof(f), "%c%c", tolower(*b), toupper(*b));
+   for (l = strcspn(a, f); l != strlen(a); l += strcspn(a + l + 1, f) + 1)
+       if (strncasecmp(a + l, b, strlen(b)) == 0)
+          return(a + l);
+       return(NULL);
+   }
+#endif
+
 void
 repodata_initdata(Repodata *data, Repo *repo, int localpool)
 {
@@ -1468,7 +1482,7 @@
       else
 	return !strcmp(ma->match, str + l);
     case SEARCH_GLOB:
-      return !fnmatch(ma->match, str, (ma->flags & SEARCH_NOCASE) ? FNM_CASEFOLD : 0);
+      return !fnmatch(ma->match, str, (ma->flags & SEARCH_NOCASE) ? 0 : 0);
     case SEARCH_REGEX:
       return !regexec((const regex_t *)ma->matchdata, str, 0, NULL, 0);
     default:
--- ./src/selection.c_orig	2025-09-16 01:15:55.352146117 -0500
+++ ./src/selection.c	2025-09-16 01:17:11.572127166 -0500
@@ -503,7 +503,7 @@
 
   nocase = flags & SELECTION_NOCASE;
   doglob = (flags & SELECTION_GLOB) != 0 && strpbrk(name, "[*?") != 0;
-  globflags = doglob && nocase ? FNM_CASEFOLD : 0;
+  globflags = doglob && nocase ? 0 : 0;
 
   FOR_POOL_SOLVABLES(p)
     {
@@ -626,7 +626,7 @@
 
   /* looks like a glob or nocase match. really hard work. */
   match = 0;
-  globflags = doglob && nocase ? FNM_CASEFOLD : 0;
+  globflags = doglob && nocase ? 0 : 0;
   for (id = 1; id < pool->ss.nstrings; id++)
     {
       /* do we habe packages providing this id? */
@@ -783,7 +783,7 @@
 
   /* do a name match over all packages. hard work. */
   match = 0;
-  globflags = doglob && nocase ? FNM_CASEFOLD : 0;
+  globflags = doglob && nocase ? 0 : 0;
   FOR_POOL_SOLVABLES(p)
     {
       Solvable *s = pool->solvables + p;
@@ -1404,7 +1404,7 @@
     return 0;
   if (flags & SELECTION_GLOB)
     {
-      int globflags = (flags & SELECTION_NOCASE) != 0 ? FNM_CASEFOLD : 0;
+      int globflags = (flags & SELECTION_NOCASE) != 0 ? 0 : 0;
       return fnmatch(pattern, string, globflags) == 0 ? 1 : 0;
     }
   if (flags & SELECTION_NOCASE)
--- ./ext/solv_xfopen.c_orig	2025-09-16 01:18:07.612530367 -0500
+++ ./ext/solv_xfopen.c	2025-09-16 01:19:06.974798580 -0500
@@ -49,7 +49,7 @@
   cio.close = cclose;
   return  fopencookie(cookie, *mode == 'w' ? "w" : "r", cio);
 #else
-# error Need to implement custom I/O
+/* # error Need to implement custom I/O */
 #endif
 }
 
--- ./ext/repo_products.c_orig	2025-09-16 01:19:37.621325460 -0500
+++ ./ext/repo_products.c	2025-09-16 01:20:04.172131931 -0500
@@ -141,7 +141,7 @@
       if (!p || *p)
 	return 0;
     }
-  return timegm(&tm);
+  return mktime(&tm);
 }
 
 static void
