aboutsummaryrefslogtreecommitdiff
path: root/BUILDING.md
blob: d701a7d148414102b392adb4a8fc67cc2d47d28b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
## 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