[Dev] Packaging feathercoind and feathercoin-qt on Linux
-
If you can make first Ubuntu :)
-
I always start with Opensuse, as this is my ‘home’ distribution and I’m familiar with that one.
Adapting to Debian/Ubuntu is easier for me, than doing Ubuntu first and then the other distributions.In any case I will release for all distributions mentioned above at the same date.
-
Status of packaging
I will use this post for updates on the progress.
It will be edited to reflect updates-
2015/8/14:
**packaging of feathercoind for Opensuse working
** working to get libraries for qr code handling packaged on OpensuseOpensuse -
2015/8/15:
** libraries handling qr-code packaged for Opensuse and available at software.opensuse.org (search for libzxing) -
2015/8/16:
** libraries handling qr-code packaged for xUbunutu and available at software.opensuse.org (search for libzxing)
** packaging of qr-code libraries for Debian in progress -
2015/8/17
** libraries handling qr-code packaged for Fedora and available at software.opensuse.org (search for libzxing) -
2015/08/23
** packaging of qr-code libraries for Debian 7 done and available at software.opensuse.org (search for libzxing) -
2015/09/09
** packaging of qr-code libraries for Debian 8 done and available at software.opensuse.org (search for libzxing) -
2015/10/08
** packaging of feathercoind and gui-wallet for Ubuntu 14.04 14.10 and 15.04, 32 and 64 Bit are done.Packages are available upon request.Packages are available here under ‘unstable’ as the packages are not part of the official distribution -
2015/10/10
** packaging of feathercoind and gui-wallet for Debian 8, 32 Bit done. Packages are available here under ‘unstable’ as the packages are not part of the official distribution -
2015/10/15
** packaging of feathercoind and gui-wallet for Debian 8, 64 Bit done. Packages are available here under ‘unstable’ as the packages are not part of the official distribution -
2015/10/31
** packaging of feathercoind and gui-wallet for Fedora 20 64 and 32 bit done. Packages are available here under ‘unstable’ as the packages are not part of the official distribution
** packaging of feathercoind and gui-wallet for Fedora 21, 64 and 32 bit done. Packages are available here under ‘unstable’ as the packages are not part of the official distribution
** packaging of feathercoind and gui-wallet for Fedora 22, 64 and 32 bit done. Packages are available here under ‘unstable’ as the packages are not part of the official distribution
** packaging of feathercoind and gui-wallet for Opensuse 13.2 64 and 32 bit done. Packages are available here under ‘unstable’ as the packages are not part of the official distribution
-
-
Status post updated
-
Packaging of libzxing for Debian 7 done.
Packages are available at:https://build.opensuse.org/package/binaries/home:wellenreiter01/libzxing?repository=Debian_7.0
-
Just a status update: I was occupied with other topics the last days.
Will focus on Ubuntu next, as Debian 7 is using qt4 only, which is causing issues when compiling the GUI Version and Debian 8 has a broken build chain for cmake, making it impossible at the moment to compile libzxing in my environment
-
Broken build chain for Debian 8 fixed
Packaging of libzxing for Debian 8 done.
Packages are available at:
https://build.opensuse.org/package/binaries/home:wellenreiter01/libzxing?repository=Debian_8.0 -
Packaging for Ubuntu is done.
-
awesome!
-
Some fine tuning still needs to be done and I need to describe how to add the repository to the sources list on the local PC.
-
Packaging of feathercoind and gui-wallet for Debian 8, 32 Bit done.
-
Packaging of feathercoind and gui-wallet for Debian 8, 64 Bit done. Packages are available upon request.
-
As Version 0.9.3 was released today the Installation packages (.rpm / .deb) are made available here under ‘unstable’ as the packages are not part of the official distributions.
Updated also the status post above
-
2015/10/31
- packaging of feathercoind and gui-wallet for Fedora 20 64 and 32 bit done. Packages are available here under ‘unstable’ as the packages are not part of the official distribution
- packaging of feathercoind and gui-wallet for Fedora 21, 64 and 32 bit done. Packages are available here under ‘unstable’ as the packages are not part of the official distribution
- packaging of feathercoind and gui-wallet for Fedora 22, 64 and 32 bit done. Packages are available here under ‘unstable’ as the packages are not part of the official distribution
- packaging of feathercoind and gui-wallet for OpenSuSE 13.2 , 64 and 32 bit done. Packages are available here under ‘unstable’ as the packages are not part of the official distribution
-
Just a note that Feathercoin name is available for the Opensuse build service, might be worth having the Official builds there …
-
Building 0.8.7.3 and 0.9.3.1 on Ubuntu
Build service errors
Currently I get this error messages:
CXX rpcrawtransaction.o
[ 590s] In file included from /usr/include/boost/move/detail/type_traits.hpp:34:0,
[ 590s] from /usr/include/boost/move/core.hpp:54,
[ 590s] from /usr/include/boost/move/utility_core.hpp:29,
[ 590s] from /usr/include/boost/move/utility.hpp:28,
[ 590s] from /usr/include/boost/thread/detail/move.hpp:27,
[ 590s] from /usr/include/boost/thread/lock_types.hpp:11,
[ 590s] from /usr/include/boost/thread/pthread/mutex.hpp:16,
[ 590s] from /usr/include/boost/thread/mutex.hpp:16,
[ 590s] from allocators.h:13,
[ 590s] from serialize.h:9,
[ 590s] from bignum.h:9,
[ 590s] from chainparams.h:9,
[ 590s] from base58.h:17,
[ 590s] from rpcrawtransaction.cpp:6:
[ 590s] /usr/include/boost/variant/get.hpp: In instantiation of ‘typename boost::add_reference<T>::type boost::strict_get(boost::variant<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>&) [with U = const CScriptID&; T0 = CNoDestination; T1 = CKeyID; T2 = CScriptID; T3 = CStealthAddress; T4 = boost::detail::variant::void_; T5 = boost::detail::variant::void_; T6 = boost::detail::variant::void_; T7 = boost::detail::variant::void_; T8 = boost::detail::variant::void_; T9 = boost::detail::variant::void_; T10 = boost::detail::variant::void_; T11 = boost::detail::variant::void_; T12 = boost::detail::variant::void_; T13 = boost::detail::variant::void_; T14 = boost::detail::variant::void_; T15 = boost::detail::variant::void_; T16 = boost::detail::variant::void_; T17 = boost::detail::variant::void_; T18 = boost::detail::variant::void_; T19 = boost::detail::variant::void_; typename boost::add_reference<T>::type = const CScriptID&]’:
[ 590s] /usr/include/boost/variant/get.hpp:284:25: required from ‘typename boost::add_reference<T>::type boost::get(boost::variant<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>&) [with U = const CScriptID&; T0 = CNoDestination; T1 = CKeyID; T2 = CScriptID; T3 = CStealthAddress; T4 = boost::detail::variant::void_; T5 = boost::detail::variant::void_; T6 = boost::detail::variant::void_; T7 = boost::detail::variant::void_; T8 = boost::detail::variant::void_; T9 = boost::detail::variant::void_; T10 = boost::detail::variant::void_; T11 = boost::detail::variant::void_; T12 = boost::detail::variant::void_; T13 = boost::detail::variant::void_; T14 = boost::detail::variant::void_; T15 = boost::detail::variant::void_; T16 = boost::detail::variant::void_; T17 = boost::detail::variant::void_; T18 = boost::detail::variant::void_; T19 = boost::detail::variant::void_; typename boost::add_reference<T>::type = const CScriptID&]’
[ 590s] rpcrawtransaction.cpp:299:77: required from here
[ 590s] /usr/include/boost/variant/get.hpp:178:5: error: invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’
[ 590s] BOOST_STATIC_ASSERT_MSG(
[ 590s] ^The same code is compiling fine on Ubuntu 15.04, Debian 8 and other distributions.
Possible answers being looked at :
Just reading about a similar problem compiling :
I think that the problem is that you put #ifdef instead of #ifndef at the top of your header.h file
a search for what includes boost showed - checkpoints.h
Which is a likely area for an error as it is included code for FTC. However, I can’t see a logical error in variable definition there, yet …
https://github.com/FeatherCoin/Feathercoin/blob/0.9.3.1/src/checkpoints.h
Also note https://github.com/FeatherCoin/Feathercoin/blob/0.9.3.1/src/rpcprotocol.cpp
last change was to fix compile error …
Also noted libqt5core5a replaces libqt5core5 mentioned in master-0.8/doc/readme-qt.rst
-
7230328 Jun 8 20:55
feathercoin-qt 0.8.7.3 now compiles for me under Kubuntu 15.10
Method :
Installing the 12.04 dependencies from master-0.8/doc/readme-qt.rstA Library has changed name and become libqt5core5a, install that
qmake
make -
Tried to register the Feathercoin name on opensuse build service but it has been taken (and abandoned ) by [email protected]
Gonna contact him to get the name.
-
Building Feathercoind
0.8.7.3 - buildunit.txt
sudo apt-get install libboost1.37-dev fails
In Kubuntu 15.10 this is now libboost1.58-dev
warning during compile :
main.cpp: In function ‘bool ProcessBlock(CValidationState&, CNode*, CBlock*, CDiskBlockPos*)’:
main.cpp:2374:150: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 2 has type ‘int64 {aka long long int}’ [-Wformat=]
return error(“ProcessBlock() : block has a time stamp of %u before the last checkpoint of %u”, pblock->GetBlockTime(), pcheckpoint->nTime);feathercoind builds
This is the code at line 2374 main.cpp
if((pblock->GetBlockTime() - pcheckpoint->nTime) < 0) { if(pfrom) pfrom->Misbehaving(100); return error("ProcessBlock() : block has a time stamp of %u before the last checkpoint of %u", pblock->GetBlockTime(), pcheckpoint->nTime); } // Here was some code to verify block difficulty upon block and checkpoint // time difference which had never worked well in general and was broken // across the hard forks for Feathercoin in particular
Note: ProcessBlock()
There is a mismatch to how ProcessBlock is called in main and rpcmining.cpp - it looks like there is a bug in main.cpp should be &pblock …
src/miner.cpp
Showing the top match. Last indexed on 21 Mar.
// Process this block the same as if we had received it from another node
CValidationState state;
if (!ProcessBlock(state, NULL, pblock))
return error(“FeathercoinMiner : ProcessBlock, block not accepted”);
}return true;
}src/rpcmining.cpp
Showing the top match. Last indexed on 21 Mar.
throw JSONRPCError(RPC_DESERIALIZATION_ERROR, “Block decode failed”);
}CValidationState state;
bool fAccepted = ProcessBlock(state, NULL, &pblock);
if (!fAccepted) -
Building feathercoin-qt 0.9.3.1 on Kubuntu 15.10
./autogen.sh
./configure
makeerror : ./autogen.sh: 3: ./autogen.sh: autoreconf: not found
apt-get install dh-autoreconf
autoupdate
./configure --with-incompatible-bdb
make
fails with error :
/usr/include/boost/variant/get.hpp:178:5: error: invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’
BOOST_STATIC_ASSERT_MSG(
^Found this post : scatha
Re: Error Compiling Zetacoin Ubuntu
January 29, 2016, 08:41:47 AMI have similar problems with various coins- the solution is usually I try a different version of boost-devel, make clean and recompile.
Seems Boost 1.58 is the probable cause : – Found this post
Considering that boost 1.59 seems fine with the code, I’d go for:
if((${Boost_MAJOR_VERSION} EQUAL 1) AND (${Boost_MINOR_VERSION} EQUAL 58))
message( STATUS “Defining BOOST_VARIANT_USE_RELAXED_GET_BY_DEFAULT”)
add_definitions(“-DBOOST_VARIANT_USE_RELAXED_GET_BY_DEFAULT”)
endif()just after the find_package( Boost … ) in the main CMakeLists.txt
Looks like there was a PPA to get the latest Boost version : will continue tomorrow…
https://codeyarns.com/2013/12/27/how-to-upgrade-the-boost-library-on-ubuntu/
Found this :
https://github.com/icook/zmark/commit/40ddb16a05c703c7cd9dce10f3aef09c0679e3d3
Edited line 299 of rpcrawtransaction.cpp
from
const CScriptID& hash = boost::get<const CScriptID&>(address);to
const CScriptID& hash = boost::get<CScriptID>(address);
Continues further with build then error :
shiftdialog.cpp:28:23: fatal error: QJsonObject: No such file or directory
Installed libzxing libqrencode-dev qtbase5-dev libqt5opengl5-dev
Now build fails with new error :
CXX libbitcoinqt_a-shiftdialog.o
shiftdialog.cpp:28:23: fatal error: QJsonObject: No such file or directory
compilation terminated.
Found similar problem compiling MInt
There must be a newer version of that object files other than the one supplied with mint. The version table ends at GLIBCXX_3.4.19
Code: Select all
objdump -x /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19|grep ‘GLIBCXX_3.4.1’Tried : Install libstdc+±5 (4.9 installed) build failed
Found another similar Mint problem @Wellenreiter worked on :
https://bitcointalk.org/index.php?topic=178286.msg13823798#msg13823798
qtbas5-dev appears to be installed correctly…
QJsonObject: The compiler misses the file qjasonobject.h
As Mint is a kind of special flavor of Ubuntu I checked the Ubuntu packages.
You need to install the package qtbase5-dev. That package contains qjsonobject.h as you can see here:
http://packages.ubuntu.com/wily/amd64/qtbase5-dev/filelistQtPrintSupport/QPrinter: The compiler misses the file qprinter.h
Again, the package qtbase5-dev contains the header files for QtPrintSupport.
If you have installed qtbase5-dev, check for the directories containing qprinter.h and qjsonobject.h
and specifiy these directories for the configure script. Use ‘configure --help’ for syntax.Searched for qjsonobject.h and qjsonobject.h not found
Found This : https://bugreports.qt.io/browse/QTBUG-27096 :
All instances of “#include <QPrinter>” or “#include <QPrintDialog>” that I had in my Qt4 project must now be replaced by “#include <Qt/qprinter.h>” or “#include <Qt/qprintdialog.h>”, which is not Qt standard.
Edit :
src/qt/utilitydialog.cppActual position of Qt printer headers in Ubuntu 15.10 :
/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/qprinter.h
usr/include/x86_64-linux-gnu/qt5/QtPrintSupport/qprintdialog.hTry - Change lines including utilitydialog.cpp headers include from :
// Use QT5’s new modular classes
#include <QtPrintSupport/QPrinter>
#include <QtPrintSupport/QPrintDialog>
#include <QtPrintSupport/QPrintPreviewDialog>Change lines in utilitydialog.cpp to :
// Use QT5’s new modular classes
#include <QtPrintSupport/qprinter.h>
#include <QtPrintSupport/qprintdialog.h>
#include <QtPrintSupport/qprintpreviewdialog.h>build error :
CXX libbitcoinqt_a-notificator.o
CXX libbitcoinqt_a-optionsdialog.o
In file included from optionsdialog.cpp:17:0:CXX libbitcoinqt_a-shiftdialog.o
shiftdialog.cpp:28:23: fatal error: QJsonObject: No such file or directory
compilation terminated.
from : https://bugreports.qt.io/browse/QTBUG-27096
Did you add QT += printsupport in the pro file?
It should work that way. Please let me know if you still have problems.Can’t find feathercoin.pro in 0.9.3.1 release source.
Back to basics ran full instructions :
qmake failed
so ran full build with qmake -project :
make clean
./autogen.sh
autoupdate
./configure --with-incompatible-bdb
qmake -project
make
Added QT += printsupport to feathercoin.pro file as suggested here :
https://bugreports.qt.io/browse/QTBUG-27096
Caused early crash of compile with error :
make[5]: Entering directory ‘/home/tony/programs/Feathercoin/src/qt’
CXX libbitcoinqt_a-shiftdialog.o
shiftdialog.cpp:28:23: fatal error: QJsonObject: No such file or directory
compilation terminated.
Makefile:1509: recipe for target ‘libbitcoinqt_a-shiftdialog.o’ failed
make[5]: *** [libbitcoinqt_a-shiftdialog.o] Error 1edited utiltydialog.cpp to try a different “full path” to Qt “problem” libraries.
// Use QT5’s new modular classes
#include <QtPrintSupport/QPrinter>
#include <QtPrintSupport/QPrintDialog>
#include <QtPrintSupport/QPrintPreviewDialog>
#include <QtGui/QPainter>
#include “walletmodel.h”// Use QT5’s new modular classes
#include <QtPrintSupport/qprinter.h>
#include <QtPrintSupport/qprintdialog.h>
#include <QtPrintSupport/qprintpreviewdialog.h>
#include <QtGui/QPainter>
#include “walletmodel.h”Tried compile with modified headed and …/configure --with-incompatible-bdb --enable-dependency-tracking
build failed.