Tuesday, March 27, 2018
(Collection of stuff over a couple of days)
Does not start well for Meson:
ddd@turbo[meson] common> meson buildThe Meson build system Version: 0.44.1 Source dir: /home/ddd/Work/spice-meson/libs/common Build dir: /home/ddd/Work/spice-meson/libs/common/build Build type: native build
Meson encountered an error in file meson_options.txt, line 1, column 0: Invalid kwargs for option "alignment-checks": "yield"
Removing yield from the meson_options.txt file leads to:
ddd@turbo[meson] common> meson buildThe Meson build system Version: 0.44.1 Source dir: /home/ddd/Work/spice-meson/libs/common Build dir: /home/ddd/Work/spice-meson/libs/common/build Build type: native build
Meson encountered an error in file meson.build, line 4, column 0: Meson version is 0.44.1 but project requires >= 0.45.0.
A full log can be found at /home/ddd/Work/spice-meson/libs/common/build/meson-logs/meson-log.txt
The log is not that helpful:
Build started at 2018-03-27T14:58:09.633207Main binary: /usr/bin/python3 Python system: Linux The Meson build system Version: 0.44.1 Source dir: /home/ddd/Work/spice-meson/libs/common Build dir: /home/ddd/Work/spice-meson/libs/common/build Build type: native build
But the error is actually shown in the command output above: the version is incorrect.
Udpate manually to meson 0.45.1. Then the error is:
Dependency python3 found: NO
I have python3 installed, however:
ddd@turbo[meson] common> python3 --versionPython 3.6.4
What is missing is probably python3-devel. Indeed:
ddd@turbo[meson] common> meson buildThe Meson build system Version: 0.45.1 Source dir: /home/ddd/Work/spice-meson/libs/common Build dir: /home/ddd/Work/spice-meson/libs/common/build Build type: native build Project name: spice-common Native C compiler: cc (gcc 7.3.1 "cc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2)") Build machine cpu family: x86_64 Build machine cpu: x86_64 Has header "alloca.h": YES Has header "arpa/inet.h": YES Has header "dlfcn.h": YES Has header "inttypes.h": YES Has header "malloc.h": YES Has header "memory.h": YES Has header "netinet/in.h": YES Has header "stddef.h": YES Has header "stdint.h": YES Has header "stdlib.h": YES Has header "strings.h": YES Has header "string.h": YES Has header "sys/socket.h": YES Has header "sys/stat.h": YES Has header "sys/types.h": YES Has header "unistd.h": YES Has header "vfork.h": NO Checking for function "alloca": YES Checking for function "dup2": YES Checking for function "floor": YES Checking for function "fork": YES Checking for function "inet_ntoa": YES Checking for function "memmove": YES Checking for function "memset": YES Checking for function "pow": YES Checking for function "sqrt": YES Checking for function "vfork": YES Found pkg-config: /usr/bin/pkg-config (1.3.12) Native dependency spice-protocol found: YES 0.12.14 Native dependency glib-2.0 found: YES 2.54.3 Native dependency gio-2.0 found: YES 2.54.3 Native dependency gthread-2.0 found: YES 2.54.3 Native dependency pixman-1 found: YES 0.34.0 Native dependency openssl found: YES 1.1.0g Native dependency opus found: YES 1.2.1 Native dependency celt051 found: YES 0.5.1.3 Native dependency python3 found: YES 3.6 Native dependency libcacard found: YES 2.5.3 meson.build:157: WARNING: This project is only intended to be used as a subproject! Program asciidoc found: YES (/usr/bin/asciidoc) Configuring config.h using configuration Build targets in project: 17 Found ninja-1.8.2 at /usr/bin/ninja
Timing comparisons
Building the SPICE server on Turbo, 5 builds to get an idea of the variation.
Tools | Clean | reds.c | log.h | Description size | Description language | Build commands |
---|---|---|---|---|---|---|
Today's autotools | 56.0-57.3s | 2.98-3.28s | 22.6-23.2s | 13 files, 1149 lines, 31.7K | autoconf (m4+shell) + automake (make-like) | autoreconf -vfi && ./configure && make -j24 |
Meson/Ninja | 7.65-7.85s | 2.98-3.19s | 5.51-5.60s | 8 files, 553 lines, 16.4K | meson (custom syntax, Python-like) | meson build && ninja -C build |
Pure make (debug) | 4.29-4.55s | 0.62-0.94s | 1.48-1.68s | 7 files, 372 lines, 10.0K | Pure make | make -j24 |
Pure make (opt) | 19.21-19.42s | 1.19-1.44s | 2.96-3.05s | 7 files, 372 lines, 10.0K | Pure make | make -j24 |