Skip to content

Commit

Permalink
Add gensieveroundlimitms config parameter, commit eda38d62ad571be0209…
Browse files Browse the repository at this point in the history
…5ce44469c0cc26a2b3675, made orogen patch optional
  • Loading branch information
teknohog committed Jul 11, 2013
1 parent 6ff56da commit 0d66f0d
Show file tree
Hide file tree
Showing 4 changed files with 206 additions and 1 deletion.
2 changes: 1 addition & 1 deletion README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ media-video/yle-dl-2.1.0 from http://aajanki.github.io/yle-dl/

net-p2p/imule-2.3.2.3 from http://echelon.i2p/imule/

net-p2p/primecoind-0.1.0 from https://bitcointalk.org/index.php?topic=251850.0
net-p2p/primecoind-0.1.0-r3 from http://primecoin.org/


iMule notes
Expand Down
2 changes: 2 additions & 0 deletions net-p2p/primecoind/Manifest
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
AUX 0.1.0-sys_leveldb.patch 6649 SHA256 e761659725ae0b9993d5ce099a46d3430162bad907e6c35020dd3bd1288c650d SHA512 4949e83169c8800251b678bd7bf64d87178696cb24f8559befd33af7bfebb513c46e705470957ff128765683dcf1d78bea7ec3ea23d16e021aafa0b713f74787 WHIRLPOOL ab8f40dfd3f7de2dbea7d04b47ce7651a39e90d340614d016a395532ac97029a25edf1f2badc6fa4bc8f8ec3479b199d96d01e23acad1019eab9539938cdcd19
AUX 338e61568a32e74fa112edf1f3d8eee8d6780ae9.patch 2704 SHA256 b5cd857ee2f91fe46daea1305786da08287e1ba9513b9f32540048c437e12148 SHA512 b9ce6592b09cf0b924956b1bea0b643129ea80fa082b5faf9fa8306912633ba47821cdf77911f811abdc8310a978ee3b36cd4fe2ebc9013b34d42b47d2efdcba WHIRLPOOL e3151afeb6db11e001d8e66d091481d8d65a3c321d26f079d9238a4ae2fe244920e7c004a59a38e561bc7cff162ece5ebd11c1da5d915cdd11d96973aa20a5ed
AUX eda38d62ad571be02095ce44469c0cc26a2b3675.patch 4227 SHA256 46842a390be14bfc340e1b860782a4515825210189c057e666a66b9b4ce0364b SHA512 33f0856d902e5bb063c39e4568898a95f0deb1880507e24da4df4484f0c799a5cb7d69c3bee082a9aa2f21fc3c51affe8d6c467e659db89a12739b3c7ce409d1 WHIRLPOOL 5b0c877d56bc24e36c583d58c37d16d18b0988e2933fbc53aba74a62fa167840530b980b08954fe40efbeb705b9db96c42055b9e518ac7bb8a908d8b798a1c28
AUX orogen-optimization.patch 3663 SHA256 f2912329bd07c44e1cb9c35b195a243c5c649e2bccf6e3e7d886ab4ef7295ed6 SHA512 dff9f929ea007a0146b0f7424c85aaf5e1b046a91a88fe66be5e38379921f57bd975c02124bc82da71c892ad6931f23a088940b5b64114ac4821f7e526d6f490 WHIRLPOOL 738be54b311c8002543f677939ee3cde6b719cdd0058d78e1ff9151a8e662998a424be036d885b286638842067fee2c5adfcf5d1b41c3d6368d3066c0d5d3e74
AUX primecoin.conf 82 SHA256 885ee7cffa4a36adea4e3589eb630abbbdd7ae48a0982a4f8ac067e49e2ea7e9 SHA512 40674f5afb4bbc866283a999d7cc13944875a1a5fbf82f87b2915d6498255a168d186c1b83c3b3784c640708666adbd5e97c5587c8e510b0fa5eb98f7607449b WHIRLPOOL 4e888f7ea2cfea05bf0cfa62a29f6002cb57c7afc9d9fc6f16d84ff6017f6ee322aea37e4576d7fb3582533d67c17cc199b88d670d38a92c9e1decc5a0d75a2f
AUX primecoin.confd 252 SHA256 f9764de1ae20f3f8dd69b2952010bd497023c778b214e93e0ffaa76b8e4d2e99 SHA512 006f853a88183d5491235a34f62bc534639c1ad176f7637ff97f5710c19951cf72eb2a4be8e246ee913266ed0d90dac6f5903ea46f4ba13ae205ed0ca62aa451 WHIRLPOOL 64e9e26994e5aae7344b7403e70418c19696b450c6aca7cd2ccdd68002f91a6c54c98569c9ec56ec2f7cde3706ddd20719d1e6bb120a423d754a380427c4a7fb
Expand All @@ -8,4 +9,5 @@ AUX primecoind.logrotate 116 SHA256 fb78530aad1491be7c75dede40e82809020b438f272a
DIST primecoin-0.1.0-linux.tar.gz 16495008 SHA256 2c049fd7dbe11e81b346ab143949d40d25dd544d48b950479d5105d76d19ae85 SHA512 2411e99a3c5e026a3262c145606793a24f4f864a9c490930c6b4f9f134c75924ad9055fdf22fe2b0ac3a224d3b8c67822830940eaa0c78498e73541265dcc619 WHIRLPOOL d6c36ac49123414b06f7f82968efee29dcf20b1ed0d329c08247c77aa5942e31e8f24fc0c34cf916c1f2609c983fdc784bc1b4318a581f7a6a4af5ca5db341c9
EBUILD primecoind-0.1.0-r1.ebuild 2754 SHA256 c30b535eed414757d88d9a298167f4814653aba4d8c402103a9956834a8362d4 SHA512 114f0d391ef2269f2542cd7f40351b0c8b1a7fc03a9c8fe494b34e2b300e6125a847563da3edfcdace30beb26bc6bb156ce585d99cb727f2e6c5d5764bd2e25b WHIRLPOOL 460aff0b429eea04cf14b64c896ed6d355bfe1335f8a28ffab759b1a94286e285e86c66a3350da99b05d4da081a9e3c2aff3205387b90442e79524ab2035997a
EBUILD primecoind-0.1.0-r2.ebuild 2824 SHA256 3a2394904a320a70eec69b15a742c58cd4dc614a12c86e221032a45b5344ebed SHA512 71aff391eef9adaf046f5cad4e7f823ac8a36d9fd7571c48c8d8b634d242ee64c2811a05a721e5478bf3a329a352a12094db1774b1815d2581cf9701e9ea8003 WHIRLPOOL 0156ffe3b1a71d98ae29efd2ffaa1e0d3ddf9c01a820db0af86e39d7ab0bda859ba39ed725395c98a8bb59e5080c730a389b031b4293c66c358d38269559370a
EBUILD primecoind-0.1.0-r3.ebuild 2927 SHA256 1e66fd1ed02fd8a42e8bb7560aeca0542a3b02b5997e5a69c84b800b749796c7 SHA512 a3f7cea0dab057a4292bdfcbab2315ed37db82df1889d43e5a54c25b95009279c3c72674264bc1de328f8608a98548dec5749db2d243cb8a7176b187bffffafc WHIRLPOOL 051a073af9c3c3a3e0391852d66f19f3a38f10a6cba38ae7c088bb95f6c77337431182b6b0f5e542bacc6d952a99b62771410f3486f35a9c4457e69c763445d5
EBUILD primecoind-0.1.0.ebuild 2706 SHA256 16be5d78701e1476ba0d7817266f5fdf221885452460da3938eab0f6b2f3f09a SHA512 d4e02b5fe120046a24e484b10351669fb34d51bcfe432f8ace493a6d5ed3c0559c0e11b741f19522943ea124391a897921c894e9f272eff47236da7283f30658 WHIRLPOOL 7f5e49db5f814fcc84827277c59fda89f4e92dc02e3b21b92c299cc31bf0c428105df0fd033cd0e57975e9e9871bbcb5b37494c8ee32cac31038b09af675574e
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
From eda38d62ad571be02095ce44469c0cc26a2b3675 Mon Sep 17 00:00:00 2001
From: Sunny King <sunnyking9999@gmail.com>
Date: Wed, 10 Jul 2013 23:45:16 +0100
Subject: [PATCH] Primecoin: Add gensieveroundlimitms config parameter
Further limit sieve round to default 1 second Check new block
arrival when preparing sieve (courtesy Mike270)

---
src/main.cpp | 9 ++++++---
src/prime.cpp | 9 ++++++---
2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/main.cpp b/src/main.cpp
index 801fe86..f56d37d 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -4435,7 +4435,8 @@ CBlockTemplate* CreateNewBlock(CReserveKey& reservekey)

nLastBlockTx = nBlockTx;
nLastBlockSize = nBlockSize;
- printf("CreateNewBlock(): total size %"PRI64u"\n", nBlockSize);
+ if (fDebug && GetBoolArg("-printmining"))
+ printf("CreateNewBlock(): total size %"PRI64u"\n", nBlockSize);
pblock->nBits = GetNextWorkRequired(pindexPrev, pblock);
pblock->vtx[0].vout[0].nValue = GetBlockValue(pblock->nBits, nFees);
pblocktemplate->vTxFees[0] = -nFees;
@@ -4594,7 +4595,8 @@ void static BitcoinMiner(CWallet *pwallet)
CBlock *pblock = &pblocktemplate->block;
IncrementExtraNonce(pblock, pindexPrev, nExtraNonce);

- printf("Running PrimecoinMiner with %"PRIszu" transactions in block (%u bytes)\n", pblock->vtx.size(),
+ if (fDebug && GetBoolArg("-printmining"))
+ printf("Running PrimecoinMiner with %"PRIszu" transactions in block (%u bytes)\n", pblock->vtx.size(),
::GetSerializeSize(*pblock, SER_NETWORK, PROTOCOL_VERSION));

//
@@ -4712,7 +4714,8 @@ void static BitcoinMiner(CWallet *pwallet)
nTimeExpected = nTimeExpected * max(1u, nRoundTests) / max(1u, nRoundPrimesHit);
for (unsigned int n = 1; n < TargetGetLength(pblock->nBits); n++)
nTimeExpected = nTimeExpected * max(1u, nRoundTests) * 3 / max(1u, nRoundPrimesHit);
- printf("PrimecoinMiner() : Round primorial=%u tests=%u primes=%u expected=%us\n", nPrimorialMultiplier, nRoundTests, nRoundPrimesHit, (unsigned int)(nTimeExpected/1000000));
+ if (fDebug && GetBoolArg("-printmining"))
+ printf("PrimecoinMiner() : Round primorial=%u tests=%u primes=%u expected=%us\n", nPrimorialMultiplier, nRoundTests, nRoundPrimesHit, (unsigned int)(nTimeExpected/1000000));
} }
catch (boost::thread_interrupted)
{
diff --git a/src/prime.cpp b/src/prime.cpp
index 3a278d0..b15f314 100644
--- a/src/prime.cpp
+++ b/src/prime.cpp
@@ -352,13 +352,16 @@ bool MineProbablePrimeChain(CBlock& block, CBigNum& bnFixedMultiplier, bool& fNe
fNewBlock = false;

int64 nStart, nCurrent; // microsecond timer
+ CBlockIndex* pindexPrev = pindexBest;
if (psieve.get() == NULL)
{
// Build sieve
nStart = GetTimeMicros();
psieve.reset(new CSieveOfEratosthenes(nMaxSieveSize, block.nBits, block.GetHeaderHash(), bnFixedMultiplier));
- while (psieve->Weave() && (GetTimeMicros() - nStart < 3000000));
- printf("MineProbablePrimeChain() : new sieve (%u/%u@%u%%) ready in %uus\n", psieve->GetCandidateCount(), nMaxSieveSize, psieve->GetProgressPercentage(), (unsigned int) (GetTimeMicros() - nStart));
+ int64 nSieveRoundLimit = (int)GetArg("-gensieveroundlimitms", 1000);
+ while (psieve->Weave() && pindexPrev == pindexBest && (GetTimeMicros() - nStart < 1000 * nSieveRoundLimit));
+ if (fDebug && GetBoolArg("-printmining"))
+ printf("MineProbablePrimeChain() : new sieve (%u/%u@%u%%) ready in %uus\n", psieve->GetCandidateCount(), nMaxSieveSize, psieve->GetProgressPercentage(), (unsigned int) (GetTimeMicros() - nStart));
}

CBigNum bnChainOrigin;
@@ -366,7 +369,7 @@ bool MineProbablePrimeChain(CBlock& block, CBigNum& bnFixedMultiplier, bool& fNe
nStart = GetTimeMicros();
nCurrent = nStart;

- while (nCurrent - nStart < 10000 && nCurrent >= nStart)
+ while (nCurrent - nStart < 10000 && nCurrent >= nStart && pindexPrev == pindexBest)
{
nTests++;
if (!psieve->GetNextCandidateMultiplier(nTriedMultiplier))
--
1.8.1.6

122 changes: 122 additions & 0 deletions net-p2p/primecoind/primecoind-0.1.0-r3.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
# Copyright 2010-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-p2p/bitcoind/bitcoind-0.8.2.ebuild,v 1.1 2013/06/14 18:49:59 blueness Exp $

EAPI="4"

DB_VER="4.8"

inherit db-use eutils versionator toolchain-funcs

MyPV="${PV/_/}"
MyPN="primecoin"
MyP="${MyPN}-${MyPV}-linux"

DESCRIPTION="Primecoin crypto-currency wallet for automated services"
HOMEPAGE="http://primecoin.org/"
SRC_URI="mirror://sourceforge/${MyPN}/${MyP}.tar.gz"

LICENSE="MIT ISC GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~arm ~x86"
IUSE="examples ipv6 logrotate orogen upnp"

RDEPEND="
>=dev-libs/boost-1.41.0[threads(+)]
dev-libs/openssl:0[-bindist]
logrotate? (
app-admin/logrotate
)
upnp? (
net-libs/miniupnpc
)
sys-libs/db:$(db_ver_to_slot "${DB_VER}")[cxx]
=dev-libs/leveldb-1.9.0*[-snappy]
"
DEPEND="${RDEPEND}
>=app-shells/bash-4.1
sys-apps/sed
"

S="${WORKDIR}/${MyP}/src"

pkg_setup() {
local UG='primecoin'
enewgroup "${UG}"
enewuser "${UG}" -1 -1 /var/lib/primecoin "${UG}"
}

src_prepare() {
epatch "${FILESDIR}/${PV}-sys_leveldb.patch"
epatch "${FILESDIR}/338e61568a32e74fa112edf1f3d8eee8d6780ae9.patch"
epatch "${FILESDIR}/eda38d62ad571be02095ce44469c0cc26a2b3675.patch"

if use orogen; then
epatch "${FILESDIR}/orogen-optimization.patch"
fi

rm -r src/leveldb

if has_version '>=dev-libs/boost-1.52'; then
sed -i 's/\(-l db_cxx\)/-l boost_chrono$(BOOST_LIB_SUFFIX) \1/' src/makefile.unix
fi
}

src_compile() {
OPTS=()

OPTS+=("DEBUGFLAGS=")
OPTS+=("CXXFLAGS=${CXXFLAGS}")
OPTS+=("LDFLAGS=${LDFLAGS}")

OPTS+=("BDB_INCLUDE_PATH=$(db_includedir "${DB_VER}")")
OPTS+=("BDB_LIB_SUFFIX=-${DB_VER}")

if use upnp; then
OPTS+=(USE_UPNP=1)
else
OPTS+=(USE_UPNP=)
fi
use ipv6 || OPTS+=("USE_IPV6=-")

OPTS+=("USE_SYSTEM_LEVELDB=1")

cd src || die
emake CC="$(tc-getCC)" CXX="$(tc-getCXX)" -f makefile.unix "${OPTS[@]}" ${PN}
}

src_test() {
cd src || die
emake CC="$(tc-getCC)" CXX="$(tc-getCXX)" -f makefile.unix "${OPTS[@]}" test_primecoin
./test_primecoin || die 'Tests failed'
}

src_install() {
dobin src/${PN}

insinto /etc/primecoin
newins "${FILESDIR}/primecoin.conf" primecoin.conf
fowners primecoin:primecoin /etc/primecoin/primecoin.conf
fperms 600 /etc/primecoin/primecoin.conf

newconfd "${FILESDIR}/primecoin.confd" ${PN}
newinitd "${FILESDIR}/primecoin.initd" ${PN}

keepdir /var/lib/primecoin/.primecoin
fperms 700 /var/lib/primecoin
fowners primecoin:primecoin /var/lib/primecoin/
fowners primecoin:primecoin /var/lib/primecoin/.primecoin
dosym /etc/primecoin/primecoin.conf /var/lib/primecoin/.primecoin/primecoin.conf

dodoc doc/README.md doc/release-notes.md

if use examples; then
docinto examples
dodoc -r contrib/{bitrpc,pyminer,spendfrom,tidy_datadir.sh,wallettools}
fi

if use logrotate; then
insinto /etc/logrotate.d
newins "${FILESDIR}/primecoind.logrotate" primecoind
fi
}

0 comments on commit 0d66f0d

Please sign in to comment.