If you want to develop a Qt application like me on OpenBSD, you may face the
same issue. CMake can’t find the Qt modules.
$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug ~/src/happy-qt-hacking
-- The C compiler identification is Clang 8.0.1
-- The CXX compiler identification is Clang 8.0.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:18 (find_package):
By not providing "FindQt5.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Qt5", but
CMake did not find one.
Could not find a package configuration file provided by "Qt5" with any of
the following names:
Add the installation prefix of "Qt5" to CMAKE_PREFIX_PATH or set "Qt5_DIR"
to a directory containing one of the above files. If "Qt5" provides a
separate development package or SDK, be sure it has been installed.
-- Configuring incomplete, errors occurred!
See also "/home/rsadowski/build-happy-qt-hacking/CMakeFiles/CMakeOutput.log".
This is simply because OpenBSD does not install the Qt5-CMake modules in
/usr/local/lib/cmake/ but in /usr/local/lib/qt5/cmake.
In order for find_package to be successful, Qt 5 must be found below the
CMAKE_PREFIX_PATH, or the Qt5_DIR must be set in the CMake cache to the
location of the Qt5Config.cmake file.
When p2k19 was announced, I was quite happy that it was located in
Bucharest. A quick check of flight connections, showed that there is a direct
connection from Hannover. Without a second thought or planning a vacation, I
booked the round trip. I guess I was the first person to put his name under the
Booked, signed and forgotten for a while.
Two months before p2k19, kn@ visited me in Hannover for a two person
ports hackathon. Since he had already been to a few hackthons, I asked him lots
of questions. He told me some stories. He told me to take it easy on the
hackathon. “It’s gonna be cool!” After the conversations with kn@ I still
did not really know what I would expect. Plus the nervousness. I decided to
take kn@‘s advice on and just let everything come to me in a very easy way.
After a long Monday working day, I took the train to Airport Hannover where my
flight started at 22h. I reached the capital of Romania in time and grabbed a
Uber to the hotel. It was my first Uber ride, because it is not allowed
everywhere in Germany. I was surprised how easy and stress-free it was. Since
then I have often used it in South-East Asia; Grap is more common than Uber
which works just as well.
After a short night, I went straight to the hackroom at the University of
Bucharest. The room was a Google-sponsored lab from the university. Typical
Google colors and quite comfortable and very bright.
I welcomed pvk@landry@pirofti@ and immediately started my work.
First on my list was deleting the unhooked kde4 ports and cleanup stuff. Then I
looked at the ports@ mailing-list and searched for cmake/qt5 ports where
I could help. I quickly found nextcloundclient and decided to give it a try. A
lot of preparatory work has been done already. I just had to tweak all these
little ports-qt5 improvements. After half a day we had a working and good
looking port ready.
Besides I took care of the update from KDE4 ports to x11/kde-applications
(KDE5). On day two sthen@ surprises me with an OK
for the first bunch of KDE5 ports. The morning was spent
mostly with cvs madness: cvs import, unhook, cvs commit, cvs remove. Long story
short, a time intensive process to replace KDE4 with
KDE5 in the CVS tree.
I am a big fan of the Qt5 framework for applications so I try to replace Qt4
applications by Qt5. These applications are mostly no longer being developed
and there is often an actively developed Qt5 branch. By the way, I (we) want to
get rid of this. So I looked into net/psi and quickly realized that it was
broken. No TLS connection to a jabber server was possible. At first I thought
psi itself is broken but then I tested other Qt4 programs that establish TLS
connections and figured out that our Qt4 SSL runtime was broken. Good that
tb@ was sitting at my table. He was able to reproduce the error. His first
reaction: “Let’s delete x11/qt4”.
tb@ explained the Qtnetwork LibreSSL patches
to me, but we found no bugs and were a bit perplexed at first. I found out that
our security/qca port was already outdated and so I updated the qt4 and qt5
variant. The tests were again time consuming, as always by basic libs.
On the 3rd day I finally decided to work on my 5.1X update-diff again. It has
been on my mind for a very long time. To my delight, tb@ found a fix for
the TLS/Qt4 issue. During the last LibreSSL update
something went wrong when merging in Qt4.
My goal for this hackathon was to get at least Qt5base 5.13 to build. A lot has
changed between 5.9 and 5.13 in qmake. My biggest challenge was to tell qmake
how to deal with the OpenBSD shared library pattern.
On Friday I made the breakthrough and was able to build Qt5base including
LibreSSL patches. Since then a lot has happened
and I can proudly announce that we can build the complete x11/qt5 subtree in
version 5.13.2 and that the first applications are working with it.
It’s still a long way away, but we’re going. My hope is to port a stable state
with Qt5.13.x once Qtwebengies. The benefit would be enormous, we could update
all old qtwebkit ports.
I really enjoyed the days with the many new (in persona) people. I was able to
concentrate completely on OpenBSD for one week, which was great. The good
lunches and the events or walking through the city and taking pictures.
Bucharest is a wonderful place!
Thank you very much to Paul Irofti, the University of Bucharest, and the
OpenBSD Foundation for putting on this
In the middle of this year I imported Bitcoin to OpenBSD, so it is available
since 6.4 as a package. This blog post would like to give a short guide how to
run a full-node on OpenBSD. We are not going to talking about mining-nodes.
The following quote best illustrates a full node:
A full node is a program that fully validates transactions and blocks. Almost
all full nodes also help the network by accepting transactions and blocks from
other full nodes, validating those transactions and blocks, and then relaying
them to further full nodes.
Install bitcoin, as simple as you are familiar with on OpenBSD. I prefer the
no_x11 flavor because I run bitcoind on an headless server.
Ambiguous: choose package for bitcoin
a 0: <None>
Your choice: 2
The following new rcscripts were installed: /etc/rc.d/bitcoind
See rcctl(8)for details.
New and changed readme(s):
Create RPC user and password (How described in the README). For the example
below, replace rsadowski with your locale username.
$ /usr/local/share/bitcoin/rpcauth.py rsadowski
String to be appended to bitcoin.conf:
Add the generated rpcauth line into you /etc/bitcon.conf and check all
option in /etc/bitcon.conf.
Keep in mind to reduce the blockchain size by pruning (deleting) old blocks,
otherwise you have to download and verify the whole chain and this may take a
few days. Checkout the prue value in /etc/bitcoin.conf. I prefer 550MB.
It’s quite simple but I forget so many times. This short blog post is for all
forgetful port monkeys.
Let’s try to re-add net/ktorrent in four simple steps.
First of all checkout whether your port is already imported or in Attic. The
easiest way to do this is by checking webcvs. For example
net/ktorrent in cvsweb.
If you read (in the Attic), you know it was imported but now it’s deleted.
Make sure you do not have update -P in your ~/.cvsrc or a shell
alias otherwise you won’t see what cvs(1) tells you.
If you can’t read the cvs(1) server output, you did something wrong in step 2.
Be warned! mkdir(1) -p net/ktorrent/pkg would not be sufficient because it would
not create the administrative directories net/ktorrent/CVS and
$ tar -xzvf ~/ktorrent.tar.gz
$ cd net/ktorrent
$ cvs add Makefile distinfo pkg/DESCR pkg/PLIST
cvs server: re-adding file Makefile (in place of dead revision 1.39)
cvs server: re-adding file distinfo (in place of dead revision 1.8)
cvs server: re-adding file pkg/DESCR (in place of dead revision 1.2)
cvs server: re-adding file pkg/PLIST (in place of dead revision 1.12)
cvs server: use 'cvs commit' to add these files permanently
Now is the best time for a brief, final build and review of the port, to make
sure everything works fine.