[Dev] Feathercoin 0.9.6.2 * Maintenance fix, build & upgrade issues notes.
-
@wrapper said in [Dev] Feathercoin 0.9.6.2 * Maintenance fix & Issues notes for 0.11.2:
Tried : Adding -fPIC to CFAGS in makefile
I’ve modified configure.ac to add -fpic to CXXFLAGS and CFLAGS
The later is required to compile neoscrypt with --disable static --enable shared:if test x$use_hardening != xno; then AX_CHECK_COMPILE_FLAG([-Wstack-protector], HRDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"]) AX_CHECK_COMPILE_FLAG([-fstack-protector-all],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"]) AX_CHECK_COMPILE_FLAG([-fPIE],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fPIE"]) AX_CHECK_COMPILE_FLAG([-fPIC],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fPIC" && CFLAGS="$CFLAGS -fPIC"])
That way the flags are set only, if the code is hardened.
-
Lizhis 0.11 build Guide : https://forum.feathercoin.com/topic/8246/guides-how-to-compile-feathercoin-core-0-11-1-on-linux
Add these dependencies to FTC unix build docs :
libevent-2.0-5 libevent-dev libevent-extra-2.0-5 libevent-openssl-2.0-5 libevent-pthreads-2.0-5
-
on 0.11.2
when building with this configure command
I got here:
qt/walletmodel.cpp: In member function ‘WalletModel::SendCoinsReturn WalletModel::createRawTransaction(const QList<SendCoinsRecipient>&, CTransaction&, const CCoinControl*, bool)’: qt/walletmodel.cpp:978:134: error: invalid initialization of non-const reference of type ‘int64_t& {aka long int&}’ from an rvalue of type ‘int64_t {aka long int}’ bool fCreated = wallet->CreateRawTransaction(vecSend, txNew, nFeeRequired, strFailReason, isMultiSig, reservekey, coinControl); ^ In file included from qt/walletmodel.cpp:19:0: ./wallet/wallet.h:779:10: note: initializing argument 3 of ‘bool CWallet::CreateRawTransaction(const std::vector<std::pair<CScript, long int> >&, CTransaction&, int64_t&, std::__cxx11::string&, bool, CReserveKey&, const CCoinControl*)’ bool CreateRawTransaction(const std::vector<std::pair<CScript, int64_t> >& vecSend, CTransaction& txNew, ^ Makefile:5069: recipe for target 'qt/qt_libbitcoinqt_a-walletmodel.o' failed
-
Analysis of Repository file differences
diff -r ~/litecoin ~/projects/Feathercoin | grep ~/litecoin > diffLite4.txt
Files In litecoin 0.10 but not FTC 0.11
https://github.com/wrapperband/FTC-Wallet-Layout-Examples/blob/master/Develpment/diffLite4.txt#L786
Only in ~/litecoin/src/crypto: scrypt.cpp
Only in ~/litecoin/src/crypto: scrypt.h
Only in ~/litecoin/src/crypto: scrypt-sse2.cppOnly in ~/litecoin/src: db.cpp
Only in ~/litecoin/src: db.hOnly in ~/litecoin/src/json: json_spirit_reader.cpp
Only in ~/litecoin/src/json: json_spirit_value.cpp
Only in ~/litecoin/src/json: json_spirit_writer.cpp
Only in ~/litecoin/src/json: LICENSE.txtOnly in ~/litecoin/src/qt: bitcoinstrings.cpp
Only in ~/litecoin/src: rpcdump.cpp
Only in ~/litecoin/src: rpcwallet.cpp
Only in ~/litecoin/src/test: scrypt_tests.cpp
Only in ~/litecoin/src/test: wallet_tests.cppOnly in ~/litecoin/src/univalue: gen.cpp
Only in ~/litecoin/src: wallet.cpp
Only in ~/litecoin/src: walletdb.cpp
Only in ~/litecoin/src: walletdb.h
Only in ~/litecoin/src: wallet.h
Only in ~/litecoin/src: wallet_ismine.cpp
Only in ~/litecoin/src: wallet_ismine.h -
Analysis of Repository file differences
diff -r ~/Feathercoin0.11 ~/Feathercoin0.9.6.2 | grep ~/Feathercoin0.9.6.2 > difference2.txt
https://github.com/wrapperband/FTC-Wallet-Layout-Examples/blob/master/Develpment/difference2.txt
Files In Feathercoin0.9.6.2 but not FTC 0.11 or have been moved
Only in ~/projects/Feathercoin/share: pixmaps
Only in ~/projects/Feathercoin/share/qt: extract_strings_qt.py
Only in ~/projects/Feathercoin/share/qt: img
Only in ~/projects/Feathercoin/share/qt: make_spinner.py
Only in ~/projects/Feathercoin/share/qt: protobuf.pri
Only in ~/projects/Feathercoin/share: ui.rcOnly in ~/projects/Feathercoin/src: allocators.cpp
Only in ~/projects/Feathercoin/src: allocators.h
Only in ~/projects/Feathercoin/src: auxpow.cpp
Only in ~/projects/Feathercoin/src: auxpow.h
Only in ~/projects/Feathercoin/src: base40.h
Only in ~/projects/Feathercoin/src: bitcoin-config.h.in
Only in ~/projects/Feathercoin/src: core.cpp
Only in ~/projects/Feathercoin/src: core.h
Only in ~/projects/Feathercoin/src: crypter.cpp
Only in ~/projects/Feathercoin/src: crypter.h
Only in ~/projects/Feathercoin/src: db.cpp
Only in ~/projects/Feathercoin/src: db.h
Only in ~/projects/Feathercoin/src: feathercoin-cli.cpp
Only in ~/projects/Feathercoin/src: feathercoin-cli-res.rc
Only in ~/projects/Feathercoin/src: feathercoind.cpp
Only in ~/projects/Feathercoin/src: feathercoind-res.rc
Only in ~/projects/Feathercoin/src/json: json_spirit_reader.cpp
Only in ~/projects/Feathercoin/src/json: json_spirit_value.cpp
Only in ~/projects/Feathercoin/src/json: json_spirit_writer.cpp
Only in ~/projects/Feathercoin/src/json: LICENSE.txtOnly in ~/projects/Feathercoin/src/qt: bitcoinstrings.cpp
Only in ~/projects/Feathercoin/src/qt: coinnectordialog.cpp
Only in ~/projects/Feathercoin/src/qt: coinnectordialog.hOnly in ~/projects/Feathercoin/src/qt/forms: aboutdialog.ui
Only in ~/projects/Feathercoin/src/qt/forms: coinnectordialog.ui
Only in ~/projects/Feathercoin/src/qt/forms: opennamedialog.ui
Only in ~/projects/Feathercoin/src/qt/forms: shiftdialog.ui
Only in ~/projects/Feathercoin/src/qt/locale: bitcoin_de_AT.ts
Only in ~/projects/Feathercoin/src/qt: Makefile.am
Only in ~/projects/Feathercoin/src/qt: monitoreddatamapper.cpp
Only in ~/projects/Feathercoin/src/qt: monitoreddatamapper.hOnly in ~/projects/Feathercoin/src/qt/res: feathercoin-qt-res.rc
Only in ~/projects/Feathercoin/src/qt/res: fontsOnly in ~/projects/Feathercoin/src/qt: shiftdialog.cpp
Only in ~/projects/Feathercoin/src/qt: shiftdialog.hOnly in ~/projects/Feathercoin/src: rpcdump.cpp
Only in ~/projects/Feathercoin/src: rpcwallet.cpp
Only in ~/projects/Feathercoin/src: script.cpp
Only in ~/projects/Feathercoin/src: script.hOnly in ~/projects/Feathercoin/src: stealth.cpp
Only in ~/projects/Feathercoin/src: stealth.hOnly in ~/projects/Feathercoin/src: version.cpp
Only in ~/projects/Feathercoin/src: wallet.cpp
Only in ~/projects/Feathercoin/src: walletdb.cpp
Only in ~/projects/Feathercoin/src: walletdb.h
Only in ~/projects/Feathercoin/src: wallet.h -
@AcidD said in [Dev] Feathercoin 0.9.6.2 * Maintenance fix & Issues notes for 0.11.2:
on 0.11.2
when building with this configure command
I got here:
qt/walletmodel.cpp: In member function ‘WalletModel::SendCoinsReturn WalletModel::createRawTransaction(const QList<SendCoinsRecipient>&, CTransaction&, const CCoinControl*, bool)’: qt/walletmodel.cpp:978:134: error: invalid initialization of non-const reference of type ‘int64_t& {aka long int&}’ from an rvalue of type ‘int64_t {aka long int}’ bool fCreated = wallet->CreateRawTransaction(vecSend, txNew, nFeeRequired, strFailReason, isMultiSig, reservekey, coinControl); ^ In file included from qt/walletmodel.cpp:19:0: ./wallet/wallet.h:779:10: note: initializing argument 3 of ‘bool CWallet::CreateRawTransaction(const std::vector<std::pair<CScript, long int> >&, CTransaction&, int64_t&, std::__cxx11::string&, bool, CReserveKey&, const CCoinControl*)’ bool CreateRawTransaction(const std::vector<std::pair<CScript, int64_t> >& vecSend, CTransaction& txNew, ^ Makefile:5069: recipe for target 'qt/qt_libbitcoinqt_a-walletmodel.o' failed
I think you are compiling on a 64bit system. There is a strange definition of int64_t in Linux:
on a 32 bit linux system:
typedef int long long int64_t
on a 64 bit system:
typedef int long int64_t
The reason is, that the long in on a 64 bit OS already is 64 bit, while on a 32 bit system it is 32 bit
If you google int64_t type definition it will lead you to similar problems with other programs.
By the way, I have the same problem
-
Missing from 0.11 :
bitcoinstrings.cpp missing
coinnectordialog.cpp
coinnectordialog.haboutdialog.ui (unpushed update from 0.9.6.1)
coinnectordialog.ui
opennamedialog.ui missing?
shiftdialog.ui
bitcoin_de_AT.ts
Makefile.am
monitoreddatamapper.cpp
monitoreddatamapper.hqt/res: feathercoin-qt-res.rc
qt/res: fontsVarious Image Files
shiftdialog.cpp
shiftdialog.hrpcdump.cppmoved
rpcwallet.cppscript.cpp Missing?
script.hstealth.cppmoved
stealth.hVarious Test Files
version.cpp
Only in ~/Feathercoin0.9.6.2/src: wallet.cpp
Only in ~/Feathercoin0.9.6.2/src: walletdb.cpp
Only in ~/Feathercoin0.9.6.2/src: walletdb.h
Only in ~/Feathercoin0.9.6.2/src: wallet.h moved to /src/wallet ? -
the file structure has changed, so some of the listed files may not be needed anymore
It needs deeper checking
-
Merge 0.9.6.2 with 0.11
Just looking at pulling in all the 0.9.6.2 fixes, see if that corrects the build problem. I’d rather work on re-implementing a few 0.11 specific files than find a possible .gitignore missing file or setting only @Lizhi has on his PC…I have created a working document, to assist or add to the document, fork the repository https://github.com/wrapperband/FTC-Wallet-Layout-Examples/blob/master/Develpment/0.11-0.9merge Conflicts.txt and update the document. Push any changes.
To work on the merge, create a branch of 0.11, clone it, then replace the names with your test branch, create the pull, then use the command line to merge. Note : normally merges would be the other way round, in this case 0.9.6.2 is building and 0.11 is not. …
https://github.com/wrapperband/Feathercoin/pull/1
git fetch origin
git checkout -b 0.9.6.2 origin/0.9.6.2
git merge 0.11.2-wrapperThese files have conflicts, 0.11 should be used.
src/alert.cpp
src/alert.h
src/base40.h
src/base58.cpp
src/chainparams.cpp
src/chainparams.hThese need checking but shouldn’t be stoppers.
share/pixmaps/bitcoin.ico
share/pixmaps/nsis-header.bmp
share/pixmaps/nsis-wizard.bmp -
0.9.6.2 specific merge conflict
define(_CLIENT_VERSION_MINOR, 9)
define(_CLIENT_VERSION_REVISION, 6)
define(_CLIENT_VERSION_BUILD, 2)
define(_CLIENT_VERSION_IS_RELEASE, false)
define(_COPYRIGHT_YEAR, 2017)
AC_INIT([Feathercoin Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[[email protected]],[feathercoin])
AC_CONFIG_AUX_DIR([src/build-aux])
AC_CONFIG_MACRO_DIR([src/m4])Merged version is 0.11 - Structure of build is changed. Updated the support issues referance to github.
define(_CLIENT_VERSION_MINOR, 11)
define(_CLIENT_VERSION_REVISION, 2)
define(_CLIENT_VERSION_BUILD, 6)
define(_CLIENT_VERSION_IS_RELEASE, false)
define(_COPYRIGHT_YEAR, 2017)
define(_USE_ZXING,1)AC_INIT([Feathercoin Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[https://github.com/Feathercoin/Feathercoin/issues],[feathercoin])
AC_CONFIG_SRCDIR([src/main.cpp])
AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([build-aux/m4]) -
HEAD
]])],[boost_sleep=yes; BOOST_LIBS=“$BOOST_LIBS $BOOST_CHRONO_LIB”;
AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],[boost_sleep=no])
]])],
[boost_sleep=yes;
AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],
[boost_sleep=no])---- origin/0.11.2-wrapper
LIBS=“$TEMP_LIBS”
CPPFLAGS=“$TEMP_CPPFLAGS”if test x$boost_sleep != xyes; then
TEMP_LIBS=“$LIBS”
LIBS=“$BOOST_LIBS $LIBS”
TEMP_CPPFLAGS=“$CPPFLAGS”
CPPFLAGS=“$CPPFLAGS $BOOST_CPPFLAGS”
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <boost/version.hpp>
#include <boost/thread.hpp>
#include <boost/date_time/posix_time/posix_time_types.hpp>
HEAD]], [[
=======
]],[[
------ origin/0.11.2-wrapper
#if BOOST_VERSION <= 105600
boost::this_thread::sleep(boost::posix_time::milliseconds(0));
#else
choke me
#endif----- HEAD
]])],[boost_sleep=yes; AC_DEFINE(HAVE_WORKING_BOOST_SLEEP, 1, [Define this symbol if boost sleep works])],[boost_sleep=no])
]])],
[boost_sleep=yes; AC_DEFINE(HAVE_WORKING_BOOST_SLEEP, 1, [Define this symbol if boost sleep works])],
[boost_sleep=no])------- origin/0.11.2-wrapper
-
main.h conflicts -> add opennames variables back?
<<<<<<< HEAD
static const unsigned char OPENNAME_MAGIC_BYTES_MAINSET=0x08;
static const unsigned char OPENNAME_MAGIC_BYTES_TESTSET=0x88;
/* These definitions generate warnings, but they are used in utility dialog.cpp
static const char* OPENNAME_NAME_PREORDER=“a”;
static const char* OPENNAME_NAME_REGISTRATION=“b”;
static const char* OPENNAME_NAME_UPDATE=“c”;
static const char* OPENNAME_NAME_TRANSFER=“d”;
static const char* OPENNAME_NAME_RENEWAL=“e”;
*/struct COrphanBlock {
uint256 hashBlock;
uint256 hashPrev;
vector<unsigned char> vchBlock; -
main.h 0.11.2 update.
Added these definition back in for moment?
– HEAD
extern std::map<uint256, CBlock*> mapOrphanBlocksA;
extern std::map<uint256, COrphanBlock*> mapOrphanBlocks;----- origin/0.11.2-wrapper
-
main.h conflicts
Test replaced by function? removed for now.
HEAD 0.9.6.2
CMerkleTx() { Init(); } CMerkleTx(const CTransaction& txIn) : CTransaction(txIn) { Init(); } void Init() { hashBlock = 0; nIndex = -1; fMerkleVerified = false; } IMPLEMENT_SERIALIZE ( nSerSize += SerReadWrite(s, *(CTransaction*)this, nType, nVersion, ser_action); nVersion = this->nVersion; READWRITE(hashBlock); READWRITE(vMerkleBranch); READWRITE(nIndex); ) int SetMerkleBranch(const CBlock* pblock=NULL); // Return depth of transaction in blockchain: // -1 : not in blockchain, and not in memory pool (conflicted transaction) // 0 : in memory pool, waiting to be included in a block // >=1 : this many blocks deep in the main chain int GetDepthInMainChain(CBlockIndex* &pindexRet) const; int GetDepthInMainChain() const { CBlockIndex *pindexRet; return GetDepthInMainChain(pindexRet); } int GetHeightInMainChain(CBlockIndex* &pindexRet) const; int GetHeightInMainChain() const { CBlockIndex *pindexRet; return GetHeightInMainChain(pindexRet); } bool IsInMainChain() const { CBlockIndex *pindexRet; return GetDepthInMainChainINTERNAL(pindexRet) > 0; } int GetBlocksToMaturity() const; bool AcceptToMemoryPool(bool fLimitFree=true);
----- 0.11
ScriptError GetScriptError() const { return error; }
– origin/0.11.2-wrapper -
Regarding opennames variables, leave them out, if they are not already in 0.11.2 code. They are defined in file included by much more files, than needed and generate bulks of error messages ‘variable defined, but not used’ Iv’e tried to remove the definitions wherever possible when trying to compile 0.11.2 last year.
-
@wrapper said in [Dev] Feathercoin 0.9.6.2 * Maintenance fix & Issues notes for 0.11.2:
After adding missing files / updating configure.ac :
src/qt/qrcodedialog.h and qrcodedialog.cpp
Compile fails at :
In file included from qt/addressbookpage.cpp:32:0:
qt/qrcodedialog.h:22:9: error: expected ‘:’ before ‘slots’
private slots:https://stackoverflow.com/questions/20185423/qt-cmake-missing-before-identifier-slots
Tried adding missing file : feathercoin.qrc
Created list of files Not in version 0.11.2 but in version 0.9.6.2 in ~/projects/Feathercoin :
diff -r ~/projects/Feathercoin ~/Feathercoin | grep ~/projects/Feathercoin > difference2.txt
To fix this error:
In file included from qt/addressbookpage.cpp:32:0:
qt/qrcodedialog.h:22:9: error: expected ‘:’ before ‘slots’
private slots:This was mine:
qt/qrcodedialog.h:22:9: error: expected ‘:’ before ‘slots’ private slots: ^ qt/qrcodedialog.h:22:9: error: ‘slots’ does not name a type
Open
qt/qrcodedialog.h:change line 22 from
private slots:
to
private Q_SLOTS:
https://forum.qt.io/topic/17952/slot-declaration-rare-problem-to-resolve-solved/2
-
0.11.2 build error
CXX qt/qt_libbitcoinqt_a-qrcodedialog.o qt/qrcodedialog.cpp: In member function ‘QString QRCodeDialog::getURI()’: qt/qrcodedialog.cpp:98:67: error: ‘FTC’ is not a member of ‘BitcoinUnits’ ret += QString("?amount=%1").arg(BitcoinUnits::format(BitcoinUnits::FTC, ui->lnReqAmount->value())); ^ Makefile:5151: recipe for target 'qt/qt_libbitcoinqt_a-qrcodedialog.o' failed make[2]: *** [qt/qt_libbitcoinqt_a-qrcodedialog.o] Error 1
go check src/qt/bitcoinunits.cpp and .h
easy fix
add relevant FTC eqivilants into bitcoinunits.h
enum Unit { MBTC, kBTC, BTC, mBTC, uBTC, MFTC, kFTC, FTC, mFTC, uFTC };
proper fix…edit both files …requires further understanding of the code for me.
-
@AcidD we should create and use a feathercoinunits.cpp/.h and use that instead
-
@Wellenreiter said in [Dev] Feathercoin 0.9.6.2 * Maintenance fix & Issues notes for 0.11.2:
@AcidD we should create and use a feathercoinunits.cpp/.h and use that instead
I agree and this is the same thing we need to look at for other changes during the review whilst moving to head.
The main reason is to make future merges less problematic. -
Can someone fork Bitcoin into the Feathercoin Github ?
@Wrapper you made a fair point a while back somewhere…if we properly fork from Bitcoin head and then do our commits we can easily pull in their fixes as well ?