1 |
blueness 13/12/28 16:15:40 |
2 |
|
3 |
Added: datacoin.logrotate datacoin-hp-sys_leveldb.patch |
4 |
datacoin.service datacoin.confd datacoin.initd |
5 |
datacoin.conf |
6 |
Log: |
7 |
Initial commit. Thanks likewhoa\! |
8 |
|
9 |
(Portage version: 2.2.7/cvs/Linux x86_64, signed Manifest commit with key 0xF52D4BBA) |
10 |
|
11 |
Revision Changes Path |
12 |
1.1 net-p2p/datacoin-hp/files/datacoin.logrotate |
13 |
|
14 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-p2p/datacoin-hp/files/datacoin.logrotate?rev=1.1&view=markup |
15 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-p2p/datacoin-hp/files/datacoin.logrotate?rev=1.1&content-type=text/plain |
16 |
|
17 |
Index: datacoin.logrotate |
18 |
=================================================================== |
19 |
/var/lib/datacoin/.datacoin/debug.log { |
20 |
weekly |
21 |
sharedscripts |
22 |
postrotate |
23 |
killall -HUP datacoind |
24 |
endscript |
25 |
} |
26 |
|
27 |
|
28 |
|
29 |
1.1 net-p2p/datacoin-hp/files/datacoin-hp-sys_leveldb.patch |
30 |
|
31 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-p2p/datacoin-hp/files/datacoin-hp-sys_leveldb.patch?rev=1.1&view=markup |
32 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-p2p/datacoin-hp/files/datacoin-hp-sys_leveldb.patch?rev=1.1&content-type=text/plain |
33 |
|
34 |
Index: datacoin-hp-sys_leveldb.patch |
35 |
=================================================================== |
36 |
diff --git a/datacoin-qt.pro b/datacoin-qt.pro |
37 |
index f531607..df0ecc4 100644 |
38 |
--- a/datacoin-qt.pro |
39 |
+++ b/datacoin-qt.pro |
40 |
@@ -4,7 +4,7 @@ macx:TARGET = "Datacoin-Qt" |
41 |
VERSION = 0.8.3 |
42 |
INCLUDEPATH += src src/json src/qt |
43 |
QT += network |
44 |
-DEFINES += QT_GUI BOOST_THREAD_USE_LIB BOOST_SPIRIT_THREADSAFE |
45 |
+DEFINES += QT_GUI BOOST_THREAD_USE_LIB BOOST_SPIRIT_THREADSAFE LEVELDB_WITHOUT_MEMENV |
46 |
CONFIG += no_include_pwd |
47 |
CONFIG += thread |
48 |
|
49 |
@@ -104,25 +104,29 @@ contains(BITCOIN_NEED_QT_PLUGINS, 1) { |
50 |
QTPLUGIN += qcncodecs qjpcodecs qtwcodecs qkrcodecs qtaccessiblewidgets |
51 |
} |
52 |
|
53 |
+contains(USE_SYSTEM_LEVELDB, 1) { |
54 |
+ LIBS += -lleveldb |
55 |
+} else { |
56 |
INCLUDEPATH += src/leveldb/include src/leveldb/helpers |
57 |
-LIBS += $$PWD/src/leveldb/libleveldb.a $$PWD/src/leveldb/libmemenv.a |
58 |
+LIBS += $$PWD/src/leveldb/libleveldb.a |
59 |
!win32 { |
60 |
# we use QMAKE_CXXFLAGS_RELEASE even without RELEASE=1 because we use RELEASE to indicate linking preferences not -O preferences |
61 |
- genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a |
62 |
+ genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a |
63 |
} else { |
64 |
# make an educated guess about what the ranlib command is called |
65 |
isEmpty(QMAKE_RANLIB) { |
66 |
QMAKE_RANLIB = $$replace(QMAKE_STRIP, strip, ranlib) |
67 |
} |
68 |
LIBS += -lshlwapi |
69 |
- genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libmemenv.a |
70 |
+ genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a |
71 |
} |
72 |
genleveldb.target = $$PWD/src/leveldb/libleveldb.a |
73 |
genleveldb.depends = FORCE |
74 |
PRE_TARGETDEPS += $$PWD/src/leveldb/libleveldb.a |
75 |
QMAKE_EXTRA_TARGETS += genleveldb |
76 |
+} |
77 |
# Gross ugly hack that depends on qmake internals, unfortunately there is no other way to do it. |
78 |
-QMAKE_CLEAN += $$PWD/src/leveldb/libleveldb.a; cd $$PWD/src/leveldb ; $(MAKE) clean |
79 |
+QMAKE_CLEAN += $$PWD/src/leveldb/libleveldb.a; cd $$PWD/src/leveldb && $(MAKE) clean || true |
80 |
|
81 |
# regenerate src/build.h |
82 |
!win32|contains(USE_BUILD_INFO, 1) { |
83 |
diff --git a/src/leveldb.cpp b/src/leveldb.cpp |
84 |
index e66f851..2856d70 100644 |
85 |
--- a/src/leveldb.cpp |
86 |
+++ b/src/leveldb.cpp |
87 |
@@ -8,7 +8,9 @@ |
88 |
#include <leveldb/env.h> |
89 |
#include <leveldb/cache.h> |
90 |
#include <leveldb/filter_policy.h> |
91 |
-#include <memenv/memenv.h> |
92 |
+#ifndef LEVELDB_WITHOUT_MEMENV |
93 |
+#include <memenv.h> |
94 |
+#endif |
95 |
|
96 |
#include <boost/filesystem.hpp> |
97 |
|
98 |
@@ -43,8 +45,12 @@ CLevelDB::CLevelDB(const boost::filesystem::path &path, size_t nCacheSize, bool |
99 |
options = GetOptions(nCacheSize); |
100 |
options.create_if_missing = true; |
101 |
if (fMemory) { |
102 |
+#ifndef LEVELDB_WITHOUT_MEMENV |
103 |
penv = leveldb::NewMemEnv(leveldb::Env::Default()); |
104 |
options.env = penv; |
105 |
+#else |
106 |
+ throw std::runtime_error("CLevelDB(): compiled without memenv support"); |
107 |
+#endif |
108 |
} else { |
109 |
if (fWipe) { |
110 |
printf("Wiping LevelDB in %s\n", path.string().c_str()); |
111 |
diff --git a/src/makefile.unix b/src/makefile.unix |
112 |
index 359ac3d..ec1e075 100644 |
113 |
--- a/src/makefile.unix |
114 |
+++ b/src/makefile.unix |
115 |
@@ -120,8 +120,7 @@ xCXXFLAGS=-O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-para |
116 |
# adds some defaults in front. Unfortunately, LDFLAGS=... $(LDFLAGS) does not work. |
117 |
xLDFLAGS=$(LDHARDENING) $(LDFLAGS) |
118 |
|
119 |
-OBJS= \ |
120 |
- leveldb/libleveldb.a \ |
121 |
+BASEOBJS := \ |
122 |
obj/alert.o \ |
123 |
obj/version.o \ |
124 |
obj/checkpoints.o \ |
125 |
@@ -130,7 +129,6 @@ OBJS= \ |
126 |
obj/crypter.o \ |
127 |
obj/key.o \ |
128 |
obj/db.o \ |
129 |
- obj/init.o \ |
130 |
obj/keystore.o \ |
131 |
obj/main.o \ |
132 |
obj/net.o \ |
133 |
@@ -150,25 +148,44 @@ OBJS= \ |
134 |
obj/hash.o \ |
135 |
obj/bloom.o \ |
136 |
obj/noui.o \ |
137 |
- obj/leveldb.o \ |
138 |
obj/txdb.o \ |
139 |
obj/prime.o \ |
140 |
obj/checkpointsync.o |
141 |
|
142 |
+OBJS := \ |
143 |
+ obj/leveldb.o \ |
144 |
+ obj/init.o \ |
145 |
+ $(BASEOBJS) |
146 |
+ |
147 |
+TESTOBJS := \ |
148 |
+ obj-test/leveldb.o \ |
149 |
+ $(patsubst test/%.cpp,obj-test/%.o,$(wildcard test/*.cpp)) \ |
150 |
+ $(BASEOBJS) |
151 |
+ |
152 |
all: datacoind |
153 |
|
154 |
test check: test_primecoin FORCE |
155 |
./test_primecoin |
156 |
|
157 |
+ifdef USE_SYSTEM_LEVELDB |
158 |
+ LIBS += -lleveldb |
159 |
+ TESTLIBS += -lmemenv |
160 |
+else |
161 |
# |
162 |
# LevelDB support |
163 |
# |
164 |
MAKEOVERRIDES = |
165 |
-LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a |
166 |
+LIBS += $(CURDIR)/leveldb/libleveldb.a |
167 |
+TESTLIBS += $(CURDIR)/leveldb/libmemenv.a |
168 |
DEFS += $(addprefix -I,$(CURDIR)/leveldb/include) |
169 |
DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers) |
170 |
leveldb/libleveldb.a: |
171 |
- @echo "Building LevelDB ..." && cd leveldb && $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(xCXXFLAGS)" libleveldb.a libmemenv.a && cd .. |
172 |
+ @echo "Building LevelDB ..." && cd leveldb && $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(xCXXFLAGS)" libleveldb.a && cd .. |
173 |
+leveldb/libmemenv.a: |
174 |
+ @echo "Building LevelDB memenv ..." && cd leveldb && $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(xCXXFLAGS)" libmemenv.a && cd .. |
175 |
+OBJS += leveldb/libleveldb.a |
176 |
+TESTOBJS += leveldb/libmemenv.a |
177 |
+endif |
178 |
|
179 |
# auto-generated dependencies: |
180 |
-include obj/*.P |
181 |
@@ -179,24 +196,22 @@ obj/build.h: FORCE |
182 |
version.cpp: obj/build.h |
183 |
DEFS += -DHAVE_BUILD_INFO |
184 |
|
185 |
-obj/%.o: %.cpp |
186 |
- $(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $< |
187 |
+P_TO_D = \ |
188 |
@cp $(@:%.o=%.d) $(@:%.o=%.P); \ |
189 |
- sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ |
190 |
+ sed -e 's/\#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ |
191 |
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \ |
192 |
rm -f $(@:%.o=%.d) |
193 |
|
194 |
-datacoind: $(OBJS:obj/%=obj/%) |
195 |
- $(LINK) $(xCXXFLAGS) -o $@ $^ $(xLDFLAGS) $(LIBS) |
196 |
+obj/%.o: %.cpp |
197 |
+ $(CXX) -c $(xCXXFLAGS) -DLEVELDB_WITHOUT_MEMENV -MMD -MF $(@:%.o=%.d) -o $@ $< |
198 |
+ $(P_TO_D) |
199 |
|
200 |
-TESTOBJS := $(patsubst test/%.cpp,obj-test/%.o,$(wildcard test/*.cpp)) |
201 |
+datacoind: $(OBJS) |
202 |
+ $(LINK) $(xCXXFLAGS) -o $@ $^ $(xLDFLAGS) $(LIBS) |
203 |
|
204 |
obj-test/%.o: test/%.cpp |
205 |
- $(CXX) -c $(TESTDEFS) $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $< |
206 |
- @cp $(@:%.o=%.d) $(@:%.o=%.P); \ |
207 |
- sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ |
208 |
- -e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \ |
209 |
- rm -f $(@:%.o=%.d) |
210 |
+ $(CXX) -c $(xCXXFLAGS) -DLEVELDB_WITHOUT_MEMENV -MMD -MF $(@:%.o=%.d) -o $@ $< |
211 |
+ $(P_TO_D) |
212 |
|
213 |
test_primecoin: $(TESTOBJS) $(filter-out obj/init.o,$(OBJS:obj/%=obj/%)) |
214 |
$(LINK) $(xCXXFLAGS) -o $@ $(LIBPATHS) $^ $(TESTLIBS) $(xLDFLAGS) $(LIBS) |
215 |
|
216 |
|
217 |
|
218 |
1.1 net-p2p/datacoin-hp/files/datacoin.service |
219 |
|
220 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-p2p/datacoin-hp/files/datacoin.service?rev=1.1&view=markup |
221 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-p2p/datacoin-hp/files/datacoin.service?rev=1.1&content-type=text/plain |
222 |
|
223 |
Index: datacoin.service |
224 |
=================================================================== |
225 |
# It's not recommended to modify this file in-place, because it will be |
226 |
# overwritten during package upgrades. If you want to customize, the |
227 |
# best way is to create file |
228 |
# "/etc/systemd/system/datacoind.service.d/*.conf" |
229 |
# containing your changes |
230 |
|
231 |
# For example, if you want to change some daemon and/or unit options, |
232 |
# create a file named |
233 |
# "/etc/systemd/system/datacoind.service.d/myopts.conf" |
234 |
# containing: |
235 |
# [Service] |
236 |
# Environment="DATACOIN_OPTS=-debug -logtimestamps" |
237 |
# Nice=10 |
238 |
# This will override the setting appearing below. |
239 |
|
240 |
# Note that almost all daemon options could be specified in |
241 |
# /etc/primecoin/datacoin.conf |
242 |
|
243 |
[Unit] |
244 |
Description=Datacoin Daemon |
245 |
After=network.target |
246 |
|
247 |
[Service] |
248 |
User=datacoin |
249 |
Environment=DATACOIN_OPTS= |
250 |
ExecStart=/usr/bin/datacoind -daemon=0 $DATACOIN_OPTS |
251 |
ExecReload=/bin/kill -HUP $MAINPID |
252 |
|
253 |
[Install] |
254 |
WantedBy=multi-user.target |
255 |
|
256 |
|
257 |
|
258 |
1.1 net-p2p/datacoin-hp/files/datacoin.confd |
259 |
|
260 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-p2p/datacoin-hp/files/datacoin.confd?rev=1.1&view=markup |
261 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-p2p/datacoin-hp/files/datacoin.confd?rev=1.1&content-type=text/plain |
262 |
|
263 |
Index: datacoin.confd |
264 |
=================================================================== |
265 |
# Config file for /etc/init.d/datacoind |
266 |
|
267 |
# owner of datacoind process (don't change, must be existing) |
268 |
DATACOIN_USER="datacoin-hp" |
269 |
|
270 |
DATACOIN_OPTS="${DATACOIN_OPTS}" |
271 |
|
272 |
# nice level |
273 |
NICELEVEL="19" |
274 |
|
275 |
|
276 |
|
277 |
1.1 net-p2p/datacoin-hp/files/datacoin.initd |
278 |
|
279 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-p2p/datacoin-hp/files/datacoin.initd?rev=1.1&view=markup |
280 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-p2p/datacoin-hp/files/datacoin.initd?rev=1.1&content-type=text/plain |
281 |
|
282 |
Index: datacoin.initd |
283 |
=================================================================== |
284 |
#!/sbin/runscript |
285 |
# Distributed under the terms of the GNU General Public License, v2 or later |
286 |
|
287 |
VARDIR="/var/lib/datacoin" |
288 |
CONFFILE="${VARDIR}/.datacoin/datacoin.conf" |
289 |
|
290 |
depend() { |
291 |
need net |
292 |
} |
293 |
|
294 |
checkconfig() { |
295 |
if [[ "${DATACOIN_USER}" == "" ]] ; then |
296 |
eerror "Please edit /etc/conf.d/datacoind" |
297 |
eerror "A user must be specified to run datacoind as that user." |
298 |
eerror "Modify USER to your needs (you may also add a group after a colon)" |
299 |
return 1 |
300 |
fi |
301 |
if ! `getent passwd | cut -d ':' -f 1 | grep $( echo "${DATACOIN_USER}" | cut -d ':' -f 1 ) -sq` ; then |
302 |
eerror "Please edit /etc/conf.d/datacoind" |
303 |
eerror "Specified user must exist!" |
304 |
return 1 |
305 |
fi |
306 |
if `echo "${DATACOIN_USER}" | grep ':' -sq` ; then |
307 |
if ! `cut -d ':' -f 1 /etc/group | grep $( echo "${DATACOIN_USER}" | cut -d ':' -f 2 ) -sq` ; then |
308 |
eerror "Please edit /etc/conf.d/datacoind" |
309 |
eerror "Specified group must exist!" |
310 |
return 1 |
311 |
fi |
312 |
fi |
313 |
if ! grep -q '^rpcpassword=' "${CONFFILE}"; then |
314 |
eerror "Please edit `readlink -f ${CONFFILE}`" |
315 |
eerror "There must be at least a line assigning rpcpassword=something-secure" |
316 |
return 1 |
317 |
fi |
318 |
if ! stat -Lc '%a' "${CONFFILE}" | grep -q '^[4567]00$'; then |
319 |
eerror "`readlink -f ${CONFFILE}` should not be readable by other users" |
320 |
return 1 |
321 |
fi |
322 |
return 0 |
323 |
} |
324 |
|
325 |
start() { |
326 |
checkconfig || return 1 |
327 |
ebegin "Starting Datacoind daemon" |
328 |
|
329 |
pkg-config openrc |
330 |
if [ $? = 0 ]; then |
331 |
start_openrc |
332 |
else |
333 |
start_baselayout |
334 |
fi |
335 |
} |
336 |
|
337 |
stop() { |
338 |
ebegin "Stopping Datacoin daemon" |
339 |
|
340 |
pkg-config openrc |
341 |
if [ $? = 0 ]; then |
342 |
stop_openrc |
343 |
else |
344 |
stop_baselayout |
345 |
fi |
346 |
} |
347 |
|
348 |
start_openrc() { |
349 |
start-stop-daemon \ |
350 |
--start --user "${DATACOIN_USER}" --name datacoind \ |
351 |
--pidfile /var/run/datacoind.pid --make-pidfile \ |
352 |
--env HOME="${VARDIR}" --exec /usr/bin/datacoind \ |
353 |
--nicelevel "${NICELEVEL}" \ |
354 |
--background \ |
355 |
--wait 2000 \ |
356 |
-- ${DATACOIN_OPTS} |
357 |
eend $? |
358 |
} |
359 |
|
360 |
stop_openrc() { |
361 |
start-stop-daemon --stop --user "${DATACOIN_USER}" \ |
362 |
--name datacoind --pidfile /var/run/datacoind.pid \ |
363 |
--wait 30000 \ |
364 |
--progress |
365 |
eend $? |
366 |
} |
367 |
|
368 |
start_baselayout() { |
369 |
start-stop-daemon \ |
370 |
--start --user "${DATACOIN_USER}" --name datacoind \ |
371 |
--pidfile /var/run/datacoind.pid --make-pidfile \ |
372 |
--env HOME="${VARDIR}" --exec /usr/bin/datacoind \ |
373 |
--chuid "${DATACOIN_USER}" \ |
374 |
--nicelevel "${NICELEVEL}" \ |
375 |
--background \ |
376 |
-- ${DATACOIN_OPTS} |
377 |
eend $? |
378 |
} |
379 |
|
380 |
stop_baselayout() { |
381 |
start-stop-daemon \ |
382 |
--stop \ |
383 |
--user "${DATACOIN_USER}" \ |
384 |
--name datacoind \ |
385 |
--pidfile /var/run/datacoind.pid |
386 |
eend $? |
387 |
} |
388 |
|
389 |
|
390 |
|
391 |
1.1 net-p2p/datacoin-hp/files/datacoin.conf |
392 |
|
393 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-p2p/datacoin-hp/files/datacoin.conf?rev=1.1&view=markup |
394 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-p2p/datacoin-hp/files/datacoin.conf?rev=1.1&content-type=text/plain |
395 |
|
396 |
Index: datacoin.conf |
397 |
=================================================================== |
398 |
# see https://en.bitcoin.it/wiki/Running_Bitcoin#Bitcoin.conf_Configuration_File |
399 |
# |
400 |
|
401 |
#rpcuser= |
402 |
#rpcpassword= |