## Building ### Dependencies * Qt, over 5.9, up-to-date Qt version recommended * qbs, over 1.8.0 ### Tools * Qt: core, widgets, webengine, webenginewidgets * gcc or clang on linux, msvc on windows * qbs ### Configuration * Set up Qbs ``` qbs setup-toolchains --detect qbs setup-qt /usr/bin/qmake-qt5 qt5 ``` For more information on qbs, refer to the [Qbs manual][1], sections Configuring and Managing Qt versions. ### Compiling * Create a build folder ``` [smolbote repo]$ mkdir ../build ``` * Run qbs ``` [smolbote repo]$ qbs build -d ../build profile:qt5 release ``` This installs the files to ../build/release/install-root. * Test run (optional) ``` [smolbote repo]$ qbs run -d ../build -p poi profile:qt5 release ``` ### Installing * With qbs ``` [smolbote repo]$ sudo qbs install -d build --no-build --install-root /usr/local --settings-dir /home/usr/.config/QtProject/qbs/1.7.1 profile:qt5 release" ``` ### Notes * Windows: MSVC compiler is required because of QtWebEngine dependency * Windows: Passing the -v or -h parameters creates a dialog box instead of writing the output to stdout. This is Qt behaviour. * Windows: Use windeployqt.exe to collect the libraries ``` QT_DIR\QT_VER\msvc2015_64\windeployqt.exe build-PROFILE\release\qtbrowser.exe ``` * grsecurity: You may need to exception qbs. An optional system proxy should be picked up automatically. However, for proxies that require a username or password, you need to connect to QWebEnginePage::proxyAuthenticationRequired. Qt WebEngine Widgets uses the Qt Quick Scene Graph to compose the page. Therefore, OpenGL support is required. And that's also why QML is a dependancy. To use clang with QtCreator, you need to change the compiler in Build & Run ยป Kits, not the qbs profile. ## Packaging ### Tarball * Creating a tarball: ``` tar -I"lzip -9" -cf smolbote-$(git describe --tags).tar.lz --directory=../build/release/install-root . --owner=user:1000 --group=users:1000 ``` * Signing a tarball: ``` gpg -u $email -b --armor $tarball ``` -u, --local-user name > Use name as the user ID to sign. This option is silently ignored for the list commands, so that it can be used in an options file. -b, --detach-sign > Make a detached signature. --armor > Create a human-readable signature * Verify signature: ``` gpg --verify $signature $tarball ``` * Creating checksum: ``` sha512sum --binary $tarball* > $tarball.sha512 ``` * Verifying checksum: ``` sha512sum --check $tarball.sha512 ``` [1]: https://doc.qt.io/qbs/index.html