diff options
author | Brahmajit Das <brahmajit.xyz@gmail.com> | 2023-06-14 10:37:33 +0000 |
---|---|---|
committer | Joonas Niilola <juippis@gentoo.org> | 2023-06-18 15:56:46 +0300 |
commit | ed868768e7a6b77262543f379bb0ca9e7db0974c (patch) | |
tree | e7b80bcc07d51f71dd429452231c401b06b52d8d /dev-db | |
parent | app-misc/broot: drop 1.21.2 (diff) | |
download | gentoo-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>
Diffstat (limited to 'dev-db')
-rw-r--r-- | dev-db/kyotocabinet/files/kyotocabinet-1.2.79-initialize-parameter-error-clang16.patch | 62 | ||||
-rw-r--r-- | dev-db/kyotocabinet/kyotocabinet-1.2.79-r2.ebuild | 70 |
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 +} |