Skip to content

Commit f1e321e

Browse files
authored
Merge pull request #48 from shawnlaffan/gdb_and_db
Build our own gdb, more MSYS2 patches for libdb
2 parents 56e3a3b + 5fd23ec commit f1e321e

12 files changed

+3957
-546
lines changed

5034

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ libxslt-1.1.37
2727
###### crypto
2828
openssl-1.1.1q
2929
libssh2-1.10.0
30-
libsodium-1.0.17
30+
libsodium-1.0.18
3131

3232
###### pgsql
3333
postgresql-15.1
@@ -49,7 +49,7 @@ harfbuzz-2.3.1
4949
freetype-2.10.0
5050

5151
fontconfig-2.13.1
52-
libgd-2.3.2
52+
libgd-2.3.3
5353
t1lib-5.1.2
5454

5555
###### extras

build.sh

+48
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,18 @@ sed "s/^echo features:.*$/$F/" gdlib-config.bat.win-gcc > $OUT/bin/gdlib-config.
514514

515515
# ----------------------------------------------------------------------------
516516
db-*)
517+
cd $WRKDIR/$PACK
518+
519+
pwd
520+
# verbatim from msys2 build
521+
pushd dist
522+
autoreconf -fiv -I aclocal -I aclocal_java
523+
# they have an extra sed in here that we need
524+
./s_config
525+
popd
526+
517527
cd $WRKDIR/$PACK/build_windows
528+
518529
../dist/configure --help > ../help_$PACK.txt
519530
xxrun ../dist/configure $HOSTBUILD --prefix="$OUT" --enable-static=no --enable-shared=yes \
520531
--enable-mingw --with-cryptography \
@@ -1699,6 +1710,43 @@ xxrun cmake -G "MinGW Makefiles" -DWITH_ZLIB=system -DWITH_SSL=bundled -DCMAKE_I
16991710
xxrun make DLLSUFFIX=$DLLSUFFIX PREFIX=$OUT install
17001711
;;
17011712

1713+
# ----------------------------------------------------------------------------
1714+
gdb-*)
1715+
cd $WRKDIR/$PACK
1716+
1717+
autoreconf -fi
1718+
save_configure_help
1719+
xxrun ./configure $HOSTBUILDTARGET --prefix=$OUT \
1720+
--disable-werror \
1721+
--disable-staticlib \
1722+
--disable-gdbserver \
1723+
--without-tcl \
1724+
--without-tk \
1725+
--without-guile \
1726+
--without-mpfr \
1727+
--without-zstd \
1728+
--without-python \
1729+
--disable-source-highlight \
1730+
--with-libgmp-prefix=$OUT \
1731+
--with-libexpat-prefix=$OUT \
1732+
--with-lzma-prefix=$OUT \
1733+
--with-libiconv-prefix=$OUT \
1734+
CFLAGS="-O2 -I$OUTINC -mms-bitfields" LDFLAGS="-L$OUTLIB"
1735+
1736+
#--without-expat \
1737+
#--enable-64-bit-bfd \
1738+
#--with-system-zlib
1739+
#--with-lzma \
1740+
#--enable-64-bit-bfd \
1741+
#--with-system-gdbinit=/etc/gdbinit \
1742+
#--with-system-readline \
1743+
#--with-libiconv-prefix=/usr \
1744+
1745+
1746+
xxrun make
1747+
xxrun make install
1748+
;;
1749+
17021750
# ----------------------------------------------------------------------------
17031751
##standard build - via ./configure
17041752
*)

patches/db-6.2.38/clang_cxx_11.patch

+120
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
commit 3311d68f11d1697565401eee6efc85c34f022ea7
2+
Author: fanquake <[email protected]>
3+
Date: Mon Aug 17 20:03:56 2020 +0800
4+
5+
Fix C++11 compatibility
6+
7+
diff --git a/src/dbinc/atomic.h b/src/dbinc/atomic.h
8+
index 0034dcc..7c11d4a 100644
9+
--- a/src/dbinc/atomic.h
10+
+++ b/src/dbinc/atomic.h
11+
@@ -70,7 +70,7 @@ typedef struct {
12+
* These have no memory barriers; the caller must include them when necessary.
13+
*/
14+
#define atomic_read(p) ((p)->value)
15+
-#define atomic_init(p, val) ((p)->value = (val))
16+
+#define atomic_init_db(p, val) ((p)->value = (val))
17+
18+
#ifdef HAVE_ATOMIC_SUPPORT
19+
20+
diff --git a/src/mp/mp_fget.c b/src/mp/mp_fget.c
21+
index 5fdee5a..0b75f57 100644
22+
--- a/src/mp/mp_fget.c
23+
+++ b/src/mp/mp_fget.c
24+
@@ -617,7 +617,7 @@ alloc: /* Allocate a new buffer header and data space. */
25+
26+
/* Initialize enough so we can call __memp_bhfree. */
27+
alloc_bhp->flags = 0;
28+
- atomic_init(&alloc_bhp->ref, 1);
29+
+ atomic_init_db(&alloc_bhp->ref, 1);
30+
#ifdef DIAGNOSTIC
31+
if ((uintptr_t)alloc_bhp->buf & (sizeof(size_t) - 1)) {
32+
__db_errx(env,
33+
@@ -911,7 +911,7 @@ alloc: /* Allocate a new buffer header and data space. */
34+
MVCC_MPROTECT(bhp->buf, mfp->stat.st_pagesize,
35+
PROT_READ);
36+
37+
- atomic_init(&alloc_bhp->ref, 1);
38+
+ atomic_init_db(&alloc_bhp->ref, 1);
39+
MUTEX_LOCK(env, alloc_bhp->mtx_buf);
40+
alloc_bhp->priority = bhp->priority;
41+
alloc_bhp->pgno = bhp->pgno;
42+
diff --git a/src/mp/mp_mvcc.c b/src/mp/mp_mvcc.c
43+
index 34467d2..f05aa0c 100644
44+
--- a/src/mp/mp_mvcc.c
45+
+++ b/src/mp/mp_mvcc.c
46+
@@ -276,7 +276,7 @@ __memp_bh_freeze(dbmp, infop, hp, bhp, need_frozenp)
47+
#else
48+
memcpy(frozen_bhp, bhp, SSZA(BH, buf));
49+
#endif
50+
- atomic_init(&frozen_bhp->ref, 0);
51+
+ atomic_init_db(&frozen_bhp->ref, 0);
52+
if (mutex != MUTEX_INVALID)
53+
frozen_bhp->mtx_buf = mutex;
54+
else if ((ret = __mutex_alloc(env, MTX_MPOOL_BH,
55+
@@ -428,7 +428,7 @@ __memp_bh_thaw(dbmp, infop, hp, frozen_bhp, alloc_bhp)
56+
#endif
57+
alloc_bhp->mtx_buf = mutex;
58+
MUTEX_LOCK(env, alloc_bhp->mtx_buf);
59+
- atomic_init(&alloc_bhp->ref, 1);
60+
+ atomic_init_db(&alloc_bhp->ref, 1);
61+
F_CLR(alloc_bhp, BH_FROZEN);
62+
}
63+
64+
diff --git a/src/mp/mp_region.c b/src/mp/mp_region.c
65+
index e6cece9..ddbe906 100644
66+
--- a/src/mp/mp_region.c
67+
+++ b/src/mp/mp_region.c
68+
@@ -224,7 +224,7 @@ __memp_init(env, dbmp, reginfo_off, htab_buckets, max_nreg)
69+
MTX_MPOOL_FILE_BUCKET, 0, &htab[i].mtx_hash)) != 0)
70+
return (ret);
71+
SH_TAILQ_INIT(&htab[i].hash_bucket);
72+
- atomic_init(&htab[i].hash_page_dirty, 0);
73+
+ atomic_init_db(&htab[i].hash_page_dirty, 0);
74+
}
75+
76+
/*
77+
@@ -269,7 +269,7 @@ __memp_init(env, dbmp, reginfo_off, htab_buckets, max_nreg)
78+
hp->mtx_hash = (mtx_base == MUTEX_INVALID) ? MUTEX_INVALID :
79+
mtx_base + i;
80+
SH_TAILQ_INIT(&hp->hash_bucket);
81+
- atomic_init(&hp->hash_page_dirty, 0);
82+
+ atomic_init_db(&hp->hash_page_dirty, 0);
83+
#ifdef HAVE_STATISTICS
84+
hp->hash_io_wait = 0;
85+
hp->hash_frozen = hp->hash_thawed = hp->hash_frozen_freed = 0;
86+
diff --git a/src/mutex/mut_method.c b/src/mutex/mut_method.c
87+
index 2588763..5c6d516 100644
88+
--- a/src/mutex/mut_method.c
89+
+++ b/src/mutex/mut_method.c
90+
@@ -426,7 +426,7 @@ atomic_compare_exchange(env, v, oldval, newval)
91+
MUTEX_LOCK(env, mtx);
92+
ret = atomic_read(v) == oldval;
93+
if (ret)
94+
- atomic_init(v, newval);
95+
+ atomic_init_db(v, newval);
96+
MUTEX_UNLOCK(env, mtx);
97+
98+
return (ret);
99+
diff --git a/src/mutex/mut_tas.c b/src/mutex/mut_tas.c
100+
index f3922e0..e40fcdf 100644
101+
--- a/src/mutex/mut_tas.c
102+
+++ b/src/mutex/mut_tas.c
103+
@@ -46,7 +46,7 @@ __db_tas_mutex_init(env, mutex, flags)
104+
105+
#ifdef HAVE_SHARED_LATCHES
106+
if (F_ISSET(mutexp, DB_MUTEX_SHARED))
107+
- atomic_init(&mutexp->sharecount, 0);
108+
+ atomic_init_db(&mutexp->sharecount, 0);
109+
else
110+
#endif
111+
if (MUTEX_INIT(&mutexp->tas)) {
112+
@@ -486,7 +486,7 @@ __db_tas_mutex_unlock(env, mutex)
113+
F_CLR(mutexp, DB_MUTEX_LOCKED);
114+
/* Flush flag update before zeroing count */
115+
MEMBAR_EXIT();
116+
- atomic_init(&mutexp->sharecount, 0);
117+
+ atomic_init_db(&mutexp->sharecount, 0);
118+
} else {
119+
DB_ASSERT(env, sharecount > 0);
120+
MEMBAR_EXIT();
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
--- db-6.0.19/src/dbinc/db_cxx.in.orig 2021-08-30 11:16:06.008802400 -0700
2+
+++ db-6.0.19/src/dbinc/db_cxx.in 2021-08-30 11:18:04.727661400 -0700
3+
@@ -48,6 +48,9 @@
4+
// Forward declarations
5+
//
6+
7+
+#pragma push_macro("store")
8+
+#undef store
9+
+
10+
#include <stdarg.h>
11+
12+
@cxx_have_stdheaders@
13+
@@ -61,6 +64,8 @@
14+
#define __DB_STD(x) x
15+
#endif
16+
17+
+#pragma pop_macro("store")
18+
+
19+
#include "db.h"
20+
21+
class Db; // forward

patches/db-6.2.38/mingw.patch

+141
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
diff -ruN db-5.3.28.orig/dist/configure db-5.3.28/dist/configure
2+
--- db-5.3.28.orig/dist/configure 2013-09-09 17:35:02.000000000 +0200
3+
+++ db-5.3.28/dist/configure 2014-03-29 20:59:46.684253900 +0100
4+
@@ -17781,6 +17781,7 @@
5+
# Since Cygwin uses Windows' javac, we need Windows path separators
6+
case "$host_os" in
7+
cygwin*) CLASSPATH=".;$CLASSPATH";;
8+
+ mingw*) CLASSPATH=".;$CLASSPATH";;
9+
*) CLASSPATH=".:$CLASSPATH";;
10+
esac
11+
export CLASSPATH
12+
@@ -18444,7 +18445,8 @@
13+
case "$host_os" in
14+
aix*) _JNI_INC_SUBDIRS="aix";;
15+
bsdi*) _JNI_INC_SUBDIRS="bsdos";;
16+
- cygwin*) _JNI_INC_SUBDIRS="win32";;
17+
+ cygwin*) _JNI_INC_SUBDIRS="win32";;
18+
+ mingw*) _JNI_INC_SUBDIRS="win32";;
19+
freebsd*) _JNI_INC_SUBDIRS="freebsd";;
20+
hp*) _JNI_INC_SUBDIRS="hp-ux";;
21+
linux*) _JNI_INC_SUBDIRS="linux genunix";;
22+
diff -ruN db-5.3.28.orig/dist/configure.ac db-5.3.28/dist/configure.ac
23+
--- db-5.3.28.orig/dist/configure.ac 2013-09-09 17:35:02.000000000 +0200
24+
+++ db-5.3.28/dist/configure.ac 2014-03-29 20:59:46.762395000 +0100
25+
@@ -436,6 +436,7 @@
26+
# Since Cygwin uses Windows' javac, we need Windows path separators
27+
case "$host_os" in
28+
cygwin*) CLASSPATH=".;$CLASSPATH";;
29+
+ mingw*) CLASSPATH=".;$CLASSPATH";;
30+
*) CLASSPATH=".:$CLASSPATH";;
31+
esac
32+
export CLASSPATH
33+
@@ -489,12 +489,12 @@
34+
OSDIR=os_windows
35+
PATH_SEPARATOR="\\\\/:"
36+
37+
- AC_DEFINE(DB_WIN32)
38+
- AC_DEFINE(STDC_HEADERS)
39+
+ AC_DEFINE(DB_WIN32, [], [Description])
40+
+ AC_DEFINE(STDC_HEADERS, [], [Description])
41+
else
42+
OSDIR=os
43+
PATH_SEPARATOR="/"
44+
- AC_DEFINE(HAVE_SYSTEM_INCLUDE_FILES)
45+
+ AC_DEFINE(HAVE_SYSTEM_INCLUDE_FILES, [], [Description])
46+
fi
47+
48+
# Optional SQL API.
49+
--- db-6.0.19/dist/aclocal_java/ac_jni_include_dirs.m4.orig 2021-08-30 12:17:27.639455100 -0700
50+
+++ db-6.0.19/dist/aclocal_java/ac_jni_include_dirs.m4 2021-08-30 12:17:43.422456700 -0700
51+
@@ -76,6 +76,7 @@
52+
aix*) _JNI_INC_SUBDIRS="aix";;
53+
bsdi*) _JNI_INC_SUBDIRS="bsdos";;
54+
cygwin*) _JNI_INC_SUBDIRS="win32";;
55+
+ mingw*) _JNI_INC_SUBDIRS="win32";;
56+
freebsd*) _JNI_INC_SUBDIRS="freebsd";;
57+
hp*) _JNI_INC_SUBDIRS="hp-ux";;
58+
linux*) _JNI_INC_SUBDIRS="linux genunix";;
59+
diff -ruN db-5.3.28.orig/dist/Makefile.in db-5.3.28/dist/Makefile.in
60+
--- db-5.3.28.orig/dist/Makefile.in 2013-09-09 17:35:02.000000000 +0200
61+
+++ db-5.3.28/dist/Makefile.in 2014-03-29 21:00:05.731463900 +0100
62+
@@ -17,7 +17,7 @@
63+
bindir= @bindir@
64+
includedir=@includedir@
65+
libdir= @libdir@
66+
-docdir= $(prefix)/docs
67+
+docdir= @docdir@
68+
69+
dmode= 755
70+
emode= 555
71+
@@ -58,6 +58,7 @@
72+
SOFLAGS= @SOFLAGS@
73+
LIBMAJOR= @DB_VERSION_MAJOR@
74+
LIBVERSION= @DB_VERSION_MAJOR@.@DB_VERSION_MINOR@
75+
+IMPLIB_SUFFIX= dll.a
76+
77+
CPPFLAGS= -I$(builddir) -I$(srcdir) @CPPFLAGS@
78+
79+
@@ -75,7 +76,7 @@
80+
81+
libdb_base= libdb
82+
libdb= $(libdb_base).a
83+
-libdb_version= $(libdb_base)-$(LIBVERSION).a
84+
+libdb_version= $(libdb_base)-$(LIBVERSION).$(IMPLIB_SUFFIX)
85+
libso= $(libdb_base)-$(LIBVERSION)@SOSUFFIX@
86+
libso_target= $(libdb_base)-$(LIBVERSION).la
87+
libso_default= $(libdb_base)@SOSUFFIX@
88+
@@ -94,7 +95,7 @@
89+
90+
libcxx_base= libdb_cxx
91+
libcxx= $(libcxx_base).a
92+
-libcxx_version= $(libcxx_base)-$(LIBVERSION).a
93+
+libcxx_version= $(libcxx_base)-$(LIBVERSION).$(IMPLIB_SUFFIX)
94+
libxso= $(libcxx_base)-$(LIBVERSION)@SOSUFFIX@
95+
libxso_target= $(libcxx_base)-$(LIBVERSION).la
96+
libxso_default= $(libcxx_base)@SOSUFFIX@
97+
@@ -110,7 +111,7 @@
98+
99+
libsql_base= libdb_sql
100+
libsql= $(libsql_base).a
101+
-libsql_version= $(libsql_base)-$(LIBVERSION).a
102+
+libsql_version= $(libsql_base)-$(LIBVERSION).$(IMPLIB_SUFFIX)
103+
libsqlso= $(libsql_base)-$(LIBVERSION)@SOSUFFIX@
104+
libsqlso_target=$(libsql_base)-$(LIBVERSION).la
105+
libsqlso_default=$(libsql_base)@SOSUFFIX@
106+
@@ -131,7 +132,7 @@
107+
108+
libstl_base= libdb_stl
109+
libstl= $(libstl_base).a
110+
-libstl_version= $(libstl_base)-$(LIBVERSION).a
111+
+libstl_version= $(libstl_base)-$(LIBVERSION).$(IMPLIB_SUFFIX)
112+
libstlso= $(libstl_base)-$(LIBVERSION)@SOSUFFIX@
113+
libstlso_target=$(libstl_base)-$(LIBVERSION).la
114+
libstlso_default=$(libstl_base)@SOSUFFIX@
115+
@@ -161,7 +162,7 @@
116+
libj_exjarfile= dbexamples.jar
117+
libjso_base= libdb_java
118+
libjso= $(libjso_base)-$(LIBVERSION)@JMODSUFFIX@
119+
-libjso_static= $(libjso_base)-$(LIBVERSION).a
120+
+libjso_static= $(libjso_base)-$(LIBVERSION).$(IMPLIB_SUFFIX)
121+
libjso_target= $(libjso_base)-$(LIBVERSION).la
122+
libjso_default= $(libjso_base)@JMODSUFFIX@
123+
libjso_major= $(libjso_base)-$(LIBMAJOR)@JMODSUFFIX@
124+
@@ -177,7 +178,7 @@
125+
TCL_SRCDIR= $(langdir)/tcl
126+
libtcl_base= libdb_tcl
127+
libtcl= $(libtcl_base).a
128+
-libtcl_version= $(libtcl_base)-$(LIBVERSION).a
129+
+libtcl_version= $(libtcl_base)-$(LIBVERSION).$(IMPLIB_SUFFIX)
130+
libtso= $(libtcl_base)-$(LIBVERSION)@LIBTSO_MODSUFFIX@
131+
libtso_target= $(libtcl_base)-$(LIBVERSION).la
132+
libtso_default= $(libtcl_base)@LIBTSO_MODSUFFIX@
133+
@@ -977,7 +978,7 @@
134+
$(JAVA) -classpath $(JAVA_CLASSTOP) \
135+
com.sleepycat.persist.model.ClassEnhancer $(JAVA_CLASSTOP)
136+
cd $(JAVA_CLASSTOP) && \
137+
- $(JAR) cfm ../$(libj_jarfile) ../$(JAVA_MANIFEST) ./com/sleepycat
138+
+ $(JAR) cfm ../$(libj_jarfile) $(JAVA_MANIFEST) ./com/sleepycat
139+
140+
$(libj_exjarfile): $(libj_jarfile) $(JAVA_EXSRCS)
141+
@test -d $(JAVA_EXCLASSTOP) || \

0 commit comments

Comments
 (0)