[geary/mjog/default-development-build: 2/5] build: Update how build profiles are handled




commit 23bd2507a7512664802db41b88ad375298d6b7d0
Author: Michael Gratton <mike vee net>
Date:   Sat Oct 3 21:59:01 2020 +1000

    build: Update how build profiles are handled
    
    Default to development build profile if a `.git` directory exists, else
    error out of build configuration.
    
    This make `auto` the default build profile and if set and a `.git`
    directory is present default to `development`, else raise an error.
    Add some docs to INSTALL describing build profiles and update how they
    are used in the source to match.

 INSTALL                                            | 26 ++++++++++++++++++--
 meson.build                                        | 28 +++++++++++++++-------
 meson_options.txt                                  |  8 +++++--
 .../application/application-main-window.vala       |  2 +-
 4 files changed, 50 insertions(+), 14 deletions(-)
---
diff --git a/INSTALL b/INSTALL
index 6572303f9..e445a4093 100644
--- a/INSTALL
+++ b/INSTALL
@@ -15,6 +15,28 @@ repository:
 A convenience Makefile for development only is also provided. To use
 it, simply invoke make from the top-level directory.
 
+Build profiles
+--------------
+
+Geary can be built using a number of different build profiles, which
+determine things like the application id, the location of stored data,
+the name of the application and other visual elements that distinguish
+release builds from other types.
+
+These can be set at build configuration time using the Meson `setup`
+and `configure` commands, using the standard `-Dprofile=…` option. See
+the `profile` option in `meson_options.txt` for the current list of
+supported types.
+
+Maintainers must select the `release` build profile when packaging
+non-test release builds, otherwise Geary will using branding and data
+locations intended for development only.
+
+Note that setting the profile does not alter such things as cmopiler
+options, use the standard Meson `--buildtype` argument for that.
+
+If built from
+
 Dependencies
 ------------
 
@@ -94,5 +116,5 @@ the initial configuration step:
     meson --prefix=/usr -C build
 
 ---
-Copyright 2016 Software Freedom Conservancy Inc.  
-Copyright 2018 Michael Gratton <mike vee net>
+Copyright © 2016 Software Freedom Conservancy Inc.  
+Copyright © 2018-2020 Michael Gratton <mike vee net>
diff --git a/meson.build b/meson.build
index 82f0439db..1dc9e3aa7 100644
--- a/meson.build
+++ b/meson.build
@@ -4,16 +4,26 @@ project('geary', [ 'vala', 'c' ],
   meson_version: '>= 0.50',
 )
 
-# Build type
-if get_option('profile') == 'development'
-  profile = '.Devel'
+# Determine the type of build
+profile = get_option('profile')
+appid_suffix = ''
+name_suffix = ''
+if profile == 'auto'
+  if run_command('[', '-d', '.git', ']').returncode() == 0
+    profile = 'development'
+  else
+    error('No build profile specified, see INSTALL')
+  endif
+endif
+
+if profile == 'development'
+  appid_suffix = '.Devel'
   name_suffix = ' (Development)'
-elif get_option('profile') == 'beta'
-  profile = '.Beta'
+elif profile == 'beta'
+  appid_suffix = '.Beta'
   name_suffix = ' (Beta)'
-else
-  profile = ''
-  name_suffix = ''
+elif profile != 'release'
+  error('Unknown build profile specified, see INSTALL')
 endif
 
 # Configurable install dirs
@@ -120,7 +130,7 @@ libmessagingmenu_dep = dependency('messaging-menu', version: '>= 12.10', require
 #
 
 # Build variables
-geary_id = 'org.gnome.Geary@0@'.format(profile)
+geary_id = 'org.gnome.Geary@0@'.format(appid_suffix)
 geary_version = meson.project_version()
 revno = get_option('revno')
 if revno == ''
diff --git a/meson_options.txt b/meson_options.txt
index 968c25414..fcb8b9bf2 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -5,8 +5,12 @@
 option(
   'profile',
   type: 'combo',
-  value: 'default',
-  choices: ['default','development','beta'],
+  choices: [
+    'auto',
+    'development',
+    'beta',
+    'release'
+  ],
   description: 'Specifies the application type to be built'
 )
 option(
diff --git a/src/client/application/application-main-window.vala 
b/src/client/application/application-main-window.vala
index 47749019a..aba5fa263 100644
--- a/src/client/application/application-main-window.vala
+++ b/src/client/application/application-main-window.vala
@@ -487,7 +487,7 @@ public class Application.MainWindow :
         load_config(application.config);
         restore_saved_window_state();
 
-        if (_PROFILE != "") {
+        if (_PROFILE != "release") {
             this.get_style_context().add_class("devel");
         }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]