summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrahmajit Das <brahmajit.xyz@gmail.com>2023-06-14 10:37:33 +0000
committerJoonas Niilola <juippis@gentoo.org>2023-06-18 15:56:46 +0300
commited868768e7a6b77262543f379bb0ca9e7db0974c (patch)
treee7b80bcc07d51f71dd429452231c401b06b52d8d
parentapp-misc/broot: drop 1.21.2 (diff)
downloadgentoo-ed868768e7a6b77262543f379bb0ca9e7db0974c.tar.gz
gentoo-ed868768e7a6b77262543f379bb0ca9e7db0974c.tar.bz2
gentoo-ed868768e7a6b77262543f379bb0ca9e7db0974c.zip
dev-db/kyotocabinet: Fix build error /w clang
and most probably musl too Signed-off-by: Brahmajit Das <brahmajit.xyz@gmail.com> Closes: https://github.com/gentoo/gentoo/pull/31433 Signed-off-by: Joonas Niilola <juippis@gentoo.org>
-rw-r--r--dev-db/kyotocabinet/files/kyotocabinet-1.2.79-initialize-parameter-error-clang16.patch62
-rw-r--r--dev-db/kyotocabinet/kyotocabinet-1.2.79-r2.ebuild70
2 files changed, 132 insertions, 0 deletions
diff --git a/dev-db/kyotocabinet/files/kyotocabinet-1.2.79-initialize-parameter-error-clang16.patch b/dev-db/kyotocabinet/files/kyotocabinet-1.2.79-initialize-parameter-error-clang16.patch
new file mode 100644
index 000000000000..4739a433ab40
--- /dev/null
+++ b/dev-db/kyotocabinet/files/kyotocabinet-1.2.79-initialize-parameter-error-clang16.patch
@@ -0,0 +1,62 @@
+Without the patch I'm getting the following error/s:
+kcthread.cc:671:50: error: cannot initialize a parameter of type 'void *' with an rvalue of type 'int'
+ while (!__sync_bool_compare_and_swap(&opq_, 0, 1)) {
+ ^
+kcthread.cc:696:49: error: cannot initialize a parameter of type 'void *' with an rvalue of type 'int'
+ return __sync_bool_compare_and_swap(&opq_, 0, 1);
+--- a/kcthread.cc
++++ b/kcthread.cc
+@@ -668,7 +668,7 @@ void SpinLock::lock() {
+ #elif _KC_GCCATOMIC
+ _assert_(true);
+ uint32_t wcnt = 0;
+- while (!__sync_bool_compare_and_swap(&opq_, 0, 1)) {
++ while (!__sync_bool_compare_and_swap(&opq_, 0, (void *)1)) {
+ if (wcnt >= LOCKBUSYLOOP) {
+ Thread::chill();
+ } else {
+@@ -693,7 +693,7 @@ bool SpinLock::lock_try() {
+ return ::InterlockedCompareExchange((LONG*)&opq_, 1, 0) == 0;
+ #elif _KC_GCCATOMIC
+ _assert_(true);
+- return __sync_bool_compare_and_swap(&opq_, 0, 1);
++ return __sync_bool_compare_and_swap(&opq_, 0, (void *)1);
+ #else
+ _assert_(true);
+ ::pthread_spinlock_t* spin = (::pthread_spinlock_t*)opq_;
+@@ -811,7 +811,7 @@ void SlottedSpinLock::lock(size_t idx) {
+ SlottedSpinLockCore* core = (SlottedSpinLockCore*)opq_;
+ uint32_t* lock = core->locks + idx;
+ uint32_t wcnt = 0;
+- while (!__sync_bool_compare_and_swap(lock, 0, 1)) {
++ while (!__sync_bool_compare_and_swap(lock, 0, (unsigned int)1)) {
+ if (wcnt >= LOCKBUSYLOOP) {
+ Thread::chill();
+ } else {
+@@ -880,7 +880,7 @@ void SlottedSpinLock::lock_all() {
+ for (size_t i = 0; i < slotnum; i++) {
+ uint32_t* lock = locks + i;
+ uint32_t wcnt = 0;
+- while (!__sync_bool_compare_and_swap(lock, 0, 1)) {
++ while (!__sync_bool_compare_and_swap(lock, 0, (unsigned int)1)) {
+ if (wcnt >= LOCKBUSYLOOP) {
+ Thread::chill();
+ } else {
+@@ -1449,7 +1449,7 @@ static void spinrwlocklock(SpinRWLockCore* core) {
+ }
+ #elif _KC_GCCATOMIC
+ _assert_(core);
+- while (!__sync_bool_compare_and_swap(&core->sem, 0, 1)) {
++ while (!__sync_bool_compare_and_swap(&core->sem, 0, (unsigned int)1)) {
+ ::sched_yield();
+ }
+ #else
+@@ -1732,7 +1732,7 @@ static void slottedspinrwlocklock(SlottedSpinRWLockCore* core, size_t idx) {
+ }
+ #elif _KC_GCCATOMIC
+ _assert_(core);
+- while (!__sync_bool_compare_and_swap(core->sems + idx, 0, 1)) {
++ while (!__sync_bool_compare_and_swap(core->sems + idx, 0, (unsigned int)1)) {
+ ::sched_yield();
+ }
+ #else
diff --git a/dev-db/kyotocabinet/kyotocabinet-1.2.79-r2.ebuild b/dev-db/kyotocabinet/kyotocabinet-1.2.79-r2.ebuild
new file mode 100644
index 000000000000..fc4463ca0d3a
--- /dev/null
+++ b/dev-db/kyotocabinet/kyotocabinet-1.2.79-r2.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools toolchain-funcs
+
+DESCRIPTION="A straightforward implementation of DBM"
+HOMEPAGE="https://dbmx.net/kyotocabinet/"
+SRC_URI="https://dbmx.net/kyotocabinet/pkg/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="debug doc examples +lzma +lzo static-libs"
+
+DEPEND="sys-libs/zlib[static-libs?]
+ lzma? ( app-arch/xz-utils:=[static-libs?] )
+ lzo? ( dev-libs/lzo:=[static-libs?] )"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/fix_configure-1.2.62.patch
+ "${FILESDIR}"/${PN}-1.2.76-configure-8-byte-atomics.patch
+ "${FILESDIR}"/${PN}-1.2.76-flags.patch
+ "${FILESDIR}"/${PN}-1.2.79-configure-clang16.patch
+ "${FILESDIR}"/${PN}-1.2.79-initialize-parameter-error-clang16.patch
+)
+
+src_prepare() {
+ default
+
+ sed -i -e "/DOCDIR/d" Makefile.in || die
+ tc-export AR
+
+ mv configure.in configure.ac || die
+ eautoreconf
+}
+
+src_configure() {
+ # We need to set LD_LIBRARY_PATH which will be assigned to RUNENV later
+ # used by test suite
+ LD_LIBRARY_PATH=. \
+ econf $(use_enable debug) \
+ $(use_enable static-libs static) \
+ $(use_enable !static-libs shared) \
+ $(use_enable lzma) \
+ $(use_enable lzo)
+}
+
+src_test() {
+ emake -j1 check
+}
+
+src_install() {
+ default
+
+ if ! use static-libs; then
+ find "${ED}" -name '*.a' -delete || die
+ fi
+
+ if use doc; then
+ dodoc -r doc/*
+ fi
+
+ if use examples; then
+ docinto example
+ dodoc example/*
+ fi
+}