Skip to content

Conversation

@Empact
Copy link
Contributor

@Empact Empact commented Dec 18, 2018

In light of #14979, I realized that only qt 5.5+ was being tested under CI, while compatibility lists 5.2+.

Ubuntu 14.04 carries QT 5.2.1, so running it on CI is a good candidate for maintaining compatibility in an ongoing basis. Adding the change revealed some incompatibilities that have crept in.

Alternatively, we can increase the dependencies to match those carried by Ubuntu 16.04. I don't think we should claim support for dependencies we aren't testing on an ongoing basis.

Putting this forward for comment. Currently the CI run times out after build and some tests running.

Fixes #14983

@DrahtBot
Copy link
Contributor

DrahtBot commented Dec 18, 2018

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Conflicts

Reviewers, this pull request conflicts with the following ones:

  • #15262 (build: Enable C++14 in build, require C++14 compiler. by practicalswift)

If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

@promag
Copy link
Contributor

promag commented Dec 19, 2018

I was under the impression that the minimum would bump?

@Empact
Copy link
Contributor Author

Empact commented Dec 19, 2018

Yep I'm down for either, just putting this forward as an option.

@Empact Empact force-pushed the qt52 branch 2 times, most recently from c5ef98e to 86b7190 Compare December 19, 2018 00:55
@Empact Empact force-pushed the qt52 branch 12 times, most recently from 076da53 to 7ec0352 Compare December 27, 2018 15:12
.travis.yml Outdated
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could use --with-gui=no for now and only fix the code (in a separate pull) when we decide to support 5.2 (as opposed to 5.4/5.5)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Empact Empact force-pushed the qt52 branch 8 times, most recently from ce5beab to 1c410a6 Compare December 29, 2018 22:22
@Empact Empact force-pushed the qt52 branch 8 times, most recently from fc85aa2 to a07ecbb Compare January 18, 2019 12:03
@maflcko
Copy link
Member

maflcko commented Jan 30, 2019

Needs rebase

@Empact Empact force-pushed the qt52 branch 2 times, most recently from 427d460 to 0c21828 Compare January 31, 2019 18:47
This was added to clang after clang 3.4. Current minimum supported version
of clang is 3.3.
microsoft/clang@4bfb063

Example failure:
    validation.cpp:3820:85: error: expected body of lambda expression
        if (!blocktree.LoadBlockIndexGuts(consensus_params, [this](const uint256& hash) __attribute__((exclusive_locks_required(cs_main))) { return this->InsertBlockIndex(hash); }))
                                                                                        ^
    1 error generated.
https://travis-ci.org/Empact/bitcoin/jobs/468855360
In CMainSignals::RegisterWithMempoolSignals running under Ubuntu 14.04
(QT 5.2), absent piecewise construction this fails to create the pair
because the argument is a connection, which is converted into a
non-copyable scoped_connection.

    validationinterface.cpp:80:186:   required from here
    /usr/include/boost/signals2/connection.hpp:234:7: error: ‘boost::signals2::scoped_connection::scoped_connection(const boost::signals2::scoped_connection&)’ is private
           scoped_connection(const scoped_connection &other);
           ^
    In file included from /usr/include/c++/4.8/utility:70:0,
                     from /usr/include/c++/4.8/algorithm:60,
                     from ./prevector.h:13,
                     from ./script/script.h:10,
                     from ./primitives/transaction.h:11,
                     from ./validationinterface.h:9,
                     from validationinterface.cpp:6:
    /usr/include/c++/4.8/bits/stl_pair.h:134:45: error: within this context
      : first(std::forward<_U1>(__x)), second(__y) { }
https://travis-ci.org/bitcoin/bitcoin/jobs/473689141#L2172
Until Qt 5.4, singleShot did not support the new funtion-pointer-based call signature.
http://doc.qt.io/archives/qt-5.5/qtimer.html#singleShot-2

    qt/bitcoin.cpp:508:9: error: no matching function for call to 'singleShot'
            QTimer::singleShot(100, paymentServer, &PaymentServer::uiReady);
            ^~~~~~~~~~~~~~~~~~
    /usr/include/qt5/QtCore/qtimer.h:81:17: note: candidate function not viable: no known conversion from 'void (PaymentServer::*)()' to 'const char *' for 3rd argument
        static void singleShot(int msec, const QObject *receiver, const char *member);
                    ^
    /usr/include/qt5/QtCore/qtimer.h:82:17: note: candidate function not viable: requires 4 arguments, but 3 were provided
        static void singleShot(int msec, Qt::TimerType timerType, const QObject *receiver, const char *member);
                    ^
    1 error generated.
https://travis-ci.org/Empact/bitcoin/jobs/469269171
…ctor on clang

libcxx, which carries the implementation is apparently unversioned, so
this is an alternative to tracking down the specific version of clang
which switched from has_trivial_default_constructor to
is_trivially_default_constructible.
llvm-mirror/libcxx@2fd6d25
https://libcxx.llvm.org/

    bench/prevector.cpp:27:21: error: no template named 'is_trivially_default_constructible' in namespace 'std'; did you mean 'has_trivial_default_constructor'?
    static_assert(!std::is_trivially_default_constructible<nontrivial_t>::value,
                   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                        has_trivial_default_constructor
    /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/type_traits:1211:12: note: 'has_trivial_default_constructor' declared here
        struct has_trivial_default_constructor
               ^
    bench/prevector.cpp:31:20: error: no template named 'is_trivially_default_constructible' in namespace 'std'; did you mean 'has_trivial_default_constructor'?
    static_assert(std::is_trivially_default_constructible<trivial_t>::value,
                  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                       has_trivial_default_constructor
    /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/type_traits:1211:12: note: 'has_trivial_default_constructor' declared here
        struct has_trivial_default_constructor
               ^
    2 errors generated.
https://travis-ci.org/Empact/bitcoin/jobs/468866070
Thus building against system rather than depends libs

This reverts commit fa5ce3f.
@Empact
Copy link
Contributor Author

Empact commented Jan 31, 2019

Closing because we're finally green and a clean PR would be nice.

@Empact Empact closed this Jan 31, 2019
maflcko pushed a commit that referenced this pull request Feb 1, 2019
119d360 travis: Document whether functional tests are run in the job name (Ben Woosley)
64f2854 Revert "travis: Compile trusty with depends for now" (Ben Woosley)
267eac0 Prefer boost::optional#get_value_or over #value_or (Ben Woosley)
1971f5b Piecewise construct to avoid invalid construction (Ben Woosley)

Pull request description:

  In light of #14979, I realized that only qt 5.5+ was being tested under CI, while compatibility lists 5.2+.

  In #15276, Marco added Trusty to CI, building with depends. This changes that build to system libraries, in order to ensure ongoing compatibility with our claimed minimum required versions.

  Fixes #14983, previously open as #14998

Tree-SHA512: 6cff5e28c756ecb8bf797c8f6eb77c1944ba61a8dd6d7d4984e63eef384f6429dc79c505da3241c05b9c4db31c72b2a9846c7365aba9280f2e0620e5f3998d07
@bitcoin bitcoin locked as resolved and limited conversation to collaborators Dec 16, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

One Travis instance should run minimum supported QT version

5 participants