mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
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>
This commit is contained in:
committed by
Joonas Niilola
parent
7ce00c71ef
commit
ed868768e7
@@ -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
|
||||
70
dev-db/kyotocabinet/kyotocabinet-1.2.79-r2.ebuild
Normal file
70
dev-db/kyotocabinet/kyotocabinet-1.2.79-r2.ebuild
Normal file
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user