Commit Graph

76 Commits

Author SHA1 Message Date
Michael Stapelberg
aba6ec3e52
add meson build files (#4094)
Motivation:

• faster builds (on an Intel Core i9-9900K):
  ( ../configure --disable-sanitizers && make -j8; )
  19,47s user 2,78s system 395% cpu 5,632 total

  ( meson .. -Dmans=true -Ddocs=true -Dprefix=/usr && ninja; )
  38,67s user 3,73s system 1095% cpu 3,871 total

• more approachable build system configuration in the
  python-esque meson domain specific language instead of
  the autotools m4 macro language

• built-in language server support thanks to ninja:
  the required compile_commands.json is built automatically
  and only needs to be linked from the source dir, e.g.:
  ln -s build/compile_commands.json .

Changes:

• the embedded vcs version info format changed from e.g.
  4.18-282-gabe46f69 (2020-05-16, branch "next")
  to:
  4.18-282-gabe46f69
  I think it’s better to lose a little bit of detail for
  the gained cleanliness of using meson’s vcs_tag()

• Drop unused xcb-event dependency.

• We can no longer enable sanitizers and debug options
  based on whether we are in a release or non-release build,
  because our new version logic runs at ninja build time,
  not at meson configure time.

  The new behavior is probably for the better in terms of
  what people expect, and we can make the CI use address sanitizer
  explicitly to ensure it is still exercised.

• We lose the AX_EXTEND_SRCDIR behavior, i.e. including the
  path component of the parent of the source dir in all paths.
  This was a trick we used for easier debugging, so that stack
  traces would contain e.g. ../i3-4.18.1/src/main.c, instead of
  just src/main.c.

  The other mechanism (_i3_version symbol) that we have for including
  the version number in the “backtrace full” (but not merely
  “backtrace”) output of gdb still works.

• Release tarballs now use tar.xz. Why not.

Migration plan

This commit adds the meson build files to the tree, but does not remove
autotools yet. For the development phase, we will keep both build systems
functional (and built on travis).

Then, just before the i3 v4.19 release, we will remove autotools from the tree
and the release tarball will require meson to compile.

This way, we incentivize maintainers to change, while also offering them an easy
way out (if desired) by reverting the most recent commit. In practice, switching
a distribution package from autotools to meson should only be a few line change,
easier than applying the provided patch :). Take a look at the debian/ changes
in this commit for an example.

meson is broadly available everywhere that i3 is available: Both xorg-server and
systemd gained meson build files in 2017, so we can follow suit:
https://anholt.livejournal.com/52574.html
https://in.waw.pl/~zbyszek/blog/systemd-meson.html

How do I?

For producing a coverage report, enable the b_coverage meson base option
and run ninja coverage-html:
% cd build
% meson .. -Db_coverage=true
% ninja
% ninja test
% ninja coverage-html
See also https://mesonbuild.com/howtox.html#producing-a-coverage-report

For using the address sanitizer, memory sanitizer or undefined behavior
sanitizer, use the b_sanitize meson base option:
% cd build
% meson .. -Db_sanitize=address
% ninja
See also https://mesonbuild.com/Builtin-options.html#base-options

related to #4086
2020-05-19 14:45:06 +02:00
Albert Safin
1a85619498 Add input and bounding shapes support (#2742)
Basic idea: if the window has a shape, set the parent container shape as
the union of the window shape and the shape of the frame borders.

Co-authored-by: Uli Schlachter <psychon@znc.in>
2018-12-01 11:52:41 +07:00
Michael Stapelberg
02284acba8
debian/control: remove dependency on x11-utils (#3455)
This was a introduce in commit a61e34d277 in 2009,
and we haven’t used xmessage in any way in a long time.

fixes https://bugs.debian.org/910997
2018-10-15 18:00:43 +02:00
Michael Stapelberg
d968d39b27 Replace http:// with https:// where applicable
The testcases will be updated automatically in a separate commit.
2017-09-24 10:19:07 +02:00
Michael Stapelberg
d953066734 debian: update standards-version to 3.9.8 (no changes necessary) 2016-11-08 19:41:37 +01:00
Michael Stapelberg
8ddc18756c debian: add missing dh-autoreconf to Build-Depends (#2516) 2016-10-25 20:54:41 +02:00
Michael Stapelberg
0e73a6e9e7 Remove conditional compilation for cairo/pangocairo (#2480)
We strive to avoid conditional compilation in i3 as much as possible.
cairo and pangocairo have been around long enough in the versions that
we need that it’s time to unconditionally depend on them.

Also update DEPENDS with the last-known-good-versions while at it.
2016-09-27 12:57:00 -07:00
Michael Stapelberg
c93056b2d8 Unconditionally depend on libpcre >= 8.10 (#2472)
Even Debian oldstable has 8.30, so let’s get rid of conditional
compilation where we don’t actually need it.
2016-09-26 19:04:13 -07:00
Ingo Bürk
47562b4143 Introduce support for specifying variables from X resources. (#2286)
This patch introduces a new 'set_from_resource' config directive which
allows defining a variable by retrieving its value from the X resource
database. This avoids having to configure a color scheme in multiple
files. The directive takes an additional fallback value which is used
in case the resource cannot be found or during config validation where
no X connection is available.

Furthermore, this patch includes the following changes:
- If the same variable is defined twice, we now properly overwrite the
  value of the assignment rather than inserting two variable definitions
  with the same key.
- We now depend on xcb-util-xrm to query the resource.
- Increase the buffer size for variable / resource assignments.

fixes #2130
2016-05-08 12:55:27 +02:00
Michael Stapelberg
0d33f70ac7 debian/control: bump standards-version to 3.9.7 2016-03-06 16:16:55 +01:00
Michael Stapelberg
3ee7828460 debian/compat: bump debhelper compat level to 9 2016-03-06 16:16:53 +01:00
Michael Stapelberg
ebf5941456 debian: promote suggests to recommends to install a terminal emulator
fixes #1587
2015-03-26 09:19:50 +01:00
Michael Stapelberg
1ee6bf1077 make AnyEvent::I3 dependency versioned (Thanks sur5r) 2014-08-05 11:49:16 +02:00
Michael Stapelberg
01d8d10c57 libxkbcommon 0.4.0 is required, 0.2.0 is too old (Thanks Mii)
fixes #1295
2014-06-25 17:57:48 +02:00
Michael Stapelberg
3f5a0f0024 Switch to xcb-xkb and libxkbcommon
This removes our last dependency on Xlib! :)

(Okay, an Xlib dependency still comes in through other libraries that we
 link against, but it’s not us. Our code is simpler by this change and
 uses one less connection to X11.)
2014-06-21 19:10:37 +02:00
Michael Stapelberg
2924044505 debian: bump standards-version to 3.9.5 (no changes necessary) 2014-06-15 19:37:03 +02:00
Michael Stapelberg
6fe44d8584 debian: recommend fonts-dejavu-core after we switched the default 2014-06-08 22:28:13 +02:00
Michael Stapelberg
dda9a7f6e0 debian: require libyajl >= 2.0.4 (Thanks Koston) 2014-05-16 18:15:53 +02:00
Michael Stapelberg
0b8a7b2d16 debian/: add perl recommends to i3-wm for i3-save-tree(1) 2013-12-22 21:54:13 +01:00
Michael Stapelberg
da20cd397c switch from libXcursor to xcb-util-cursor 2013-08-17 09:44:20 +02:00
Michael Stapelberg
6562f440c5 update debian/ packaging 2013-08-07 21:21:47 +02:00
Michael Stapelberg
140c1062b6 drop the flex/bison dependency \o/ 2012-12-25 14:20:21 +01:00
Michael Stapelberg
b3d7531947 refactor both i3-nagbar starts into src/util.c
With this change, libev >= 4 is a hard dependency. It should be present
in all major linux distributions (even the latest ubuntu LTS).
2012-12-24 16:53:20 +01:00
Michael Stapelberg
5bea7cb7df docs: generate HTML from testsuite POD documentation 2012-09-10 12:03:14 +02:00
Michael Stapelberg
ba8b5c480d debian: make 'i3' recommend dunst 2012-08-13 13:44:54 +02:00
Michael Stapelberg
1173740a35 debian/control: format build-depends nicely, add pango/cairo 2012-08-13 13:44:36 +02:00
Michael Stapelberg
b4ef809101 debian: update changelog with new upload, add .menu file, update email, bump standards-version, fix section 2012-04-12 16:32:19 +02:00
Michael Stapelberg
41d034a6db replace the refcard with an HTML version (by SardemFF7)
This eliminates our build-depedency on latex.
2012-04-12 16:04:29 +02:00
Michael Stapelberg
061f24b247 debian: make meta-package i3 depend on the precise version of i3-wm (Thanks Merovius)
This has the advantage that apt-get install i3/sid actually does what you expect :).
2011-11-16 20:10:48 +00:00
Michael Stapelberg
4539546f48 debian: update package descriptions 2011-10-23 17:01:56 +01:00
Michael Stapelberg
d8eb4f3fdc debian: use ${perl:Depends}, remove perl from build-deps, update recommends
We can drop the perl module recommends since i3-wsbar no longer ships with i3.
2011-10-23 16:53:16 +01:00
Michael Stapelberg
620b192e90 debian: raise dependency on debhelper 2011-10-23 12:02:03 +01:00
Michael Stapelberg
82c8a77e7d lower dependency on libstartup-notification, fix build-dep in debian/control 2011-10-23 12:01:22 +01:00
Michael Stapelberg
ad9ffcc917 debian: update debian/control with new build-dep libstartup-notification0-dev 2011-10-10 15:54:18 +01:00
Michael Stapelberg
8f0e0dee58 debian: add libpcre3-dev as build-dependency 2011-09-10 23:56:23 +01:00
Michael Stapelberg
cd9056afc7 debian: wrap debian/control correctly 2011-08-28 19:56:46 +02:00
Michael Stapelberg
df076113a6 debian: s/dwm-tools/suckless-tools (Thanks sur5r) 2011-08-22 12:44:44 +02:00
Michael Stapelberg
a0bb296f1b update debian packaging 2011-08-01 14:39:45 +02:00
Michael Stapelberg
7f4af2c599 debian: bump standards-version, update website 2011-07-31 22:42:39 +02:00
Michael Stapelberg
50f97b8bd7 debian: add missing τεχ build dependencies for the refcard 2011-07-24 22:57:55 +02:00
Michael Stapelberg
a21155e24c update debian/ to include all documentation/bump standars version
Conflicts:

	debian/control
2011-07-23 22:32:16 +02:00
Michael Stapelberg
a55396a4fc update debian packaging 2011-07-23 22:18:42 +02:00
Michael Stapelberg
015a94bd85 debian: fix build-deps for recent debian systems 2011-06-10 13:00:24 +02:00
Fernando Tarlá Cardoso Lemos
69fc6449dc libXcursor support (themed cursors). 2010-11-28 13:01:45 +01:00
Michael Stapelberg
9a9ba1b859 ipc: implement GET_WORKSPACES message type
This is the foundation to use dzen2 or similar as a complete
replacement for the internal workspaces bar.

A testcase is included, more documentation about the IPC interface
will follow.
2010-03-11 15:58:39 +01:00
Michael Stapelberg
5d4d9681a0 debian: re-require libxcb-xinerama0-dev 2010-03-10 12:36:22 +01:00
Michael Stapelberg
296a0078ad debian: require libxcb-randr0-dev instead of libxcb-xinerama0-dev 2010-03-02 18:56:57 +01:00
Michael Stapelberg
a61e34d277 Add x11-utils as dependency to have xmessage(1) for the welcome message 2009-12-16 22:59:25 +01:00
Michael Stapelberg
36989b8b5d debian: set priority only for the source package, binaries will inherit 2009-11-23 21:34:21 +01:00
Michael Stapelberg
6655307951 debian: Add flex/bison to build-deps 2009-11-09 22:44:40 +01:00