build: bump to 1.14.0-pre1, bump some required versions
Bump the required versions of some libraries / emacs slightly so we can get rid of some special-casing and work-arounds. These are mostly based on Ubuntu 24.04 LTS, which is rather conservative; so should hopefully not inconvenience any users. - compiler: we now require C++20 instead of C++17 - glib & friends: 2.60 => 2.80 - xapian: 1.4 => 1.4.22 - emacs 26.3 => 28.1 Ubuntu 24.04 actually has Emacs 29.3, but that'd perhaps be too big a jump.
This commit is contained in:
12
NEWS.org
12
NEWS.org
@ -1,17 +1,19 @@
|
||||
#+STARTUP:showall
|
||||
* NEWS (user visible changes & bigger non-visible ones)
|
||||
|
||||
* 1.4 (released on January 24, 2026)
|
||||
|
||||
The 1.14 series continues where the 1.12 series left off, with just some
|
||||
version updates & depreciations.
|
||||
|
||||
|
||||
* 1.12 (released on February 24, 2024)
|
||||
|
||||
The 1.12 series has been "stable" for a fairly long time, and gained some
|
||||
The 1.12 series has been "stable" for a fairly long time, and gained many
|
||||
changes in the mean-time. Most of the changes are for bug fixes and
|
||||
documentation improvements, but some new features are available as well. Those
|
||||
are listed below, with the version in which they first appeared.
|
||||
|
||||
We decided to put off a new development series (1.13 -> 1.14) until
|
||||
incompatible changes are required; for now working in the 1.12 series seems a
|
||||
good way to get improvements to users more quickly.
|
||||
|
||||
** Some highlights
|
||||
|
||||
- Significant speedups in both ~mu~ and ~mu4e~
|
||||
|
||||
26
README.org
26
README.org
@ -45,14 +45,22 @@ version 3]] (or higher).
|
||||
|
||||
* Versions
|
||||
|
||||
*mu* attempts to balance development speed and stability. For this, every few
|
||||
months there is a stable version (e.g. ~1.12.12~); development then continues in
|
||||
in ~master~, with ~-pre<n>~ (e.g. ~1.12.14-pre3~): ~-pre~-suffixed versions refer to the
|
||||
current _development_ code, until it is released (and then looses its ~-pre~ suffix,
|
||||
i.e., becomes the ~1.12.14~ release).
|
||||
*mu* attempts to balance development speed and stability.
|
||||
|
||||
So if you want stability, grab the [[https://github.com/djcb/mu/releases/][release]]; if you are more
|
||||
adventurous/impatient, git ~master~ is there as well.
|
||||
Active development takes place on ~master~ (the 1.14 series), and we maintain
|
||||
~release/1.12~ as well. When possible, fixes (but not features) from ~master~ are
|
||||
back-ported to ~release/1.12~.
|
||||
|
||||
Every few months, we release a stable version (e.g. ~1.14.0~); development then
|
||||
continues in ~master~, with ~-pre<n>~ (e.g. ~1.14.1-pre1~): ~-pre~-suffixed versions
|
||||
refer to the current _development_ code, until it is released (and then looses its
|
||||
~-pre~ suffix, i.e., becomes the ~1.14.1~ release).
|
||||
|
||||
Hence, if you want to track active development, use ~master~; if you want to avoid
|
||||
any changes except bug-fixes, use a 1.12 [[https://github.com/djcb/mu/releases/][release]]; otherwise, track ~master~.
|
||||
|
||||
Overall, we try to avoid incompatible changes, but sometimes this is necessary,
|
||||
for example to update the versions of required libraries
|
||||
|
||||
* Installation
|
||||
|
||||
@ -66,13 +74,13 @@ as a Linux distribution. Many have packages available.
|
||||
|
||||
To be able to build ~mu~, ensure you have:
|
||||
|
||||
- a C++17 compiler (~gcc~ and ~clang~ are known to work)
|
||||
- a C++20 compiler (~gcc~ and ~clang~ are known to work)
|
||||
- development packages for /Xapian/ and /GMime/ and /GLib/ (see ~meson.build~ for the
|
||||
versions)
|
||||
- basic tools such as ~make~, ~sed~, ~grep~
|
||||
- ~meson~
|
||||
|
||||
For ~mu4e~, you also need ~emacs~.
|
||||
For ~mu4e~, you also need ~emacs~, version 28 or later.
|
||||
|
||||
Note, support for Windows is very much _experimental_, that is, it works for some
|
||||
people, but we can't really support it due to lack of the specific expertise.
|
||||
|
||||
@ -33,8 +33,10 @@
|
||||
#include <utils/mu-result.hh>
|
||||
#include <utils/mu-utils.hh>
|
||||
|
||||
/* starting with 1.4.6, Xapian supports C++ move semantics,
|
||||
* but only with XAPIAN_MOVE_SEMANTICS defined
|
||||
/*
|
||||
* starting with 1.4.6, Xapian supports C++ move semantics,
|
||||
* but only with XAPIAN_MOVE_SEMANTICS defined. We require
|
||||
* at lest 1.4.22 so we can define it.
|
||||
*/
|
||||
#ifndef XAPIAN_MOVE_SEMANTICS
|
||||
#define XAPIAN_MOVE_SEMANTICS
|
||||
|
||||
32
meson.build
32
meson.build
@ -17,18 +17,18 @@
|
||||
################################################################################
|
||||
# project setup
|
||||
project('mu', ['c', 'cpp'],
|
||||
version: '1.12.15',
|
||||
meson_version: '>= 0.56.0',
|
||||
version: '1.14.0-pre1',
|
||||
meson_version: '>= 1.5.1',
|
||||
license: 'GPL-3.0-or-later',
|
||||
default_options : [
|
||||
'buildtype=debugoptimized',
|
||||
'warning_level=3',
|
||||
'c_std=c11',
|
||||
'cpp_std=c++17'])
|
||||
'cpp_std=c++20'])
|
||||
|
||||
# hard-code the date here (for reproducibility); we derive the dates used in
|
||||
# e.g. documentation from this.
|
||||
mu_date='2026-01-15'
|
||||
mu_date='2026-01-20'
|
||||
|
||||
# installation paths
|
||||
prefixdir = get_option('prefix')
|
||||
@ -200,11 +200,14 @@ endif
|
||||
################################################################################
|
||||
# hard dependencies
|
||||
#
|
||||
glib_dep = dependency('glib-2.0', version: '>= 2.60')
|
||||
gobject_dep = dependency('gobject-2.0', version: '>= 2.60')
|
||||
gio_dep = dependency('gio-2.0', version: '>= 2.60')
|
||||
gio_unix_dep = dependency('gio-unix-2.0', version: '>= 2.60')
|
||||
gmime_dep = dependency('gmime-3.0', version: '>= 3.2')
|
||||
# glib & friends
|
||||
glib_dep = dependency('glib-2.0', version: '>= 2.80')
|
||||
gobject_dep = dependency('gobject-2.0', version: '>= 2.80')
|
||||
gio_dep = dependency('gio-2.0', version: '>= 2.80')
|
||||
gio_unix_dep = dependency('gio-unix-2.0', version: '>= 2.80')
|
||||
|
||||
# gmime
|
||||
gmime_dep = dependency('gmime-3.0', version: '>= 3.2.13')
|
||||
|
||||
# note: g_mime_object_write_content_to_stream is not available
|
||||
# in the gmime we still support for normal mu build.; we only need
|
||||
@ -215,13 +218,9 @@ gmime_scm_ok = cc.has_function('g_mime_object_write_content_to_stream',
|
||||
|
||||
thread_dep = dependency('threads')
|
||||
|
||||
# we need Xapian 1.4
|
||||
xapian_dep = dependency('xapian-core', version:'>= 1.4', required:true)
|
||||
# we need Xapian 1.4.22 or higher
|
||||
xapian_dep = dependency('xapian-core', version:'>= 1.4.22', required:true)
|
||||
xapver = xapian_dep.version()
|
||||
if xapver.version_compare('>= 1.4.6')
|
||||
message('xapian ' + xapver + ' supports c++ move-semantics')
|
||||
config_h_data.set('HAVE_XAPIAN_MOVE_SEMANTICS', 1)
|
||||
endif
|
||||
if xapver.version_compare('>= 1.4.23')
|
||||
message('xapian ' + xapver + ' supports ngrams')
|
||||
config_h_data.set('HAVE_XAPIAN_FLAG_NGRAMS', 1)
|
||||
@ -363,10 +362,9 @@ subdir('mu')
|
||||
|
||||
# emacs -- needed for mu4e compilation
|
||||
emacs_name=get_option('emacs')
|
||||
emacs_min_version='26.3'
|
||||
emacs_min_version='28.1'
|
||||
emacs=find_program([emacs_name], version: '>=' + emacs_min_version, required:false)
|
||||
if emacs.found()
|
||||
emacs28 = find_program([emacs_name], version: '>=28', required:false)
|
||||
subdir('man')
|
||||
subdir('mu4e')
|
||||
else
|
||||
|
||||
@ -66,6 +66,7 @@ mu4e_srcs=[
|
||||
'mu4e-server.el',
|
||||
'mu4e-speedbar.el',
|
||||
'mu4e-thread.el',
|
||||
'mu4e-transient.el',
|
||||
'mu4e-update.el',
|
||||
'mu4e-vars.el',
|
||||
'mu4e-view.el',
|
||||
@ -76,16 +77,6 @@ mu4e_srcs=[
|
||||
# 'bc'->byte-compile. The above should always be byte-compiled.
|
||||
mu4e_bc_srcs = mu4e_srcs
|
||||
|
||||
# emacs 28 is guaranteed to have transient
|
||||
# not very elegant, but
|
||||
# https://stackoverflow.com/questions/49221792/byte-compile-file-only-when-library-is-found
|
||||
mu4e_srcs += 'mu4e-transient.el'
|
||||
if emacs28.found()
|
||||
mu4e_bc_srcs += 'mu4e-transient.el'
|
||||
else
|
||||
message('mu4e-transient.el cannot be byte-compiled')
|
||||
endif
|
||||
|
||||
# do have we have dbus support?
|
||||
mu4e_srcs += 'mu4e-dbus.el'
|
||||
emacs_dbus = run_command(emacs, '--batch', '--eval', '(kill-emacs (if (featurep \'dbusbind) 0 1))',
|
||||
|
||||
@ -110,8 +110,8 @@ Otherwise, completely quit mu4e, including automatic updating."
|
||||
|
||||
(defun mu4e--check-requirements ()
|
||||
"Check for the settings required for running mu4e."
|
||||
(unless (>= emacs-major-version 26)
|
||||
(mu4e-error "Emacs >= 25.x is required for mu4e"))
|
||||
(unless (>= emacs-major-version 28)
|
||||
(mu4e-error "Emacs >= 28.x is required for mu4e"))
|
||||
(when (mu4e-server-properties)
|
||||
(unless (string= (mu4e-server-version) mu4e-mu-version)
|
||||
(mu4e-error "The mu server has version %s, but we need %s"
|
||||
|
||||
Reference in New Issue
Block a user